@adia-ai/adia-ui-forge 0.1.3 → 0.8.0

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.
Files changed (259) hide show
  1. package/.claude-plugin/plugin.json +3 -6
  2. package/CHANGELOG.md +27 -34
  3. package/README.md +35 -40
  4. package/agents/a2ui-engineer.md +22 -53
  5. package/agents/component-author.md +29 -0
  6. package/agents/framework-verifier.md +26 -0
  7. package/agents/release-engineer.md +21 -81
  8. package/agents/routing-corpus.json +293 -64
  9. package/bin/demo-postwrite-pattern-gate +94 -0
  10. package/bin/forge-lint +17 -2
  11. package/bin/sidecar-prewrite-guard +104 -0
  12. package/commands/deploy.md +9 -0
  13. package/commands/dogfood.md +10 -0
  14. package/commands/gen-review.md +9 -0
  15. package/commands/release.md +10 -0
  16. package/hooks/hooks.json +15 -0
  17. package/package.json +3 -6
  18. package/references/contracts/a2ui-mcp-surface.md +35 -0
  19. package/references/contracts/migration-guide-format.md +34 -0
  20. package/references/shared/content-trust.md +19 -74
  21. package/skills/adia-a2ui/SKILL.md +99 -0
  22. package/skills/{adia-ui-a2ui → adia-a2ui}/evals/routing-corpus.json +10 -10
  23. package/skills/adia-a2ui/references/anti-patterns.md +27 -0
  24. package/skills/adia-a2ui/references/chunk-authoring.md +71 -0
  25. package/skills/adia-a2ui/references/corpus-discipline.md +68 -0
  26. package/skills/adia-a2ui/references/eval-diagnostics.md +86 -0
  27. package/skills/adia-a2ui/references/format-extension-decisions.md +66 -0
  28. package/skills/adia-a2ui/references/leverage-rules.md +52 -0
  29. package/skills/adia-a2ui/references/mcp-pipeline-ops.md +83 -0
  30. package/skills/adia-a2ui/references/mcp-tool-reference.md +59 -0
  31. package/skills/adia-a2ui/references/pipeline-overview.md +115 -0
  32. package/skills/adia-a2ui/references/semantic-fail-lifting.md +74 -0
  33. package/skills/adia-a2ui/references/strategy-engines.md +109 -0
  34. package/skills/adia-a2ui/references/zettel-calibration.md +104 -0
  35. package/skills/adia-author/SKILL.md +112 -0
  36. package/skills/adia-author/evals/routing-corpus.json +222 -0
  37. package/skills/{adia-ui-authoring → adia-author}/references/anti-patterns.md +33 -4
  38. package/skills/{adia-ui-authoring → adia-author}/references/authoring-cycle.md +9 -11
  39. package/skills/adia-author/references/canonical-pattern-index.md +243 -0
  40. package/skills/{adia-ui-authoring → adia-author}/references/code-style.md +19 -21
  41. package/skills/adia-author/references/common-gotchas.md +129 -0
  42. package/skills/adia-author/references/composite-demo-protocol.md +271 -0
  43. package/skills/{adia-ui-authoring → adia-author}/references/css-patterns.md +19 -6
  44. package/skills/{adia-ui-authoring → adia-author}/references/lifecycle-patterns.md +1 -0
  45. package/skills/{adia-ui-authoring → adia-author}/references/llm-bridge.md +3 -5
  46. package/skills/{adia-ui-authoring → adia-author}/references/module-promotion.md +20 -38
  47. package/skills/{adia-ui-authoring → adia-author}/references/primitive-audit.md +2 -4
  48. package/skills/{adia-ui-authoring → adia-author}/references/shell-patterns.md +12 -18
  49. package/skills/{adia-ui-authoring → adia-author}/references/token-contract.md +5 -7
  50. package/skills/{adia-ui-authoring → adia-author}/references/worked-example.md +3 -3
  51. package/skills/{adia-ui-authoring → adia-author}/references/yaml-contract.md +3 -3
  52. package/skills/{adia-ui-authoring → adia-author}/scripts/build-canonical-pattern-index.mjs +3 -3
  53. package/skills/adia-deploy/SKILL.md +128 -0
  54. package/skills/{adia-ui-ops → adia-deploy}/references/deploy-playbooks.md +47 -30
  55. package/skills/adia-dogfood/SKILL.md +124 -0
  56. package/skills/adia-dogfood/references/admin-shell-anatomy.md +77 -0
  57. package/skills/adia-dogfood/references/app-shell-pitfalls.md +66 -0
  58. package/skills/adia-dogfood/references/card-anatomy-sweep.md +66 -0
  59. package/skills/adia-dogfood/references/html-attr-sweep.md +63 -0
  60. package/skills/adia-dogfood/references/native-leak-annotations.md +73 -0
  61. package/skills/adia-dogfood/references/visual-probe-triage.md +80 -0
  62. package/skills/{adia-ui-dogfood → adia-dogfood}/scripts/analyze.mjs +30 -14
  63. package/skills/adia-gen-review/SKILL.md +127 -0
  64. package/skills/adia-gen-review/references/corpus-html-patterns.md +279 -0
  65. package/skills/adia-gen-review/references/loop-protocol.md +216 -0
  66. package/skills/adia-gen-review/references/rubric-cosmetic.md +100 -0
  67. package/skills/adia-gen-review/references/rubric-decompose.md +101 -0
  68. package/skills/adia-gen-review/references/rubric-score.md +214 -0
  69. package/skills/{adia-ui-gen-review → adia-gen-review}/references/scores.schema.json +2 -2
  70. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-coverage-audit.mjs +4 -4
  71. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-decompose.mjs +10 -6
  72. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/gen-review-status.mjs +5 -5
  73. package/skills/{adia-ui-gen-review → adia-gen-review}/scripts/validate-cycle-scores.mjs +5 -5
  74. package/skills/adia-llm-internals/SKILL.md +77 -0
  75. package/skills/{adia-ui-llm → adia-llm-internals}/references/adapter-contract.md +4 -2
  76. package/skills/{adia-ui-llm → adia-llm-internals}/references/add-a-provider.md +4 -5
  77. package/skills/{adia-ui-llm → adia-llm-internals}/references/bridge-facade.md +10 -3
  78. package/skills/{adia-ui-llm → adia-llm-internals}/references/browser-proxy-boundary.md +1 -1
  79. package/skills/{adia-ui-llm → adia-llm-internals}/references/model-registry.md +5 -3
  80. package/skills/{adia-ui-llm → adia-llm-internals}/references/streaming-sse.md +2 -2
  81. package/skills/adia-release/SKILL.md +72 -0
  82. package/skills/adia-release/references/changelog-discipline.md +119 -0
  83. package/skills/adia-release/references/cut-procedure.md +247 -0
  84. package/skills/adia-release/references/gates-catalog.md +222 -0
  85. package/skills/adia-release/references/independent-package-release.md +52 -0
  86. package/skills/adia-release/references/migration-guide-authoring.md +86 -0
  87. package/skills/adia-release/references/notes-authoring.md +90 -0
  88. package/skills/adia-release/references/recovery-paths.md +106 -0
  89. package/skills/{adia-ui-release → adia-release}/scripts/bump.mjs +27 -2
  90. package/skills/{adia-ui-release → adia-release}/scripts/dispatch-publish.mjs +4 -1
  91. package/skills/{adia-ui-release → adia-release}/scripts/insert-stub.mjs +1 -1
  92. package/skills/{adia-ui-release → adia-release}/scripts/package-paths.mjs +6 -0
  93. package/skills/{adia-ui-release → adia-release}/scripts/promote-unreleased.mjs +1 -1
  94. package/skills/{adia-ui-release → adia-release}/scripts/release-pack.mjs +13 -21
  95. package/skills/{adia-ui-release → adia-release}/scripts/tag-lockstep.mjs +5 -1
  96. package/skills/adia-site-docs/SKILL.md +68 -0
  97. package/skills/adia-site-docs/evals/audit-report.md +30 -0
  98. package/skills/adia-site-docs/evals/routing-corpus.json +176 -0
  99. package/skills/adia-site-docs/intent.md +72 -0
  100. package/agents/README.md +0 -209
  101. package/agents/author.md +0 -56
  102. package/agents/repo-steward.md +0 -56
  103. package/agents/spec-architect.md +0 -53
  104. package/agents/tech-lead.md +0 -57
  105. package/agents/verifier.md +0 -55
  106. package/bin/lib/audit-axes.mjs +0 -555
  107. package/bin/lib/dry-run-irreversible.mjs +0 -236
  108. package/bin/lib/run-skill-evals.mjs +0 -487
  109. package/bin/lib/teach-router.mjs +0 -250
  110. package/commands/adia-forge-a2ui.md +0 -10
  111. package/commands/adia-forge-author.md +0 -10
  112. package/commands/adia-forge-dogfood.md +0 -8
  113. package/commands/adia-forge-llm.md +0 -8
  114. package/commands/adia-forge-orient.md +0 -10
  115. package/commands/adia-forge-release.md +0 -8
  116. package/commands/adia-forge-review.md +0 -10
  117. package/references/shared/pev-rationale.md +0 -64
  118. package/references/shared/skill-conventions.md +0 -133
  119. package/skills/adia-ui-a2ui/CHANGELOG.md +0 -32
  120. package/skills/adia-ui-a2ui/SKILL.md +0 -243
  121. package/skills/adia-ui-a2ui/evals/adversarial-corpus.json +0 -75
  122. package/skills/adia-ui-a2ui/evals/teach-routing-cases.json +0 -100
  123. package/skills/adia-ui-a2ui/references/anti-patterns.md +0 -24
  124. package/skills/adia-ui-a2ui/references/chunk-authoring.md +0 -88
  125. package/skills/adia-ui-a2ui/references/corpus-discipline.md +0 -56
  126. package/skills/adia-ui-a2ui/references/eval-diagnostics.md +0 -127
  127. package/skills/adia-ui-a2ui/references/fragment-graph.md +0 -91
  128. package/skills/adia-ui-a2ui/references/mcp-pipeline-ops.md +0 -106
  129. package/skills/adia-ui-a2ui/references/mcp-tool-reference.md +0 -398
  130. package/skills/adia-ui-a2ui/references/pipeline-overview.md +0 -175
  131. package/skills/adia-ui-a2ui/references/semantic-fail-lifting.md +0 -120
  132. package/skills/adia-ui-a2ui/references/strategy-engines.md +0 -111
  133. package/skills/adia-ui-a2ui/references/teach-protocol.md +0 -220
  134. package/skills/adia-ui-a2ui/references/zettel-calibration.md +0 -93
  135. package/skills/adia-ui-a2ui/scripts/audit-a2ui-roster.mjs +0 -96
  136. package/skills/adia-ui-a2ui/scripts/teach-route.mjs +0 -157
  137. package/skills/adia-ui-a2ui/skill.json +0 -38
  138. package/skills/adia-ui-authoring/CHANGELOG.md +0 -32
  139. package/skills/adia-ui-authoring/SKILL.md +0 -256
  140. package/skills/adia-ui-authoring/assets/case-studies/admin-shell-decomposition.md +0 -101
  141. package/skills/adia-ui-authoring/assets/case-studies/maxtokens-32768-discovery.md +0 -109
  142. package/skills/adia-ui-authoring/assets/case-studies/theme-panel-promotion.md +0 -113
  143. package/skills/adia-ui-authoring/evals/adversarial-design-plan-gates.json +0 -138
  144. package/skills/adia-ui-authoring/evals/routing-corpus.json +0 -245
  145. package/skills/adia-ui-authoring/references/canonical-pattern-index.md +0 -179
  146. package/skills/adia-ui-authoring/references/common-gotchas.md +0 -93
  147. package/skills/adia-ui-authoring/references/composite-demo-protocol.md +0 -1084
  148. package/skills/adia-ui-authoring/references/teach-protocol.md +0 -428
  149. package/skills/adia-ui-authoring/scripts/audit-authoring-roster.mjs +0 -148
  150. package/skills/adia-ui-authoring/skill.json +0 -45
  151. package/skills/adia-ui-dogfood/CHANGELOG.md +0 -17
  152. package/skills/adia-ui-dogfood/README.md +0 -62
  153. package/skills/adia-ui-dogfood/SKILL.md +0 -866
  154. package/skills/adia-ui-dogfood/skill.json +0 -40
  155. package/skills/adia-ui-forge/SKILL.md +0 -88
  156. package/skills/adia-ui-forge/evals/routing-corpus.json +0 -30
  157. package/skills/adia-ui-gen-review/CHANGELOG.md +0 -108
  158. package/skills/adia-ui-gen-review/SKILL.md +0 -266
  159. package/skills/adia-ui-gen-review/references/loop-protocol.md +0 -712
  160. package/skills/adia-ui-gen-review/references/rubric-cosmetic.md +0 -144
  161. package/skills/adia-ui-gen-review/references/rubric-decompose.md +0 -117
  162. package/skills/adia-ui-gen-review/references/rubric-score.md +0 -249
  163. package/skills/adia-ui-gen-review/references/teach-protocol.md +0 -214
  164. package/skills/adia-ui-gen-review/skill.json +0 -23
  165. package/skills/adia-ui-llm/CHANGELOG.md +0 -25
  166. package/skills/adia-ui-llm/SKILL.md +0 -165
  167. package/skills/adia-ui-llm/evals/adversarial-corpus.json +0 -75
  168. package/skills/adia-ui-llm/evals/routing-corpus.json +0 -30
  169. package/skills/adia-ui-llm/evals/teach-routing-cases.json +0 -73
  170. package/skills/adia-ui-llm/references/teach-protocol.md +0 -78
  171. package/skills/adia-ui-llm/scripts/audit-llm-roster.mjs +0 -93
  172. package/skills/adia-ui-llm/scripts/teach-route.mjs +0 -119
  173. package/skills/adia-ui-llm/skill.json +0 -33
  174. package/skills/adia-ui-ops/CHANGELOG.md +0 -291
  175. package/skills/adia-ui-ops/SKILL.md +0 -401
  176. package/skills/adia-ui-ops/references/INDEX.md +0 -158
  177. package/skills/adia-ui-ops/references/audit-cadence.md +0 -263
  178. package/skills/adia-ui-ops/references/audit-patterns/archive-link-sweep.md +0 -96
  179. package/skills/adia-ui-ops/references/audit-patterns/audit-history-ledger.md +0 -162
  180. package/skills/adia-ui-ops/references/audit-patterns/browser-bundle-node-imports.md +0 -154
  181. package/skills/adia-ui-ops/references/audit-patterns/changelog-unreleased-bloat.md +0 -75
  182. package/skills/adia-ui-ops/references/audit-patterns/coverage-gaps.md +0 -187
  183. package/skills/adia-ui-ops/references/audit-patterns/entry-file-coverage.md +0 -122
  184. package/skills/adia-ui-ops/references/audit-patterns/format-hygiene.md +0 -217
  185. package/skills/adia-ui-ops/references/audit-patterns/lockstep-versioning.md +0 -113
  186. package/skills/adia-ui-ops/references/audit-patterns/memory-fragmentation.md +0 -180
  187. package/skills/adia-ui-ops/references/audit-patterns/orphan-detection.md +0 -202
  188. package/skills/adia-ui-ops/references/audit-patterns/pointer-validation.md +0 -180
  189. package/skills/adia-ui-ops/references/audit-patterns/redundancy-detection.md +0 -210
  190. package/skills/adia-ui-ops/references/audit-patterns/spec-dating-sweep.md +0 -91
  191. package/skills/adia-ui-ops/references/audit-patterns/stale-content.md +0 -182
  192. package/skills/adia-ui-ops/references/audit-patterns/staleness-tooling.md +0 -156
  193. package/skills/adia-ui-ops/references/audit-patterns/token-waste-detection.md +0 -196
  194. package/skills/adia-ui-ops/references/doc-types/adr-pattern.md +0 -210
  195. package/skills/adia-ui-ops/references/doc-types/architecture-md.md +0 -190
  196. package/skills/adia-ui-ops/references/doc-types/changelog.md +0 -183
  197. package/skills/adia-ui-ops/references/doc-types/decisions-log.md +0 -146
  198. package/skills/adia-ui-ops/references/doc-types/plan-roadmap.md +0 -182
  199. package/skills/adia-ui-ops/references/doc-types/postmortem-pattern.md +0 -206
  200. package/skills/adia-ui-ops/references/genres/prose-and-writing.md +0 -149
  201. package/skills/adia-ui-ops/references/guidance/context-budget.md +0 -137
  202. package/skills/adia-ui-ops/references/guidance/llm-doc-writing.md +0 -116
  203. package/skills/adia-ui-ops/references/guidance/reliability-dial.md +0 -186
  204. package/skills/adia-ui-ops/references/recipes/adr-introduction.md +0 -211
  205. package/skills/adia-ui-ops/references/recipes/audit-existing-repo.md +0 -234
  206. package/skills/adia-ui-ops/references/recipes/cold-start-harvest.md +0 -263
  207. package/skills/adia-ui-ops/references/recipes/concurrent-learnings-merge.md +0 -158
  208. package/skills/adia-ui-ops/references/recipes/continuous-learning-loop.md +0 -169
  209. package/skills/adia-ui-ops/references/recipes/external-reference-verification.md +0 -158
  210. package/skills/adia-ui-ops/references/recipes/findings-index-readout.md +0 -126
  211. package/skills/adia-ui-ops/references/recipes/greenfield-setup.md +0 -252
  212. package/skills/adia-ui-ops/references/recipes/harvest-repo-brain.md +0 -169
  213. package/skills/adia-ui-ops/references/recipes/import-repo-brain-harvest.md +0 -153
  214. package/skills/adia-ui-ops/references/recipes/memory-organization.md +0 -182
  215. package/skills/adia-ui-ops/references/recipes/recommend-then-validate.md +0 -199
  216. package/skills/adia-ui-ops/references/recipes/self-healing-hooks.md +0 -366
  217. package/skills/adia-ui-ops/references/recipes/skill-stewardship-loop.md +0 -113
  218. package/skills/adia-ui-ops/references/standards/agents-md-spec.md +0 -138
  219. package/skills/adia-ui-ops/references/standards/claude-md-convention.md +0 -123
  220. package/skills/adia-ui-ops/references/standards/cross-tool-matrix.md +0 -85
  221. package/skills/adia-ui-ops/references/standards/readme-conventions.md +0 -232
  222. package/skills/adia-ui-ops/references/teach-protocol.md +0 -215
  223. package/skills/adia-ui-ops/scripts/audit-ops-roster.mjs +0 -104
  224. package/skills/adia-ui-ops/skill.json +0 -65
  225. package/skills/adia-ui-release/CHANGELOG.md +0 -66
  226. package/skills/adia-ui-release/SKILL.md +0 -323
  227. package/skills/adia-ui-release/assets/case-studies/2026-05-20-batch-push-v0.6.14-v0.6.15.md +0 -144
  228. package/skills/adia-ui-release/assets/case-studies/2026-05-20-corpus-drift-remediation-v0.6.15.md +0 -155
  229. package/skills/adia-ui-release/assets/case-studies/2026-05-20-version-skip-correction-v0.6.12.md +0 -114
  230. package/skills/adia-ui-release/assets/case-studies/2026-05-21-author-from-scratch-v0.6.18.md +0 -139
  231. package/skills/adia-ui-release/assets/case-studies/2026-05-21-feedback37-retraction-v0.6.21.md +0 -124
  232. package/skills/adia-ui-release/assets/case-studies/2026-05-21-fn1-enrichment-pass-v0.6.19.md +0 -125
  233. package/skills/adia-ui-release/assets/case-studies/2026-05-21-stale-test-detection-v0.6.20.md +0 -142
  234. package/skills/adia-ui-release/assets/case-studies/2026-05-23-freshness-gate-recovery-v0.6.32.md +0 -97
  235. package/skills/adia-ui-release/assets/case-studies/2026-05-26-catalog-drift-recurring-v0.6.40.md +0 -147
  236. package/skills/adia-ui-release/assets/templates/stub-changelog.template.md +0 -22
  237. package/skills/adia-ui-release/evals/evals.json +0 -164
  238. package/skills/adia-ui-release/references/changelog-discipline.md +0 -250
  239. package/skills/adia-ui-release/references/cycle-happy-path.md +0 -520
  240. package/skills/adia-ui-release/references/exe-deploy.md +0 -149
  241. package/skills/adia-ui-release/references/gates-catalog.md +0 -778
  242. package/skills/adia-ui-release/references/independent-package-release.md +0 -129
  243. package/skills/adia-ui-release/references/ledger-discipline.md +0 -232
  244. package/skills/adia-ui-release/references/migration-guide-authoring.md +0 -174
  245. package/skills/adia-ui-release/references/multi-agent-baseline.md +0 -207
  246. package/skills/adia-ui-release/references/notes-authoring.md +0 -212
  247. package/skills/adia-ui-release/references/recovery-paths.md +0 -262
  248. package/skills/adia-ui-release/references/rollup-notes.md +0 -208
  249. package/skills/adia-ui-release/references/teach-protocol.md +0 -468
  250. package/skills/adia-ui-release/scripts/audit-gate-roster.mjs +0 -196
  251. package/skills/adia-ui-release/scripts/make-ledger.mjs +0 -200
  252. package/skills/adia-ui-release/skill.json +0 -77
  253. package/skills/dogfood-sweep/CHANGELOG.md +0 -37
  254. package/skills/dogfood-sweep/README.md +0 -105
  255. package/skills/dogfood-sweep/SKILL.md +0 -1000
  256. package/skills/dogfood-sweep/analyze.mjs +0 -600
  257. package/skills/dogfood-sweep/skill.json +0 -31
  258. /package/skills/{adia-ui-authoring → adia-author}/references/api-contract.md +0 -0
  259. /package/skills/{adia-ui-release → adia-release}/scripts/assert-monorepo-root.mjs +0 -0
