@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.
- package/.claude-plugin/plugin.json +3 -6
- package/CHANGELOG.md +27 -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 +27 -2
- package/skills/{adia-ui-release → adia-release}/scripts/dispatch-publish.mjs +4 -1
- 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 +13 -21
- package/skills/{adia-ui-release → adia-release}/scripts/tag-lockstep.mjs +5 -1
- 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
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# §Teach protocol — mode 8
|
|
2
|
-
|
|
3
|
-
The extensibility binding for "make sure `adia-ui-llm` knows about X" / "train the skill on a new provider quirk" / "absorb this adapter pitfall into adia-ui-llm". This is the producer-side teach surface: it lands knowledge about MAINTAINING `@adia-ai/llm`, never about consuming it (consumer knowledge routes to the separate `adia-ui-factory` consumer skill).
|
|
4
|
-
|
|
5
|
-
The decision tree below is mechanized in `scripts/teach-route.mjs` (the authoritative routing); this prose mirrors the branches for human readers and adds worked examples + anti-patterns.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## The first question — does it land in the skill at all?
|
|
10
|
-
|
|
11
|
-
The skill is a CITATION layer, not a KNOWLEDGE layer. Much "new knowledge" about the LLM client is actually a **source edit**, not a skill edit:
|
|
12
|
-
|
|
13
|
-
- A new field in a provider's response mapping → edit `packages/llm/src/adapters/<name>.ts` (`parseResponse` / `parseStream`). The skill changes only if a cross-adapter RULE changed.
|
|
14
|
-
- A new model id → edit `packages/llm/src/models.ts`. The skill changes only if a registry rule changed (e.g. a new id-naming convention `detectProvider` must learn).
|
|
15
|
-
- A new default → edit the source map (`models.ts:DEFAULT_MODEL` or `llm-bridge.ts:DEFAULT_MODELS`). The skill cites the maps; it doesn't store the values.
|
|
16
|
-
|
|
17
|
-
If the payload is a fact the source already encodes (or should), the landing is the source — and the skill may not change at all. Land a skill patch only when the knowledge is a durable RULE, pitfall, or procedure a maintainer needs surfaced.
|
|
18
|
-
|
|
19
|
-
## The decision tree (branches)
|
|
20
|
-
|
|
21
|
-
First match wins. The landing is a reference file in this skill's `references/` directory (named bare below), or a non-reference landing (`(source)` / `(journal)` / `SKILL.md`). The mechanized router in `scripts/teach-route.mjs` emits the same target as a skill-root-relative path.
|
|
22
|
-
|
|
23
|
-
| Branch | Fires when the payload is about… | Landing |
|
|
24
|
-
| --- | --- | --- |
|
|
25
|
-
| `source-edit` | a per-adapter field/value the source encodes (response field, a model id, a default value) | `(source) packages/llm/src/...` — not a skill landing |
|
|
26
|
-
| `add-provider` | a new step or gotcha in adding a 4th provider | `add-a-provider.md` |
|
|
27
|
-
| `streaming` | the SSE parser, the `StreamChunk` protocol, a chunk-type, `[DONE]` / framing | `streaming-sse.md` |
|
|
28
|
-
| `model-registry` | the `MODELS` shape, `DEFAULT_MODEL`, `detectProvider` rules | `model-registry.md` |
|
|
29
|
-
| `bridge-facade` | `chat`/`streamChat`/`createClient`, `createAdapter`, the bridge, the stub, `maxTokens`, lazy-load | `bridge-facade.md` |
|
|
30
|
-
| `proxy-boundary` | smart vs passthrough proxy, the production-host path, key-in-browser safety | `browser-proxy-boundary.md` |
|
|
31
|
-
| `adapter-contract` | a cross-adapter shape rule, `usage` mapping, raw `stopReason`, `buildRequest` discipline (DEFAULT) | `adapter-contract.md` |
|
|
32
|
-
| `methodology` | a posture / mission shift or a new §SelfAudit axis | `SKILL.md` (inline) |
|
|
33
|
-
| `journal` | a one-off debugging arc story (NEGATIVE — not the skill) | `(journal)` |
|
|
34
|
-
|
|
35
|
-
`adapter-contract` is the default branch: an unclassified maintenance fact most often belongs with the adapter contract, and re-classifies from there.
|
|
36
|
-
|
|
37
|
-
## The five-step landing procedure
|
|
38
|
-
|
|
39
|
-
1. **Audit before patching.** Run `node scripts/audit-llm-roster.mjs` to confirm the skill is drift-free first; you don't want to land a patch on top of existing drift.
|
|
40
|
-
2. **Author the patch** in the branch's target file. Keep it a citation — name the `packages/llm/src/...` path + type, don't paste the code.
|
|
41
|
-
3. **Wire the activation surface.** If the patch adds a capability, add/adjust the §ColdStartTriage row or a §Posture line so the knowledge is reachable. An orphaned reference nobody routes to is dead weight.
|
|
42
|
-
4. **Version + CHANGELOG.** Bump `skill.json` + the SKILL.md frontmatter `version` together (one MINOR for a new rule/capability; one PATCH for a clarification — never bundle both into one bump), and prepend a CHANGELOG entry.
|
|
43
|
-
5. **Verify.** Run `node scripts/audit-llm-roster.mjs --strict` (0 drift) AND close the PEV loop — the underlying knowledge should be verifiable against the real package (`npm run build` + a `chat()` / stub round-trip). See `## §Plan-Execute-Verify` in SKILL.md.
|
|
44
|
-
|
|
45
|
-
## Anti-patterns
|
|
46
|
-
|
|
47
|
-
- **Append-only landing.** Tacking a paragraph onto the nearest file without checking whether it duplicates an existing rule or belongs in the source. Audit first.
|
|
48
|
-
- **Source duplication.** Restating what an adapter's `parseResponse` already encodes. If the source is the truth, cite it; don't copy it into prose that will drift.
|
|
49
|
-
- **Orphan triggers.** A new reference with no §ColdStartTriage row or posture line pointing at it.
|
|
50
|
-
- **Capability-menu lies.** A menu row promising a mode whose reference doesn't cover it.
|
|
51
|
-
- **MINOR + PATCH bundling.** Two unrelated changes in one version bump muddies the CHANGELOG.
|
|
52
|
-
- **One-way thinking.** The most common producer-side miss: the payload is actually CONSUMER knowledge ("how do I wire `<chat-shell-ui>`", "what proxy do I deploy"). That does not land here — it belongs to the `adia-ui-factory` consumer `adia-ui-llm` skill. Route it there instead of forcing it into this producer skill.
|
|
53
|
-
|
|
54
|
-
## Worked examples
|
|
55
|
-
|
|
56
|
-
### Example A — "the openai adapter should map `length` finish_reason to a truncation signal"
|
|
57
|
-
|
|
58
|
-
- Route: this is about `stopReason` handling across adapters → `adapter-contract` branch.
|
|
59
|
-
- But check the source first: `openai.ts` already passes non-`stop` finish reasons through raw (only `stop` → `end`). So `length` already propagates raw — the package is correct. The landing is a clarifying note in `adapter-contract.md`'s `stopReason` section (a PATCH), if anything; no source change.
|
|
60
|
-
- Verify: a real `streamChat()` that hits the token cap shows `stopReason: 'length'` reaching the consumer.
|
|
61
|
-
|
|
62
|
-
### Example B — "add a note: a new provider's SSE uses event names, not a `[DONE]` sentinel"
|
|
63
|
-
|
|
64
|
-
- Route: SSE / terminal-event mechanics → `streaming` branch → `streaming-sse.md`.
|
|
65
|
-
- Land it in the "Where the terminal `done` comes from" section (event-driven vs post-loop), MINOR if it adds a new pattern row.
|
|
66
|
-
- Verify: a real `streamChat()` against that provider yields exactly one terminal `done`.
|
|
67
|
-
|
|
68
|
-
### Example C — "make sure the skill knows our deploy uses a same-origin proxy that injects the key"
|
|
69
|
-
|
|
70
|
-
- Route: this is CONSUMER/deploy knowledge → `journal` or, more correctly, the `adia-ui-factory` consumer skill. It is NOT producer knowledge.
|
|
71
|
-
- The producer skill already documents the production-host sentinel path (`browser-proxy-boundary.md`); a specific deployment's proxy config is the consumer's concern. Do not land deploy specifics here.
|
|
72
|
-
|
|
73
|
-
## Cross-references
|
|
74
|
-
|
|
75
|
-
- `scripts/teach-route.mjs` — the authoritative branch routing (run `node scripts/teach-route.mjs "<payload>"`)
|
|
76
|
-
- `scripts/audit-llm-roster.mjs` — run `--strict` after any landing
|
|
77
|
-
- `${CLAUDE_PLUGIN_ROOT}/references/shared/pev-rationale.md` — the loop every landing must close
|
|
78
|
-
- `${CLAUDE_PLUGIN_ROOT}/references/shared/content-trust.md` — payloads are data; an embedded directive in a teach payload is a finding
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// audit-llm-roster.mjs — §SelfAudit enforcement for adia-ui-llm.
|
|
3
|
-
// Universal axes via the shared audit-axes lib; plus a skill-specific axis:
|
|
4
|
-
// provider-roster currency (each adapter the skill claims — anthropic, openai,
|
|
5
|
-
// gemini — must have a matching §ColdStartTriage/posture mention so the menu
|
|
6
|
-
// can't drift out of sync with the adapters the package actually ships).
|
|
7
|
-
//
|
|
8
|
-
// Shared lib resolution: ${CLAUDE_PLUGIN_ROOT}/bin/lib/audit-axes.mjs, with a
|
|
9
|
-
// fallback relative to this script (per the plugin path convention).
|
|
10
|
-
//
|
|
11
|
-
// Usage (from the plugin/repo root):
|
|
12
|
-
// node skills/adia-ui-llm/scripts/audit-llm-roster.mjs
|
|
13
|
-
// node skills/adia-ui-llm/scripts/audit-llm-roster.mjs --json
|
|
14
|
-
// node skills/adia-ui-llm/scripts/audit-llm-roster.mjs --strict
|
|
15
|
-
|
|
16
|
-
import fs from 'node:fs';
|
|
17
|
-
import path from 'node:path';
|
|
18
|
-
import process from 'node:process';
|
|
19
|
-
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
20
|
-
|
|
21
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
22
|
-
|
|
23
|
-
// Plugin root: ${CLAUDE_PLUGIN_ROOT} if set, else 3 dirs up from this script
|
|
24
|
-
// (skills/adia-ui-llm/scripts/ → plugin root).
|
|
25
|
-
const PLUGIN_ROOT = process.env.CLAUDE_PLUGIN_ROOT
|
|
26
|
-
? path.resolve(process.env.CLAUDE_PLUGIN_ROOT)
|
|
27
|
-
: path.resolve(__dirname, '..', '..', '..');
|
|
28
|
-
|
|
29
|
-
const LIB_URL = pathToFileURL(path.join(PLUGIN_ROOT, 'bin', 'lib', 'audit-axes.mjs')).href;
|
|
30
|
-
const { runUniversalAxes, formatResults } = await import(LIB_URL);
|
|
31
|
-
|
|
32
|
-
// Skill layout: skills/<name>/ under the plugin root (matches run-skill-evals.mjs).
|
|
33
|
-
const SKILL_DIR = path.join(PLUGIN_ROOT, 'skills', 'adia-ui-llm');
|
|
34
|
-
const SKILL_MD = path.join(SKILL_DIR, 'SKILL.md');
|
|
35
|
-
const SKILL_JSON = path.join(SKILL_DIR, 'skill.json');
|
|
36
|
-
|
|
37
|
-
// The provider adapters this skill maintains. Each MUST be referenced in
|
|
38
|
-
// SKILL.md so the cold-start menu / posture stays in sync with the package.
|
|
39
|
-
const PROVIDERS = ['anthropic', 'openai', 'gemini'];
|
|
40
|
-
|
|
41
|
-
function parseArgs(argv) {
|
|
42
|
-
return { json: argv.includes('--json'), strict: argv.includes('--strict') };
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function readSafe(p) {
|
|
46
|
-
try { return fs.readFileSync(p, 'utf8'); } catch { return ''; }
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function axisProviderRosterCurrency() {
|
|
50
|
-
const md = readSafe(SKILL_MD);
|
|
51
|
-
const findings = [];
|
|
52
|
-
for (const name of PROVIDERS) {
|
|
53
|
-
if (md.includes(name)) {
|
|
54
|
-
findings.push({ type: 'provider-present', message: `${name}: referenced in SKILL.md — correct`, name });
|
|
55
|
-
} else {
|
|
56
|
-
findings.push({
|
|
57
|
-
type: 'provider-missing',
|
|
58
|
-
message: `${name}: adapter is shipped by the package but not referenced in SKILL.md`,
|
|
59
|
-
name,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const driftCount = findings.filter(f => f.type !== 'provider-present').length;
|
|
64
|
-
return {
|
|
65
|
-
axis: 'providerRosterCurrency',
|
|
66
|
-
axis_num: 9,
|
|
67
|
-
status: driftCount > 0 ? 'drift' : 'ok',
|
|
68
|
-
findings,
|
|
69
|
-
summary: driftCount > 0 ? `${driftCount} provider(s) unreferenced` : 'all adapters referenced in SKILL.md',
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function main() {
|
|
74
|
-
const args = parseArgs(process.argv.slice(2));
|
|
75
|
-
const ctx = { skillDir: SKILL_DIR, skillMd: SKILL_MD, skillJson: SKILL_JSON, repoRoot: PLUGIN_ROOT };
|
|
76
|
-
const { results: universal } = runUniversalAxes(ctx);
|
|
77
|
-
const axis9 = axisProviderRosterCurrency();
|
|
78
|
-
const allResults = [...universal, axis9];
|
|
79
|
-
const driftCount = allResults.filter(r => r.status === 'drift').length;
|
|
80
|
-
|
|
81
|
-
if (args.json) {
|
|
82
|
-
console.log(JSON.stringify({ results: allResults, driftCount }, null, 2));
|
|
83
|
-
if (args.strict && driftCount > 0) process.exit(1);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
console.log(`[audit-llm-roster] adia-ui-llm §SelfAudit — ${driftCount} drifting axis/axes`);
|
|
88
|
-
console.log(formatResults(allResults));
|
|
89
|
-
if (driftCount === 0) console.log('\n✓ All clean.');
|
|
90
|
-
if (args.strict && driftCount > 0) process.exit(1);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
main();
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// teach-route.mjs — Mechanized §Teach decision tree for adia-ui-llm.
|
|
3
|
-
// Maps a "make sure the skill knows about X" payload to its landing target.
|
|
4
|
-
// Composes from the shared teach-router lib; the prose tree in
|
|
5
|
-
// references/teach-protocol.md mirrors these branches for human readers.
|
|
6
|
-
//
|
|
7
|
-
// Shared lib resolution: ${CLAUDE_PLUGIN_ROOT}/bin/lib/teach-router.mjs, with a
|
|
8
|
-
// fallback relative to this script.
|
|
9
|
-
//
|
|
10
|
-
// Usage (from the plugin/repo root):
|
|
11
|
-
// node skills/adia-ui-llm/scripts/teach-route.mjs "add a new provider adapter"
|
|
12
|
-
// node skills/adia-ui-llm/scripts/teach-route.mjs --list
|
|
13
|
-
// node skills/adia-ui-llm/scripts/teach-route.mjs --payload="<payload>" [--json]
|
|
14
|
-
|
|
15
|
-
import path from 'node:path';
|
|
16
|
-
import process from 'node:process';
|
|
17
|
-
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
18
|
-
|
|
19
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
20
|
-
|
|
21
|
-
const PLUGIN_ROOT = process.env.CLAUDE_PLUGIN_ROOT
|
|
22
|
-
? path.resolve(process.env.CLAUDE_PLUGIN_ROOT)
|
|
23
|
-
: path.resolve(__dirname, '..', '..', '..');
|
|
24
|
-
|
|
25
|
-
const LIB_URL = pathToFileURL(path.join(PLUGIN_ROOT, 'bin', 'lib', 'teach-router.mjs')).href;
|
|
26
|
-
const { buildRouter, describeRouter } = await import(LIB_URL);
|
|
27
|
-
|
|
28
|
-
// Branches: first match wins. `target` is the landing file (relative to skill
|
|
29
|
-
// root) — or "(source)" / "(journal)" / "SKILL.md" for non-reference landings.
|
|
30
|
-
// Mirrors the table in references/teach-protocol.md.
|
|
31
|
-
export const branches = [
|
|
32
|
-
{
|
|
33
|
-
id: 'source-edit',
|
|
34
|
-
label: 'Per-adapter field/value the source encodes (NOT a skill landing)',
|
|
35
|
-
match: [/response field/i, /model id/i, 'default value', /new field/i, 'source edit', 'parseresponse field'],
|
|
36
|
-
target: '(source) packages/llm/src/',
|
|
37
|
-
confidence: 'high',
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
id: 'add-provider',
|
|
41
|
-
label: 'New step / gotcha in adding a 4th provider',
|
|
42
|
-
match: ['add a provider', 'add a new provider', '4th provider', 'fourth provider', 'new adapter step'],
|
|
43
|
-
target: 'references/add-a-provider.md',
|
|
44
|
-
confidence: 'high',
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
id: 'streaming',
|
|
48
|
-
label: 'SSE parser / StreamChunk protocol / chunk type',
|
|
49
|
-
match: ['sse', 'stream chunk', 'streamchunk', 'chunk type', '[done]', 'snapshot', 'streaming protocol', /stream(ing)? parser/i],
|
|
50
|
-
target: 'references/streaming-sse.md',
|
|
51
|
-
confidence: 'high',
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
id: 'model-registry',
|
|
55
|
-
label: 'MODELS shape / DEFAULT_MODEL / detectProvider rule',
|
|
56
|
-
match: ['models catalog', 'model registry', 'default_model', 'detectprovider', 'detect provider', 'grouped options', 'chat-input'],
|
|
57
|
-
target: 'references/model-registry.md',
|
|
58
|
-
confidence: 'high',
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
id: 'bridge-facade',
|
|
62
|
-
label: 'Facade / bridge / stub / maxTokens / lazy-load',
|
|
63
|
-
match: ['createadapter', 'create adapter', 'createclient', 'create client', 'bridge', 'stub', 'maxtokens', 'max tokens', 'lazy-load', 'lazy load', 'chatresult', 'chatopts'],
|
|
64
|
-
target: 'references/bridge-facade.md',
|
|
65
|
-
confidence: 'high',
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
id: 'proxy-boundary',
|
|
69
|
-
label: 'Proxy flavors / production-host path / key-in-browser safety',
|
|
70
|
-
match: ['proxy', 'passthrough', 'smart proxy', 'proxyurl', 'production host', 'browser key', 'key in browser', 'cors'],
|
|
71
|
-
target: 'references/browser-proxy-boundary.md',
|
|
72
|
-
confidence: 'high',
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
id: 'adapter-contract',
|
|
76
|
-
label: 'Cross-adapter shape rule / usage mapping / raw stopReason / buildRequest (DEFAULT)',
|
|
77
|
-
match: ['adapter contract', 'buildrequest', 'build request', 'usage mapping', 'stopreason', 'stop reason', 'parseresponse', 'adapter shape'],
|
|
78
|
-
target: 'references/adapter-contract.md',
|
|
79
|
-
confidence: 'medium',
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
id: 'methodology',
|
|
83
|
-
label: 'Posture / mission shift or new §SelfAudit axis (inline SKILL.md)',
|
|
84
|
-
match: ['posture', 'methodology', 'principle', 'mission', 'new selfaudit axis', 'self-audit axis'],
|
|
85
|
-
target: 'SKILL.md',
|
|
86
|
-
confidence: 'medium',
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
id: 'journal',
|
|
90
|
-
label: 'One-off arc story (NEGATIVE — journal, not the skill)',
|
|
91
|
-
match: ['arc story', 'debugging story', 'one-off', 'how i debugged', 'journal'],
|
|
92
|
-
target: '(journal)',
|
|
93
|
-
confidence: 'high',
|
|
94
|
-
},
|
|
95
|
-
];
|
|
96
|
-
|
|
97
|
-
export const router = buildRouter({ branches, defaultBranch: 'adapter-contract' });
|
|
98
|
-
|
|
99
|
-
// ─── CLI ──────────────────────────────────────────────────────────────────────
|
|
100
|
-
|
|
101
|
-
if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
102
|
-
const args = process.argv.slice(2);
|
|
103
|
-
if (args.includes('--list')) {
|
|
104
|
-
console.log(describeRouter(router, branches));
|
|
105
|
-
process.exit(0);
|
|
106
|
-
}
|
|
107
|
-
const payloadFlag = args.find(a => a.startsWith('--payload='));
|
|
108
|
-
const payload = payloadFlag
|
|
109
|
-
? payloadFlag.slice('--payload='.length)
|
|
110
|
-
: args.filter(a => !a.startsWith('--')).join(' ');
|
|
111
|
-
if (!payload) {
|
|
112
|
-
console.error('Usage: node teach-route.mjs "<payload describing the new knowledge>"');
|
|
113
|
-
console.error(' node teach-route.mjs --payload="<payload>" [--json]');
|
|
114
|
-
console.error(' node teach-route.mjs --list');
|
|
115
|
-
process.exit(1);
|
|
116
|
-
}
|
|
117
|
-
const { branch, target, confidence, label } = router(payload);
|
|
118
|
-
console.log(JSON.stringify({ payload, branch, label, target, confidence }, null, 2));
|
|
119
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "adia-ui-llm",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "Maintainer (PRODUCER) skill for @adia-ai/llm — the provider-agnostic LLM client at packages/llm/ that the adia-ui chat-shell and the A2UI generation pipeline depend on. Owns the provider adapters (anthropic / openai / gemini), the shared SSE parser, the model registry (models.ts), the unified chat() / streamChat() / createClient() facade, the createAdapter() bridge, the browser(proxyUrl)+Node duality, and StubLLMAdapter. Every mode names a real verify target (the built package, a real chat() round-trip, or the deterministic stub). Use whenever the user wants to ADD A PROVIDER ADAPTER / MODIFY AN ADAPTER / EVOLVE THE MODEL REGISTRY / WORK ON SSE STREAMING / CHANGE THE BRIDGE-FACADE CONTRACT / TOUCH THE BROWSER-PROXY BOUNDARY / FIX THE STUB. Triggers on \"add a new LLM provider\", \"fix the @adia-ai/llm SSE adapter\", \"the anthropic adapter drops cache tokens\", \"add a model to the registry\", \"streamChat yields a wrong chunk\", \"change chat()/streamChat()\", \"passthrough vs smart proxy\", \"stopReason normalization\", \"stub returns wrong A2UI\", \"teach adia-ui-llm\". Does NOT trigger for: WIRING the client into an app or chat box (CONSUMER side — the adia-ui-factory plugin's adia-ui-llm skill), generation-pipeline / corpus internals (adia-ui-a2ui), authoring web-components or the in-monorepo bridge surface against an unchanged client (adia-ui-authoring), cutting a release (adia-ui-release), or general LLM-streaming tutorials.",
|
|
5
|
-
"status": "stable",
|
|
6
|
-
"authors": ["kim.granlund"],
|
|
7
|
-
"codeowners": [],
|
|
8
|
-
"tags": ["adia-ui", "llm", "anthropic", "openai", "gemini", "sse", "streaming", "model-registry", "provider-adapter", "chat", "streamchat", "createadapter", "proxy", "stub", "provider-agnostic"],
|
|
9
|
-
"depends_on": [],
|
|
10
|
-
"peer_skills": ["adia-ui-authoring", "adia-ui-a2ui", "adia-ui-release", "adia-ui-gen-review", "adia-ui-dogfood"],
|
|
11
|
-
"environment": {
|
|
12
|
-
"portable": false,
|
|
13
|
-
"requires": ["the @adia-ai monorepo with packages/llm/ (src/adapters/{anthropic,openai,gemini,sse,index}.ts, src/models.ts, src/llm-bridge.ts, src/llm-stub.ts)"],
|
|
14
|
-
"rationale": "The @adia-ai/llm client source exists only in the @adia-ai monorepo; every verify command (npm run build for the package, a real chat()/streamChat() round-trip, the stub) and every audited source path (packages/llm/**) is substrate-side."
|
|
15
|
-
},
|
|
16
|
-
"files": [
|
|
17
|
-
"SKILL.md",
|
|
18
|
-
"CHANGELOG.md",
|
|
19
|
-
"skill.json",
|
|
20
|
-
"references/adapter-contract.md",
|
|
21
|
-
"references/streaming-sse.md",
|
|
22
|
-
"references/model-registry.md",
|
|
23
|
-
"references/bridge-facade.md",
|
|
24
|
-
"references/browser-proxy-boundary.md",
|
|
25
|
-
"references/add-a-provider.md",
|
|
26
|
-
"references/teach-protocol.md",
|
|
27
|
-
"scripts/audit-llm-roster.mjs",
|
|
28
|
-
"scripts/teach-route.mjs",
|
|
29
|
-
"evals/routing-corpus.json",
|
|
30
|
-
"evals/adversarial-corpus.json",
|
|
31
|
-
"evals/teach-routing-cases.json"
|
|
32
|
-
]
|
|
33
|
-
}
|
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
# Changelog — adia-ui-ops
|
|
2
|
-
|
|
3
|
-
## [1.2.4] stable — 2026-06-09
|
|
4
|
-
|
|
5
|
-
**PATCH** — Site-deploy pre-build step: build `@adia-ai/llm` before `build:site`.
|
|
6
|
-
|
|
7
|
-
- `deploy-playbooks.md` §Hardened-`--delete`-deploy-sequence step 1: added a fresh-worktree
|
|
8
|
-
pre-build step — `npm run build -w @adia-ai/llm` **before** `build:site`. The `llm` package
|
|
9
|
-
compiles its JS at publish (outputs gitignored), so a fresh worktree has no
|
|
10
|
-
`packages/llm/index.js`, `build:site` copies nothing, and `/packages/llm/index.js` 404s on
|
|
11
|
-
the deployed site → **component registration breaks on every `/site/components/*` page**.
|
|
12
|
-
- `deploy-playbooks.md` §`build:site`-DOES-include-src/components callout: added "the one
|
|
13
|
-
exception" sub-note (llm is publish-built, not source-tree) + the reason step 5 render-checks
|
|
14
|
-
a `/site/components/*` page (the 404 is invisible to file-presence + the SPA shell).
|
|
15
|
-
- Found **live 2026-06-09** during the v0.7.18 EXE deploy; the **0-delete dry-run proved the
|
|
16
|
-
file had never been deployed** (standing gap across every prior deploy, not a regression).
|
|
17
|
-
Arc story lives in `docs/journal/2026/06/2026-06-09.md` §8, not duplicated here.
|
|
18
|
-
|
|
19
|
-
## [1.2.3] stable — 2026-06-08
|
|
20
|
-
|
|
21
|
-
**PATCH** — Branch D landing: hardened `--delete` site-deploy sequence.
|
|
22
|
-
|
|
23
|
-
- `deploy-playbooks.md` §Playbook-deploy-an-update: added the 6-step hardened `--delete` sequence (dry-run + adjudicate every delete → snapshot-first via `cp -al` → deploy → verify the fixture **file** not the route → rollback), plus the "don't panic at the send count" mtime-vs-content note and the "`build:site` DOES include `src/components`" clarification (disproven worry).
|
|
24
|
-
- §Common failures: +1 row (site serves a stale build / new fixtures 404 → `deploy:site` is manual, never run after merge).
|
|
25
|
-
- §Invariants: +2 (snapshot the webroot before any `--delete`; verify a fixture file, never the route).
|
|
26
|
-
- §Current deployments: `ui-kit.exe.xyz` now notes the embedded-app HCC demo + webroot.
|
|
27
|
-
- Grounded in the 2026-06-08 ui-kit deploy (3,572 deletes, snapshot-protected, verified green on both surfaces) — arc story lives in `docs/journal/2026/06/2026-06-08.md` §2 (Branch G), not duplicated here.
|
|
28
|
-
|
|
29
|
-
## [1.2.2] stable — 2026-05-24
|
|
30
|
-
|
|
31
|
-
**PATCH** — Audit script rewired to shared library; axis count updated.
|
|
32
|
-
|
|
33
|
-
- `audit-ops-roster.mjs` now imports `runUniversalAxes` + `formatResults` from `.agents/shared/scripts/lib/audit-axes.mjs`. Inline implementations of axes 2/4/5 removed; script shrinks from 279 → 88 lines. Axis 9 (absorbed-skill roster currency) retained inline.
|
|
34
|
-
- Axis count updated 4 → 9 in SKILL.md §ColdStartTriage verify-target table and structural-gate code comment.
|
|
35
|
-
- Verified: `audit-ops-roster.mjs --strict` exits 0 (9/9 axes clean).
|
|
36
|
-
|
|
37
|
-
## [1.2.1] stable — 2026-05-22
|
|
38
|
-
|
|
39
|
-
**PATCH** — Trigger surface expansion: docs-currency / daily audit / currency
|
|
40
|
-
markers vocabulary (ops F1 90% → 95%, routing-eval 90.0% → 93.3%).
|
|
41
|
-
|
|
42
|
-
Added explicit triggers for ops-cycle vocabulary that wasn't declared
|
|
43
|
-
in the trigger field, causing the legitimate ops phrase to lose to
|
|
44
|
-
adia-ui-a2ui on the v0.2.0 scorer:
|
|
45
|
-
|
|
46
|
-
- "docs-currency" / "docs-currency audit" / "daily docs-currency"
|
|
47
|
-
- "daily audit" / "daily docs"
|
|
48
|
-
- "currency audit" / "currency markers"
|
|
49
|
-
- "docs freshness" / "stale docs sweep"
|
|
50
|
-
- "daily docs-currency audit"
|
|
51
|
-
|
|
52
|
-
Recovered phrase: `ops-10` "run the daily docs-currency audit" — was
|
|
53
|
-
routing to adia-ui-a2ui (a2ui body had `audit` + `currency` from
|
|
54
|
-
"currency markers" in its frontmatter), now correctly routes to
|
|
55
|
-
adia-ui-ops. Safety-scanned against the corpus: zero non-ops phrases
|
|
56
|
-
reference these tokens.
|
|
57
|
-
|
|
58
|
-
## [1.2.0] stable — 2026-05-22
|
|
59
|
-
|
|
60
|
-
**MINOR** — Plan-Execute-Verify elevated to load-bearing first-class citizen.
|
|
61
|
-
|
|
62
|
-
The §Teach PEV subsection from v1.1.x is now subordinate to a new
|
|
63
|
-
top-band `## §Plan-Execute-Verify` H2 in SKILL.md (visible from
|
|
64
|
-
cold-start triage, not buried in §Teach). This makes PEV a first-class
|
|
65
|
-
citizen of the skill's harness — the loop every mode invocation must
|
|
66
|
-
close, not just §Teach landings.
|
|
67
|
-
|
|
68
|
-
### Added — top-band `## §Plan-Execute-Verify` H2
|
|
69
|
-
|
|
70
|
-
The new §PEV section names the **Plan → Execute → Verify** loop
|
|
71
|
-
explicitly, with a per-mode verify-target table listing the
|
|
72
|
-
**real-product** verify-target for each mode. For this skill:
|
|
73
|
-
`curl -sf https://<host>.exe.xyz/` returns 200 with the new build hash + `systemctl --user status <service>` is active + audit re-run shows 0 findings.
|
|
74
|
-
|
|
75
|
-
The section makes 4 things explicit:
|
|
76
|
-
|
|
77
|
-
1. **Plan** = name the verify-target up front. If you can't name it,
|
|
78
|
-
you don't have a plan, you have a vibe.
|
|
79
|
-
2. **Execute** = run the procedure. Capture artifacts the verify step
|
|
80
|
-
will read.
|
|
81
|
-
3. **Verify** = run the result against the real product or substrate
|
|
82
|
-
— NOT against the skill's own self-checks.
|
|
83
|
-
4. **§SelfAudit ≠ PEV** — §SelfAudit checks the skill's structural
|
|
84
|
-
invariants. Both disciplines are required; neither substitutes
|
|
85
|
-
for the other.
|
|
86
|
-
|
|
87
|
-
### Changed — §Teach now cross-references §PEV
|
|
88
|
-
|
|
89
|
-
§Teach landings inherit the PEV loop via cross-reference back to the
|
|
90
|
-
top-band §PEV H2. The §Teach PEV subsection from v1.1.x is retained
|
|
91
|
-
for §Teach-specific guidance but no longer carries the load-bearing
|
|
92
|
-
discipline-statement.
|
|
93
|
-
|
|
94
|
-
### Mechanized — `scripts/skills/check-pev.mjs`
|
|
95
|
-
|
|
96
|
-
A new 5-point gate enforces the §PEV binding across all senior skills:
|
|
97
|
-
|
|
98
|
-
- **P1**: top-band `## §Plan-Execute-Verify` H2 present + ≥800 chars
|
|
99
|
-
- **P2**: per-mode verify-target table inside §PEV
|
|
100
|
-
- **P3**: §Teach cross-references §PEV
|
|
101
|
-
- **P4**: cold-start band mentions Plan-Execute-Verify
|
|
102
|
-
- **P5**: skill.json description claims a verify capability
|
|
103
|
-
|
|
104
|
-
Wired into `npm run check:skills` chain. This skill passes `--strict`.
|
|
105
|
-
|
|
106
|
-
### Ecosystem-level changes
|
|
107
|
-
|
|
108
|
-
- `VISION-extensibility.md` §Premise rewritten to lead with PEV as
|
|
109
|
-
the spine; new H2 `## §Plan-Execute-Verify` (the loop everything
|
|
110
|
-
else serves) added with the 5-point PEV-binding check + anti-patterns.
|
|
111
|
-
- `SKILLS-best-practices.md` §0 promoted from "two principles (A+B)"
|
|
112
|
-
to PEV-only ("the principle everything else serves"); citation-
|
|
113
|
-
layer demoted to §0.5.
|
|
114
|
-
- `AGENTS.md` Hard Rule 14 added: "Plan → Execute → Verify is the
|
|
115
|
-
load-bearing loop on every senior-skill invocation".
|
|
116
|
-
- `INDEX.md` Tier 1 paragraph rewritten to lead with PEV as the
|
|
117
|
-
binding centerpiece.
|
|
118
|
-
- `BORIS-feedback.md` §B1 (previously flagged as "the most-cited
|
|
119
|
-
Boris principle and our biggest gap") marked **RESOLVED**.
|
|
120
|
-
|
|
121
|
-
## [1.1.0] stable — 2026-05-22
|
|
122
|
-
|
|
123
|
-
**MINOR** — §Teach H2 section inline in SKILL.md (closes anti-pattern 4 —
|
|
124
|
-
capability-menu lie) + WHAT+WHEN+NEG description.
|
|
125
|
-
|
|
126
|
-
### Added — `## §Teach` H2 section in SKILL.md
|
|
127
|
-
|
|
128
|
-
The v1.0.x §Status section claimed "✅ §Teach section — see
|
|
129
|
-
references/teach-protocol.md" but no `## §Teach` H2 actually existed in
|
|
130
|
-
SKILL.md. This was a **capability-menu lie** per VISION-extensibility.md
|
|
131
|
-
§Where this vision could go wrong (anti-pattern 4 — capability menu
|
|
132
|
-
points to a section that doesn't exist).
|
|
133
|
-
|
|
134
|
-
The new §Teach H2 (~5,200 chars) follows the canonical template from
|
|
135
|
-
`adia-ui-release`/`adia-ui-kit`:
|
|
136
|
-
|
|
137
|
-
- Ecosystem-context callout (N=5 instantiation, cross-reference to
|
|
138
|
-
`VISION-extensibility.md`)
|
|
139
|
-
- 30-second procedure with skill-specific decision-tree branches
|
|
140
|
-
(substrate vs. audit-patterns vs. doc-types vs. recipes vs.
|
|
141
|
-
deploy-playbooks vs. audit-cadence vs. guidance vs. standards vs.
|
|
142
|
-
INLINE in SKILL.md vs. journal)
|
|
143
|
-
- 5-step landing procedure
|
|
144
|
-
- 7 anti-patterns (universal)
|
|
145
|
-
- **Plan-Execute-Verify section** (per `BORIS-feedback.md` §B1 — the
|
|
146
|
-
biggest gap identified in the senior-engineering review)
|
|
147
|
-
- Cross-references to `references/teach-protocol.md` + sibling skills
|
|
148
|
-
|
|
149
|
-
### Changed — Description rewrites for routing accuracy
|
|
150
|
-
|
|
151
|
-
Per `SKILLS-best-practices.md` §13.7 + `BORIS-feedback.md` §B9:
|
|
152
|
-
|
|
153
|
-
- `skill.json` description condensed to WHAT+WHEN+NEG (930 chars)
|
|
154
|
-
- SKILL.md frontmatter description gained "Does NOT trigger for:"
|
|
155
|
-
clause authored as anti-vocabulary
|
|
156
|
-
- §Status checklist item 3 corrected ("✅ §Teach section" → "✅
|
|
157
|
-
`## §Teach` H2 in SKILL.md + references/teach-protocol.md for the
|
|
158
|
-
full procedure")
|
|
159
|
-
|
|
160
|
-
### Routing eval impact
|
|
161
|
-
|
|
162
|
-
adia-ui-ops F1 held at 86%; overall accuracy 73.3% → 78.3% (+5pp).
|
|
163
|
-
|
|
164
|
-
## [1.0.1] stable — 2026-05-22 (Phase 5b — 2 absorbed redirect stubs deleted)
|
|
165
|
-
|
|
166
|
-
### Removed — 2 redirect stubs
|
|
167
|
-
|
|
168
|
-
After the Phase 5a citation sweep + routing-parity backfill landed
|
|
169
|
-
(commit `83735afe6`), the cleanup-readiness gate reported routing
|
|
170
|
-
parity GREEN for all 2 absorbed redirects. Phase 5b deleted the stubs:
|
|
171
|
-
|
|
172
|
-
- `.agents/skills/exe-dev-ops/` (3.1K SKILL.md + skill.json; v3.0.0 redirect)
|
|
173
|
-
- `.agents/skills/ops-repo/` (4.0K SKILL.md + skill.json + CHANGELOG; v3.0.0 redirect)
|
|
174
|
-
|
|
175
|
-
**Trigger phrases preserved.** Before deletion, routing parity verified
|
|
176
|
-
all 27 redirect trigger phrases (13 + 14) are still present in this
|
|
177
|
-
skill's `trigger:` cluster.
|
|
178
|
-
|
|
179
|
-
**Citation sweep audit:** 27 routing-harmful citations across 8 files
|
|
180
|
-
were rewritten in Phase 5a before this deletion landed. The remaining
|
|
181
|
-
~138 grep hits for `ops-repo` are predominantly concept-as-brand
|
|
182
|
-
references (`.brain/config.toml` sections, postmortem 'owners'
|
|
183
|
-
attribution, `ops-repo.dev` schema URLs, `/ops-repo` slash-command) —
|
|
184
|
-
they refer to the methodology this skill embodies and rewriting them
|
|
185
|
-
would destroy the concept-as-brand audit trail. Per the Hermes skill
|
|
186
|
-
calibration, these are NOT routing-harmful.
|
|
187
|
-
|
|
188
|
-
**§SelfAudit Axis 9** now reports `absorbed-clean-deleted` for both
|
|
189
|
-
redirects (verified via `audit-ops-roster.mjs`).
|
|
190
|
-
|
|
191
|
-
### Pairs with
|
|
192
|
-
|
|
193
|
-
- `~/.hermes/skills/software-development/skill-redirect-citation-sweep/SKILL.md` (Steps 7-12)
|
|
194
|
-
- Phase 5a sweep commit `83735afe6`
|
|
195
|
-
|
|
196
|
-
## [1.0.0] stable — 2026-05-22 (rollup ship; instantiation N=5 of the extensibility pattern)
|
|
197
|
-
|
|
198
|
-
### Added — initial rollup release
|
|
199
|
-
|
|
200
|
-
The 5th rollup skill (paired with `adia-ui-kit`, `adia-ui-release`,
|
|
201
|
-
`adia-ui-authoring`, `adia-ui-a2ui`). Authored as Phase 4 of the
|
|
202
|
-
skills-rollup-roadmap-2026-05-22.
|
|
203
|
-
|
|
204
|
-
**Absorbs 2 standalone skills:**
|
|
205
|
-
|
|
206
|
-
- `exe-dev-ops` (166 lines) — exe.dev VM service operations: provision,
|
|
207
|
-
deploy, diagnose, rotate secrets. Platform contract for the shared
|
|
208
|
-
Linux VMs at `<host>.exe.xyz`.
|
|
209
|
-
- `ops-repo` (204 lines SKILL.md + ~7,700 lines across 45 reference
|
|
210
|
-
files) — repo memory layer audit + curation. AGENTS.md-as-canonical
|
|
211
|
-
with CLAUDE.md-as-pointer harness. 16 audit patterns, 6 doc-type
|
|
212
|
-
templates, 3 recipes, 3 guidance docs. Earlier absorbed
|
|
213
|
-
`github-release`, `lockstep-release`, `stale-audit`.
|
|
214
|
-
|
|
215
|
-
**Reference structure (load-on-demand):**
|
|
216
|
-
|
|
217
|
-
| Reference | Source | Mode |
|
|
218
|
-
|-----------|--------|------|
|
|
219
|
-
| `deploy-playbooks.md` | from exe-dev-ops (entire SKILL.md content) | modes 1-4 |
|
|
220
|
-
| `audit-cadence.md` | from ops-repo §Invocation + §The five promises + §Verification + §Audit categories | mode 5 |
|
|
221
|
-
| `audit-patterns/` (16 files) | preserved verbatim from ops-repo/references/audit-patterns/ | mode 6 |
|
|
222
|
-
| `doc-types/` (6 files) | preserved verbatim from ops-repo/references/doc-types/ | mode 7 |
|
|
223
|
-
| `recipes/` (3 files) | preserved verbatim from ops-repo/references/recipes/ | mode 8 |
|
|
224
|
-
| `genres/` (1 file) | preserved verbatim from ops-repo/references/genres/ | (cross-cut) |
|
|
225
|
-
| `guidance/` (3 files) | preserved verbatim from ops-repo/references/guidance/ | (cross-cut) |
|
|
226
|
-
| `standards/` (preserved) | preserved verbatim from ops-repo/references/standards/ | (cross-cut) |
|
|
227
|
-
| `teach-protocol.md` | NEW (instantiation N=5) — mirrors canonical adia-ui-kit/references/teach-protocol.md universal sections | mode 9 |
|
|
228
|
-
|
|
229
|
-
**Absorption strategy: preserve-verbatim**
|
|
230
|
-
|
|
231
|
-
Unlike Phase 3 (adia-ui-a2ui) which decomposed source SKILL.md sections
|
|
232
|
-
into new reference files, this absorption **preserves ops-repo's existing
|
|
233
|
-
references/ subdirectory structure verbatim**. ops-repo's catalogue
|
|
234
|
-
shape was already well-organized (audit-patterns/, doc-types/, recipes/,
|
|
235
|
-
genres/, guidance/, standards/); fragmenting it would lose hard-won
|
|
236
|
-
organization. Only the SKILL.md content was decomposed:
|
|
237
|
-
|
|
238
|
-
- ops-repo §Invocation + §The five promises + §Verification → `audit-cadence.md`
|
|
239
|
-
- ops-repo §Audit categories + §Composition + §Invariants → `audit-cadence.md` (continued)
|
|
240
|
-
- exe-dev-ops (entire SKILL.md) → `deploy-playbooks.md`
|
|
241
|
-
|
|
242
|
-
The 45 reference files under audit-patterns/, doc-types/, recipes/,
|
|
243
|
-
genres/, guidance/, standards/ moved with full path-preservation
|
|
244
|
-
(`ops-repo/references/audit-patterns/stale-content.md` →
|
|
245
|
-
`adia-ui-ops/references/audit-patterns/stale-content.md`).
|
|
246
|
-
|
|
247
|
-
**§Teach extensibility — N=5 from day 1**
|
|
248
|
-
|
|
249
|
-
Per the Phase 3 lesson (ship §Teach with all 5 harness-integration
|
|
250
|
-
points from initial commit, never as a follow-up), this skill includes:
|
|
251
|
-
|
|
252
|
-
1. ✅ Frontmatter `trigger:` cluster with ~55 phrases including universal
|
|
253
|
-
teach triggers
|
|
254
|
-
2. ✅ Capability menu item — mode 9 "📚 Teach the skill new knowledge"
|
|
255
|
-
3. ✅ §Teach posture body in `references/teach-protocol.md` (~9K, mirrors
|
|
256
|
-
the canonical adia-ui-kit/references/teach-protocol.md)
|
|
257
|
-
4. ✅ Vision cross-reference in SKILL.md intro ("Ecosystem context")
|
|
258
|
-
5. ✅ Reference manifest row for teach-protocol.md in §FileMap
|
|
259
|
-
|
|
260
|
-
**7-branch decision tree** for §Teach landings (per teach-protocol.md):
|
|
261
|
-
|
|
262
|
-
| Branch | When | Lands at |
|
|
263
|
-
|--------|------|----------|
|
|
264
|
-
| A | New audit pattern | `audit-patterns/<name>.md` |
|
|
265
|
-
| B | New doc-type template | `doc-types/<type>.md` |
|
|
266
|
-
| C | New recipe / workflow | `recipes/<name>.md` |
|
|
267
|
-
| D | New deploy playbook step | `deploy-playbooks.md` |
|
|
268
|
-
| E | New invariant / posture | Inline SKILL.md §Posture / §FirstPrinciples |
|
|
269
|
-
| F | New guidance / cross-cut | `guidance/<name>.md` |
|
|
270
|
-
| G (NEGATIVE) | One-off audit-arc story | `docs/journal/` |
|
|
271
|
-
|
|
272
|
-
**Skill-owned tooling:**
|
|
273
|
-
|
|
274
|
-
- `scripts/audit-ops-roster.mjs` — 4-axis self-audit (structural integrity,
|
|
275
|
-
reference graph, capability menu coverage, ops-roster currency)
|
|
276
|
-
|
|
277
|
-
### Removed — 2 standalone skill stubs converted to redirects
|
|
278
|
-
|
|
279
|
-
Same cut converts the 2 absorbed standalones into thin redirect stubs
|
|
280
|
-
(`status: redirect`, v3.0.0) pointing at this skill. Phase 5 of the
|
|
281
|
-
roadmap will eventually delete these stubs after a citation sweep.
|
|
282
|
-
|
|
283
|
-
### Pairs with
|
|
284
|
-
|
|
285
|
-
- `.brain/notes/2026-05-22-skills-rollup-roadmap.md` Phase 4 (this commit)
|
|
286
|
-
- `.agents/skills/VISION-extensibility.md` §HarnessIntegration (the binding gate)
|
|
287
|
-
- `.agents/skills/SKILLS-best-practices.md` §1.0 (senior-skill classification)
|
|
288
|
-
- `.agents/skills/adia-ui-kit/references/teach-protocol.md` (canonical N=1 template)
|
|
289
|
-
- `.agents/skills/adia-ui-release/CHANGELOG.md` v1.1.0 (N=2 instantiation)
|
|
290
|
-
- `.agents/skills/adia-ui-authoring/CHANGELOG.md` v1.1.0 (N=3 instantiation)
|
|
291
|
-
- `.agents/skills/adia-ui-a2ui/CHANGELOG.md` v1.0.0 (N=4 instantiation)
|