@adia-ai/adia-ui-forge 0.1.3 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +4 -7
- package/CHANGELOG.md +35 -34
- package/README.md +35 -40
- package/agents/a2ui-engineer.md +22 -53
- package/agents/component-author.md +29 -0
- package/agents/framework-verifier.md +26 -0
- package/agents/release-engineer.md +21 -81
- package/agents/routing-corpus.json +293 -64
- package/bin/demo-postwrite-pattern-gate +94 -0
- package/bin/forge-lint +17 -2
- package/bin/sidecar-prewrite-guard +104 -0
- package/commands/deploy.md +9 -0
- package/commands/dogfood.md +10 -0
- package/commands/gen-review.md +9 -0
- package/commands/release.md +10 -0
- package/hooks/hooks.json +15 -0
- package/package.json +3 -6
- package/references/contracts/a2ui-mcp-surface.md +35 -0
- package/references/contracts/migration-guide-format.md +34 -0
- package/references/shared/content-trust.md +19 -74
- package/skills/adia-a2ui/SKILL.md +99 -0
- package/skills/{adia-ui-a2ui → adia-a2ui}/evals/routing-corpus.json +10 -10
- package/skills/adia-a2ui/references/anti-patterns.md +27 -0
- package/skills/adia-a2ui/references/chunk-authoring.md +71 -0
- package/skills/adia-a2ui/references/corpus-discipline.md +68 -0
- package/skills/adia-a2ui/references/eval-diagnostics.md +86 -0
- package/skills/adia-a2ui/references/format-extension-decisions.md +66 -0
- package/skills/adia-a2ui/references/leverage-rules.md +52 -0
- package/skills/adia-a2ui/references/mcp-pipeline-ops.md +83 -0
- package/skills/adia-a2ui/references/mcp-tool-reference.md +59 -0
- package/skills/adia-a2ui/references/pipeline-overview.md +115 -0
- package/skills/adia-a2ui/references/semantic-fail-lifting.md +74 -0
- package/skills/adia-a2ui/references/strategy-engines.md +109 -0
- package/skills/adia-a2ui/references/zettel-calibration.md +104 -0
- package/skills/adia-author/SKILL.md +112 -0
- package/skills/adia-author/evals/routing-corpus.json +222 -0
- package/skills/{adia-ui-authoring → adia-author}/references/anti-patterns.md +33 -4
- package/skills/{adia-ui-authoring → adia-author}/references/authoring-cycle.md +9 -11
- package/skills/adia-author/references/canonical-pattern-index.md +243 -0
- package/skills/{adia-ui-authoring → adia-author}/references/code-style.md +19 -21
- package/skills/adia-author/references/common-gotchas.md +129 -0
- package/skills/adia-author/references/composite-demo-protocol.md +271 -0
- package/skills/{adia-ui-authoring → adia-author}/references/css-patterns.md +19 -6
- package/skills/{adia-ui-authoring → adia-author}/references/lifecycle-patterns.md +1 -0
- package/skills/{adia-ui-authoring → adia-author}/references/llm-bridge.md +3 -5
- package/skills/{adia-ui-authoring → adia-author}/references/module-promotion.md +20 -38
- package/skills/{adia-ui-authoring → adia-author}/references/primitive-audit.md +2 -4
- package/skills/{adia-ui-authoring → adia-author}/references/shell-patterns.md +12 -18
- package/skills/{adia-ui-authoring → adia-author}/references/token-contract.md +5 -7
- package/skills/{adia-ui-authoring → adia-author}/references/worked-example.md +3 -3
- package/skills/{adia-ui-authoring → adia-author}/references/yaml-contract.md +3 -3
- package/skills/{adia-ui-authoring → adia-author}/scripts/build-canonical-pattern-index.mjs +3 -3
- package/skills/adia-deploy/SKILL.md +128 -0
- package/skills/{adia-ui-ops → adia-deploy}/references/deploy-playbooks.md +47 -30
- package/skills/adia-dogfood/SKILL.md +124 -0
- package/skills/adia-dogfood/references/admin-shell-anatomy.md +77 -0
- package/skills/adia-dogfood/references/app-shell-pitfalls.md +66 -0
- package/skills/adia-dogfood/references/card-anatomy-sweep.md +66 -0
- package/skills/adia-dogfood/references/html-attr-sweep.md +63 -0
- package/skills/adia-dogfood/references/native-leak-annotations.md +73 -0
- package/skills/adia-dogfood/references/visual-probe-triage.md +80 -0
- package/skills/{adia-ui-dogfood → adia-dogfood}/scripts/analyze.mjs +30 -14
- package/skills/adia-gen-review/SKILL.md +127 -0
- package/skills/adia-gen-review/references/corpus-html-patterns.md +279 -0
- package/skills/adia-gen-review/references/loop-protocol.md +216 -0
- package/skills/adia-gen-review/references/rubric-cosmetic.md +100 -0
- package/skills/adia-gen-review/references/rubric-decompose.md +101 -0
- package/skills/adia-gen-review/references/rubric-score.md +214 -0
- package/skills/{adia-ui-gen-review → adia-gen-review}/references/scores.schema.json +2 -2
- package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-coverage-audit.mjs +4 -4
- package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-decompose.mjs +10 -6
- package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-status.mjs +5 -5
- package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/validate-cycle-scores.mjs +5 -5
- package/skills/adia-llm-internals/SKILL.md +77 -0
- package/skills/{adia-ui-llm → adia-llm-internals}/references/adapter-contract.md +4 -2
- package/skills/{adia-ui-llm → adia-llm-internals}/references/add-a-provider.md +4 -5
- package/skills/{adia-ui-llm → adia-llm-internals}/references/bridge-facade.md +10 -3
- package/skills/{adia-ui-llm → adia-llm-internals}/references/browser-proxy-boundary.md +1 -1
- package/skills/{adia-ui-llm → adia-llm-internals}/references/model-registry.md +5 -3
- package/skills/{adia-ui-llm → adia-llm-internals}/references/streaming-sse.md +2 -2
- package/skills/adia-release/SKILL.md +72 -0
- package/skills/adia-release/references/changelog-discipline.md +119 -0
- package/skills/adia-release/references/cut-procedure.md +247 -0
- package/skills/adia-release/references/gates-catalog.md +222 -0
- package/skills/adia-release/references/independent-package-release.md +52 -0
- package/skills/adia-release/references/migration-guide-authoring.md +86 -0
- package/skills/adia-release/references/notes-authoring.md +90 -0
- package/skills/adia-release/references/recovery-paths.md +106 -0
- package/skills/{adia-ui-release → adia-release}/scripts/bump.mjs +28 -3
- package/skills/{adia-ui-release → adia-release}/scripts/dispatch-publish.mjs +10 -7
- package/skills/{adia-ui-release → adia-release}/scripts/insert-stub.mjs +1 -1
- package/skills/{adia-ui-release → adia-release}/scripts/package-paths.mjs +6 -0
- package/skills/{adia-ui-release → adia-release}/scripts/promote-unreleased.mjs +1 -1
- package/skills/{adia-ui-release → adia-release}/scripts/release-pack.mjs +38 -31
- package/skills/{adia-ui-release → adia-release}/scripts/tag-lockstep.mjs +7 -3
- package/skills/adia-site-docs/SKILL.md +68 -0
- package/skills/adia-site-docs/evals/audit-report.md +30 -0
- package/skills/adia-site-docs/evals/routing-corpus.json +176 -0
- package/skills/adia-site-docs/intent.md +72 -0
- package/agents/README.md +0 -209
- package/agents/author.md +0 -56
- package/agents/repo-steward.md +0 -56
- package/agents/spec-architect.md +0 -53
- package/agents/tech-lead.md +0 -57
- package/agents/verifier.md +0 -55
- package/bin/lib/audit-axes.mjs +0 -555
- package/bin/lib/dry-run-irreversible.mjs +0 -236
- package/bin/lib/run-skill-evals.mjs +0 -487
- package/bin/lib/teach-router.mjs +0 -250
- package/commands/adia-forge-a2ui.md +0 -10
- package/commands/adia-forge-author.md +0 -10
- package/commands/adia-forge-dogfood.md +0 -8
- package/commands/adia-forge-llm.md +0 -8
- package/commands/adia-forge-orient.md +0 -10
- package/commands/adia-forge-release.md +0 -8
- package/commands/adia-forge-review.md +0 -10
- package/references/shared/pev-rationale.md +0 -64
- package/references/shared/skill-conventions.md +0 -133
- package/skills/adia-ui-a2ui/CHANGELOG.md +0 -32
- package/skills/adia-ui-a2ui/SKILL.md +0 -243
- package/skills/adia-ui-a2ui/evals/adversarial-corpus.json +0 -75
- package/skills/adia-ui-a2ui/evals/teach-routing-cases.json +0 -100
- package/skills/adia-ui-a2ui/references/anti-patterns.md +0 -24
- package/skills/adia-ui-a2ui/references/chunk-authoring.md +0 -88
- package/skills/adia-ui-a2ui/references/corpus-discipline.md +0 -56
- package/skills/adia-ui-a2ui/references/eval-diagnostics.md +0 -127
- package/skills/adia-ui-a2ui/references/fragment-graph.md +0 -91
- package/skills/adia-ui-a2ui/references/mcp-pipeline-ops.md +0 -106
- package/skills/adia-ui-a2ui/references/mcp-tool-reference.md +0 -398
- package/skills/adia-ui-a2ui/references/pipeline-overview.md +0 -175
- package/skills/adia-ui-a2ui/references/semantic-fail-lifting.md +0 -120
- package/skills/adia-ui-a2ui/references/strategy-engines.md +0 -111
- package/skills/adia-ui-a2ui/references/teach-protocol.md +0 -220
- package/skills/adia-ui-a2ui/references/zettel-calibration.md +0 -93
- package/skills/adia-ui-a2ui/scripts/audit-a2ui-roster.mjs +0 -96
- package/skills/adia-ui-a2ui/scripts/teach-route.mjs +0 -157
- package/skills/adia-ui-a2ui/skill.json +0 -38
- package/skills/adia-ui-authoring/CHANGELOG.md +0 -32
- package/skills/adia-ui-authoring/SKILL.md +0 -256
- package/skills/adia-ui-authoring/assets/case-studies/admin-shell-decomposition.md +0 -101
- package/skills/adia-ui-authoring/assets/case-studies/maxtokens-32768-discovery.md +0 -109
- package/skills/adia-ui-authoring/assets/case-studies/theme-panel-promotion.md +0 -113
- package/skills/adia-ui-authoring/evals/adversarial-design-plan-gates.json +0 -138
- package/skills/adia-ui-authoring/evals/routing-corpus.json +0 -245
- package/skills/adia-ui-authoring/references/canonical-pattern-index.md +0 -179
- package/skills/adia-ui-authoring/references/common-gotchas.md +0 -93
- package/skills/adia-ui-authoring/references/composite-demo-protocol.md +0 -1084
- package/skills/adia-ui-authoring/references/teach-protocol.md +0 -428
- package/skills/adia-ui-authoring/scripts/audit-authoring-roster.mjs +0 -148
- package/skills/adia-ui-authoring/skill.json +0 -45
- package/skills/adia-ui-dogfood/CHANGELOG.md +0 -17
- package/skills/adia-ui-dogfood/README.md +0 -62
- package/skills/adia-ui-dogfood/SKILL.md +0 -866
- package/skills/adia-ui-dogfood/skill.json +0 -40
- package/skills/adia-ui-forge/SKILL.md +0 -88
- package/skills/adia-ui-forge/evals/routing-corpus.json +0 -30
- package/skills/adia-ui-gen-review/CHANGELOG.md +0 -108
- package/skills/adia-ui-gen-review/SKILL.md +0 -266
- package/skills/adia-ui-gen-review/references/loop-protocol.md +0 -712
- package/skills/adia-ui-gen-review/references/rubric-cosmetic.md +0 -144
- package/skills/adia-ui-gen-review/references/rubric-decompose.md +0 -117
- package/skills/adia-ui-gen-review/references/rubric-score.md +0 -249
- package/skills/adia-ui-gen-review/references/teach-protocol.md +0 -214
- package/skills/adia-ui-gen-review/skill.json +0 -23
- package/skills/adia-ui-llm/CHANGELOG.md +0 -25
- package/skills/adia-ui-llm/SKILL.md +0 -165
- package/skills/adia-ui-llm/evals/adversarial-corpus.json +0 -75
- package/skills/adia-ui-llm/evals/routing-corpus.json +0 -30
- package/skills/adia-ui-llm/evals/teach-routing-cases.json +0 -73
- package/skills/adia-ui-llm/references/teach-protocol.md +0 -78
- package/skills/adia-ui-llm/scripts/audit-llm-roster.mjs +0 -93
- package/skills/adia-ui-llm/scripts/teach-route.mjs +0 -119
- package/skills/adia-ui-llm/skill.json +0 -33
- package/skills/adia-ui-ops/CHANGELOG.md +0 -291
- package/skills/adia-ui-ops/SKILL.md +0 -401
- package/skills/adia-ui-ops/references/INDEX.md +0 -158
- package/skills/adia-ui-ops/references/audit-cadence.md +0 -263
- package/skills/adia-ui-ops/references/audit-patterns/archive-link-sweep.md +0 -96
- package/skills/adia-ui-ops/references/audit-patterns/audit-history-ledger.md +0 -162
- package/skills/adia-ui-ops/references/audit-patterns/browser-bundle-node-imports.md +0 -154
- package/skills/adia-ui-ops/references/audit-patterns/changelog-unreleased-bloat.md +0 -75
- package/skills/adia-ui-ops/references/audit-patterns/coverage-gaps.md +0 -187
- package/skills/adia-ui-ops/references/audit-patterns/entry-file-coverage.md +0 -122
- package/skills/adia-ui-ops/references/audit-patterns/format-hygiene.md +0 -217
- package/skills/adia-ui-ops/references/audit-patterns/lockstep-versioning.md +0 -113
- package/skills/adia-ui-ops/references/audit-patterns/memory-fragmentation.md +0 -180
- package/skills/adia-ui-ops/references/audit-patterns/orphan-detection.md +0 -202
- package/skills/adia-ui-ops/references/audit-patterns/pointer-validation.md +0 -180
- package/skills/adia-ui-ops/references/audit-patterns/redundancy-detection.md +0 -210
- package/skills/adia-ui-ops/references/audit-patterns/spec-dating-sweep.md +0 -91
- package/skills/adia-ui-ops/references/audit-patterns/stale-content.md +0 -182
- package/skills/adia-ui-ops/references/audit-patterns/staleness-tooling.md +0 -156
- package/skills/adia-ui-ops/references/audit-patterns/token-waste-detection.md +0 -196
- package/skills/adia-ui-ops/references/doc-types/adr-pattern.md +0 -210
- package/skills/adia-ui-ops/references/doc-types/architecture-md.md +0 -190
- package/skills/adia-ui-ops/references/doc-types/changelog.md +0 -183
- package/skills/adia-ui-ops/references/doc-types/decisions-log.md +0 -146
- package/skills/adia-ui-ops/references/doc-types/plan-roadmap.md +0 -182
- package/skills/adia-ui-ops/references/doc-types/postmortem-pattern.md +0 -206
- package/skills/adia-ui-ops/references/genres/prose-and-writing.md +0 -149
- package/skills/adia-ui-ops/references/guidance/context-budget.md +0 -137
- package/skills/adia-ui-ops/references/guidance/llm-doc-writing.md +0 -116
- package/skills/adia-ui-ops/references/guidance/reliability-dial.md +0 -186
- package/skills/adia-ui-ops/references/recipes/adr-introduction.md +0 -211
- package/skills/adia-ui-ops/references/recipes/audit-existing-repo.md +0 -234
- package/skills/adia-ui-ops/references/recipes/cold-start-harvest.md +0 -263
- package/skills/adia-ui-ops/references/recipes/concurrent-learnings-merge.md +0 -158
- package/skills/adia-ui-ops/references/recipes/continuous-learning-loop.md +0 -169
- package/skills/adia-ui-ops/references/recipes/external-reference-verification.md +0 -158
- package/skills/adia-ui-ops/references/recipes/findings-index-readout.md +0 -126
- package/skills/adia-ui-ops/references/recipes/greenfield-setup.md +0 -252
- package/skills/adia-ui-ops/references/recipes/harvest-repo-brain.md +0 -169
- package/skills/adia-ui-ops/references/recipes/import-repo-brain-harvest.md +0 -153
- package/skills/adia-ui-ops/references/recipes/memory-organization.md +0 -182
- package/skills/adia-ui-ops/references/recipes/recommend-then-validate.md +0 -199
- package/skills/adia-ui-ops/references/recipes/self-healing-hooks.md +0 -366
- package/skills/adia-ui-ops/references/recipes/skill-stewardship-loop.md +0 -113
- package/skills/adia-ui-ops/references/standards/agents-md-spec.md +0 -138
- package/skills/adia-ui-ops/references/standards/claude-md-convention.md +0 -123
- package/skills/adia-ui-ops/references/standards/cross-tool-matrix.md +0 -85
- package/skills/adia-ui-ops/references/standards/readme-conventions.md +0 -232
- package/skills/adia-ui-ops/references/teach-protocol.md +0 -215
- package/skills/adia-ui-ops/scripts/audit-ops-roster.mjs +0 -104
- package/skills/adia-ui-ops/skill.json +0 -65
- package/skills/adia-ui-release/CHANGELOG.md +0 -66
- package/skills/adia-ui-release/SKILL.md +0 -323
- package/skills/adia-ui-release/assets/case-studies/2026-05-20-batch-push-v0.6.14-v0.6.15.md +0 -144
- package/skills/adia-ui-release/assets/case-studies/2026-05-20-corpus-drift-remediation-v0.6.15.md +0 -155
- package/skills/adia-ui-release/assets/case-studies/2026-05-20-version-skip-correction-v0.6.12.md +0 -114
- package/skills/adia-ui-release/assets/case-studies/2026-05-21-author-from-scratch-v0.6.18.md +0 -139
- package/skills/adia-ui-release/assets/case-studies/2026-05-21-feedback37-retraction-v0.6.21.md +0 -124
- package/skills/adia-ui-release/assets/case-studies/2026-05-21-fn1-enrichment-pass-v0.6.19.md +0 -125
- package/skills/adia-ui-release/assets/case-studies/2026-05-21-stale-test-detection-v0.6.20.md +0 -142
- package/skills/adia-ui-release/assets/case-studies/2026-05-23-freshness-gate-recovery-v0.6.32.md +0 -97
- package/skills/adia-ui-release/assets/case-studies/2026-05-26-catalog-drift-recurring-v0.6.40.md +0 -147
- package/skills/adia-ui-release/assets/templates/stub-changelog.template.md +0 -22
- package/skills/adia-ui-release/evals/evals.json +0 -164
- package/skills/adia-ui-release/references/changelog-discipline.md +0 -250
- package/skills/adia-ui-release/references/cycle-happy-path.md +0 -520
- package/skills/adia-ui-release/references/exe-deploy.md +0 -149
- package/skills/adia-ui-release/references/gates-catalog.md +0 -778
- package/skills/adia-ui-release/references/independent-package-release.md +0 -129
- package/skills/adia-ui-release/references/ledger-discipline.md +0 -232
- package/skills/adia-ui-release/references/migration-guide-authoring.md +0 -174
- package/skills/adia-ui-release/references/multi-agent-baseline.md +0 -207
- package/skills/adia-ui-release/references/notes-authoring.md +0 -212
- package/skills/adia-ui-release/references/recovery-paths.md +0 -262
- package/skills/adia-ui-release/references/rollup-notes.md +0 -208
- package/skills/adia-ui-release/references/teach-protocol.md +0 -468
- package/skills/adia-ui-release/scripts/audit-gate-roster.mjs +0 -196
- package/skills/adia-ui-release/scripts/make-ledger.mjs +0 -200
- package/skills/adia-ui-release/skill.json +0 -77
- package/skills/dogfood-sweep/CHANGELOG.md +0 -37
- package/skills/dogfood-sweep/README.md +0 -105
- package/skills/dogfood-sweep/SKILL.md +0 -1000
- package/skills/dogfood-sweep/analyze.mjs +0 -600
- package/skills/dogfood-sweep/skill.json +0 -31
- /package/skills/{adia-ui-authoring → adia-author}/references/api-contract.md +0 -0
- /package/skills/{adia-ui-release → adia-release}/scripts/assert-monorepo-root.mjs +0 -0
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
// # Dry mode:
|
|
15
15
|
// node dispatch-publish.mjs --version 0.6.22 --dry
|
|
16
16
|
//
|
|
17
|
-
//
|
|
17
|
+
// Part of the adia-release skill. Mechanizes the dispatch loop
|
|
18
18
|
// + handles the npm-latest ordering rule for batch pushes.
|
|
19
19
|
|
|
20
20
|
import { execSync } from 'node:child_process';
|
|
21
21
|
import process from 'node:process';
|
|
22
22
|
import { assertMonorepoRoot } from './assert-monorepo-root.mjs';
|
|
23
23
|
|
|
24
|
-
// Instance data — fork-configurable. The npm scope the
|
|
24
|
+
// Instance data — fork-configurable. The npm scope the 11 packages publish under.
|
|
25
25
|
// Default preserves @adia-ai behavior; override via --scope or $ADIA_NPM_SCOPE.
|
|
26
26
|
const DEFAULT_SCOPE = '@adia-ai';
|
|
27
27
|
|
|
@@ -35,6 +35,9 @@ const PACKAGES = [
|
|
|
35
35
|
'a2ui-mcp',
|
|
36
36
|
'a2ui-retrieval',
|
|
37
37
|
'a2ui-validator',
|
|
38
|
+
// Plugins joined the lockstep 2026-07-15 (check-lockstep.mjs POLICY note).
|
|
39
|
+
'adia-ui-factory',
|
|
40
|
+
'adia-ui-forge',
|
|
38
41
|
];
|
|
39
42
|
|
|
40
43
|
function parseArgs(argv) {
|
|
@@ -59,8 +62,8 @@ function parseArgs(argv) {
|
|
|
59
62
|
console.log('--verify-triggered Instead of dispatching, check whether each per-package publish-<pkg>.yml');
|
|
60
63
|
console.log(' ALREADY has a run for the <pkg>-vX.Y.Z tag (i.e. push-on-tag fired), and');
|
|
61
64
|
console.log(' re-dispatch ONLY the misses. This is the recovery for the batch-tag-push');
|
|
62
|
-
console.log(' skip (recovery-paths.md §Scenario 7) — a single `git push <
|
|
63
|
-
console.log(' trigger ZERO publish workflows. Idempotent: re-dispatches nothing if all
|
|
65
|
+
console.log(' skip (recovery-paths.md §Scenario 7) — a single `git push <12 tags>` can');
|
|
66
|
+
console.log(' trigger ZERO publish workflows. Idempotent: re-dispatches nothing if all 11 fired.');
|
|
64
67
|
console.log(`--scope npm scope the packages publish under (default: ${DEFAULT_SCOPE};`);
|
|
65
68
|
console.log(' or set $ADIA_NPM_SCOPE). The --after npm-latest check uses this scope.');
|
|
66
69
|
process.exit(0);
|
|
@@ -146,7 +149,7 @@ function triggeredForTag(pkg, version, dry) {
|
|
|
146
149
|
|
|
147
150
|
// The batch-tag-push-skip recovery: verify each per-package publish workflow
|
|
148
151
|
// actually triggered off its pushed tag, and re-dispatch ONLY the misses.
|
|
149
|
-
// Idempotent — re-dispatches nothing if all
|
|
152
|
+
// Idempotent — re-dispatches nothing if all 11 fired.
|
|
150
153
|
function verifyTriggeredAndRedispatch(version, dry) {
|
|
151
154
|
console.log(`\nVerifying publish-on-tag triggered for all ${PACKAGES.length} packages (v${version}):`);
|
|
152
155
|
const misses = [];
|
|
@@ -189,7 +192,7 @@ async function main() {
|
|
|
189
192
|
await sleep(args.sleepBefore * 1000);
|
|
190
193
|
}
|
|
191
194
|
|
|
192
|
-
console.log(`Dispatching
|
|
195
|
+
console.log(`Dispatching ${PACKAGES.length} publish workflows for v${args.version}:`);
|
|
193
196
|
let succeeded = 0;
|
|
194
197
|
for (const pkg of PACKAGES) {
|
|
195
198
|
if (dispatch(pkg, args.version, args.dry)) succeeded++;
|
|
@@ -199,7 +202,7 @@ async function main() {
|
|
|
199
202
|
if (!args.dry) {
|
|
200
203
|
console.log(`\n[next] wait for workflows to settle:`);
|
|
201
204
|
console.log(` until [ "$(gh run list --workflow=publish-a2ui-validator.yml --limit 1 --json status -q '.[0].status')" = "completed" ]; do sleep 5; done`);
|
|
202
|
-
console.log(`\n[next] verify all
|
|
205
|
+
console.log(`\n[next] verify all 11 succeeded:`);
|
|
203
206
|
console.log(` for pkg in ${PACKAGES.join(' ')}; do`);
|
|
204
207
|
console.log(` gh run list --workflow=publish-$pkg.yml --limit 1 --json conclusion -q '.[0].conclusion'`);
|
|
205
208
|
console.log(` done`);
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// --previous-version 0.6.21 \
|
|
12
12
|
// --packages llm,a2ui/compose,a2ui/mcp,a2ui/retrieval,a2ui/runtime,a2ui/validator
|
|
13
13
|
//
|
|
14
|
-
//
|
|
14
|
+
// Part of the adia-release skill. Replaces the inline stub-
|
|
15
15
|
// insertion pattern used across v0.6.18 / v0.6.19 / v0.6.20 / v0.6.21
|
|
16
16
|
// cycles.
|
|
17
17
|
|
|
@@ -35,6 +35,12 @@ export function resolvePackageDir(repo, pkg) {
|
|
|
35
35
|
const nested = path.join('a2ui', m[1]);
|
|
36
36
|
if (fs.existsSync(path.join(repo, 'packages', nested))) return nested;
|
|
37
37
|
}
|
|
38
|
+
// Plugins live under packages/plugins/<name> but carry the flat name form
|
|
39
|
+
// (adia-ui-forge) in the release tooling — same name-vs-path split as a2ui.
|
|
40
|
+
if (/^adia-ui-/.test(pkg)) {
|
|
41
|
+
const nested = path.join('plugins', pkg);
|
|
42
|
+
if (fs.existsSync(path.join(repo, 'packages', nested))) return nested;
|
|
43
|
+
}
|
|
38
44
|
return pkg; // fall through with the original arg so the not-found error names what was asked for
|
|
39
45
|
}
|
|
40
46
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// node promote-unreleased.mjs --version 0.6.22 --date 2026-05-22 \
|
|
12
12
|
// --packages web-components,web-modules --dry
|
|
13
13
|
//
|
|
14
|
-
//
|
|
14
|
+
// Part of the adia-release skill. Replaces the inline heading-swap
|
|
15
15
|
// pattern used across v0.6.18 / v0.6.19 / v0.6.20 / v0.6.21 cycles.
|
|
16
16
|
//
|
|
17
17
|
// Exits:
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// release-pack.mjs — full-cycle orchestrator for an AdiaUI lockstep release.
|
|
3
3
|
//
|
|
4
|
-
// Chains the
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
// SKILL.md §Posture.
|
|
4
|
+
// Chains the 5 CLI helpers (bump · promote-unreleased · insert-stub ·
|
|
5
|
+
// tag-lockstep · dispatch-publish) plus the non-helper steps (lockfile ·
|
|
6
|
+
// pre-flight gates · git commit · F-N1 · push · GH releases · site
|
|
7
|
+
// deploy) into one walked sequence with 3 operator checkpoints (before
|
|
8
|
+
// tag, before push, before publish) per SKILL.md operator checkpoints.
|
|
10
9
|
//
|
|
11
10
|
// MODES:
|
|
12
11
|
// --mode cut (Mode 1 — peer pre-staged [Unreleased] or pure stub)
|
|
@@ -33,8 +32,8 @@
|
|
|
33
32
|
// --skip-gates : (DEBUG ONLY) skip pre-flight (don't ship anything!)
|
|
34
33
|
// --skip-site : skip the EXE deploy step (rare; for offline cycles)
|
|
35
34
|
//
|
|
36
|
-
//
|
|
37
|
-
// references/
|
|
35
|
+
// Part of the adia-release skill. Mechanizes the cut procedure from
|
|
36
|
+
// references/cut-procedure.md while preserving operator judgment at
|
|
38
37
|
// the 3 mutating-checkpoint boundaries.
|
|
39
38
|
|
|
40
39
|
import { execSync } from 'node:child_process';
|
|
@@ -56,7 +55,9 @@ const DEFAULT_NPM_SCOPE = '@adia-ai';
|
|
|
56
55
|
|
|
57
56
|
const PACKAGES = ['web-components', 'web-modules', 'llm', 'a2ui-runtime',
|
|
58
57
|
'a2ui-compose', 'a2ui-corpus', 'a2ui-mcp', 'a2ui-retrieval',
|
|
59
|
-
'a2ui-validator'
|
|
58
|
+
'a2ui-validator',
|
|
59
|
+
// Plugins joined the lockstep 2026-07-15 (check-lockstep.mjs POLICY note).
|
|
60
|
+
'adia-ui-factory', 'adia-ui-forge'];
|
|
60
61
|
|
|
61
62
|
function parseArgs(argv) {
|
|
62
63
|
const args = {
|
|
@@ -252,7 +253,7 @@ function step5Commit(args) {
|
|
|
252
253
|
// ── Step 6 — Tag ─────────────────────────────────────────────────
|
|
253
254
|
async function step6Tag(args) {
|
|
254
255
|
console.log('\n=== Step 6 — Tag at HEAD ===');
|
|
255
|
-
await checkpoint('Ready to create
|
|
256
|
+
await checkpoint('Ready to create 12 tags (umbrella + 11 per-package)', args);
|
|
256
257
|
sh(`node ${SCRIPT_DIR}/tag-lockstep.mjs --version ${args.version}`, args);
|
|
257
258
|
}
|
|
258
259
|
|
|
@@ -271,15 +272,15 @@ function step7Fn1(args) {
|
|
|
271
272
|
// ── Step 8 — Push ────────────────────────────────────────────────
|
|
272
273
|
// Pushes per-package tags ONE-AT-A-TIME, not as a single batch.
|
|
273
274
|
//
|
|
274
|
-
// THE BATCH-PUSH SKIP (bit the v0.7.14 cut): `git push origin <
|
|
275
|
+
// THE BATCH-PUSH SKIP (bit the v0.7.14 cut): `git push origin <12 tags>` in one
|
|
275
276
|
// invocation fires the push-on-tag `create` event ONCE for the whole ref-set,
|
|
276
277
|
// and GitHub Actions routinely drops it — ZERO publish-on-tag workflows trigger.
|
|
277
|
-
// (
|
|
278
|
+
// (recovery-paths.md §Scenario 7 — the batch-tag-push publish-skip.)
|
|
278
279
|
// Pushing each per-package tag separately gives the per-package publish-<pkg>.yml
|
|
279
280
|
// `on: push: tags:` trigger its own create event. The umbrella tag is pushed
|
|
280
281
|
// last (it triggers nothing — convention only).
|
|
281
282
|
//
|
|
282
|
-
// Step 9 dispatches all
|
|
283
|
+
// Step 9 dispatches all 11 publishes via workflow_dispatch regardless, so the
|
|
283
284
|
// orchestrated cut does NOT rely on push-on-tag firing. The one-at-a-time push
|
|
284
285
|
// is defensive (a cut aborted after Step 8 still has its publishes triggered)
|
|
285
286
|
// AND keeps the standalone tag-lockstep.mjs hint honest.
|
|
@@ -287,7 +288,7 @@ async function step8Push(args) {
|
|
|
287
288
|
console.log('\n=== Step 8 — Push main + tags (per-tag, NOT batched) ===');
|
|
288
289
|
const count = shQuiet('git rev-list --count origin/main..HEAD', args).trim();
|
|
289
290
|
console.log(` commits to push: ${count}`);
|
|
290
|
-
await checkpoint(`Ready to push ${count} commit(s) +
|
|
291
|
+
await checkpoint(`Ready to push ${count} commit(s) + 12 tags (one-at-a-time)`, args);
|
|
291
292
|
sh('git push origin main', args);
|
|
292
293
|
const perPkgTags = PACKAGES.map((p) => `${p}-v${args.version}`);
|
|
293
294
|
for (const t of perPkgTags) {
|
|
@@ -306,19 +307,32 @@ async function step8Push(args) {
|
|
|
306
307
|
// for some/all packages. --verify-triggered checks which publish-<pkg>.yml runs
|
|
307
308
|
// exist for the <pkg>-vX.Y.Z tags and re-dispatches ONLY the misses — closing the
|
|
308
309
|
// batch-tag-push skip without double-publishing the ones that already fired.
|
|
309
|
-
// Idempotent: if all
|
|
310
|
+
// Idempotent: if all 11 triggered (or none did), it does the right thing.
|
|
310
311
|
async function step9Publish(args) {
|
|
311
312
|
console.log('\n=== Step 9 — Verify-triggered + re-dispatch misses ===');
|
|
312
|
-
await checkpoint('Ready to verify the
|
|
313
|
+
await checkpoint('Ready to verify the 11 publish triggers + re-dispatch any misses', args);
|
|
313
314
|
// Give GH a moment to index the runs created by the per-tag push in Step 8.
|
|
314
315
|
if (!args.dry) sh('sleep 6', args);
|
|
315
316
|
sh(`node ${SCRIPT_DIR}/dispatch-publish.mjs --version ${args.version} --scope ${args.scope} --verify-triggered`, args);
|
|
316
317
|
console.log('\n Waiting for publishes to settle...');
|
|
317
318
|
sh(`until [ "$(gh run list --workflow=publish-a2ui-validator.yml --limit 1 --json status -q '.[0].status')" = "completed" ]; do sleep 5; done`, args);
|
|
318
319
|
console.log(' ✓ publishes settled');
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
320
|
+
// Fail-closed: the registry is the verify target (SKILL.md) — a missing or
|
|
321
|
+
// stale package aborts the cut here, before GH releases + site deploy.
|
|
322
|
+
console.log(`\n Verify all ${PACKAGES.length} at ${args.version} + npm latest (fail-closed):`);
|
|
323
|
+
sh(
|
|
324
|
+
`fail=0; ` +
|
|
325
|
+
`for pkg in ${PACKAGES.join(' ')}; do ` +
|
|
326
|
+
`v="$(npm view "${args.scope}/$pkg" version 2>/dev/null || true)"; ` +
|
|
327
|
+
`echo " $pkg: \${v:-MISSING}"; ` +
|
|
328
|
+
`[ "$v" = "${args.version}" ] || fail=1; ` +
|
|
329
|
+
`done; ` +
|
|
330
|
+
`latest="$(npm view ${args.scope}/web-components dist-tags.latest 2>/dev/null || true)"; ` +
|
|
331
|
+
`echo " latest: \${latest:-MISSING}"; ` +
|
|
332
|
+
`[ "$latest" = "${args.version}" ] || fail=1; ` +
|
|
333
|
+
`[ "$fail" = 0 ] || { echo "ERROR: registry does not confirm ${args.version} across all ${PACKAGES.length} packages — fix before GH releases/deploy"; exit 1; }`,
|
|
334
|
+
args,
|
|
335
|
+
);
|
|
322
336
|
}
|
|
323
337
|
|
|
324
338
|
// ── Step 10 — GH releases + site deploy ──────────────────────────
|
|
@@ -341,15 +355,9 @@ async function step10GhAndSite(args) {
|
|
|
341
355
|
}
|
|
342
356
|
sh('npm run build:site', args);
|
|
343
357
|
sh(`rsync -az --delete dist/ ${args.host}:/srv/adia-ui/dist/`, args);
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
// ── Step 11 — Ledger ─────────────────────────────────────────────
|
|
348
|
-
function step11Ledger(args) {
|
|
349
|
-
console.log('\n=== Step 11 — Audit-history ledger ===');
|
|
350
|
-
const cmd = `node ${SCRIPT_DIR}/make-ledger.mjs --version ${args.version} --date ${args.date} --summary "<TODO: paste from commit message>" --note "Shipped via release-pack.mjs mode=${args.mode}"`;
|
|
351
|
-
sh(cmd, args);
|
|
352
|
-
console.log('\n Edit the generated ledger to fill in scope/verification details, then commit + push.');
|
|
358
|
+
// Verify a deployed CONTENT FILE, never an SPA route — the docs site
|
|
359
|
+
// returns HTTP 200 + a blank shell for ANY unmatched route (v0.7.4 trap).
|
|
360
|
+
sh(`curl -s -o /dev/null -w "EXE host.css: HTTP %{http_code}\\n" https://${args.host}/packages/web-components/styles/host.css`, args);
|
|
353
361
|
}
|
|
354
362
|
|
|
355
363
|
// ── Main ─────────────────────────────────────────────────────────
|
|
@@ -357,7 +365,7 @@ async function main() {
|
|
|
357
365
|
const args = parseArgs(process.argv.slice(2));
|
|
358
366
|
// Fail-fast guard: refuse to git/npm/gh/curl against a non-monorepo directory.
|
|
359
367
|
assertMonorepoRoot(REPO);
|
|
360
|
-
console.log(`adia-
|
|
368
|
+
console.log(`adia-release release-pack — v${args.version} (${args.mode})${args.dry ? ' [DRY]' : ''}`);
|
|
361
369
|
step1ReBaseline(args);
|
|
362
370
|
step3PreFlight(args);
|
|
363
371
|
step4PromoteAndBump(args);
|
|
@@ -367,9 +375,8 @@ async function main() {
|
|
|
367
375
|
await step8Push(args);
|
|
368
376
|
await step9Publish(args);
|
|
369
377
|
await step10GhAndSite(args);
|
|
370
|
-
step11Ledger(args);
|
|
371
378
|
rl.close();
|
|
372
|
-
console.log('\n✓ release-pack complete.
|
|
379
|
+
console.log('\n✓ release-pack complete. Verify against the npm registry + GH releases, then author the release notes.');
|
|
373
380
|
}
|
|
374
381
|
|
|
375
382
|
main().catch((e) => {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// node tag-lockstep.mjs --version 0.6.22 --delete # delete existing tags
|
|
9
9
|
// node tag-lockstep.mjs --version 0.6.22 --dry # print commands without running
|
|
10
10
|
//
|
|
11
|
-
//
|
|
11
|
+
// Part of the adia-release skill. Mechanizes the tag loop used
|
|
12
12
|
// every cycle.
|
|
13
13
|
|
|
14
14
|
import { execSync } from 'node:child_process';
|
|
@@ -25,6 +25,10 @@ const PER_PACKAGE_NAMES = [
|
|
|
25
25
|
'a2ui-mcp',
|
|
26
26
|
'a2ui-retrieval',
|
|
27
27
|
'a2ui-validator',
|
|
28
|
+
// Plugins joined the lockstep 2026-07-15 (check-lockstep.mjs POLICY note);
|
|
29
|
+
// their `adia-ui-*-v*` tags trigger publish-adia-ui-{factory,forge}.yml.
|
|
30
|
+
'adia-ui-factory',
|
|
31
|
+
'adia-ui-forge',
|
|
28
32
|
];
|
|
29
33
|
|
|
30
34
|
function parseArgs(argv) {
|
|
@@ -67,7 +71,7 @@ function main() {
|
|
|
67
71
|
const tags = buildTagList(args.version);
|
|
68
72
|
|
|
69
73
|
if (args.deleteMode) {
|
|
70
|
-
console.log(`Deleting
|
|
74
|
+
console.log(`Deleting 12 tags for v${args.version}:`);
|
|
71
75
|
for (const t of tags) {
|
|
72
76
|
try {
|
|
73
77
|
run(`git tag -d ${t}`, args.repo, args.dry);
|
|
@@ -81,7 +85,7 @@ function main() {
|
|
|
81
85
|
}
|
|
82
86
|
|
|
83
87
|
const targetSha = args.at || run('git rev-parse HEAD', args.repo, false).trim();
|
|
84
|
-
console.log(`Creating
|
|
88
|
+
console.log(`Creating 12 tags for v${args.version} at ${targetSha.slice(0, 9)}:`);
|
|
85
89
|
for (const t of tags) {
|
|
86
90
|
try {
|
|
87
91
|
run(`git tag ${t} ${args.at || ''}`.trim(), args.repo, args.dry);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: adia-site-docs
|
|
3
|
+
description: >-
|
|
4
|
+
Review or author pages under site/pages/{architecture,getting-started,
|
|
5
|
+
guides,patterns,reference}/ — the 34-page docs site. Use when asked to add
|
|
6
|
+
or edit a getting-started/architecture/guides/patterns/reference page,
|
|
7
|
+
review a site docs page for consistency, fix a callout that reads as plain
|
|
8
|
+
text, or explain why an inline-code chip or a demo gallery looks broken.
|
|
9
|
+
NOT for a component's own .examples.html demo (adia-author) or any
|
|
10
|
+
pure-primitive-composition training-harvest page (governed by
|
|
11
|
+
composition-and-examples.md's no-style-block rule; owner: adia-a2ui).
|
|
12
|
+
disable-model-invocation: false
|
|
13
|
+
user-invocable: true
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# adia-site-docs
|
|
17
|
+
|
|
18
|
+
Every page under `site/pages/{architecture,getting-started,guides,patterns,
|
|
19
|
+
reference}/` shares one skeleton: `<header><h1>` + a deck `<p>`, then numbered
|
|
20
|
+
`<section data-section data-property="...">` blocks, each opening
|
|
21
|
+
`<h2 variant="section">` with an optional `<p data-note>` subtitle. Two
|
|
22
|
+
archetypes ride it — narrative/explainer (architecture, getting-started,
|
|
23
|
+
guides: prose + `<code-ui>` + tables, no live demos) and reference/gallery
|
|
24
|
+
(patterns, reference: the same skeleton plus `<preview-ui>` demo rows and a
|
|
25
|
+
near-universal closing "Guidance for agents" callout).
|
|
26
|
+
|
|
27
|
+
Full decomposition, the 4 concrete rules, and the training-harvest-surface
|
|
28
|
+
boundary this skill does NOT cover: read
|
|
29
|
+
[`../../../../../.claude/docs/conventions/site-pages-authoring.md`](../../../../../.claude/docs/conventions/site-pages-authoring.md)
|
|
30
|
+
in full before authoring or reviewing — it is the source of record; this
|
|
31
|
+
skill routes to it and enforces it, it does not restate it.
|
|
32
|
+
|
|
33
|
+
## Task shape → action
|
|
34
|
+
|
|
35
|
+
| Task shape | Do |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| New page in an owned category | Read the convention doc's template section; copy the shared skeleton from a sibling page in the same category (narrative archetype vs. reference/gallery archetype). |
|
|
38
|
+
| Callout / "meta content" block | `<alert-ui variant="warning\|info\|...">` with `<div slot="content">` (never `<span>` — the transpiler only treats `p`/`div`/`ul`/`ol` as prose; a `<span>` silently reorders mixed inline content on regen) for rich text — never a bare `data-*` attribute. A whole multi-heading section aimed at a different reader (not a short callout) is NOT `alert-ui`'s job either (wrong shape) — currently there's no working distinguishing treatment for this case beyond the heading text itself; see the convention doc's rule 2 for what's been tried and why it doesn't render. |
|
|
39
|
+
| Tamed admin-shell demo | Add `class="demo-frame"` to the shell instance + a page-local `<style>` block setting only `--demo-frame-height` (and any genuinely page-specific extra). That's `site/site.css`'s `.demo-frame` utility already covering `position`/`border`/`overflow`/`.demo-body` padding. |
|
|
40
|
+
| A surface needs to read as "its own distinct object" against the page background (a chip, a pill) | Reuse `--a-canvas-well-strong` (`packages/web-components/styles/colors/semantics/core.css`) — verified ≥3:1 (WCAG 2.2 SC 1.4.11) in both schemes. `--a-canvas-well` alone is for a subtly-sunken panel; a new candidate token always runs through `color:color-verify` first. |
|
|
41
|
+
| "Is this page consistent?" / review request | Check the page against the convention doc's rules 1–4 by name; a finding names the specific rule violated, not just "this looks off." |
|
|
42
|
+
| Anything touching a real UI primitive not already listed above | Audit `packages/web-components/components/` before inventing markup (this repo's standing rule) — a fake `data-*`/`class` convention with no CSS is exactly the defect class this skill exists to prevent. |
|
|
43
|
+
|
|
44
|
+
## Verify after any change
|
|
45
|
+
|
|
46
|
+
- `npm run check:links` — intra-repo links across the touched pages.
|
|
47
|
+
- `node scripts/build/site-a2ui.mjs --page <route>` for every page whose
|
|
48
|
+
**markup** changed — regenerates the compiled A2UI artifact the
|
|
49
|
+
docs-transpiler produces from this source; a CSS-only fix needs no regen.
|
|
50
|
+
- `color:color-verify` for any new or changed token used for text or
|
|
51
|
+
UI-component contrast — prove the ratio, don't estimate it.
|
|
52
|
+
- `npm run check:lightningcss-build` after any CSS change (`site/site.css`
|
|
53
|
+
or a component's own `.css`).
|
|
54
|
+
- **Visually verify any `alert-ui`/rich-slotted-content change in a
|
|
55
|
+
browser after regenerating** — a `valid:true` transpiler result and a
|
|
56
|
+
correct raw-HTML source do not prove the rendered order is correct;
|
|
57
|
+
the compiled `site-a2ui/pages/*.json` artifact is what's served, and
|
|
58
|
+
a wrong container tag (`<span>` instead of `<div>`) silently reorders
|
|
59
|
+
content while still passing schema validation. This is not optional
|
|
60
|
+
for this one content shape.
|
|
61
|
+
|
|
62
|
+
A check that cannot run (missing script, no network for a build step) is a
|
|
63
|
+
named blocker in the report — flag it and stop; never mark the page done on
|
|
64
|
+
an assumed pass.
|
|
65
|
+
|
|
66
|
+
Done when the touched page(s) pass the checks above and, for a reviewed
|
|
67
|
+
page, every finding cites the specific rule in `site-pages-authoring.md` it
|
|
68
|
+
violates.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# skill-review — adia-site-docs
|
|
2
|
+
|
|
3
|
+
Skill: packages/plugins/adia-ui-forge/skills/adia-site-docs/SKILL.md · Standards: skill-authoring-standards · Lint: clean
|
|
4
|
+
Verdict: PASS (no blocking finding)
|
|
5
|
+
|
|
6
|
+
Lint verbatim: `skill-postwrite-invocation-lint · clean · .../adia-site-docs/SKILL.md`
|
|
7
|
+
|
|
8
|
+
| ID | Verdict | Severity | Evidence (file:line) | Fix |
|
|
9
|
+
|----|---------|----------|----------------------|-----|
|
|
10
|
+
| R1 | PASS | — | SKILL.md:40 ("Never restate position/border/overflow…"), :41 (`--a-canvas-well-strong` verified ≥3:1), :43 (audit primitives before inventing markup) — each survives deletion; removing any re-admits a concrete defect class. | — |
|
|
11
|
+
| R2 | PASS | — | Desc SKILL.md:4-8 front-loads verbatim user phrasings ("add or edit a … page", "review a site docs page", "fix a callout that reads as plain text"); fences use the parseable `NOT for X (owner)` form :9-12. Corpus routing (evals/routing-corpus.json) covers 16 should-fire + 6 adversarial. | — |
|
|
12
|
+
| R3 | PASS w/ note | minor | Species=procedural (intent.md:3); dials explicit and agree (SKILL.md:13-14); name head `adia-site-docs` is a domain-noun, not the generic zero-derivation verb the standard prescribes for procedural — but it matches the whole plugin's `adia-<domain>` grammar (sibling adia-author is identically formed). Consistent within the estate; flagged only for the record. | Keep — estate naming convention governs; no change. |
|
|
13
|
+
| R4 | PASS w/ note | minor | Load-bearing rows instantiate concrete actions (SKILL.md:38-43). Negative imperatives run to ~4 ("do NOT invent" :38, "never a bare data-*" :39, "Never restate" :40, "don't reach for a raw ramp step without color-verify" :41) — at/over the ≤3 hard-gate guideline. | Optional: demote the two style-choice negatives (:38, :41) to positive form; reserve NEVER for :39/:40 catastrophic invariants. |
|
|
14
|
+
| R5 | PASS | — | Deliberately routes to `.claude/docs/conventions/site-pages-authoring.md` (SKILL.md:28-32) rather than copying rules 1-4; convention doc confirmed present with matching `### 1..4` headings. Drift pair avoided by design — the strongest dimension. | — |
|
|
15
|
+
| R6 | PASS | — | Task-shape contract table up front (SKILL.md:34-43); verify steps + stopping predicate at tail (:45-58); body 59 lines (well under 500 / 5,000-token head); reference one level deep. | — |
|
|
16
|
+
| R7 | PASS w/ gap | minor | Output contract present (review finding "cites the specific rule … it violates" :57-58); stopping predicate present ("Done when …" :56). No *named failure branches* (e.g. "if `check:links` cannot run → report blocker, do not mark done"). | Add one failure branch to the Verify section for a check that cannot run. |
|
|
17
|
+
| R8 | PASS | — | Numeric anchors on load-bearing dims: "34-page" (:5,20), "≥3:1 (WCAG 2.2 SC 1.4.11)" (:41), "rules 1-4" (:42,57). No vague quantifiers on load-bearing lines. | — |
|
|
18
|
+
|
|
19
|
+
## Additional evidence (non-scored hygiene)
|
|
20
|
+
|
|
21
|
+
- **Phantom fence paths** (minor): description fences `site/pages/examples/**` and `site/pages/gen-ui/**` (SKILL.md:11); neither directory currently exists under `site/pages/` (only architecture, getting-started, guides, patterns, reference). The fence spends description budget on surfaces that are not yet present. Keep if these are planned training-harvest surfaces (intent.md:52 treats them as governed by composition-and-examples.md); otherwise trim to reclaim characters. Not blocking — the fence is still correct if/when those surfaces land, and adversarial-02 tests it.
|
|
22
|
+
- **intent.md citation drift** (minor, not in payload): intent.md:64 cites `evals/evals.json`, but the shipped corpus is `evals/routing-corpus.json`. intent.md is a forge artifact, not skill payload, so it does not affect triggering — but repair the citation in the same edit to keep the record honest.
|
|
23
|
+
|
|
24
|
+
## Top 3
|
|
25
|
+
|
|
26
|
+
1. (minor) R7 — add one named failure branch to the Verify section (a check that cannot run → report blocker, do not mark done); procedural bodies owe an explicit failure branch, currently absent (SKILL.md:45-58).
|
|
27
|
+
2. (minor) R4 — negative-imperative count sits at ~4; demote the two style-choice negatives (:38 section shape, :41 ramp step) to positive phrasing, reserving hard gates for the two real invariants (:39 fabricated data-*, :40 restated demo-frame CSS).
|
|
28
|
+
3. (minor) Phantom fence — reconcile `site/pages/examples/**` and `site/pages/gen-ui/**` (SKILL.md:11): confirm they are planned surfaces or trim the fence; and fix the `evals.json` → `routing-corpus.json` citation in intent.md:64.
|
|
29
|
+
|
|
30
|
+
No blocking or major findings. The skill's reference-don't-restate discipline (R5) and measured contrast anchor (R8) are its strongest features.
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"name": "adia-site-docs routing accuracy corpus",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"purpose": "Routing-eval corpus for adia-site-docs (adia-forge plugin). Each phrase declares whether adia-site-docs SHOULD be the routing target. Scored by the estate's TF-IDF routing-eval runner against the skill's description (heuristic token overlap).",
|
|
6
|
+
"scoring_notes": "Heuristic signal, not ground truth. Treat misroutes as a prompt to tighten the skill description, never as a reason to keyword-stuff it. Real harness routing is LLM-driven.",
|
|
7
|
+
"license": "internal",
|
|
8
|
+
"scope": "adia-site-docs routing — does this phrase activate adia-site-docs?",
|
|
9
|
+
|
|
10
|
+
"minimums_per_spec": {
|
|
11
|
+
"trigger_phrases": 16,
|
|
12
|
+
"adversarial_phrases": 6,
|
|
13
|
+
"task_shapes_covered": "new-page, review-page, callout-fix, demo-frame-consistency, contrast-token, sibling-boundary",
|
|
14
|
+
"adversarial_fraction": "27%"
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
"phrases": [
|
|
18
|
+
{
|
|
19
|
+
"id": "site-docs-review-01",
|
|
20
|
+
"phrase": "review this site docs page for consistency",
|
|
21
|
+
"should_route_to_site_docs": true,
|
|
22
|
+
"expected_shape": "review-page",
|
|
23
|
+
"rationale": "Canonical review-a-page task shape."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "site-docs-review-02",
|
|
27
|
+
"phrase": "does this callout look like plain text to you",
|
|
28
|
+
"should_route_to_site_docs": true,
|
|
29
|
+
"expected_shape": "callout-fix",
|
|
30
|
+
"rationale": "Symptom description matching Defect 2 (fabricated data-alert)."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "site-docs-review-03",
|
|
34
|
+
"phrase": "why is the code background not visible on this page",
|
|
35
|
+
"should_route_to_site_docs": true,
|
|
36
|
+
"expected_shape": "contrast-token",
|
|
37
|
+
"rationale": "Symptom description matching Defect 1 (inline-code contrast)."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "site-docs-new-page-01",
|
|
41
|
+
"phrase": "add a new pattern page under site/pages/patterns",
|
|
42
|
+
"should_route_to_site_docs": true,
|
|
43
|
+
"expected_shape": "new-page",
|
|
44
|
+
"rationale": "Explicit site/pages/patterns path mention."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "site-docs-new-page-02",
|
|
48
|
+
"phrase": "author a new getting-started guide page",
|
|
49
|
+
"should_route_to_site_docs": true,
|
|
50
|
+
"expected_shape": "new-page",
|
|
51
|
+
"rationale": "getting-started/ is one of this skill's 5 owned categories."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "site-docs-new-page-03",
|
|
55
|
+
"phrase": "write a new architecture explainer page for the docs site",
|
|
56
|
+
"should_route_to_site_docs": true,
|
|
57
|
+
"expected_shape": "new-page",
|
|
58
|
+
"rationale": "architecture/ is one of this skill's 5 owned categories."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "site-docs-new-page-04",
|
|
62
|
+
"phrase": "create a reference page documenting the MCP tools",
|
|
63
|
+
"should_route_to_site_docs": true,
|
|
64
|
+
"expected_shape": "new-page",
|
|
65
|
+
"rationale": "reference/ is one of this skill's 5 owned categories."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "site-docs-demo-frame-01",
|
|
69
|
+
"phrase": "this demo page needs a tamed static frame like the other pattern pages",
|
|
70
|
+
"should_route_to_site_docs": true,
|
|
71
|
+
"expected_shape": "demo-frame-consistency",
|
|
72
|
+
"rationale": "Matches the .demo-frame consolidation rule."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "site-docs-demo-frame-02",
|
|
76
|
+
"phrase": "add a new admin-shell demo to this patterns page without duplicating the taming CSS",
|
|
77
|
+
"should_route_to_site_docs": true,
|
|
78
|
+
"expected_shape": "demo-frame-consistency",
|
|
79
|
+
"rationale": "Direct match on rule 3 (reuse .demo-frame)."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "site-docs-review-04",
|
|
83
|
+
"phrase": "is this site page consistent with our authoring conventions",
|
|
84
|
+
"should_route_to_site_docs": true,
|
|
85
|
+
"expected_shape": "review-page",
|
|
86
|
+
"rationale": "Direct convention-compliance ask."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "site-docs-review-05",
|
|
90
|
+
"phrase": "audit site/pages/guides for the same callout bug we found elsewhere",
|
|
91
|
+
"should_route_to_site_docs": true,
|
|
92
|
+
"expected_shape": "review-page",
|
|
93
|
+
"rationale": "Explicit guides/ path + defect-class reference."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "site-docs-callout-01",
|
|
97
|
+
"phrase": "this warning box on the docs page has no background at all",
|
|
98
|
+
"should_route_to_site_docs": true,
|
|
99
|
+
"expected_shape": "callout-fix",
|
|
100
|
+
"rationale": "Symptom description matching the fabricated data-alert defect."
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "site-docs-new-page-05",
|
|
104
|
+
"phrase": "what's the shared skeleton every site docs page should follow",
|
|
105
|
+
"should_route_to_site_docs": true,
|
|
106
|
+
"expected_shape": "new-page",
|
|
107
|
+
"rationale": "Direct ask about the template decomposition this skill carries."
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "site-docs-contrast-01",
|
|
111
|
+
"phrase": "what token should a new chip-like surface use to stay readable against the page background",
|
|
112
|
+
"should_route_to_site_docs": true,
|
|
113
|
+
"expected_shape": "contrast-token",
|
|
114
|
+
"rationale": "Direct match on rule 1 (--a-canvas-well-strong)."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "site-docs-review-06",
|
|
118
|
+
"phrase": "check the patterns pages for any other unstyled data attributes like data-alert",
|
|
119
|
+
"should_route_to_site_docs": true,
|
|
120
|
+
"expected_shape": "review-page",
|
|
121
|
+
"rationale": "Direct defect-class sweep request."
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "site-docs-new-page-06",
|
|
125
|
+
"phrase": "scaffold a new getting-started/theming-dark-mode.html page",
|
|
126
|
+
"should_route_to_site_docs": true,
|
|
127
|
+
"expected_shape": "new-page",
|
|
128
|
+
"rationale": "Explicit new-file-under-owned-category shape."
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
{
|
|
132
|
+
"id": "site-docs-adversarial-01",
|
|
133
|
+
"phrase": "review this component's own demo gallery in its .examples.html file",
|
|
134
|
+
"should_route_to_site_docs": false,
|
|
135
|
+
"expected_shape": "sibling-boundary",
|
|
136
|
+
"rationale": "packages/web-components/components/*/*.examples.html is adia-author's remit, not this skill's."
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "site-docs-adversarial-02",
|
|
140
|
+
"phrase": "fix this gen-ui training exemplar page under site/pages/examples",
|
|
141
|
+
"should_route_to_site_docs": false,
|
|
142
|
+
"expected_shape": "sibling-boundary",
|
|
143
|
+
"rationale": "site/pages/examples/** is the pure-primitive-composition training-harvest surface governed by composition-and-examples.md + adia-a2ui, explicitly fenced out."
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"id": "site-docs-adversarial-03",
|
|
147
|
+
"phrase": "tune the zettel retrieval threshold for the chunk corpus",
|
|
148
|
+
"should_route_to_site_docs": false,
|
|
149
|
+
"expected_shape": "sibling-boundary",
|
|
150
|
+
"rationale": "A2UI pipeline internals belong to adia-a2ui, unrelated to site/pages authoring."
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "site-docs-adversarial-04",
|
|
154
|
+
"phrase": "add a new prop to the button-ui primitive",
|
|
155
|
+
"should_route_to_site_docs": false,
|
|
156
|
+
"expected_shape": "sibling-boundary",
|
|
157
|
+
"rationale": "Primitive authoring is adia-author's remit."
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "site-docs-adversarial-05",
|
|
161
|
+
"phrase": "cut the next npm release for the 9 @adia-ai packages",
|
|
162
|
+
"should_route_to_site_docs": false,
|
|
163
|
+
"expected_shape": "sibling-boundary",
|
|
164
|
+
"rationale": "Release engineering is adia-release's remit, unrelated to docs-page authoring."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": "site-docs-adversarial-06",
|
|
168
|
+
"phrase": "deploy the docs site to ui-kit.exe.xyz",
|
|
169
|
+
"should_route_to_site_docs": false,
|
|
170
|
+
"expected_shape": "sibling-boundary",
|
|
171
|
+
"rationale": "Deploy operations are adia-deploy's remit; this skill authors content, it doesn't ship it."
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
|
|
175
|
+
"evaluator_notes": "Adversarial phrases 1-2 specifically test the two hardest-to-distinguish fences (component .examples.html vs site/pages/patterns/*.html; site/pages/examples/** vs site/pages/{architecture,getting-started,guides,patterns,reference}/**) — both surfaces are literally *.html under similar-looking paths, so the description must lean on the explicit path lists, not just 'site pages' as a phrase."
|
|
176
|
+
}
|