@@ -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
- // Phase 2 of the adia-ui-release skill. Replaces the inline stub-
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
- // Phase 2 of the adia-ui-release skill. Replaces the inline heading-swap
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 6 Phase-1/2/3 CLI helpers (bump · promote-unreleased ·
5
- // insert-stub · tag-lockstep · dispatch-publish · make-ledger) plus the
6
- // non-helper steps (lockfile · pre-flight gates · git commit · F-N1 ·
7
- // push · GH releases · site deploy) into one walked sequence with 3
8
- // operator checkpoints (before tag, before push, before publish) per
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
- // PHASE 4 of the adia-ui-release skill. Mechanizes the 11-step cycle from
37
- // references/cycle-happy-path.md while preserving operator judgment at
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';
@@ -274,7 +273,7 @@ function step7Fn1(args) {
274
273
  // THE BATCH-PUSH SKIP (bit the v0.7.14 cut): `git push origin <10 tags>` in one
275
274
  // invocation fires the push-on-tag `create` event ONCE for the whole ref-set,
276
275
  // and GitHub Actions routinely drops it — ZERO publish-on-tag workflows trigger.
277
- // (Memory: feedback_publish_workflow_batch_push; recovery-paths.md §Scenario 7.)
276
+ // (recovery-paths.md §Scenario 7 — the batch-tag-push publish-skip.)
278
277
  // Pushing each per-package tag separately gives the per-package publish-<pkg>.yml
279
278
  // `on: push: tags:` trigger its own create event. The umbrella tag is pushed
280
279
  // last (it triggers nothing — convention only).
@@ -341,15 +340,9 @@ async function step10GhAndSite(args) {
341
340
  }
342
341
  sh('npm run build:site', args);
343
342
  sh(`rsync -az --delete dist/ ${args.host}:/srv/adia-ui/dist/`, args);
344
- sh(`curl -s -o /dev/null -w "EXE gen-ui: HTTP %{http_code}\\n" https://${args.host}/site/gen-ui/`, args);
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.');
343
+ // Verify a deployed CONTENT FILE, never an SPA route — the docs site
344
+ // returns HTTP 200 + a blank shell for ANY unmatched route (v0.7.4 trap).
345
+ 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
346
  }
354
347
 
355
348
  // ── Main ─────────────────────────────────────────────────────────
@@ -357,7 +350,7 @@ async function main() {
357
350
  const args = parseArgs(process.argv.slice(2));
358
351
  // Fail-fast guard: refuse to git/npm/gh/curl against a non-monorepo directory.
359
352
  assertMonorepoRoot(REPO);
360
- console.log(`adia-ui-release release-pack — v${args.version} (${args.mode})${args.dry ? ' [DRY]' : ''}`);
353
+ console.log(`adia-release release-pack — v${args.version} (${args.mode})${args.dry ? ' [DRY]' : ''}`);
361
354
  step1ReBaseline(args);
362
355
  step3PreFlight(args);
363
356
  step4PromoteAndBump(args);
@@ -367,9 +360,8 @@ async function main() {
367
360
  await step8Push(args);
368
361
  await step9Publish(args);
369
362
  await step10GhAndSite(args);
370
- step11Ledger(args);
371
363
  rl.close();
372
- console.log('\n✓ release-pack complete. Don\'t forget to commit + push the ledger.');
364
+ console.log('\n✓ release-pack complete. Verify against the npm registry + GH releases, then author the release notes.');
373
365
  }
374
366
 
375
367
  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
- // Phase 2 of the adia-ui-release skill. Mechanizes the tag loop used
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) {
@@ -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
+ }
@@ -0,0 +1,72 @@
1
+ # intent — adia-site-docs
2
+ status: shipped
3
+ species: procedural
4
+ dials: { disable-model-invocation: false, user-invocable: true }
5
+ freedom: medium
6
+ type: capability-uplift
7
+
8
+ Note: this intent record was filled directly from an already-approved
9
+ plan (`.claude/plans/enchanted-singing-globe.md`, "Site docs review +
10
+ authoring method") and this session's own research (3 parallel Explore
11
+ agents surveying `site/pages/`'s structure, a color-contrast root-cause
12
+ investigation, and a review of existing tooling) rather than a live
13
+ turn-by-turn interview — the operator confirmed the plan, including
14
+ "doc + a dedicated skill" as the Phase 4 method depth, before this
15
+ skill was forged. Slots below are answered from that record, not
16
+ fabricated dialogue.
17
+
18
+ ## trigger
19
+ should:
20
+ - "review this site docs page"
21
+ - "add a new pattern page under site/pages/patterns"
22
+ - "why does this callout look like plain text"
23
+ - "author a new page under site/pages/getting-started"
24
+ - "is this site page consistent with our conventions"
25
+ should_not:
26
+ - "review this component demo gallery" (packages/web-components/components/*/*.examples.html — adia-author)
27
+ - "fix this gen-ui training exemplar page" (site/pages/examples/**, site/pages/gen-ui/** — composition-and-examples.md's no-style-block rule + adia-a2ui)
28
+
29
+ ## delta
30
+ Without this skill, Claude (or a human author) reaches for whatever
31
+ looks locally plausible on a `site/pages/*.html` page and repeats the
32
+ defect classes this session found and fixed: a fabricated `data-*`
33
+ attribute standing in for a real primitive (16 of 34 pages had
34
+ `data-alert="warning|info"` with ZERO matching CSS anywhere — dead
35
+ markup that silently renders as plain paragraphs), a hand-rolled
36
+ `<style>` block duplicating an existing shared utility (4 pages
37
+ independently reinvented the same "tame this admin-shell demo" CSS),
38
+ and a background token picked for its "feels dark and subtle" name
39
+ rather than its actual measured contrast (inline `<code>` used
40
+ `--a-canvas-well`, verified via `color:color-verify` at ~1.1:1 against
41
+ the page background — WCAG 2.2 SC 1.4.11 wants ≥3:1). All three are
42
+ now fixed at the shared-CSS/token level (cascades to all 34 pages),
43
+ but a NEW page authored without this skill's guidance would
44
+ re-introduce the same classes on page 35. Deleted after a month: the
45
+ next contributor re-invents a `data-tip`/`data-caution` variant of the
46
+ same dead-attribute bug, or a 5th hand-rolled demo-taming `<style>`
47
+ block, because nothing routes them to `alert-ui` or `.demo-frame`
48
+ before they start typing.
49
+
50
+ ## fences
51
+ - NOT for `packages/web-components/components/*/*.examples.html` component demo pages (adia-author)
52
+ - NOT for `site/pages/examples/**`, `site/pages/gen-ui/**`, `packages/a2ui/corpus/exemplars/**` — pure primitive-composition training-harvest surfaces with their own no-style-block rule (`composition-and-examples.md`, adia-a2ui)
53
+ - NOT for the A2UI generation pipeline itself, chunk corpus, or MCP tools (adia-a2ui)
54
+
55
+ ## assertions
56
+ 1. A new callout block the skill produces uses `<alert-ui variant="...">` with a `[slot="content"]` wrapper for rich text — never a bare `data-*` attribute with no matching CSS.
57
+ 2. A new tamed-demo page the skill produces adds `class="demo-frame"` plus only a page-local `--demo-frame-height` override — it does not restate `position`/`border`/`overflow`/`.demo-body` padding.
58
+ 3. When asked to review an existing page, the skill's output names the specific rule from `site-pages-authoring.md` a defect violates (not just "this looks off").
59
+ 4. The skill's own description correctly declines to fire on a component `.examples.html` demo or a `site/pages/examples/**` training page (see `should_not` above) and instead names the owning sibling skill.
60
+
61
+ ## gates
62
+ P0 route: PASS — 2026-07-14 — knowledge/procedure needed on demand (author or review a site/pages doc), not mechanically checkable (hook), not always-true-every-turn (entry file), no tool-wall/parallelism need (agent). Skill.
63
+ P1 intent: PASS — 2026-07-14 — slots filled from the approved plan + this session's research; operator confirmed the plan's Phase 4 scope (doc + dedicated skill) via AskUserQuestion before forging began.
64
+ P2 evals: PASS — 2026-07-14 — see evals/routing-corpus.json (trigger cases, matching this repo's adia-author sibling's own eval-file convention) and assertions above (behavioral). No literal fresh-session baseline captured (this is a same-session, plan-driven forge, not an interactive intent interview) — the delta section above records the concrete "without this skill" failure mode from direct evidence (the 3 defect classes this session found and fixed) in place of a baseline transcript.
65
+ P3 draft: PASS — 2026-07-14 — SKILL.md + evals/routing-corpus.json exist; both dials explicit; body 61 lines, well under the 500-line budget.
66
+ P4 language: PASS — 2026-07-14 — self-audited against the 5 instantiation checks: task-shape rows commit to concrete actions (not descriptions); ~3 hard-gate ceiling held (never restate demo-frame properties, never a bare data-* callout, don't reach for a raw ramp step without color-verify); numeric anchors present (>=3:1, 34-page, 4 rules); contracts (task-shape table) precede the verify-steps tail; the labeled good/bad alert-ui pair lives in the referenced convention doc rather than duplicated here (reference, never restate).
67
+ P5 validate: PASS — 2026-07-14 — skill_lint.py clean; skill-auditor FLOOR audit verdict PASS (report at evals/audit-report.md), 3 minor non-blocking findings, all fixed same-change (phantom fence trimmed to reference composition-and-examples.md by name rather than specific paths; 2 negative imperatives demoted to positive form; intent.md's routing-corpus.json citation corrected). No fence-reciprocity step run against adia-author's own evals — adia-author's corpus already covers "primitive authoring" as should_route_to_author:true, which is the correct answer for those phrases; no reciprocal edit needed there.
68
+
69
+ ## rulings
70
+ - Accepted with note: no literal fresh-session baseline transcript (P2) — this forge ran from an already-approved plan's research rather than a live interview; the delta section's direct evidence substitutes. Not re-litigated.
71
+ - Accepted with note: convention doc lives at `.claude/docs/conventions/site-pages-authoring.md`, not inside this skill's own `references/` — deliberate, to avoid a drift pair with the doc that's also linked from `document-routing.md`.
72
+ - Post-ship correction (same session, before task close): the skill's own Rule-2 example used `<span slot="content">` — a real bug, not just a style choice. `scripts/build/lib/docs-transpiler.mjs`'s `PROSE_CONTAINERS` only recognizes `p`/`div`/`ul`/`ol`; `<span>` fell to a different decomposition path that silently reordered mixed inline content (a leading `<strong>` rendered AFTER the surrounding text, bold dropped) once the compiled `site-a2ui/pages/*.json` regenerated — invisible to schema validation (`valid:true`) and to a raw-HTML read, only caught by a live-browser check. Fixed in SKILL.md, the convention doc, and all 16 already-migrated `site/pages/*.html` files (`<span>` → `<div>`). Added "visually verify" as a non-optional Verify step for this content shape.