@adia-ai/adia-ui-forge 0.8.35 → 0.8.37
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 +1 -1
- package/CHANGELOG.md +47 -18
- package/README.md +17 -17
- package/agents/{a2ui-builder.corpus.json → a2ui-maintenance-agent.corpus.json} +1 -1
- package/agents/{a2ui-builder.md → a2ui-maintenance-agent.md} +6 -6
- package/agents/framework-reviewer.md +6 -6
- package/agents/{release-builder.corpus.json → package-release-agent.corpus.json} +3 -3
- package/agents/{release-builder.md → package-release-agent.md} +7 -7
- package/agents/{component-author.corpus.json → primitive-authoring-agent.corpus.json} +2 -2
- package/agents/{component-author.md → primitive-authoring-agent.md} +7 -7
- package/agents/routing-corpus.json +40 -40
- package/commands/{dogfood.md → demo-audit.md} +2 -1
- package/commands/{gen-review.md → gen-ui-review.md} +3 -2
- package/commands/{release.md → package-release.md} +3 -2
- package/commands/{deploy.md → site-deployment.md} +2 -1
- package/package.json +1 -1
- package/references/contracts/a2ui-mcp-surface.md +16 -8
- package/references/contracts/migration-guide-format.md +4 -4
- package/scripts/demo-postwrite-pattern-gate +2 -2
- package/scripts/release-pretag-docs-gate +2 -2
- package/scripts/sidecar-prewrite-guard +3 -3
- package/skills/{adia-a2ui → a2ui-maintenance}/SKILL.md +6 -5
- package/skills/{adia-a2ui → a2ui-maintenance}/evals/evals.json +8 -8
- package/skills/{adia-a2ui → a2ui-maintenance}/evals/routing-corpus.json +51 -51
- package/skills/{adia-a2ui → a2ui-maintenance}/references/eval-diagnostics.md +2 -2
- package/skills/{adia-a2ui → a2ui-maintenance}/references/format-extension-decisions.md +2 -2
- package/skills/{adia-a2ui → a2ui-maintenance}/references/mcp-pipeline-ops.md +1 -1
- package/skills/{adia-a2ui → a2ui-maintenance}/references/mcp-tool-reference.md +5 -4
- package/skills/{adia-a2ui → a2ui-maintenance}/references/pipeline-overview.md +15 -15
- package/skills/{adia-a2ui → a2ui-maintenance}/references/semantic-fail-lifting.md +2 -2
- package/skills/{adia-dogfood → demo-audit}/SKILL.md +8 -8
- package/skills/{adia-dogfood → demo-audit}/evals/evals.json +7 -7
- package/skills/{adia-dogfood → demo-audit}/evals/routing-corpus.json +43 -43
- package/skills/{adia-dogfood → demo-audit}/references/visual-probe-triage.md +1 -1
- package/skills/{adia-dogfood → demo-audit}/scripts/analyze.mjs +2 -2
- package/skills/{adia-gen-review → gen-ui-review}/SKILL.md +13 -13
- package/skills/{adia-gen-review → gen-ui-review}/evals/evals.json +7 -7
- package/skills/{adia-gen-review → gen-ui-review}/evals/routing-corpus.json +43 -43
- package/skills/{adia-gen-review → gen-ui-review}/references/corpus-html-patterns.md +3 -3
- package/skills/{adia-gen-review → gen-ui-review}/references/loop-protocol.md +11 -11
- package/skills/{adia-gen-review → gen-ui-review}/references/scores.schema.json +1 -1
- package/skills/{adia-gen-review → gen-ui-review}/scripts/gen-review-coverage-audit.mjs +4 -4
- package/skills/{adia-gen-review → gen-ui-review}/scripts/gen-review-decompose.mjs +6 -6
- package/skills/{adia-gen-review → gen-ui-review}/scripts/gen-review-status.mjs +5 -5
- package/skills/{adia-gen-review → gen-ui-review}/scripts/validate-cycle-scores.mjs +5 -5
- package/skills/{adia-llm-internals → llm-client-maintenance}/SKILL.md +4 -4
- package/skills/{adia-llm-internals → llm-client-maintenance}/evals/evals.json +7 -7
- package/skills/{adia-llm-internals → llm-client-maintenance}/evals/routing-corpus.json +49 -49
- package/skills/{adia-release → package-release}/SKILL.md +17 -16
- package/skills/{adia-release → package-release}/evals/evals.json +7 -7
- package/skills/{adia-release → package-release}/evals/routing-corpus.json +45 -45
- package/skills/{adia-release → package-release}/references/changelog-discipline.md +4 -4
- package/skills/{adia-release → package-release}/references/cut-procedure.md +170 -27
- package/skills/{adia-release → package-release}/references/gates-catalog.md +4 -3
- package/skills/{adia-release → package-release}/references/independent-package-release.md +12 -8
- package/skills/{adia-release → package-release}/references/migration-guide-authoring.md +12 -3
- package/skills/{adia-release → package-release}/references/recovery-paths.md +5 -5
- package/skills/{adia-release → package-release}/scripts/bump.mjs +77 -30
- package/skills/{adia-release → package-release}/scripts/dispatch-publish.mjs +1 -1
- package/skills/{adia-release → package-release}/scripts/gate-roster.mjs +17 -6
- package/skills/{adia-release → package-release}/scripts/insert-stub.mjs +29 -7
- package/skills/{adia-release → package-release}/scripts/package-paths.mjs +51 -6
- package/skills/{adia-release → package-release}/scripts/pr-bridge.mjs +1 -1
- package/skills/{adia-release → package-release}/scripts/promote-unreleased.mjs +1 -1
- package/skills/{adia-release → package-release}/scripts/release-pack.mjs +18 -4
- package/skills/{adia-release → package-release}/scripts/tag-lockstep.mjs +2 -2
- package/skills/{adia-author → primitive-authoring}/SKILL.md +7 -7
- package/skills/{adia-author → primitive-authoring}/evals/evals.json +7 -7
- package/skills/{adia-author → primitive-authoring}/evals/routing-corpus.json +61 -61
- package/skills/{adia-author → primitive-authoring}/references/INDEX.md +2 -2
- package/skills/{adia-author → primitive-authoring}/references/authoring-cycle.md +1 -1
- package/skills/{adia-author → primitive-authoring}/references/code-style.md +5 -5
- package/skills/{adia-author → primitive-authoring}/references/common-gotchas.md +1 -1
- package/skills/{adia-author → primitive-authoring}/references/llm-bridge.md +7 -7
- package/skills/{adia-author → primitive-authoring}/references/module-promotion.md +3 -3
- package/skills/{adia-author → primitive-authoring}/references/shell-patterns.md +2 -2
- package/skills/{adia-author → primitive-authoring}/references/trait-pages.md +1 -1
- package/skills/{adia-author → primitive-authoring}/scripts/build-canonical-pattern-index.mjs +1 -1
- package/skills/{adia-deploy → site-deployment}/SKILL.md +4 -4
- package/skills/{adia-deploy → site-deployment}/evals/evals.json +8 -8
- package/skills/{adia-deploy → site-deployment}/evals/routing-corpus.json +49 -49
- package/skills/{adia-deploy → site-deployment}/references/deploy-playbooks.md +2 -2
- package/skills/{adia-site-docs → site-docs-authoring}/SKILL.md +4 -4
- package/skills/{adia-site-docs → site-docs-authoring}/evals/evals.json +7 -7
- package/skills/{adia-site-docs → site-docs-authoring}/evals/routing-corpus.json +51 -51
- package/skills/{adia-site-docs → site-docs-authoring}/intent.md +8 -8
- package/skills/{adia-ssr → ssr-compatibility}/SKILL.md +8 -8
- package/skills/{adia-ssr → ssr-compatibility}/evals/evals.json +7 -7
- package/skills/{adia-ssr → ssr-compatibility}/evals/routing-corpus.json +43 -43
- package/skills/{adia-ssr → ssr-compatibility}/references/failure-shapes.md +1 -1
- package/skills/{adia-ssr → ssr-compatibility}/references/guard-patterns.md +1 -1
- /package/skills/{adia-a2ui → a2ui-maintenance}/references/anti-patterns.md +0 -0
- /package/skills/{adia-a2ui → a2ui-maintenance}/references/chunk-authoring.md +0 -0
- /package/skills/{adia-a2ui → a2ui-maintenance}/references/corpus-discipline.md +0 -0
- /package/skills/{adia-a2ui → a2ui-maintenance}/references/leverage-rules.md +0 -0
- /package/skills/{adia-a2ui → a2ui-maintenance}/references/strategy-engines.md +0 -0
- /package/skills/{adia-a2ui → a2ui-maintenance}/references/zettel-calibration.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/admin-shell-anatomy.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/app-shell-pitfalls.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/card-anatomy-sweep.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/html-attr-sweep.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/native-leak-annotations.md +0 -0
- /package/skills/{adia-gen-review → gen-ui-review}/references/rubric-cosmetic.md +0 -0
- /package/skills/{adia-gen-review → gen-ui-review}/references/rubric-decompose.md +0 -0
- /package/skills/{adia-gen-review → gen-ui-review}/references/rubric-score.md +0 -0
- /package/skills/{adia-llm-internals → llm-client-maintenance}/references/adapter-contract.md +0 -0
- /package/skills/{adia-llm-internals → llm-client-maintenance}/references/add-a-provider.md +0 -0
- /package/skills/{adia-llm-internals → llm-client-maintenance}/references/bridge-facade.md +0 -0
- /package/skills/{adia-llm-internals → llm-client-maintenance}/references/browser-proxy-boundary.md +0 -0
- /package/skills/{adia-llm-internals → llm-client-maintenance}/references/model-registry.md +0 -0
- /package/skills/{adia-llm-internals → llm-client-maintenance}/references/streaming-sse.md +0 -0
- /package/skills/{adia-release → package-release}/references/notes-authoring.md +0 -0
- /package/skills/{adia-release → package-release}/scripts/assert-monorepo-root.mjs +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/anti-patterns.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/api-contract.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/canonical-pattern-index.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/composite-demo-protocol.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/css-patterns.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/lifecycle-patterns.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/primitive-audit.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/token-contract.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/worked-example.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/yaml-contract.md +0 -0
- /package/skills/{adia-ssr → ssr-compatibility}/references/consumer-workarounds.md +0 -0
- /package/skills/{adia-ssr → ssr-compatibility}/references/status-ledger.md +0 -0
- /package/skills/{adia-ssr → ssr-compatibility}/references/test-without-linkedom.md +0 -0
|
@@ -1,130 +1,130 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"name": "
|
|
3
|
+
"name": "a2ui-maintenance routing accuracy corpus",
|
|
4
4
|
"version": "2.1.0",
|
|
5
|
-
"purpose": "Routing-eval corpus for
|
|
5
|
+
"purpose": "Routing-eval corpus for a2ui-maintenance. Each phrase declares the skill (expected), a forbidden skill (expected_not, for phrases the source data only ever asserted as \"not this skill\"), or neither. Scored by scripts/skills/run-skill-evals.mjs (TF-IDF token overlap over per-skill description+triggers).",
|
|
6
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
|
-
"scope": "
|
|
7
|
+
"scope": "a2ui-maintenance routing \u2014 does this phrase activate a2ui-maintenance?",
|
|
8
8
|
"phrases": [
|
|
9
9
|
{
|
|
10
|
-
"id": "
|
|
10
|
+
"id": "a2ui-maintenance-pos-01",
|
|
11
11
|
"phrase": "validate this A2UI document",
|
|
12
|
-
"expected": "
|
|
12
|
+
"expected": "a2ui-maintenance"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
"id": "
|
|
15
|
+
"id": "a2ui-maintenance-pos-02",
|
|
16
16
|
"phrase": "harvest a chunk from this HTML demo",
|
|
17
|
-
"expected": "
|
|
17
|
+
"expected": "a2ui-maintenance"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
"id": "
|
|
20
|
+
"id": "a2ui-maintenance-pos-03",
|
|
21
21
|
"phrase": "zettel coverage dropped after the last change",
|
|
22
|
-
"expected": "
|
|
22
|
+
"expected": "a2ui-maintenance"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
|
-
"id": "
|
|
25
|
+
"id": "a2ui-maintenance-pos-04",
|
|
26
26
|
"phrase": "should this repeated subtree become its own chunk",
|
|
27
|
-
"expected": "
|
|
27
|
+
"expected": "a2ui-maintenance"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"id": "
|
|
30
|
+
"id": "a2ui-maintenance-pos-05",
|
|
31
31
|
"phrase": "tune the STRONG_MATCH threshold",
|
|
32
|
-
"expected": "
|
|
32
|
+
"expected": "a2ui-maintenance"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
|
-
"id": "
|
|
35
|
+
"id": "a2ui-maintenance-pos-06",
|
|
36
36
|
"phrase": "run check_anti_patterns on this rendered HTML",
|
|
37
|
-
"expected": "
|
|
37
|
+
"expected": "a2ui-maintenance"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
"id": "
|
|
40
|
+
"id": "a2ui-maintenance-pos-07",
|
|
41
41
|
"phrase": "refine composition with an OAuth row",
|
|
42
|
-
"expected": "
|
|
42
|
+
"expected": "a2ui-maintenance"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
|
-
"id": "
|
|
45
|
+
"id": "a2ui-maintenance-pos-08",
|
|
46
46
|
"phrase": "MRR dropped in the chunk retrieval eval",
|
|
47
|
-
"expected": "
|
|
47
|
+
"expected": "a2ui-maintenance"
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
|
-
"id": "
|
|
50
|
+
"id": "a2ui-maintenance-pos-09",
|
|
51
51
|
"phrase": "add an MCP tool to the a2ui server",
|
|
52
|
-
"expected": "
|
|
52
|
+
"expected": "a2ui-maintenance"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
"id": "
|
|
55
|
+
"id": "a2ui-maintenance-pos-10",
|
|
56
56
|
"phrase": "audit the training data corpus for drift",
|
|
57
|
-
"expected": "
|
|
57
|
+
"expected": "a2ui-maintenance"
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
"id": "
|
|
60
|
+
"id": "a2ui-maintenance-pos-11",
|
|
61
61
|
"phrase": "diagnose this eval gap and regression",
|
|
62
|
-
"expected": "
|
|
62
|
+
"expected": "a2ui-maintenance"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
|
-
"id": "
|
|
65
|
+
"id": "a2ui-maintenance-pos-12",
|
|
66
66
|
"phrase": "run the MCP pipeline: generate_ui then validate_schema",
|
|
67
|
-
"expected": "
|
|
67
|
+
"expected": "a2ui-maintenance"
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
|
-
"id": "
|
|
70
|
+
"id": "a2ui-maintenance-pos-13",
|
|
71
71
|
"phrase": "lift a semantic fail under sixty",
|
|
72
|
-
"expected": "
|
|
72
|
+
"expected": "a2ui-maintenance"
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
|
-
"id": "
|
|
75
|
+
"id": "a2ui-maintenance-pos-14",
|
|
76
76
|
"phrase": "why did the composer emit composition-match instead of composition-synthesized",
|
|
77
|
-
"expected": "
|
|
77
|
+
"expected": "a2ui-maintenance"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
|
-
"id": "
|
|
80
|
+
"id": "a2ui-maintenance-neg-01",
|
|
81
81
|
"phrase": "build a settings page from existing primitives",
|
|
82
|
-
"expected_not": "
|
|
82
|
+
"expected_not": "a2ui-maintenance"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
|
-
"id": "
|
|
85
|
+
"id": "a2ui-maintenance-neg-02",
|
|
86
86
|
"phrase": "add a slot to button-ui and update its yaml contract",
|
|
87
|
-
"expected_not": "
|
|
87
|
+
"expected_not": "a2ui-maintenance"
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
|
-
"id": "
|
|
90
|
+
"id": "a2ui-maintenance-neg-03",
|
|
91
91
|
"phrase": "cut a release and bump the version tag",
|
|
92
|
-
"expected_not": "
|
|
92
|
+
"expected_not": "a2ui-maintenance"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
|
-
"id": "
|
|
95
|
+
"id": "a2ui-maintenance-neg-04",
|
|
96
96
|
"phrase": "score the generated UI quality in apps/genui",
|
|
97
|
-
"expected_not": "
|
|
97
|
+
"expected_not": "a2ui-maintenance"
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
|
-
"id": "
|
|
100
|
+
"id": "a2ui-maintenance-neg-05",
|
|
101
101
|
"phrase": "run a broad visual QA sweep across site and playgrounds",
|
|
102
|
-
"expected_not": "
|
|
102
|
+
"expected_not": "a2ui-maintenance"
|
|
103
103
|
},
|
|
104
104
|
{
|
|
105
|
-
"id": "
|
|
105
|
+
"id": "a2ui-maintenance-neg-06",
|
|
106
106
|
"phrase": "fix the @adia-ai/llm SSE adapter",
|
|
107
|
-
"expected_not": "
|
|
107
|
+
"expected_not": "a2ui-maintenance"
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
|
-
"id": "
|
|
110
|
+
"id": "a2ui-maintenance-neg-07",
|
|
111
111
|
"phrase": "explain how React state management works",
|
|
112
|
-
"expected_not": "
|
|
112
|
+
"expected_not": "a2ui-maintenance"
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
|
-
"id": "
|
|
115
|
+
"id": "a2ui-maintenance-neg-08",
|
|
116
116
|
"phrase": "compose a settings screen from catalog primitives",
|
|
117
|
-
"expected_not": "
|
|
117
|
+
"expected_not": "a2ui-maintenance"
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
|
-
"id": "
|
|
120
|
+
"id": "a2ui-maintenance-neg-09",
|
|
121
121
|
"phrase": "mount gen-root and wire data resolvers for end users at runtime",
|
|
122
|
-
"expected_not": "
|
|
122
|
+
"expected_not": "a2ui-maintenance"
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
|
-
"id": "
|
|
125
|
+
"id": "a2ui-maintenance-neg-10",
|
|
126
126
|
"phrase": "edit the getting-started docs page on the site",
|
|
127
|
-
"expected_not": "
|
|
127
|
+
"expected_not": "a2ui-maintenance"
|
|
128
128
|
}
|
|
129
129
|
],
|
|
130
130
|
"_measured_historical": {
|
|
@@ -62,7 +62,7 @@ fluctuate).
|
|
|
62
62
|
`catalog/ui-patterns/app/<name>/`), `data-chunk` + `data-chunk-kind="block"`
|
|
63
63
|
markers, real component tags so coverage scoring matches, then
|
|
64
64
|
`npm run harvest:chunks`.
|
|
65
|
-
- **D. Broken render** — `packages/
|
|
65
|
+
- **D. Broken render** — `packages/mcp/gen-ui/scripts/render-fidelity.mjs`
|
|
66
66
|
output (console errors, blank viewport, undefined elements); verify
|
|
67
67
|
registrations in `packages/web-components/index.js`; check the harvester
|
|
68
68
|
didn't strip `data-chunk-slot` from page shells.
|
|
@@ -79,7 +79,7 @@ the SKILL.md floors hold.
|
|
|
79
79
|
|
|
80
80
|
## The eval suite's dimensions
|
|
81
81
|
|
|
82
|
-
`packages/
|
|
82
|
+
`packages/mcp/gen-ui/scripts/test-evals.mjs` scores 5 weighted dimensions:
|
|
83
83
|
structural_validity 30% · intent_alignment 25% · component_coverage 20% ·
|
|
84
84
|
card_model_compliance 15% · anti_pattern_count 10%. `--save-baseline`
|
|
85
85
|
(`npm run test:evals:baseline`) stores scores; later runs flag any dimension
|
|
@@ -15,10 +15,10 @@ prop/construct surface.
|
|
|
15
15
|
`link`, …). Add a new named type; the component dispatches rendering
|
|
16
16
|
through the registry it already owns. **Smallest blast radius**: no new
|
|
17
17
|
A2UI construct, no runtime/validator changes, no registry entry in
|
|
18
|
-
`packages/a2ui/
|
|
18
|
+
`packages/a2ui/registry.js`. **Ceiling**: only covers formats the
|
|
19
19
|
registry's render contract can express (inline-safe content, not
|
|
20
20
|
arbitrary nested block markup). Building the new registry entry is a
|
|
21
|
-
web-components primitive edit — hand off to `
|
|
21
|
+
web-components primitive edit — hand off to `primitive-authoring` for the
|
|
22
22
|
implementation half; this reference only decides the tier.
|
|
23
23
|
2. **New A2UI primitive(s)**, each slot/cell a normal construct subtree (any
|
|
24
24
|
registered component nestable inside it) — matches how `Column`/`Row`
|
|
@@ -70,7 +70,7 @@ failures when the corpus drifts: `hasRootComponent` (missing `id: "root"`),
|
|
|
70
70
|
`cardContentModel` (section without Column wrapper, or heading inside section
|
|
71
71
|
instead of header), `headingHierarchy` (skipped levels), `flatAdjacency`
|
|
72
72
|
(nested components instead of sibling id references). Full list + weights:
|
|
73
|
-
`packages/
|
|
73
|
+
`packages/mcp/TOOLS.md` (the `gen-ui` section).
|
|
74
74
|
|
|
75
75
|
## Feedback loop
|
|
76
76
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# MCP tool reference — the a2ui server's tool surface
|
|
2
2
|
|
|
3
|
-
**Schema SoT is `packages/
|
|
4
|
-
`server.js` — read it for input/output shapes; never
|
|
5
|
-
(they drift).** Tools register in
|
|
6
|
-
`packages/
|
|
3
|
+
**Schema SoT is `packages/mcp/TOOLS.md` (the `gen-ui` section — 30 tools),
|
|
4
|
+
generated alongside `server.js` — read it for input/output shapes; never
|
|
5
|
+
restate schemas here (they drift).** Tools register in
|
|
6
|
+
`packages/mcp/gen-ui/server.js` +
|
|
7
|
+
`packages/mcp/gen-ui/tools/{corpus,discovery,feedback,refine,synthesis,
|
|
7
8
|
validation,zettel}.js`. Any tool change updates TOOLS.md in the same commit.
|
|
8
9
|
|
|
9
10
|
## Stability rule (load-bearing)
|
|
@@ -13,26 +13,26 @@ lifecycle), `.claude/docs/specs/package-architecture.md` (package relations).
|
|
|
13
13
|
|
|
14
14
|
| File | Role |
|
|
15
15
|
| --- | --- |
|
|
16
|
-
| `packages/
|
|
17
|
-
| `packages/
|
|
18
|
-
| `packages/
|
|
19
|
-
| `packages/
|
|
20
|
-
| `packages/
|
|
21
|
-
| `packages/
|
|
22
|
-
| `packages/
|
|
16
|
+
| `packages/gen-ui/compose/core/generator.js` | `generate_ui` orchestrator — instant / pro / thinking / stream modes; multi-turn via `executionId` |
|
|
17
|
+
| `packages/gen-ui/compose/strategies/registry.js` | Engine registry — `registerEngine(name, factory)`. Reserved names: `monolithic`, `monolithic-instant`, `monolithic-pro`, `monolithic-thinking`, `zettel`, `chunk-zettel`, `free-form` |
|
|
18
|
+
| `packages/gen-ui/compose/strategies/zettel/` | Zettel + chunk-zettel engines — see [strategy-engines](strategy-engines.md) for the per-file map |
|
|
19
|
+
| `packages/gen-ui/compose/strategies/free-form-composer/` | Free-form engine (`index.js`, `system-prompt.js`, `transpile.js`) |
|
|
20
|
+
| `packages/gen-ui/compose/strategies/_shared/chunk-loader.js` | Shared chunk loading for engines |
|
|
21
|
+
| `packages/gen-ui/compose/shared/validate-and-repair.js` | Shared closed-loop validate→repair, adopted by every LLM-calling engine (thinking/pro fully; free-form validate-only) — see [strategy-engines](strategy-engines.md) §Closed-loop validation |
|
|
22
|
+
| `packages/gen-ui/compose/transpiler/transpiler.js` | HTML → A2UI transpile pass (used by harvester + convert_html) |
|
|
23
23
|
|
|
24
24
|
### Corpus + retrieval
|
|
25
25
|
|
|
26
26
|
| File | Role |
|
|
27
27
|
| --- | --- |
|
|
28
28
|
| `packages/a2ui/corpus/scripts/chunk-library.js` | Chunk catalog API — `getChunk()`, `searchChunks()` (keyword), `searchChunksAsync()` (keyword + cosine), `listChunksByKind()`, `lookupChunksByPrimary()`. Reads `corpus/chunks/` + `_index.json` |
|
|
29
|
-
| `packages/
|
|
29
|
+
| `packages/gen-ui/compose/strategies/zettel/composition-library.js` | Composition loader + `searchAll()` scoring (normalizes harvested chunks to composition shape) |
|
|
30
30
|
| `scripts/build/harvest-chunks.mjs` | `[data-chunk]` boundary walker over `site/pages/`, `apps/`, `playgrounds/`, `catalog/` — writes `corpus/chunks/<name>.json` + `_index.json`. Run via `npm run harvest:chunks` |
|
|
31
|
-
| `packages/
|
|
32
|
-
| `packages/
|
|
33
|
-
| `packages/
|
|
34
|
-
| `packages/
|
|
35
|
-
| `packages/
|
|
31
|
+
| `packages/gen-ui/retrieval/intent/intent-categorizer.js` | Free-text intent → UI-category taxonomy |
|
|
32
|
+
| `packages/gen-ui/retrieval/feedback/feedback-analyzer.js` | Aggregates JSONL feedback (`corpus/feedback/*.jsonl`); promotion + gap candidates |
|
|
33
|
+
| `packages/gen-ui/retrieval/feedback/gap-registry.js` | Persistent gap tracking → `packages/a2ui/corpus/gaps/registry.json` |
|
|
34
|
+
| `packages/gen-ui/retrieval/anti-patterns.js` | The `check_anti_patterns` rule source |
|
|
35
|
+
| `packages/gen-ui/compose/core/reference.js` | Thin wrappers over retrieval exports (`searchBlocks`, `searchBlocksSemantic`, …) |
|
|
36
36
|
|
|
37
37
|
### LLM bridge + MCP
|
|
38
38
|
|
|
@@ -40,7 +40,7 @@ lifecycle), `.claude/docs/specs/package-architecture.md` (package relations).
|
|
|
40
40
|
| --- | --- |
|
|
41
41
|
| `packages/llm/llm-bridge.js` | `createAdapter()` — real LLM or stub fallback |
|
|
42
42
|
| `scripts/load-env.mjs` | Shared .env loader for Node scripts |
|
|
43
|
-
| `packages/
|
|
43
|
+
| `packages/mcp/gen-ui/server.js` + `packages/mcp/gen-ui/tools/*.js` | MCP stdio server + tool registrations — see [mcp-tool-reference](mcp-tool-reference.md) |
|
|
44
44
|
|
|
45
45
|
## Critical rules
|
|
46
46
|
|
|
@@ -60,7 +60,7 @@ lifecycle), `.claude/docs/specs/package-architecture.md` (package relations).
|
|
|
60
60
|
props + slot bindings; never JS or per-canvas CSS. Behavior delegates to
|
|
61
61
|
traits or pre-built apps. "Make the generator emit JS/CSS" is a won't-fix.
|
|
62
62
|
6. **Renderer guards `textContent` against container wipe** —
|
|
63
|
-
`packages/a2ui/
|
|
63
|
+
`packages/a2ui/renderer.js` whitelists pure-text leaves
|
|
64
64
|
(`TEXT_TAG_OK`); everything else routes through the `text=` attribute so
|
|
65
65
|
slotted children survive. Preserve this when touching the renderer.
|
|
66
66
|
7. **Registry ↔ catalog parity.** A component in the runtime registry but
|
|
@@ -4,7 +4,7 @@ Use when `npm run eval:diff -- --engine zettel --semantic` reports intents
|
|
|
4
4
|
with `semanticScore < 60` (or <70 for the watch list): the judge says the
|
|
5
5
|
emitted UI doesn't match what was asked for.
|
|
6
6
|
|
|
7
|
-
## The judge's three axes (`packages/
|
|
7
|
+
## The judge's three axes (`packages/gen-ui/validate/semantic/index.js:32`)
|
|
8
8
|
|
|
9
9
|
- **dominantPattern** (weight 0.5) — does the root/primary component match the
|
|
10
10
|
intent type (chat, form, calendar, data-display, nav…)?
|
|
@@ -64,7 +64,7 @@ rich keyword set (15–20 terms) with exact intent phrases and domain synonyms.
|
|
|
64
64
|
```bash
|
|
65
65
|
node scripts/build/components.mjs --verify
|
|
66
66
|
npm run smoke:engines && npm run smoke:register-engine && npm run test:a2ui
|
|
67
|
-
node packages/
|
|
67
|
+
node packages/mcp/gen-ui/scripts/eval-diff.mjs --engine zettel --semantic
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
The semantic judge is cached, content-hashed on
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: demo-audit
|
|
3
3
|
description: >-
|
|
4
4
|
Seven-mode QA sweep of the monorepo's demo/app surfaces: visual probe,
|
|
5
5
|
app-shell QA, attr-quote typos, native-primitive leak, admin-shell
|
|
6
6
|
composition, card anatomy, plus an aggregated token/contrast/lifecycle
|
|
7
7
|
drift battery (`npm run dogfood:status`). Use for "run a dogfood sweep",
|
|
8
8
|
"find broken demos", "audit native primitive leaks". NOT for gen-UI
|
|
9
|
-
gallery scoring (
|
|
9
|
+
gallery scoring (gen-ui-review) or authoring primitives (primitive-authoring).
|
|
10
10
|
disable-model-invocation: false
|
|
11
11
|
user-invocable: true
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
#
|
|
14
|
+
# demo-audit
|
|
15
15
|
|
|
16
16
|
Finds the bugs the type-checker misses across the monorepo's rendered surfaces.
|
|
17
17
|
Detection is script-driven — repo audit scripts plus one bundled deep analyzer;
|
|
@@ -27,7 +27,7 @@ not a filesystem tree to `ls`; the analyzers walk the sitemap.
|
|
|
27
27
|
|
|
28
28
|
| # | Task shape | Detection (repo root) | Triage depth |
|
|
29
29
|
|---|---|---|---|
|
|
30
|
-
| 1 | Component visual probe — "find broken demos"; after wide refactors of tokens, slots, or stamping | `npm run dogfood:visual-probe` (baseline: 4xx, console, 0×0 body, host upgrade) · `node "${CLAUDE_PLUGIN_ROOT}/skills/
|
|
30
|
+
| 1 | Component visual probe — "find broken demos"; after wide refactors of tokens, slots, or stamping | `npm run dogfood:visual-probe` (baseline: 4xx, console, 0×0 body, host upgrade) · `node "${CLAUDE_PLUGIN_ROOT}/skills/demo-audit/scripts/analyze.mjs"` (deep: 8 probe classes) | [visual-probe-triage](references/visual-probe-triage.md) |
|
|
31
31
|
| 2 | App-shell QA — after `apps/` structural sweeps; before a release | `node scripts/dev/audit-app-shells.mjs [--only=NAME] [--fail-fast] [--compare-prod]` | [app-shell-pitfalls](references/app-shell-pitfalls.md) |
|
|
32
32
|
| 3 | HTML attr-quote typo sweep — nested `"` broke an attribute boundary | inline node one-shot (no repo script) | [html-attr-sweep](references/html-attr-sweep.md) |
|
|
33
33
|
| 4 | Native-primitive leak — `<button>` where `<button-ui>` exists | `npm run audit:native-primitive-leak` (`:all` / `:strict` variants) | [native-leak-annotations](references/native-leak-annotations.md) |
|
|
@@ -56,7 +56,7 @@ map onto each other; a mode-7 finding is never relabeled critical/warning/info.
|
|
|
56
56
|
## Triage gate — before ANY auto-fix (builder seat only)
|
|
57
57
|
|
|
58
58
|
This gate and the allowlist below govern a **builder** seat running dogfood
|
|
59
|
-
with Write/Edit (typically `
|
|
59
|
+
with Write/Edit (typically `primitive-authoring-agent`) — never a read-only
|
|
60
60
|
verification seat. `framework-reviewer` (Read/Grep/Glob/Bash, no Write/Edit)
|
|
61
61
|
never applies a fix regardless of triage outcome: it always files the finding
|
|
62
62
|
with the fix-routing column below cited, and stops there.
|
|
@@ -75,7 +75,7 @@ Apply a fix unattended iff all three hold; otherwise file it for human review:
|
|
|
75
75
|
A read-only seat holds Bash, and Bash alone can run `perl -i` / `sed -i` /
|
|
76
76
|
`node -e` with a file write even without a Write or Edit tool — the tool
|
|
77
77
|
allowlist is not the enforcement boundary, the routing rule is: these fixes
|
|
78
|
-
are executed by `
|
|
78
|
+
are executed by `primitive-authoring-agent` (or a human), never dispatched to or run
|
|
79
79
|
by `framework-reviewer` or any other read-only dogfood seat. A read-only run
|
|
80
80
|
reports "matches this allowlist row" as part of its finding and stops.
|
|
81
81
|
|
|
@@ -132,7 +132,7 @@ surfaces swept: <route(s)/component(s)/shell(s) covered, or "full sweep">
|
|
|
132
132
|
findings: <file>:<line> — <defect class> — <severity: critical|warning|info (modes 1-6) or P0-P3 (mode 7)> — <one-line detail>
|
|
133
133
|
…one row per finding; "none" if zero
|
|
134
134
|
unmeasured: <modes that could not run + why, e.g. "mode 1 — dev server unreachable">; omit if none
|
|
135
|
-
fix-routing: <per finding: auto-fixed (allowlist row cited, builder seat only) | routed to
|
|
135
|
+
fix-routing: <per finding: auto-fixed (allowlist row cited, builder seat only) | routed to primitive-authoring-agent | escalated to human — name which>
|
|
136
136
|
verdict: clean | findings-filed — <one line>
|
|
137
137
|
```
|
|
138
138
|
|
|
@@ -145,7 +145,7 @@ surfaces swept: apps/admin/**, packages/web-modules/shell/**
|
|
|
145
145
|
findings: apps/admin/pages/settings.html:142 — native-primitive-leak — warning — <button> where button-ui exists, no data-native-ok
|
|
146
146
|
packages/web-modules/shell/admin-shell.js:88 — admin-shell-anatomy — critical — missing canonical <statusbar-ui> part
|
|
147
147
|
unmeasured: mode 1 (visual-probe) — dev server not running, skipped
|
|
148
|
-
fix-routing: settings.html:142 — escalated to human (native-primitive replacement is an attribute-shape decision, never auto-fixed); admin-shell.js:88 — routed to
|
|
148
|
+
fix-routing: settings.html:142 — escalated to human (native-primitive replacement is an attribute-shape decision, never auto-fixed); admin-shell.js:88 — routed to primitive-authoring-agent (shared web-modules source, outside the audited surface)
|
|
149
149
|
verdict: findings-filed — 1 critical, 1 warning open; see qa/findings/ for the full report
|
|
150
150
|
```
|
|
151
151
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"skill": "
|
|
2
|
+
"skill": "demo-audit",
|
|
3
3
|
"note": "Trigger-routing suite (gh#369). expect=trigger: the skill should fire on the prompt in a fresh session. expect=no-trigger: a near-miss owned elsewhere (owner named per case) or generic knowledge with no AdiaUI skill involved. Cases derived from evals/routing-corpus.json's phrases array (gh#355 vetted corpus) plus the SKILL.md description's own trigger/NOT-fence language.",
|
|
4
4
|
"cases": [
|
|
5
5
|
{ "id": "t01", "prompt": "Run a dogfood sweep before we cut the release", "expect": "trigger" },
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
{ "id": "t06", "prompt": "Sweep card anatomy for a collapsed header wrapper", "expect": "trigger" },
|
|
11
11
|
{ "id": "t07", "prompt": "Run npm run dogfood:status and post the findings in the PR description", "expect": "trigger" },
|
|
12
12
|
{ "id": "t08", "prompt": "Find token drift and contrast collapse across the components after the refactor", "expect": "trigger" },
|
|
13
|
-
{ "id": "n01", "prompt": "Score the gen-ui gallery output quality against the rubric", "expect": "no-trigger", "owner": "
|
|
14
|
-
{ "id": "n02", "prompt": "Add a new primitive component to packages/web-components", "expect": "no-trigger", "owner": "
|
|
15
|
-
{ "id": "n03", "prompt": "Cut the next release and publish the lockstep packages", "expect": "no-trigger", "owner": "
|
|
16
|
-
{ "id": "n04", "prompt": "Deploy the latest build to ui-kit.exe.xyz", "expect": "no-trigger", "owner": "
|
|
17
|
-
{ "id": "n05", "prompt": "Zettel coverage dropped on the nightly eval, find out why", "expect": "no-trigger", "owner": "
|
|
18
|
-
{ "id": "n06", "prompt": "Compose the billing settings screen from the catalog", "expect": "no-trigger", "owner": "
|
|
13
|
+
{ "id": "n01", "prompt": "Score the gen-ui gallery output quality against the rubric", "expect": "no-trigger", "owner": "gen-ui-review" },
|
|
14
|
+
{ "id": "n02", "prompt": "Add a new primitive component to packages/web-components", "expect": "no-trigger", "owner": "primitive-authoring" },
|
|
15
|
+
{ "id": "n03", "prompt": "Cut the next release and publish the lockstep packages", "expect": "no-trigger", "owner": "package-release" },
|
|
16
|
+
{ "id": "n04", "prompt": "Deploy the latest build to ui-kit.exe.xyz", "expect": "no-trigger", "owner": "site-deployment" },
|
|
17
|
+
{ "id": "n05", "prompt": "Zettel coverage dropped on the nightly eval, find out why", "expect": "no-trigger", "owner": "a2ui-maintenance" },
|
|
18
|
+
{ "id": "n06", "prompt": "Compose the billing settings screen from the catalog", "expect": "no-trigger", "owner": "screen-composition" }
|
|
19
19
|
]
|
|
20
20
|
}
|
|
@@ -1,110 +1,110 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"name": "
|
|
3
|
+
"name": "demo-audit routing accuracy corpus",
|
|
4
4
|
"version": "2.1.0",
|
|
5
|
-
"purpose": "Routing-eval corpus for
|
|
5
|
+
"purpose": "Routing-eval corpus for demo-audit. Each phrase declares the skill (expected), a forbidden skill (expected_not, for phrases the source data only ever asserted as \"not this skill\"), or neither. Scored by scripts/skills/run-skill-evals.mjs (TF-IDF token overlap over per-skill description+triggers).",
|
|
6
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
|
-
"scope": "
|
|
7
|
+
"scope": "demo-audit routing \u2014 does this phrase activate demo-audit?",
|
|
8
8
|
"phrases": [
|
|
9
9
|
{
|
|
10
|
-
"id": "
|
|
10
|
+
"id": "demo-audit-pos-01",
|
|
11
11
|
"phrase": "run a dogfood sweep before we cut the release",
|
|
12
|
-
"expected": "
|
|
12
|
+
"expected": "demo-audit"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
"id": "
|
|
15
|
+
"id": "demo-audit-pos-02",
|
|
16
16
|
"phrase": "find broken demos across the component site",
|
|
17
|
-
"expected": "
|
|
17
|
+
"expected": "demo-audit"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
"id": "
|
|
20
|
+
"id": "demo-audit-pos-03",
|
|
21
21
|
"phrase": "audit native primitive leaks in the admin app",
|
|
22
|
-
"expected": "
|
|
22
|
+
"expected": "demo-audit"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
|
-
"id": "
|
|
25
|
+
"id": "demo-audit-pos-04",
|
|
26
26
|
"phrase": "check for attr-quote typos that broke the rendered HTML",
|
|
27
|
-
"expected": "
|
|
27
|
+
"expected": "demo-audit"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"id": "
|
|
30
|
+
"id": "demo-audit-pos-05",
|
|
31
31
|
"phrase": "run the app-shell QA sweep after the apps/ structural refactor",
|
|
32
|
-
"expected": "
|
|
32
|
+
"expected": "demo-audit"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
|
-
"id": "
|
|
35
|
+
"id": "demo-audit-pos-06",
|
|
36
36
|
"phrase": "audit admin-shell composition for missing canonical parts",
|
|
37
|
-
"expected": "
|
|
37
|
+
"expected": "demo-audit"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
"id": "
|
|
40
|
+
"id": "demo-audit-pos-07",
|
|
41
41
|
"phrase": "sweep card anatomy for a collapsed header wrapper",
|
|
42
|
-
"expected": "
|
|
42
|
+
"expected": "demo-audit"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
|
-
"id": "
|
|
45
|
+
"id": "demo-audit-pos-08",
|
|
46
46
|
"phrase": "run npm run dogfood:status and post the findings in the PR description",
|
|
47
|
-
"expected": "
|
|
47
|
+
"expected": "demo-audit"
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
|
-
"id": "
|
|
50
|
+
"id": "demo-audit-pos-09",
|
|
51
51
|
"phrase": "is this surface clean before we merge",
|
|
52
|
-
"expected": "
|
|
52
|
+
"expected": "demo-audit"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
"id": "
|
|
55
|
+
"id": "demo-audit-pos-10",
|
|
56
56
|
"phrase": "find token drift and contrast collapse across the components",
|
|
57
|
-
"expected": "
|
|
57
|
+
"expected": "demo-audit"
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
"id": "
|
|
60
|
+
"id": "demo-audit-pos-11",
|
|
61
61
|
"phrase": "audit the demo pages for broken components after the token refactor",
|
|
62
|
-
"expected": "
|
|
62
|
+
"expected": "demo-audit"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
|
-
"id": "
|
|
65
|
+
"id": "demo-audit-pos-12",
|
|
66
66
|
"phrase": "check for unregistered custom elements on the component pages",
|
|
67
|
-
"expected": "
|
|
67
|
+
"expected": "demo-audit"
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
|
-
"id": "
|
|
70
|
+
"id": "demo-audit-neg-01",
|
|
71
71
|
"phrase": "score the gen-ui gallery output quality against the rubric",
|
|
72
|
-
"expected_not": "
|
|
72
|
+
"expected_not": "demo-audit"
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
|
-
"id": "
|
|
75
|
+
"id": "demo-audit-neg-02",
|
|
76
76
|
"phrase": "review the rubric score for this generated screen and root-cause the gap",
|
|
77
|
-
"expected_not": "
|
|
77
|
+
"expected_not": "demo-audit"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
|
-
"id": "
|
|
80
|
+
"id": "demo-audit-neg-03",
|
|
81
81
|
"phrase": "add a new primitive component to packages/web-components",
|
|
82
|
-
"expected_not": "
|
|
82
|
+
"expected_not": "demo-audit"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
|
-
"id": "
|
|
85
|
+
"id": "demo-audit-neg-04",
|
|
86
86
|
"phrase": "cut the next release and publish the lockstep packages",
|
|
87
|
-
"expected_not": "
|
|
87
|
+
"expected_not": "demo-audit"
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
|
-
"id": "
|
|
90
|
+
"id": "demo-audit-neg-05",
|
|
91
91
|
"phrase": "deploy the latest build to ui-kit.exe.xyz",
|
|
92
|
-
"expected": "
|
|
92
|
+
"expected": "site-deployment"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
|
-
"id": "
|
|
95
|
+
"id": "demo-audit-neg-06",
|
|
96
96
|
"phrase": "zettel coverage dropped on the nightly eval, find out why",
|
|
97
|
-
"expected_not": "
|
|
97
|
+
"expected_not": "demo-audit"
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
|
-
"id": "
|
|
100
|
+
"id": "demo-audit-neg-07",
|
|
101
101
|
"phrase": "fix the openai stopReason mapping in the llm client",
|
|
102
|
-
"expected_not": "
|
|
102
|
+
"expected_not": "demo-audit"
|
|
103
103
|
},
|
|
104
104
|
{
|
|
105
|
-
"id": "
|
|
105
|
+
"id": "demo-audit-neg-08",
|
|
106
106
|
"phrase": "compose the billing settings screen from the catalog",
|
|
107
|
-
"expected_not": "
|
|
107
|
+
"expected_not": "demo-audit"
|
|
108
108
|
}
|
|
109
109
|
],
|
|
110
110
|
"_measured_historical": {
|
|
@@ -6,7 +6,7 @@ Detection layers, deepest last:
|
|
|
6
6
|
console JS errors, non-zero body rect, ≥1 upgraded custom-element host.
|
|
7
7
|
Artifacts land in `qa/findings/visual-probe-<DATE>/`.
|
|
8
8
|
2. Bundled deep analyzer —
|
|
9
|
-
`node "${CLAUDE_PLUGIN_ROOT}/skills/
|
|
9
|
+
`node "${CLAUDE_PLUGIN_ROOT}/skills/demo-audit/scripts/analyze.mjs"`.
|
|
10
10
|
Resolves the target checkout from `$ADIA_REPO_ROOT`, else cwd — always run
|
|
11
11
|
from (or point it at) the monorepo checkout, never the plugin install dir.
|
|
12
12
|
Flags: `--filter <slug>` · `--port N` (default 5173) · `--out PATH`
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
* node "$SCRIPT" --out /tmp/report.md # custom path
|
|
33
33
|
* node "$SCRIPT" --quiet # report only
|
|
34
34
|
* where SCRIPT is this file's path
|
|
35
|
-
* (`${CLAUDE_PLUGIN_ROOT}/skills/
|
|
35
|
+
* (`${CLAUDE_PLUGIN_ROOT}/skills/demo-audit/scripts/analyze.mjs`).
|
|
36
36
|
*
|
|
37
37
|
* Repo root: the monorepo whose `site/sitemap.json` is swept. Resolved from
|
|
38
38
|
* `$ADIA_REPO_ROOT` if set, else the current working directory — so the
|
|
@@ -500,7 +500,7 @@ function renderReport(results, base) {
|
|
|
500
500
|
lines.push(`# Dogfooding report — ${today}`);
|
|
501
501
|
lines.push('');
|
|
502
502
|
lines.push(`Sweep of every \`/site/components/*\` demo page against ${base}.`);
|
|
503
|
-
lines.push('Generated by the `
|
|
503
|
+
lines.push('Generated by the `demo-audit` skill analyzer (`scripts/analyze.mjs`).');
|
|
504
504
|
lines.push('');
|
|
505
505
|
lines.push('## Summary');
|
|
506
506
|
lines.push('');
|