@adia-ai/adia-ui-forge 0.8.50 → 0.8.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +30 -0
  4. package/README.md +23 -1
  5. package/__init__.py +63 -0
  6. package/agents/a2ui-maintenance-agent.md +6 -4
  7. package/agents/a2ui-planner-agent.md +5 -5
  8. package/agents/demo-audit-agent.md +4 -4
  9. package/agents/framework-checker.md +5 -5
  10. package/agents/framework-planner-agent.md +7 -6
  11. package/agents/gen-ui-review-agent.md +4 -4
  12. package/agents/package-release-agent.md +4 -2
  13. package/agents/primitive-authoring-agent.md +1 -0
  14. package/package.json +10 -2
  15. package/plugin.yaml +4 -0
  16. package/prompts/demo-audit.md +10 -0
  17. package/prompts/gen-ui-review.md +9 -0
  18. package/prompts/package-release.md +12 -0
  19. package/prompts/site-deployment.md +9 -0
  20. package/skills/cross-harness-authoring-standards/SKILL.md +120 -0
  21. package/skills/cross-harness-authoring-standards/agents/openai.yaml +3 -0
  22. package/skills/cross-harness-compatibility-standards/SKILL.md +219 -0
  23. package/skills/cross-harness-compatibility-standards/agents/openai.yaml +3 -0
  24. package/skills/package-release/references/cut-procedure.md +7 -0
  25. package/skills/package-release/scripts/gate-roster.mjs +5 -0
  26. package/skills/package-release/scripts/release-pack.mjs +244 -42
  27. package/skills/primitive-authoring/references/INDEX.md +1 -1
  28. package/skills/primitive-authoring/references/api-contract.md +35 -0
  29. package/skills/primitive-authoring/references/css-patterns.md +79 -0
  30. package/skills/primitive-authoring/references/lifecycle-patterns.md +17 -0
  31. package/skills/primitive-authoring/references/module-promotion.md +2 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adia-ui-kit-forge",
