@adia-ai/adia-ui-forge 0.8.9 → 0.8.10
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 +11 -0
- package/package.json +1 -1
- package/skills/adia-a2ui/evals/evals.json +23 -0
- package/skills/adia-a2ui/evals/routing-corpus.json +130 -29
- package/skills/adia-author/evals/evals.json +22 -0
- package/skills/adia-author/evals/routing-corpus.json +155 -34
- package/skills/adia-deploy/evals/evals.json +22 -0
- package/skills/adia-deploy/evals/routing-corpus.json +125 -28
- package/skills/adia-dogfood/evals/evals.json +20 -0
- package/skills/adia-dogfood/evals/routing-corpus.json +110 -25
- package/skills/adia-gen-review/evals/evals.json +20 -0
- package/skills/adia-gen-review/evals/routing-corpus.json +110 -25
- package/skills/adia-llm-internals/evals/evals.json +22 -0
- package/skills/adia-llm-internals/evals/routing-corpus.json +125 -28
- package/skills/adia-release/evals/routing-corpus.json +115 -26
- package/skills/adia-site-docs/evals/evals.json +20 -0
- package/skills/adia-site-docs/evals/routing-corpus.json +130 -29
- package/skills/adia-ssr/evals/evals.json +20 -0
- package/skills/adia-ssr/evals/routing-corpus.json +110 -25
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adia-forge",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.10",
|
|
4
4
|
"description": "Maintain the adia-ui (@adia-ai) framework itself \u2014 author primitives and shells, run the A2UI generation pipeline and its corpus, review gen-UI quality, sweep QA, cut releases, deploy. The maintainer counterpart to adia-factory (the consumer/app-author plugin).",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Kim",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog — adia-forge
|
|
2
2
|
|
|
3
|
+
## [0.8.10] — 2026-07-20
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **`evals/evals.json` behavioral test-case files for 8 skills** (gh#369) — the file `release_gate.py`'s G7 coverage check actually reads (a schema distinct from `evals/routing-corpus.json`). Derived from each skill's already-vetted `routing-corpus.json` phrases, with real judgment applied — the forge side required genuine authoring since its corpus phrases are terse fragments, not natural-language prompts (independently reviewed, sampled).
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
- **`evals/routing-corpus.json` unified onto one schema across all skills** (gh#355) — converged forge's `{positives,negatives}` shape and factory's `{phrases}` shape onto the `{phrases:[...]}` form `scripts/skills/run-skill-evals.mjs` actually reads. `run-skill-evals.mjs` extended to aggregate the global corpus with every per-skill corpus (per-skill wins on id collision) instead of reading only the 97-phrase global file; added a `selftest` subcommand. Does NOT touch `routing_eval.py`/`release_gate.py` — those live in an externally-installed marketplace plugin, out of this repo's reach; gh#369 is the separate, real fix for G7's actual coverage check.
|
|
10
|
+
|
|
11
|
+
### Maintenance
|
|
12
|
+
- **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
|
|
13
|
+
|
|
3
14
|
## [0.8.9] — 2026-07-19
|
|
4
15
|
|
|
5
16
|
### Fixed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adia-ai/adia-ui-forge",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.10",
|
|
4
4
|
"description": "Maintain the adia-ui (@adia-ai) framework itself \u2014 author primitives and shells, run the A2UI generation pipeline and its corpus, review gen-UI quality, sweep QA, cut releases, deploy. The maintainer counterpart to adia-factory (the consumer/app-author plugin).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adia-ui",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "adia-a2ui",
|
|
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
|
+
"cases": [
|
|
5
|
+
{ "id": "t01", "prompt": "Validate this A2UI document against the schema", "expect": "trigger" },
|
|
6
|
+
{ "id": "t02", "prompt": "Harvest a chunk from this HTML demo for the corpus", "expect": "trigger" },
|
|
7
|
+
{ "id": "t03", "prompt": "Zettel coverage dropped after the last corpus change, find out why", "expect": "trigger" },
|
|
8
|
+
{ "id": "t04", "prompt": "Tune the STRONG_MATCH threshold for the retrieval scorer", "expect": "trigger" },
|
|
9
|
+
{ "id": "t05", "prompt": "Run check_anti_patterns on this rendered gallery HTML", "expect": "trigger" },
|
|
10
|
+
{ "id": "t06", "prompt": "Add a new MCP tool to the a2ui server for refine_composition", "expect": "trigger" },
|
|
11
|
+
{ "id": "t07", "prompt": "Diagnose this eval gap — coverage regressed and I need the root cause", "expect": "trigger" },
|
|
12
|
+
{ "id": "t08", "prompt": "Lift a semantic fail that's scoring under sixty in the nightly eval", "expect": "trigger" },
|
|
13
|
+
{ "id": "t09", "prompt": "Why did the composer emit composition-match instead of composition-synthesized for this prompt?", "expect": "trigger" },
|
|
14
|
+
{ "id": "t10", "prompt": "This content shape can't be expressed by any component's A2UI contract — audit the catalog", "expect": "trigger" },
|
|
15
|
+
{ "id": "n01", "prompt": "Build a settings page from existing primitives for our app", "expect": "no-trigger", "owner": "adia-compose" },
|
|
16
|
+
{ "id": "n02", "prompt": "Add a slot to button-ui and update its yaml contract", "expect": "no-trigger", "owner": "adia-author" },
|
|
17
|
+
{ "id": "n03", "prompt": "Score the generated UI quality in apps/genui against the rubric", "expect": "no-trigger", "owner": "adia-gen-review" },
|
|
18
|
+
{ "id": "n04", "prompt": "Run a broad visual QA sweep across site and playgrounds before we cut", "expect": "no-trigger", "owner": "adia-dogfood" },
|
|
19
|
+
{ "id": "n05", "prompt": "Fix the @adia-ai/llm SSE adapter so it emits a terminal done chunk", "expect": "no-trigger", "owner": "adia-llm-internals" },
|
|
20
|
+
{ "id": "n06", "prompt": "Mount gen-root and wire data resolvers for end users at runtime", "expect": "no-trigger", "owner": "adia-genui" },
|
|
21
|
+
{ "id": "n07", "prompt": "Edit the getting-started docs page on the site for consistency", "expect": "no-trigger", "owner": "adia-site-docs" }
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -1,38 +1,139 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"name": "adia-a2ui routing accuracy corpus",
|
|
4
|
+
"version": "2.1.0",
|
|
5
|
+
"purpose": "Routing-eval corpus for adia-a2ui. 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
|
+
"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": "adia-a2ui routing \u2014 does this phrase activate adia-a2ui?",
|
|
8
|
+
"phrases": [
|
|
9
|
+
{
|
|
10
|
+
"id": "adia-a2ui-pos-01",
|
|
11
|
+
"phrase": "validate this A2UI document",
|
|
12
|
+
"expected": "adia-a2ui"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "adia-a2ui-pos-02",
|
|
16
|
+
"phrase": "harvest a chunk from this HTML demo",
|
|
17
|
+
"expected": "adia-a2ui"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "adia-a2ui-pos-03",
|
|
21
|
+
"phrase": "zettel coverage dropped after the last change",
|
|
22
|
+
"expected": "adia-a2ui"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "adia-a2ui-pos-04",
|
|
26
|
+
"phrase": "should this repeated subtree become its own chunk",
|
|
27
|
+
"expected": "adia-a2ui"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "adia-a2ui-pos-05",
|
|
31
|
+
"phrase": "tune the STRONG_MATCH threshold",
|
|
32
|
+
"expected": "adia-a2ui"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "adia-a2ui-pos-06",
|
|
36
|
+
"phrase": "run check_anti_patterns on this rendered HTML",
|
|
37
|
+
"expected": "adia-a2ui"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "adia-a2ui-pos-07",
|
|
41
|
+
"phrase": "refine composition with an OAuth row",
|
|
42
|
+
"expected": "adia-a2ui"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "adia-a2ui-pos-08",
|
|
46
|
+
"phrase": "MRR dropped in the chunk retrieval eval",
|
|
47
|
+
"expected": "adia-a2ui"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "adia-a2ui-pos-09",
|
|
51
|
+
"phrase": "add an MCP tool to the a2ui server",
|
|
52
|
+
"expected": "adia-a2ui"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "adia-a2ui-pos-10",
|
|
56
|
+
"phrase": "audit the training data corpus for drift",
|
|
57
|
+
"expected": "adia-a2ui"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "adia-a2ui-pos-11",
|
|
61
|
+
"phrase": "diagnose this eval gap and regression",
|
|
62
|
+
"expected": "adia-a2ui"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "adia-a2ui-pos-12",
|
|
66
|
+
"phrase": "run the MCP pipeline: generate_ui then validate_schema",
|
|
67
|
+
"expected": "adia-a2ui"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "adia-a2ui-pos-13",
|
|
71
|
+
"phrase": "lift a semantic fail under sixty",
|
|
72
|
+
"expected": "adia-a2ui"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "adia-a2ui-pos-14",
|
|
76
|
+
"phrase": "why did the composer emit composition-match instead of composition-synthesized",
|
|
77
|
+
"expected": "adia-a2ui"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "adia-a2ui-neg-01",
|
|
81
|
+
"phrase": "build a settings page from existing primitives",
|
|
82
|
+
"expected_not": "adia-a2ui"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "adia-a2ui-neg-02",
|
|
86
|
+
"phrase": "add a slot to button-ui and update its yaml contract",
|
|
87
|
+
"expected_not": "adia-a2ui"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "adia-a2ui-neg-03",
|
|
91
|
+
"phrase": "cut a release and bump the version tag",
|
|
92
|
+
"expected_not": "adia-a2ui"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "adia-a2ui-neg-04",
|
|
96
|
+
"phrase": "score the generated UI quality in apps/genui",
|
|
97
|
+
"expected_not": "adia-a2ui"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "adia-a2ui-neg-05",
|
|
101
|
+
"phrase": "run a broad visual QA sweep across site and playgrounds",
|
|
102
|
+
"expected_not": "adia-a2ui"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "adia-a2ui-neg-06",
|
|
106
|
+
"phrase": "fix the @adia-ai/llm SSE adapter",
|
|
107
|
+
"expected_not": "adia-a2ui"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "adia-a2ui-neg-07",
|
|
111
|
+
"phrase": "explain how React state management works",
|
|
112
|
+
"expected_not": "adia-a2ui"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": "adia-a2ui-neg-08",
|
|
116
|
+
"phrase": "compose a settings screen from catalog primitives",
|
|
117
|
+
"expected_not": "adia-a2ui"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "adia-a2ui-neg-09",
|
|
121
|
+
"phrase": "mount gen-root and wire data resolvers for end users at runtime",
|
|
122
|
+
"expected_not": "adia-a2ui"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "adia-a2ui-neg-10",
|
|
126
|
+
"phrase": "edit the getting-started docs page on the site",
|
|
127
|
+
"expected_not": "adia-a2ui"
|
|
128
|
+
}
|
|
17
129
|
],
|
|
18
|
-
"
|
|
19
|
-
"build a settings page from existing primitives",
|
|
20
|
-
"add a slot to button-ui and update its yaml contract",
|
|
21
|
-
"cut a release and bump the version tag",
|
|
22
|
-
"score the generated UI quality in apps/genui",
|
|
23
|
-
"run a broad visual QA sweep across site and playgrounds",
|
|
24
|
-
"fix the @adia-ai/llm SSE adapter",
|
|
25
|
-
"explain how React state management works",
|
|
26
|
-
"compose a settings screen from catalog primitives",
|
|
27
|
-
"mount gen-root and wire data resolvers for end users at runtime",
|
|
28
|
-
"edit the getting-started docs page on the site"
|
|
29
|
-
],
|
|
30
|
-
"_measured": {
|
|
130
|
+
"_measured_historical": {
|
|
31
131
|
"as_of": "2026-07-18",
|
|
32
132
|
"scorer": "routing_eval.py (nonoun-plugins/forge)",
|
|
33
133
|
"f1": 0.783,
|
|
34
134
|
"precision": 1.0,
|
|
35
135
|
"recall": 0.643,
|
|
36
|
-
"exit_code": 0
|
|
136
|
+
"exit_code": 0,
|
|
137
|
+
"note": "measured by the external routing_eval.py (nonoun-plugins/forge) against the pre-conversion positives/negatives shape; historical record only, not regenerated by run-skill-evals.mjs."
|
|
37
138
|
}
|
|
38
139
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "adia-author",
|
|
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
|
+
"cases": [
|
|
5
|
+
{ "id": "t01", "prompt": "Add a new <toggle-ui> primitive component from scratch", "expect": "trigger" },
|
|
6
|
+
{ "id": "t02", "prompt": "Add a new prop to table-ui for sticky headers", "expect": "trigger" },
|
|
7
|
+
{ "id": "t03", "prompt": "Fix the CSS in card-ui to handle the new bleed variant", "expect": "trigger" },
|
|
8
|
+
{ "id": "t04", "prompt": "Update the input-ui yaml to add a placeholder attribute", "expect": "trigger" },
|
|
9
|
+
{ "id": "t05", "prompt": "Build the chat-shell composition with a new sidebar slot", "expect": "trigger" },
|
|
10
|
+
{ "id": "t06", "prompt": "This billing-summary block keeps repeating across apps — extract it to a shared web-modules module", "expect": "trigger" },
|
|
11
|
+
{ "id": "t07", "prompt": "Audit the four-axis contract for table-ui — token usage and lifecycle symmetry", "expect": "trigger" },
|
|
12
|
+
{ "id": "t08", "prompt": "Author a demo for the billing-overview composite, an examples.html", "expect": "trigger" },
|
|
13
|
+
{ "id": "t09", "prompt": "Add a pane behaviour to admin-shell per the bespoke shell-tier convention", "expect": "trigger" },
|
|
14
|
+
{ "id": "n01", "prompt": "Compose this Figma mock into AdiaUI components for our consumer app", "expect": "no-trigger", "owner": "adia-compose" },
|
|
15
|
+
{ "id": "n02", "prompt": "Cut a release of the next version and publish the npm packages", "expect": "no-trigger", "owner": "adia-release" },
|
|
16
|
+
{ "id": "n03", "prompt": "Tune the zettel composition coverage, the eval is at 38%", "expect": "no-trigger", "owner": "adia-a2ui" },
|
|
17
|
+
{ "id": "n04", "prompt": "Deploy the API service to the hosting platform", "expect": "no-trigger", "owner": "adia-deploy" },
|
|
18
|
+
{ "id": "n05", "prompt": "The gemini adapter is dropping usage tokens on streamed responses", "expect": "no-trigger", "owner": "adia-llm-internals" },
|
|
19
|
+
{ "id": "n06", "prompt": "Extend the LLM bridge in @adia-ai/llm to add a new provider", "expect": "no-trigger", "owner": "adia-llm-internals" },
|
|
20
|
+
{ "id": "n07", "prompt": "Explain how React hooks work in general", "expect": "no-trigger" }
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -1,43 +1,164 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"name": "adia-author routing accuracy corpus",
|
|
4
|
+
"version": "2.1.0",
|
|
5
|
+
"purpose": "Routing-eval corpus for adia-author. 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
|
+
"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": "adia-author routing \u2014 does this phrase activate adia-author?",
|
|
8
|
+
"phrases": [
|
|
9
|
+
{
|
|
10
|
+
"id": "adia-author-pos-01",
|
|
11
|
+
"phrase": "add a new button-ui primitive component",
|
|
12
|
+
"expected": "adia-author"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "adia-author-pos-02",
|
|
16
|
+
"phrase": "build a new <toggle-ui> component from scratch",
|
|
17
|
+
"expected": "adia-author"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "adia-author-pos-03",
|
|
21
|
+
"phrase": "create a new primitive web component in packages/web-components",
|
|
22
|
+
"expected": "adia-author"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "adia-author-pos-04",
|
|
26
|
+
"phrase": "add a new prop to table-ui",
|
|
27
|
+
"expected": "adia-author"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "adia-author-pos-05",
|
|
31
|
+
"phrase": "fix the CSS in card-ui to handle the new bleed variant",
|
|
32
|
+
"expected": "adia-author"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "adia-author-pos-06",
|
|
36
|
+
"phrase": "update the input-ui yaml to add a placeholder attribute",
|
|
37
|
+
"expected": "adia-author"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "adia-author-pos-07",
|
|
41
|
+
"phrase": "build the chat-shell composition with the new sidebar slot",
|
|
42
|
+
"expected": "adia-author"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "adia-author-pos-08",
|
|
46
|
+
"phrase": "author a new web-module shell at packages/web-modules/editor/editor-shell",
|
|
47
|
+
"expected": "adia-author"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "adia-author-pos-09",
|
|
51
|
+
"phrase": "add a pane behaviour to admin-shell per the bespoke shell-tier convention",
|
|
52
|
+
"expected": "adia-author"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "adia-author-pos-10",
|
|
56
|
+
"phrase": "promote this inline content to a shared web-modules module",
|
|
57
|
+
"expected": "adia-author"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "adia-author-pos-11",
|
|
61
|
+
"phrase": "this content keeps repeating across apps, extract to a shared module",
|
|
62
|
+
"expected": "adia-author"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "adia-author-pos-12",
|
|
66
|
+
"phrase": "lift this billing-summary block from apps/saas to web-modules",
|
|
67
|
+
"expected": "adia-author"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "adia-author-pos-13",
|
|
71
|
+
"phrase": "audit the four-axis contract for table-ui",
|
|
72
|
+
"expected": "adia-author"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "adia-author-pos-14",
|
|
76
|
+
"phrase": "check the token usage in card-ui for drift",
|
|
77
|
+
"expected": "adia-author"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "adia-author-pos-15",
|
|
81
|
+
"phrase": "lifecycle audit on dropdown-ui \u2014 symmetric connected/disconnected?",
|
|
82
|
+
"expected": "adia-author"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "adia-author-pos-16",
|
|
86
|
+
"phrase": "author a demo for the billing-overview composite",
|
|
87
|
+
"expected": "adia-author"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "adia-author-pos-17",
|
|
91
|
+
"phrase": "compose the examples.html for dashboard-layout",
|
|
92
|
+
"expected": "adia-author"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "adia-author-pos-18",
|
|
96
|
+
"phrase": "write the demo for <integrations-page-ui> in packages/web-modules/settings",
|
|
97
|
+
"expected": "adia-author"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "adia-author-neg-01",
|
|
101
|
+
"phrase": "compose this Figma mock into AdiaUI components for our consumer app",
|
|
102
|
+
"expected_not": "adia-author"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "adia-author-neg-02",
|
|
106
|
+
"phrase": "cut a release of the next version and publish the npm packages",
|
|
107
|
+
"expected_not": "adia-author"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "adia-author-neg-03",
|
|
111
|
+
"phrase": "tune the zettel composition coverage; eval is at 38%",
|
|
112
|
+
"expected_not": "adia-author"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": "adia-author-neg-04",
|
|
116
|
+
"phrase": "build a user profile card with avatar and edit actions",
|
|
117
|
+
"expected_not": "adia-author"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "adia-author-neg-05",
|
|
121
|
+
"phrase": "deploy the api service to the hosting platform",
|
|
122
|
+
"expected_not": "adia-author"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "adia-author-neg-06",
|
|
126
|
+
"phrase": "explain how React hooks work",
|
|
127
|
+
"expected_not": "adia-author"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "adia-author-neg-07",
|
|
131
|
+
"phrase": "the gemini adapter is dropping usage tokens on streamed responses",
|
|
132
|
+
"expected": "adia-llm-internals"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "adia-author-neg-08",
|
|
136
|
+
"phrase": "fix the openai stopReason mapping in the llm client",
|
|
137
|
+
"expected_not": "adia-author"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "adia-author-neg-09",
|
|
141
|
+
"phrase": "extend the LLM bridge to add a new provider",
|
|
142
|
+
"expected_not": "adia-author"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "adia-author-neg-10",
|
|
146
|
+
"phrase": "modify createAdapter in @adia-ai/llm to add chunk-shape support",
|
|
147
|
+
"expected_not": "adia-author"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "adia-author-neg-11",
|
|
151
|
+
"phrase": "set up the LLM-bridge surface for a new tool-call provider",
|
|
152
|
+
"expected_not": "adia-author"
|
|
153
|
+
}
|
|
21
154
|
],
|
|
22
|
-
"
|
|
23
|
-
"compose this Figma mock into AdiaUI components for our consumer app",
|
|
24
|
-
"cut a release of the next version and publish the npm packages",
|
|
25
|
-
"tune the zettel composition coverage; eval is at 38%",
|
|
26
|
-
"build a user profile card with avatar and edit actions",
|
|
27
|
-
"deploy the api service to the hosting platform",
|
|
28
|
-
"explain how React hooks work",
|
|
29
|
-
"the gemini adapter is dropping usage tokens on streamed responses",
|
|
30
|
-
"fix the openai stopReason mapping in the llm client",
|
|
31
|
-
"extend the LLM bridge to add a new provider",
|
|
32
|
-
"modify createAdapter in @adia-ai/llm to add chunk-shape support",
|
|
33
|
-
"set up the LLM-bridge surface for a new tool-call provider"
|
|
34
|
-
],
|
|
35
|
-
"_measured": {
|
|
155
|
+
"_measured_historical": {
|
|
36
156
|
"as_of": "2026-07-18",
|
|
37
157
|
"scorer": "routing_eval.py (nonoun-plugins/forge)",
|
|
38
158
|
"f1": 0.971,
|
|
39
159
|
"precision": 1.0,
|
|
40
160
|
"recall": 0.944,
|
|
41
|
-
"exit_code": 0
|
|
161
|
+
"exit_code": 0,
|
|
162
|
+
"note": "measured by the external routing_eval.py (nonoun-plugins/forge) against the pre-conversion positives/negatives shape; historical record only, not regenerated by run-skill-evals.mjs."
|
|
42
163
|
}
|
|
43
164
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "adia-deploy",
|
|
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
|
+
"cases": [
|
|
5
|
+
{ "id": "t01", "prompt": "Deploy the latest build to ui-kit.exe.xyz", "expect": "trigger" },
|
|
6
|
+
{ "id": "t02", "prompt": "Diagnose why the site returns Port 8000 unbound", "expect": "trigger" },
|
|
7
|
+
{ "id": "t03", "prompt": "The site is throwing a 502, check the VM service", "expect": "trigger" },
|
|
8
|
+
{ "id": "t04", "prompt": "Restart the adia-ui service on the exe.dev VM", "expect": "trigger" },
|
|
9
|
+
{ "id": "t05", "prompt": "Provision a fresh exe.dev VM for a new host", "expect": "trigger" },
|
|
10
|
+
{ "id": "t06", "prompt": "Rotate the API keys on the production VM", "expect": "trigger" },
|
|
11
|
+
{ "id": "t07", "prompt": "Push a site-v* tag to deploy the current build, review the dry-run delete summary first", "expect": "trigger" },
|
|
12
|
+
{ "id": "t08", "prompt": "Did we deploy the site after the last lockstep cut, or is it behind npm?", "expect": "trigger" },
|
|
13
|
+
{ "id": "t09", "prompt": "Roll back the last site deploy, the new build is broken", "expect": "trigger" },
|
|
14
|
+
{ "id": "n01", "prompt": "Cut a release of the next version and publish the npm packages", "expect": "no-trigger", "owner": "adia-release" },
|
|
15
|
+
{ "id": "n02", "prompt": "Verify that this consumer app screen renders correctly before shipping", "expect": "no-trigger", "owner": "adia-verify" },
|
|
16
|
+
{ "id": "n03", "prompt": "Add a new prop to button-ui", "expect": "no-trigger", "owner": "adia-author" },
|
|
17
|
+
{ "id": "n04", "prompt": "Run a dogfood sweep on the demo pages", "expect": "no-trigger", "owner": "adia-dogfood" },
|
|
18
|
+
{ "id": "n05", "prompt": "Tune the zettel retrieval coverage, the eval dropped to 38%", "expect": "no-trigger", "owner": "adia-a2ui" },
|
|
19
|
+
{ "id": "n06", "prompt": "Why does accordion-ui crash under SSR in Astro?", "expect": "no-trigger", "owner": "adia-ssr" },
|
|
20
|
+
{ "id": "n07", "prompt": "Fix the streaming adapter bug in the @adia-ai/llm package", "expect": "no-trigger", "owner": "adia-llm-internals" }
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -1,37 +1,134 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"name": "adia-deploy routing accuracy corpus",
|
|
4
|
+
"version": "2.1.0",
|
|
5
|
+
"purpose": "Routing-eval corpus for adia-deploy. 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
|
+
"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": "adia-deploy routing \u2014 does this phrase activate adia-deploy?",
|
|
8
|
+
"phrases": [
|
|
9
|
+
{
|
|
10
|
+
"id": "adia-deploy-pos-01",
|
|
11
|
+
"phrase": "deploy the latest build to ui-kit.exe.xyz",
|
|
12
|
+
"expected": "adia-deploy"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "adia-deploy-pos-02",
|
|
16
|
+
"phrase": "push the dist folder to the VM",
|
|
17
|
+
"expected": "adia-deploy"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "adia-deploy-pos-03",
|
|
21
|
+
"phrase": "diagnose why the site returns Port 8000 unbound",
|
|
22
|
+
"expected": "adia-deploy"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "adia-deploy-pos-04",
|
|
26
|
+
"phrase": "the site is throwing a 502, check the VM service",
|
|
27
|
+
"expected": "adia-deploy"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "adia-deploy-pos-05",
|
|
31
|
+
"phrase": "restart the adia-ui service on the exe.dev VM",
|
|
32
|
+
"expected": "adia-deploy"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "adia-deploy-pos-06",
|
|
36
|
+
"phrase": "provision a fresh exe.dev VM for a new host",
|
|
37
|
+
"expected": "adia-deploy"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "adia-deploy-pos-07",
|
|
41
|
+
"phrase": "rotate the API keys on the production VM",
|
|
42
|
+
"expected": "adia-deploy"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "adia-deploy-pos-08",
|
|
46
|
+
"phrase": "push a site-v* tag to deploy the current build",
|
|
47
|
+
"expected": "adia-deploy"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "adia-deploy-pos-09",
|
|
51
|
+
"phrase": "the site looks stale, new fixtures are 404ing",
|
|
52
|
+
"expected": "adia-deploy"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "adia-deploy-pos-10",
|
|
56
|
+
"phrase": "check the dry-run delete summary before the deploy job runs",
|
|
57
|
+
"expected": "adia-deploy"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "adia-deploy-pos-11",
|
|
61
|
+
"phrase": "did we deploy the site after the last lockstep cut, or is it behind npm",
|
|
62
|
+
"expected": "adia-deploy"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "adia-deploy-pos-12",
|
|
66
|
+
"phrase": "roll back the last site deploy, the new build is broken",
|
|
67
|
+
"expected": "adia-deploy"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "adia-deploy-neg-01",
|
|
71
|
+
"phrase": "cut a release of the next version and publish the npm packages",
|
|
72
|
+
"expected_not": "adia-deploy"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "adia-deploy-neg-02",
|
|
76
|
+
"phrase": "verify that this consumer app screen renders correctly before shipping",
|
|
77
|
+
"expected_not": "adia-deploy"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "adia-deploy-neg-03",
|
|
81
|
+
"phrase": "add a new prop to button-ui",
|
|
82
|
+
"expected_not": "adia-deploy"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "adia-deploy-neg-04",
|
|
86
|
+
"phrase": "run a dogfood sweep on the demo pages",
|
|
87
|
+
"expected_not": "adia-deploy"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "adia-deploy-neg-05",
|
|
91
|
+
"phrase": "tune the zettel retrieval coverage, eval dropped to 38%",
|
|
92
|
+
"expected_not": "adia-deploy"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "adia-deploy-neg-06",
|
|
96
|
+
"phrase": "publish the npm packages for the next lockstep cut",
|
|
97
|
+
"expected_not": "adia-deploy"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "adia-deploy-neg-07",
|
|
101
|
+
"phrase": "author the release notes and the migration guide",
|
|
102
|
+
"expected_not": "adia-deploy"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "adia-deploy-neg-08",
|
|
106
|
+
"phrase": "why does accordion-ui crash under SSR in Astro",
|
|
107
|
+
"expected_not": "adia-deploy"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"id": "adia-deploy-neg-09",
|
|
111
|
+
"phrase": "fix the streaming adapter bug in the llm package",
|
|
112
|
+
"expected_not": "adia-deploy"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": "adia-deploy-neg-10",
|
|
116
|
+
"phrase": "review the getting-started docs page for consistency",
|
|
117
|
+
"expected_not": "adia-deploy"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "adia-deploy-neg-11",
|
|
121
|
+
"phrase": "score the gen-ui gallery outputs for this cycle",
|
|
122
|
+
"expected_not": "adia-deploy"
|
|
123
|
+
}
|
|
15
124
|
],
|
|
16
|
-
"
|
|
17
|
-
"cut a release of the next version and publish the npm packages",
|
|
18
|
-
"verify that this consumer app screen renders correctly before shipping",
|
|
19
|
-
"add a new prop to button-ui",
|
|
20
|
-
"run a dogfood sweep on the demo pages",
|
|
21
|
-
"tune the zettel retrieval coverage, eval dropped to 38%",
|
|
22
|
-
"publish the npm packages for the next lockstep cut",
|
|
23
|
-
"author the release notes and the migration guide",
|
|
24
|
-
"why does accordion-ui crash under SSR in Astro",
|
|
25
|
-
"fix the streaming adapter bug in the llm package",
|
|
26
|
-
"review the getting-started docs page for consistency",
|
|
27
|
-
"score the gen-ui gallery outputs for this cycle"
|
|
28
|
-
],
|
|
29
|
-
"_measured": {
|
|
125
|
+
"_measured_historical": {
|
|
30
126
|
"as_of": "2026-07-18",
|
|
31
127
|
"scorer": "routing_eval.py (nonoun-plugins/forge)",
|
|
32
128
|
"f1": 0.917,
|
|
33
129
|
"precision": 0.917,
|
|
34
130
|
"recall": 0.917,
|
|
35
|
-
"exit_code": 0
|
|
131
|
+
"exit_code": 0,
|
|
132
|
+
"note": "measured by the external routing_eval.py (nonoun-plugins/forge) against the pre-conversion positives/negatives shape; historical record only, not regenerated by run-skill-evals.mjs."
|
|
36
133
|
}
|
|
37
134
|
}
|