3
- "version": "0.8.50",
3
+ "version": "0.8.52",
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-ui-kit-factory (the consumer/app-author plugin).",
5
5
  "author": {
6
6
  "name": "Kim",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adia-ui-kit-forge",
3
- "version": "0.8.50",
3
+ "version": "0.8.52",
4
4
  "description": "Maintain the adia-ui (@adia-ai) framework itself — 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-ui-kit-factory (the consumer/app-author plugin).",
5
5
  "author": {
6
6
  "name": "Kim",
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog — adia-ui-kit-forge
2
2
 
3
+ ## [0.8.52] — 2026-08-25
4
+
5
+ ### Added
6
+ - **`cross-harness-authoring-standards` (renamed from `writing-harness-install-instructions`, which had only ever existed as uncommitted worktree content) + new sibling skill `cross-harness-compatibility-standards` (gh#1975, PR #2003).** The rename is byte-faithful aside from the three self-referential mentions (frontmatter name, H1, one in-body reference). The new skill is the upstream engineering standard for actually building a capability that works across Claude Code, Codex, Pi, and Hermes — distinct from the renamed sibling's downstream consumer-facing install-docs concern — extracted from ADR-0091 and the four PRs (#1997-#2000) that built and shipped it: the skill-vs-thin-adapter classification rule, verify-before-coding per harness, one authored skill body with every runtime as a thin consumer, one contract grammar (record-lint family) instead of a schema per runtime, and naming distribution channels distinctly. Codex and Hermes derived manifests regenerated for both skills; README/`AGENTS.md` skill-roster and count updated.
7
+
8
+ ### Changed
9
+ - **`package-release`'s pre-cut roster runs in three phases instead of one serial for-loop (gh#2006, follow-up from gh#1987's audit)** — `release-pack.mjs`'s `step3PreFlight()` now runs gate 4 (`test:unit:serial`) solo, the eval-health chain (gates 16 → 27 → 28 — a real CSS-before-JS-shaped file-write ordering dependency: gate 28 reads whichever `evals/mcp/runs/` directory sorts lexically last, so gate 27's free-form run must land uninterrupted) strictly in order, and every other gate in a concurrency-capped pool (`PREFLIGHT_CONCURRENCY`, default 4) — all concurrent with the chain. Cuts real wall-clock with zero coverage loss: no gate dropped, none renumbered, none silently skipped. `--dry` previews are unchanged (still the original flat serial walk, byte-for-byte, so `selftest`'s exact-output assertions keep passing).
10
+ - **All agent seats pinned to `sonnet` + `xhigh` reasoning effort, replacing the prior fable/opus ceiling-ladder pins (PR #1999).** Operator's direct standing instruction, applied across `a2ui-maintenance-agent`, `a2ui-planner-agent`, `demo-audit-agent`, `framework-checker`, `framework-planner-agent`, `gen-ui-review-agent`, `package-release-agent`, `primitive-authoring-agent`. See root `CHANGELOG.md` for the cross-plugin note.
11
+
12
+ ### Fixed
13
+ - **`__init__.py`'s Hermes manifest generator's `register_skill` call passed a plain string where the runtime requires a `pathlib.Path` (calls `path.exists()`) — wrapped, discovered incidentally while building `adia-ui-factory`'s Hermes `delegate_task` command (PR #2000).**
14
+
15
+ ### Maintenance
16
+ - **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
17
+ - **`.codex-plugin/` touched in this release window** (1 file(s), e.g. `.codex-plugin/plugin.json`) — carried by the entries above.
18
+
19
+ ## [0.8.51] — 2026-08-24
20
+
21
+ ### Added
22
+ - Hermes + Pi external-distribution manifests (gh#1954) — `plugin.yaml` +
23
+ `__init__.py` (Hermes) and `prompts/*.md` + a `"pi"` field in
24
+ `package.json` (Pi), derived from `.claude-plugin/plugin.json` +
25
+ `skills/` + `commands/` via `npm run build:harness-manifests`
26
+ (`check:harness-manifests-fresh` gates freshness). Additive: the Claude
27
+ Code plugin surface is unchanged. This plugin ships no `.mcp.json`, so
28
+ neither harness's MCP story applies to it.
29
+
30
+ ### Maintenance
31
+ - **`.codex-plugin/` touched in this release window** (1 file(s), e.g. `.codex-plugin/plugin.json`) — carried by the entries above.
32
+
3
33
  ## [0.8.50] — 2026-08-23
4
34
 
5
35
  ### Maintenance
package/README.md CHANGED
@@ -8,7 +8,7 @@ Re-engineered 2026-07 for the Fable 5 harness (design:
8
8
  `.claude/docs/specs/plugin-estate-v2.md`): one skill per job, explicit
9
9
  invocation dials, references for depth, mechanical rules in hooks, thin agents.
10
10
 
11
- ## Skills (9)
11
+ ## Skills (11)
12
12
 
13
13
  | Skill | Species | Job |
14
14
  |---|---|---|
@@ -21,6 +21,8 @@ invocation dials, references for depth, mechanical rules in hooks, thin agents.
21
21
  | `site-deployment` | procedural | exe.dev service ops — site deploys, VM diagnosis, secret rotation |
22
22
  | `site-docs-authoring` | procedural | author/review `site/pages/` docs pages against the shared skeleton |
23
23
  | `ssr-compatibility` | knowledge | answers SSR failure-shape questions (linkedom/Astro consumers) |
24
+ | `cross-harness-authoring-standards` | procedural | author consumer-facing multi-harness install instructions |
25
+ | `cross-harness-compatibility-standards` | procedural | engineering standard for building a capability that genuinely works across Claude/Codex/Pi/Hermes (ADR-0091) |
24
26
 
25
27
  ## Agents (8, thin shells)
26
28
 
@@ -48,6 +50,26 @@ ship `selftest` modes.
48
50
 
49
51
  `/package-release` · `/site-deployment` · `/demo-audit` · `/gen-ui-review`
50
52
 
53
+ ## Non-Claude harnesses
54
+
55
+ External install beyond Claude Code (AGENTS.md's own "Non-Claude harnesses"
56
+ section carries the shared degradation table this summarizes):
57
+
58
+ - **Codex** (gh#1888): `.codex-plugin/plugin.json` + per-skill
59
+ `agents/openai.yaml`, derived. No manifest key for hooks/commands/agents —
60
+ a command degrades to invoking its skill directly.
61
+ - **Hermes** (gh#1954): `plugin.yaml` + `__init__.py` at this package's
62
+ root — point Hermes's plugin loading at the installed
63
+ `node_modules/@adia-ai/adia-ui-forge` directory. No hooks/agents surface.
64
+ This plugin ships no `.mcp.json`, so there's no MCP story to wire either
65
+ way.
66
+ - **Pi** (gh#1954): discovered via the `pi-package` keyword and the `"pi"`
67
+ field in `package.json`; `prompts/*.md` gives every `/command` — including
68
+ the two consent-gated ones, `/package-release` and `/site-deployment` — a
69
+ genuine Pi prompt template (Pi's prompt layer is human-keystroke-only, the
70
+ same trust boundary those two already sit behind in Claude Code). No
71
+ hooks/agents surface.
72
+
51
73
  ## Contracts
52
74
 
53
75
  `references/contracts/` — the producer side of the MIGRATION GUIDE format and
package/__init__.py ADDED
@@ -0,0 +1,63 @@
1
+ """adia-ui-kit-forge — generated by scripts/build/harness-manifests.mjs. Do not edit."""
2
+ import os
3
+ from pathlib import Path
4
+
5
+ _HERE = os.path.dirname(os.path.abspath(__file__))
6
+
7
+
8
+ def register(ctx):
9
+ ctx.register_skill(
10
+ name="a2ui-maintenance",
11
+ path=Path(os.path.join(_HERE, "skills", "a2ui-maintenance", "SKILL.md")),
12
+ description="Maintains the A2UI pipeline (packages/gen-ui/a2ui/): the chunk corpus, compose strategies (zettel, chunk-zettel, free-form, monolithic), retrieval, validator, calibration, evals, the a2ui MCP server. Use to author/harvest/fix chunks, tune STRONG_MATCH or zettel thresholds, validate an A2UI document, diagnose an eval gap/regression or lift a semantic fail, change MCP tools (generate_ui, compose_from_chunks, check_anti_patterns, refine_composition), scan anti-patterns, run pipeline ops, or when a contract can't express a shape. NOT for app screens (screen-composition), runtime gen-UI features (gen-ui-wiring), primitive authoring (primitive-authoring), or gallery scoring (gen-ui-review).",
13
+ )
14
+ ctx.register_skill(
15
+ name="cross-harness-authoring-standards",
16
+ path=Path(os.path.join(_HERE, "skills", "cross-harness-authoring-standards", "SKILL.md")),
17
+ description="Authors copy-paste install instructions for an adia-ui plugin (or any Claude Code plugin) across multiple agent harnesses — Claude Code, Codex, Pi, Hermes. Use when asked to \"write a Slack post for installing our plugins\", \"how do devs on Codex/Pi/Hermes install this\", \"update the multi-harness install docs\", or after a harness-distribution change (a new .codex-plugin/, plugin.yaml, or package.json \"pi\" field) needs its install instructions to catch up. NOT for the manifest/build mechanics themselves (package-release's Codex-manifest step, gh#1888/gh#1954) — this skill only writes the consumer-facing instructions once those exist.",
18
+ )
19
+ ctx.register_skill(
20
+ name="cross-harness-compatibility-standards",
21
+ path=Path(os.path.join(_HERE, "skills", "cross-harness-compatibility-standards", "SKILL.md")),
22
+ description="The engineering/architecture standard for actually BUILDING a Claude agent-family (or any multi-runtime capability) so it genuinely works across Claude Code, Codex, Pi, and Hermes — not the consumer-facing install docs once it already works (that's cross-harness-authoring-standards). Use when deciding whether a capability earns a new user-facing skill or should stay a thin runtime-specific agent/seat/extension, before writing a Pi extension or Hermes command and unsure whether the target API actually exists, defining a structured handoff record two or more runtimes must exchange, or naming a new plugin distribution/marketplace channel alongside an existing one. NOT for writing the resulting per-harness install commands (cross-harness-authoring-standards owns that, once the capability already works).",
23
+ )
24
+ ctx.register_skill(
25
+ name="demo-audit",
26
+ path=Path(os.path.join(_HERE, "skills", "demo-audit", "SKILL.md")),
27
+ description="Seven-mode QA sweep of the monorepo's demo/app surfaces: visual probe, app-shell QA, attr-quote typos, native-primitive leak, admin-shell composition, card anatomy, plus an aggregated token/contrast/lifecycle drift battery (`npm run dogfood:status`). Use for \"run a dogfood sweep\", \"find broken demos\", \"audit native primitive leaks\". NOT for gen-UI gallery scoring (gen-ui-review) or authoring primitives (primitive-authoring).",
28
+ )
29
+ ctx.register_skill(
30
+ name="gen-ui-review",
31
+ path=Path(os.path.join(_HERE, "skills", "gen-ui-review", "SKILL.md")),
32
+ description="Closed-loop Gen UI gallery quality review — per cycle: derive ideal specs, decompose the rendered canvas, score the gap, root-cause, emit fix plans until every prompt clears the exit gate. Use for /gen-review, \"score the gallery\", \"review gen-ui outputs\". NOT for corpus fixes (a2ui-maintenance), primitive authoring (primitive-authoring), or a hand-authored demo/app-shell QA sweep (demo-audit).",
33
+ )
34
+ ctx.register_skill(
35
+ name="llm-client-maintenance",
36
+ path=Path(os.path.join(_HERE, "skills", "llm-client-maintenance", "SKILL.md")),
37
+ description="Maintains @adia-ai/llm (packages/llm/core/): provider adapters (anthropic/openai/ gemini), the shared SSE parser, model registry, chat()/streamChat() facade, createAdapter() bridge. Use when adding or fixing a provider adapter, debugging streaming bugs (StreamChunk, no terminal `done` chunk), raw `stopReason`/usage mapping, buildRequest() or passthrough proxy dispatch (browser 401s, API key in browser), detectProvider/MODELS registry changes, or the stub adapter. NOT for wiring the client into an app (llm-wiring, adia-ui-factory plugin).",
38
+ )
39
+ ctx.register_skill(
40
+ name="package-release",
41
+ path=Path(os.path.join(_HERE, "skills", "package-release", "SKILL.md")),
42
+ description="Release engineering for the @adia-ai lockstep monorepo. Use to cut and ship a release, promote [Unreleased] CHANGELOG entries, tag and push lockstep packages to origin, publish a 10-package release (roster: scripts/package-paths.mjs), publish a single plugin independently of the lockstep set (Class B), batch-push piled-up release commits, recover a cut that landed wrong or whose publish workflows didn't fire, fix a check:lockstep bump failure or an F-N1 CHANGELOG warning, verify release gates without cutting anything, or author release notes/a MIGRATION GUIDE section. NOT for consumer-app migration sweeps (app-migration) or exe.dev VM ops (site-deployment).",
43
+ )
44
+ ctx.register_skill(
45
+ name="primitive-authoring",
46
+ path=Path(os.path.join(_HERE, "skills", "primitive-authoring", "SKILL.md")),
47
+ description="Author or modify AdiaUI framework source inside the monorepo — primitives (packages/web-components), shells/composites (packages/web-modules), yaml SoTs, demos. Use to add a new primitive, fix a prop/slot/attribute/CSS variant, update a yaml, build or fix a shell (chat-shell, admin-shell, editor-shell — sidebar/pane/bespoke-tier composition), promote repeated inline content into a shared module, audit a component's four-axis contract/token usage/lifecycle for drift, or author a demo or examples.html. NOT for app screens (screen-composition), A2UI internals (a2ui-maintenance), @adia-ai/llm internals (llm-client-maintenance), or site/pages docs (site-docs-authoring).",
48
+ )
49
+ ctx.register_skill(
50
+ name="site-deployment",
51
+ path=Path(os.path.join(_HERE, "skills", "site-deployment", "SKILL.md")),
52
+ description="Deploys and operates the AdiaUI site + services on exe.dev VMs — pushing a `site-v*` tag through the hardened rsync --delete deploy to ui-kit.exe.xyz (dry-run delete summary reviewed before the real deploy job runs), diagnosis (\"Port 8000 unbound\", a 502, a stale/404ing build behind npm after the last lockstep cut), rolling back a broken deploy, VM provisioning, secret rotation. Use for \"deploy to exe.dev\", \"push a site-v* tag\", \"the site is 502ing / looks stale\", \"roll back the last deploy\", \"restart/diagnose the exe service\", \"rotate keys on the VM\". NOT for cutting the release itself (package-release).",
53
+ )
54
+ ctx.register_skill(
55
+ name="site-docs-authoring",
56
+ path=Path(os.path.join(_HERE, "skills", "site-docs-authoring", "SKILL.md")),
57
+ description="Review or author pages under site/pages/{architecture,getting-started, guides,patterns,reference}/ — the docs site (count the pages on disk; it grows). Use when asked to add or edit a getting-started/architecture/guides/patterns/reference page, review a site docs page for consistency, fix a callout that reads as plain text, or explain why an inline-code chip or a demo gallery looks broken. NOT for a component's own .examples.html demo (primitive-authoring) or any pure-primitive-composition training-harvest page (governed by composition-and-examples.md's no-style-block rule; owner: a2ui-maintenance).",
58
+ )
59
+ ctx.register_skill(
60
+ name="ssr-compatibility",
61
+ path=Path(os.path.join(_HERE, "skills", "ssr-compatibility", "SKILL.md")),
62
+ description="Answers why an AdiaUI component crashes, drops content, renders wrong, or mutates a byte-identical subtree under SSR (linkedom/Astro) — the known failure shapes, what's fixed vs open, how to prove a fix under the linkedom shim gate. Use for \"does this work under SSR\", why a component crashes on attachInternals/ResizeObserver/adoptedStyleSheets/matchMedia/ `instanceof Node` under a DOM shim, why table-ui/chart-ui/select-ui or a container CE renders empty or drops nested children server-rendered, whether getBoundingClientRect() is safe in connectedCallback, whether a custom render()/connected() path adopts-in-place or rebuilds a server-rendered subtree that already matches (zero-subtree-mutation / AC-004a-shaped asks), whether a querySelector-guard-before-innerHTML component is SSR-safe, or whether a shim can be deleted after a fix ships. ANSWERS only. NOT for a fix (primitive-authoring) or host/hydration wiring (host-wiring, adia-ui-factory).",
63
+ )
@@ -12,10 +12,12 @@ description: |
12
12
  tools: Read, Grep, Glob, Edit, Write, Bash
13
13
  skills:
14
14
  - a2ui-maintenance
15
- # Explicit pin (gh#618): never `inherit` — a Fable/planning caller would
16
- # silently run this seat's pipeline-tuning and eval-diagnosis work on the
17
- # caller's tier. Coding/execution seat opus.
18
- model: opus
15
+ # Explicit pin (gh#618): never `inherit` — a caller on a cheaper tier would
16
+ # silently run this seat's pipeline-tuning and eval-diagnosis work on its
17
+ # own tier instead. Operator's explicit standing instruction for this seat
18
+ # family: sonnet + xhigh.
19
+ model: sonnet
20
+ effort: xhigh
19
21
  ---
20
22
 
21
23
  The a2ui-maintenance-agent works the pipeline to the preloaded `a2ui-maintenance` procedure:
@@ -15,11 +15,11 @@ skills:
15
15
  - break-down-problem
16
16
  - doc-writing-rules
17
17
  - a2ui-maintenance
18
- # Planning & architecture row (agent-writing-rules' seat ladder): fable + high, never
19
- # below fable. Same reasoning as framework-planner-agent a catalog-cohesion decision
20
- # sets the ceiling on what a2ui-maintenance-agent builds against it.
21
- model: fable
22
- effort: high
18
+ # Explicit pin: never `inherit` a catalog-cohesion decision sets the
19
+ # ceiling on what a2ui-maintenance-agent builds against it. Operator's
20
+ # explicit standing instruction for this seat family: sonnet + xhigh.
21
+ model: sonnet
22
+ effort: xhigh
23
23
  ---
24
24
 
25
25
  The a2ui-planner-agent decomposes one named A2UI catalog-system change via the preloaded
@@ -16,10 +16,10 @@ tools: Read, Grep, Glob, Bash
16
16
  skills:
17
17
  - demo-audit
18
18
  # Explicit pin (gh#618, tier corrected gh#1045): a review/critic seat's
19
- # verdict must not depend on the caller's model tier — never `inherit`,
20
- # never below fable (the ceiling ladder's Review row).
21
- model: fable
22
- effort: high
19
+ # verdict must not depend on the caller's model tier — never `inherit`.
20
+ # Operator's explicit standing instruction for this seat family: sonnet + xhigh.
21
+ model: sonnet
22
+ effort: xhigh
23
23
  ---
24
24
 
25
25
  The demo-audit-agent runs the preloaded dogfood sweep procedure and returns
@@ -13,11 +13,11 @@ description: |
13
13
  tools: Read, Grep, Glob, Bash
14
14
  skills:
15
15
  - primitive-authoring
16
- # Review / hard-bug analysis row (agent-writing-rules' seat ladder), pinned explicitly —
17
- # never `inherit`, same reasoning as demo-audit-agent's own explicit pin (gh#618): a
18
- # critic's verdict must not depend on the caller's tier.
19
- model: fable
20
- effort: high
16
+ # Explicit pin (gh#618) never `inherit`, same reasoning as demo-audit-agent's
17
+ # own explicit pin: a critic's verdict must not depend on the caller's tier.
18
+ # Operator's explicit standing instruction for this seat family: sonnet + xhigh.
19
+ model: sonnet
20
+ effort: xhigh
21
21
  ---
22
22
 
23
23
  The framework-checker sweeps the named scope (the whole primitive corpus, or a
@@ -14,12 +14,13 @@ tools: Read, Grep, Glob, Write, Edit
14
14
  skills:
15
15
  - break-down-problem
16
16
  - doc-writing-rules
17
- # Planning & architecture row (agent-writing-rules' seat ladder, ratified 2026-07-12):
18
- # fable + high, never below fable, effort range high-xhigh. A decomposition seat's
19
- # output sets the ceiling on everything primitive-authoring-agent builds downstream from
20
- # it; a cheap tier would make load-bearing architectural calls with no independent check.
21
- model: fable
22
- effort: high
17
+ # Explicit pin: never `inherit` a decomposition seat's output sets the
18
+ # ceiling on everything primitive-authoring-agent builds downstream from it;
19
+ # a cheap tier would make load-bearing architectural calls with no
20
+ # independent check. Operator's explicit standing instruction for this seat
21
+ # family: sonnet + xhigh.
22
+ model: sonnet
23
+ effort: xhigh
23
24
  ---
24
25
 
25
26
  The framework-planner-agent decomposes one named framework change via the preloaded
@@ -17,10 +17,10 @@ tools: Read, Grep, Glob, Bash
17
17
  skills:
18
18
  - gen-ui-review
19
19
  # Explicit pin (gh#618, tier corrected gh#1045): a review/critic seat's
20
- # verdict must not depend on the caller's model tier — never `inherit`,
21
- # never below fable (the ceiling ladder's Review row).
22
- model: fable
23
- effort: high
20
+ # verdict must not depend on the caller's model tier — never `inherit`.
21
+ # Operator's explicit standing instruction for this seat family: sonnet + xhigh.
22
+ model: sonnet
23
+ effort: xhigh
24
24
  ---
25
25
 
26
26
  The gen-ui-review-agent runs the preloaded gen-ui-review cycle and returns
@@ -14,8 +14,10 @@ skills:
14
14
  - package-release
15
15
  # Explicit pin (gh#618): never `inherit` — this seat runs UNATTENDED cuts,
16
16
  # where a cheap caller tier would make live gate-failure judgment calls
17
- # with no operator watching. Execution seat with real judgment → opus.
18
- model: opus
17
+ # with no operator watching. Operator's explicit standing instruction for
18
+ # this seat family: sonnet + xhigh.
19
+ model: sonnet
20
+ effort: xhigh
19
21
  ---
20
22
 
21
23
  The package-release-agent runs the preloaded `package-release` procedure under its
@@ -11,6 +11,7 @@ tools: Read, Grep, Glob, Edit, Write, Bash
11
11
  skills:
12
12
  - primitive-authoring
13
13
  model: sonnet
14
+ effort: xhigh
14
15
  ---
15
16
 
16
17
  The primitive-authoring-agent builds framework source to the preloaded `primitive-authoring`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/adia-ui-forge",
3
- "version": "0.8.50",
3
+ "version": "0.8.52",
4
4
  "description": "Maintain the adia-ui (@adia-ai) framework itself — 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",
@@ -9,7 +9,8 @@
9
9
  "web-components",
10
10
  "framework-authoring",
11
11
  "release-engineering",
12
- "maintainer"
12
+ "maintainer",
13
+ "pi-package"
13
14
  ],
14
15
  "license": "MIT",
15
16
  "author": {
@@ -19,15 +20,22 @@
19
20
  "bugs": {
20
21
  "email": "kim.granlund@adia.ai"
21
22
  },
23
+ "pi": {
24
+ "skills": ["./skills"],
25
+ "prompts": ["./prompts"]
26
+ },
22
27
  "files": [
23
28
  ".claude-plugin",
24
29
  ".codex-plugin",
25
30
  "skills",
26
31
  "agents",
27
32
  "commands",
33
+ "prompts",
28
34
  "references",
29
35
  "scripts",
30
36
  "hooks",
37
+ "plugin.yaml",
38
+ "__init__.py",
31
39
  "README.md",
32
40
  "CHANGELOG.md",
33
41
  "codex.interface.json"
package/plugin.yaml ADDED
@@ -0,0 +1,4 @@
1
+ name: "adia-ui-kit-forge"
2
+ version: "0.8.52"
3
+ description: "Maintain the adia-ui (@adia-ai) framework itself — 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-ui-kit-factory (the consumer/app-author plugin)."
4
+ manifest_version: 1
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: "Run the multi-mode QA sweep (visual probe, static QA, typo, native-primitive leak, shell composition, anatomy) across component demos, apps, playgrounds, and catalog."
3
+ argument-hint: "[mode or surface]"
4
+ ---
5
+
6
+ Run a dogfood sweep. **$ARGUMENTS**
7
+
8
+ Invoke **`demo-audit`**; run the requested modes (all, if unscoped), then
9
+ triage findings per its severity contract. Detection is script-driven; the
10
+ skill owns triage and the auto-fix boundary.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: "Run the closed-loop gen-UI quality review — score gallery outputs against ideal specs, trace root causes, produce the ranked improvement plan."
3
+ argument-hint: "[prompt subset]"
4
+ ---
5
+
6
+ Run a gen-UI review cycle. **$ARGUMENTS**
7
+
8
+ Invoke **`gen-ui-review`** and run its loop: derive ideal → decompose actual
9
+ → score → root-cause → plan. Corpus fixes route to `a2ui-maintenance`.
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: "Cut, tag, publish, and deploy an @adia-ai release (lockstep roster in skills/package-release/scripts/package-paths.mjs — npm libraries + the 2 Claude Code plugins). This invocation IS the authorization for the whole cycle; only gate failures stop it."
3
+ argument-hint: "[version or package]"
4
+ ---
5
+
6
+ Run a release. **$ARGUMENTS**
7
+
8
+ Invoke **`package-release`** and run its cut procedure end-to-end: pre-flight
9
+ gates → cut → tag → publish → deploy → notes. This command's invocation is
10
+ the operator's single authorization for the entire cycle (§Authorization,
11
+ operator ruling 2026-07-17) — run inline, don't re-ask per step; stop only
12
+ on a gate failure. The skill owns the discipline; don't restate it here.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: "Deploy a service or dist to the exe.dev VMs (ui-kit.exe.xyz and siblings), or diagnose a running exe service."
3
+ argument-hint: "[host or service]"
4
+ ---
5
+
6
+ Deploy or diagnose an exe.dev surface. **$ARGUMENTS**
7
+
8
+ Invoke **`site-deployment`** and follow its playbook for the named host; verify
9
+ against the live endpoint before reporting done.
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: cross-harness-authoring-standards
3
+ description: >-
4
+ Authors copy-paste install instructions for an adia-ui plugin (or any
5
+ Claude Code plugin) across multiple agent harnesses — Claude Code, Codex,
6
+ Pi, Hermes. Use when asked to "write a Slack post for installing our
7
+ plugins", "how do devs on Codex/Pi/Hermes install this", "update the
8
+ multi-harness install docs", or after a harness-distribution change
9
+ (a new .codex-plugin/, plugin.yaml, or package.json "pi" field) needs its
10
+ install instructions to catch up. NOT for the manifest/build mechanics
11
+ themselves (package-release's Codex-manifest step, gh#1888/gh#1954) — this
12
+ skill only writes the consumer-facing instructions once those exist.
13
+ disable-model-invocation: false
14
+ user-invocable: true
15
+ ---
16
+
17
+ # cross-harness-authoring-standards — one command per harness, zero invented syntax
18
+
19
+ Every harness's install path is a claim someone will paste verbatim into a terminal. A
20
+ plausible-looking command that was never verified against this repo's actual shipped
21
+ manifests is worse than no instructions — it fails silently or errors somewhere the
22
+ author never sees. The whole discipline is: **read the real generated file before
23
+ describing what it does.**
24
+
25
+ ## The verification-before-writing gate `[gate]`
26
+
27
+ Before writing one line of install instructions for a harness, verify against the strongest
28
+ source actually reachable — never infer a harness's install surface from another harness's
29
+ shape, and never invent a CLI subcommand you have not seen documented or confirmed:
30
+
31
+ - **Strongest: the target harness's own agent, live.** If a Codex/Pi/Hermes agent is
32
+ reachable (a peer session, a cross-harness message), have it check or correct the draft
33
+ against its own real CLI/config surface directly — it knows its own tool's commands with
34
+ more authority than any manifest file a human read once and wrote down. A harness section
35
+ corrected this way outranks a manifest-file read on the same point; update the draft to
36
+ match, don't average the two.
37
+ - **Fallback: the repo's own shipped manifest for that harness** (below), when no live
38
+ agent is reachable.
39
+
40
+ | Harness | What to read before writing anything |
41
+ | --- | --- |
42
+ | Claude Code | The plugin's own `README.md` "Install" section + `.claude-plugin/marketplace.json` (or the published npm marketplace manifest) |
43
+ | Codex | `.codex-plugin/plugin.json` + `codex.interface.json` + the repo's own `AGENTS.md` "Non-Claude harnesses" section (gh#1888 — the canonical degradation-table citation) |
44
+ | Hermes | `plugin.yaml` + `__init__.py` at the package root, and whether an `hermes-mcp.yaml` (or equivalent) fragment exists — Hermes MCP is user-level config, not a plugin field, in every verified case so far |
45
+ | Pi | `package.json`'s `"pi"` field + `pi-package` keyword, and `prompts/*.md` if present |
46
+
47
+ If a harness's manifest file doesn't exist yet in the repo, that harness has **no verified
48
+ install path** — say so plainly (`cross-harness-authoring-standards` never fabricates a
49
+ "probably works like X" command) and route the gap to the maintainer skill/issue that owns
50
+ harness-manifest generation, rather than guessing syntax.
51
+
52
+ ## The four-axis degradation table
53
+
54
+ Every harness other than Claude Code lacks at least one of: commands, agent seats, hooks,
55
+ native MCP. State the gap plainly per harness, in the instructions themselves — a dev who
56
+ installs expecting the full surface and silently gets less is worse served than one told
57
+ up front:
58
+
59
+ - **Commands** → Codex/Pi/Hermes have no slash-command layer in the verified cases; a
60
+ command degrades to invoking its underlying skill directly (Codex, Hermes) or, where the
61
+ harness's own prompt-template layer supports genuine commands (Pi's `prompts/*.md`),
62
+ upgrades instead of degrading — check per harness, don't assume degradation is universal.
63
+ - **Agent seats** → do not exist outside Claude Code. Never write "then invoke
64
+ `<agent-name>`" for Codex/Pi/Hermes; give the entry-point *skill* that agent dispatches
65
+ internally instead (see "The common starting prompt" below).
66
+ - **Hooks** → Codex/Pi/Hermes have no hook runtime in the verified cases; state "no
67
+ hooks surface" rather than omitting the topic (an omission reads as "works the same").
68
+ - **MCP** → the highest-risk gap. Verify per harness: does it read `.mcp.json` unmodified
69
+ (Codex — verified), read it via a third-party adapter the dev must separately install
70
+ (Pi's `pi-mcp-adapter` — verified 2026-08-24), or require hand-merging a generated
71
+ fragment into the harness's own user-level config (Hermes — verified, no plugin-level MCP
72
+ field exists)? If the plugin's whole value proposition is its MCP server, say that
73
+ explicitly before promising support — a silent no-op MCP install is the worst failure
74
+ mode this skill exists to prevent.
75
+
76
+ ## The common starting prompt
77
+
78
+ A "getting started" prompt that opens with an agent name breaks on every harness but
79
+ Claude Code. Give two forms:
80
+
81
+ - **Claude Code**: name the coordinating agent directly (`Use <agent-name> to build
82
+ [...]`).
83
+ - **Everywhere else**: name the entry-point *skill* that agent dispatches internally —
84
+ same routing, no agent-seat dependency. Confirm the skill is genuinely the entry point
85
+ (its own description says "run FIRST" / "cold-start router") rather than picking an
86
+ arbitrary skill from the roster.
87
+
88
+ ```
89
+ Bad (breaks on Codex/Pi/Hermes — no agent seat exists):
90
+ Use ui-architect to build a settings page.
91
+
92
+ Good (Claude Code):
93
+ Use ui-architect to build a settings page. Check pattern-catalog for an
94
+ existing pattern before composing from scratch.
95
+
96
+ Good (Codex/Pi/Hermes — same routing, no agent dependency):
97
+ Use the app-planning skill to orient a new settings page. Check
98
+ pattern-catalog for an existing pattern before composing from scratch,
99
+ then use screen-composition to build it.
100
+ ```
101
+
102
+ ## Structure
103
+
104
+ One block per harness, each self-contained (a reader only cares about their own harness):
105
+ install command(s) → any manual wiring step (config file edit, separate adapter install) →
106
+ the degradation summary (what's full-strength, what's reduced, what's absent) for that
107
+ harness specifically. Never a single combined command block trying to cover two harnesses —
108
+ the reader copy-pastes the whole block for their tool and nothing else.
109
+
110
+ ## Failure branches
111
+
112
+ A harness with no verified manifest in the repo → report the gap, do not draft syntax for
113
+ it. A degradation claim that contradicts what a just-read manifest file actually shows
114
+ (e.g. writing "no MCP" for a harness whose `.mcp.json` passthrough is confirmed working) →
115
+ re-read the source file; the manifest is authoritative over any prior draft, including this
116
+ skill's own past output for an earlier plugin version.
117
+
118
+ Done when every harness section cites the specific file it was verified against (in prose,
119
+ not a footnote) and no command exists in the output that wasn't read from a real shipped
120
+ artifact.
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "Cross Harness Authoring Standards"
3
+ short_description: "Authors copy-paste install instructions for an adia-ui plugin (or any Claude Code plugin) across multiple agent harnesses — Claude Code, Codex, Pi, Hermes."