@jaimevalasek/aioson 1.30.2 → 1.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +19 -6
  3. package/docs/en/1-understand/ecosystem-map.md +45 -29
  4. package/docs/en/1-understand/glossary.md +5 -5
  5. package/docs/en/1-understand/what-is-aioson.md +5 -5
  6. package/docs/en/2-start/existing-project.md +7 -7
  7. package/docs/en/2-start/first-project.md +32 -38
  8. package/docs/en/2-start/initial-decisions.md +18 -17
  9. package/docs/en/3-recipes/README.md +2 -2
  10. package/docs/en/3-recipes/continuity-between-sessions.md +2 -2
  11. package/docs/en/3-recipes/from-idea-to-prd-via-briefing.md +5 -2
  12. package/docs/en/3-recipes/full-feature-with-sheldon.md +327 -338
  13. package/docs/en/4-agents/README.md +28 -14
  14. package/docs/en/4-agents/discovery-design-doc.md +20 -8
  15. package/docs/en/4-agents/forge-run.md +3 -2
  16. package/docs/en/5-reference/cli-reference.md +51 -48
  17. package/docs/en/5-reference/executable-verification.md +10 -7
  18. package/docs/en/5-reference/parallel.md +2 -0
  19. package/docs/en/5-reference/qa-browser.md +2 -2
  20. package/docs/en/README.md +3 -3
  21. package/docs/pt/1-entender/glossario.md +4 -4
  22. package/docs/pt/1-entender/mapa-do-ecossistema.md +32 -21
  23. package/docs/pt/2-comecar/decisoes-iniciais.md +16 -16
  24. package/docs/pt/2-comecar/primeiro-projeto.md +1 -1
  25. package/docs/pt/3-receitas/README.md +1 -1
  26. package/docs/pt/3-receitas/app-saas-do-zero.md +35 -122
  27. package/docs/pt/3-receitas/feature-completa-com-sheldon.md +289 -338
  28. package/docs/pt/4-agentes/analyst.md +9 -5
  29. package/docs/pt/4-agentes/architect.md +9 -5
  30. package/docs/pt/4-agentes/dev.md +19 -7
  31. package/docs/pt/4-agentes/discovery-design-doc.md +25 -23
  32. package/docs/pt/4-agentes/orchestrator.md +164 -118
  33. package/docs/pt/4-agentes/pentester.md +5 -5
  34. package/docs/pt/4-agentes/pm.md +15 -7
  35. package/docs/pt/4-agentes/sheldon.md +166 -99
  36. package/docs/pt/4-agentes/ux-ui.md +7 -4
  37. package/docs/pt/5-referencia/agent-chain-continuity.md +14 -5
  38. package/docs/pt/5-referencia/comandos-cli.md +1 -1
  39. package/docs/pt/5-referencia/harness-retro.md +2 -1
  40. package/docs/pt/5-referencia/sdd-automation-scripts.md +6 -6
  41. package/docs/pt/5-referencia/sdd-framework.md +53 -16
  42. package/docs/pt/5-referencia/sdd-planos-e-estrutura.md +27 -15
  43. package/docs/pt/README.md +4 -4
  44. package/docs/pt/agentes.md +48 -50
  45. package/package.json +2 -2
  46. package/src/artifact-kinds.js +110 -0
  47. package/src/cli.js +82 -42
  48. package/src/commands/agent-epilogue.js +251 -186
  49. package/src/commands/agents.js +104 -48
  50. package/src/commands/audit-code.js +344 -0
  51. package/src/commands/classify.js +75 -13
  52. package/src/commands/feature-close.js +43 -18
  53. package/src/commands/harness-check.js +259 -175
  54. package/src/commands/harness-retro-promote.js +387 -0
  55. package/src/commands/live.js +24 -0
  56. package/src/commands/prototype-check.js +163 -0
  57. package/src/commands/review-feature.js +189 -0
  58. package/src/commands/runtime.js +81 -66
  59. package/src/commands/sync-agents-copy.js +115 -0
  60. package/src/commands/verification-plan.js +116 -0
  61. package/src/commands/verify-artifact.js +530 -0
  62. package/src/commands/verify-implementation.js +428 -0
  63. package/src/commands/workflow-execute.js +309 -309
  64. package/src/commands/workflow-next.js +361 -19
  65. package/src/commands/workflow-plan.js +5 -5
  66. package/src/constants.js +4 -0
  67. package/src/gateway-pointer-merge.js +7 -1
  68. package/src/handoff-contract.js +267 -172
  69. package/src/harness/contract-integrity-gate.js +172 -0
  70. package/src/harness/contract-integrity.js +111 -0
  71. package/src/harness/contract-schema.js +377 -332
  72. package/src/harness/detect-runtime-feature.js +90 -0
  73. package/src/harness/static-criteria.js +192 -0
  74. package/src/i18n/messages/en.js +8 -4
  75. package/src/i18n/messages/es.js +8 -4
  76. package/src/i18n/messages/fr.js +8 -4
  77. package/src/i18n/messages/pt-BR.js +8 -4
  78. package/src/install-wizard.js +8 -8
  79. package/src/installer.js +13 -6
  80. package/src/lib/retro/retro-render.js +10 -1
  81. package/src/lib/retro/retro-sources.js +45 -27
  82. package/src/lib/retro/verification-reports.js +230 -0
  83. package/src/parser.js +6 -0
  84. package/src/preflight-engine.js +12 -12
  85. package/src/runtime-store.js +13 -9
  86. package/src/verification/evidence-bundle.js +251 -0
  87. package/src/verification/ledger-store.js +221 -0
  88. package/src/verification/path-policy.js +74 -0
  89. package/src/verification/policy-engine.js +95 -0
  90. package/src/verification/prompt-package.js +314 -0
  91. package/src/verification/redaction.js +77 -0
  92. package/src/verification/report-parser.js +132 -0
  93. package/src/verification/report-store.js +97 -0
  94. package/src/verification/result.js +16 -0
  95. package/src/verification/runners/index.js +319 -0
  96. package/src/verification/runtime-telemetry.js +144 -0
  97. package/src/verification/schema.js +276 -0
  98. package/src/verification/source-discovery.js +153 -0
  99. package/src/verification-policy.js +398 -0
  100. package/src/version.js +52 -1
  101. package/template/.aioson/agents/analyst.md +9 -6
  102. package/template/.aioson/agents/architect.md +34 -5
  103. package/template/.aioson/agents/briefing-refiner.md +25 -0
  104. package/template/.aioson/agents/briefing.md +69 -12
  105. package/template/.aioson/agents/committer.md +2 -1
  106. package/template/.aioson/agents/copywriter.md +30 -21
  107. package/template/.aioson/agents/design-hybrid-forge.md +28 -15
  108. package/template/.aioson/agents/dev.md +28 -10
  109. package/template/.aioson/agents/deyvin.md +3 -2
  110. package/template/.aioson/agents/discover.md +12 -3
  111. package/template/.aioson/agents/discovery-design-doc.md +7 -2
  112. package/template/.aioson/agents/genome.md +19 -10
  113. package/template/.aioson/agents/neo.md +30 -30
  114. package/template/.aioson/agents/orache.md +20 -11
  115. package/template/.aioson/agents/orchestrator.md +84 -7
  116. package/template/.aioson/agents/pm.md +8 -8
  117. package/template/.aioson/agents/product.md +15 -11
  118. package/template/.aioson/agents/profiler-enricher.md +20 -11
  119. package/template/.aioson/agents/profiler-forge.md +20 -11
  120. package/template/.aioson/agents/profiler-researcher.md +20 -11
  121. package/template/.aioson/agents/qa.md +87 -17
  122. package/template/.aioson/agents/scope-check.md +19 -5
  123. package/template/.aioson/agents/setup.md +12 -1
  124. package/template/.aioson/agents/sheldon.md +92 -9
  125. package/template/.aioson/agents/site-forge.md +11 -2
  126. package/template/.aioson/agents/squad.md +20 -5
  127. package/template/.aioson/agents/ux-ui.md +4 -2
  128. package/template/.aioson/agents/validator.md +33 -1
  129. package/template/.aioson/config/verification.json +61 -0
  130. package/template/.aioson/config.md +13 -9
  131. package/template/.aioson/docs/LAYERS.md +2 -2
  132. package/template/.aioson/docs/autopilot-handoff.md +10 -10
  133. package/template/.aioson/docs/dev/execution-discipline.md +41 -0
  134. package/template/.aioson/docs/dev/phase-loop.md +47 -0
  135. package/template/.aioson/docs/feature-expansion-taxonomy.md +31 -3
  136. package/template/.aioson/docs/presets/workflow.config.full-merged.json +15 -0
  137. package/template/.aioson/docs/presets/workflow.config.lean.json +15 -0
  138. package/template/.aioson/docs/product/prd-contract.md +12 -12
  139. package/template/.aioson/docs/prototype-contract.md +98 -0
  140. package/template/.aioson/docs/reference-identity.md +94 -0
  141. package/template/.aioson/docs/sheldon/harness-contract.md +155 -28
  142. package/template/.aioson/docs/verification-config.md +82 -0
  143. package/template/.aioson/docs/verify-artifact-gates.md +91 -0
  144. package/template/.aioson/docs/workflow-lean-lane.md +129 -0
  145. package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +2 -0
  146. package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +16 -14
  147. package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +2 -2
  148. package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +4 -4
  149. package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +15 -15
  150. package/template/.aioson/skills/process/briefing-expansion-scout/SKILL.md +25 -3
  151. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +5 -3
  152. package/template/.aioson/skills/process/design-hybrid-forge/references/external-source-ingestion.md +89 -0
  153. package/template/.aioson/skills/process/product-scope-expansion/SKILL.md +29 -2
  154. package/template/.aioson/skills/process/prototype-forge/SKILL.md +98 -0
  155. package/template/.aioson/skills/process/reference-identity-extract/SKILL.md +164 -0
  156. package/template/.aioson/skills/process/sheldon-expansion-audit/SKILL.md +23 -2
  157. package/template/.aioson/skills/static/multi-agent-patterns.md +5 -5
  158. package/template/CLAUDE.md +15 -11
@@ -5,15 +5,15 @@
5
5
 
6
6
  ## When to use
7
7
 
8
- Load this skill when:
9
- - starting spec work for a new feature or project (any agent)
10
- - deciding phase depth based on classification (MICRO / SMALL / MEDIUM)
11
- - preparing a clean handoff to the next agent
12
- - retaking work after a session break (check `last_checkpoint` + `phase_gates` first)
13
-
14
- Do not load this skill for `@deyvin` activation-only recovery. A bare `@deyvin` activation is status recovery, not spec work; run Deyvin's fast path and stop before opening this file.
15
-
16
- Do NOT load the entire `references/` folder. Load only the file matching your current need.
8
+ Load this skill when:
9
+ - starting spec work for a new feature or project (any agent)
10
+ - deciding phase depth based on classification (MICRO / SMALL / MEDIUM)
11
+ - preparing a clean handoff to the next agent
12
+ - retaking work after a session break (check `last_checkpoint` + `phase_gates` first)
13
+
14
+ Do not load this skill for `@deyvin` activation-only recovery. A bare `@deyvin` activation is status recovery, not spec work; run Deyvin's fast path and stop before opening this file.
15
+
16
+ Do NOT load the entire `references/` folder. Load only the file matching your current need.
17
17
 
18
18
  ## What phases exist
19
19
 
@@ -21,9 +21,9 @@ Do NOT load the entire `references/` folder. Load only the file matching your cu
21
21
  |-------|----------------|---------------|-------|-------|--------|
22
22
  | Specify | `prd*.md` | @product | lite | full | full |
23
23
  | Research/Discuss | `sheldon-enrichment*.md` | @sheldon | optional | recommended | required |
24
- | Requirements | `requirements-{slug}.md` | @analyst | skip | required | required |
25
- | Alignment Check | `scope-check*.md` | @scope-check | skip | early | final before dev |
26
- | Design | `architecture.md`, `design-doc*.md` | @architect | skip | selective | required |
24
+ | Requirements | `requirements-{slug}.md` | @analyst | skip | required | required |
25
+ | Alignment Check | `scope-check*.md` | @scope-check (detour) | skip | opt-in detour | opt-in detour |
26
+ | Design | `architecture.md`, `design-doc*.md` | @architect | skip | selective | required |
27
27
  | Tasks/Plan | `implementation-plan*.md` | @dev | optional | recommended | required |
28
28
  | Execute | code, commits, spec updates | @dev, @deyvin | — | — | — |
29
29
  | State/Resume | `spec*.md`, runtime | @dev, @deyvin | — | — | — |
@@ -31,8 +31,10 @@ Do NOT load the entire `references/` folder. Load only the file matching your cu
31
31
  ## Phase depth by classification
32
32
 
33
33
  - **MICRO**: Specify (lite) + Execute. Skip Requirements, Design, Plan unless complexity warrants it.
34
- - **SMALL**: Specify + Requirements + scope check + selective Design + Plan. @sheldon recommended before downstream.
35
- - **MEDIUM**: Full packall phases, all artifacts, @sheldon validation before @analyst, final scope check before @dev, implementation plan required.
34
+ - **SMALL**: lean by default — Specify (`@product`) + `@sheldon` as the single spec authority (requirements + ACs, design-doc + readiness, plan, and harness contract in one pass) → `@dev` → `@qa`. The heavier multi-agent chain (`@analyst` + selective Design + `@scope-check` detour) is an opt-in escape hatch.
35
+ - **MEDIUM**: `@orchestrator` maestro`@product @orchestrator @dev @pentester @qa` (feature). `@orchestrator` is the single spec authority: it fans out to `@analyst` + `@architect` + `@pm` (+ `@ux-ui` when UI-heavy) as sub-agents, then consolidates/verifies/redoes their output into one gated spec package (requirements + spec[Gates A/B/C] + design-doc + readiness + implementation-plan + harness-contract) for `@dev` — the horizontal counterpart to `@sheldon`'s lean lane. `@analyst`, `@architect`, `@pm`, `@discovery-design-doc`, `@scope-check`, and `@ux-ui` are no longer default hops (sub-agents the orchestrator invokes) and remain opt-in detours; `@architect`'s merged mode survives only for the opt-in full-chain detour. The deterministic drift check (`spec:analyze`) runs at the `@dev`/`@qa` done gate, not as a separate scope-check hop. Implementation plan required.
36
+
37
+ **Lean lane (SMALL default; opt-in for MEDIUM):** `@product → @sheldon → @dev → @qa`, where `@sheldon` runs **Lean lane mode (RF-LEAN)** and produces the requirements/ACs, design-doc + readiness, implementation plan, and §2c runtime-gated harness contract in one pass — replacing the analyst/architect/discovery-design-doc/pm hops. SMALL runs this by default; MEDIUM opts in via `.aioson/context/workflow.config.json`. See `.aioson/docs/workflow-lean-lane.md`. The runtime smoke gate is mandatory in both lanes.
36
38
 
37
39
  ## References available
38
40
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  ## Gate A — Requirements approval
7
7
 
8
- **Before leaving @product / @analyst → @scope-check, @architect, or @dev**
8
+ **Before leaving @product / @analyst → @architect or @dev (`@scope-check` only when its opt-in detour is in the sequence)**
9
9
 
10
10
  Required for the gate to pass:
11
11
  - [ ] Objectives are clear and unambiguous
@@ -54,7 +54,7 @@ Required for the gate to pass:
54
54
  Required for the gate to pass:
55
55
  - [ ] Execution sequence is defined
56
56
  - [ ] Checkpoints are listed with criteria of done
57
- - [ ] Context package is listed as a short primary activation package plus phase-triggered loads (which files to read before each phase, and why)
57
+ - [ ] Context package is listed as a short primary activation package plus phase-triggered loads (which files to read before each phase, and why)
58
58
  - [ ] Review / QA requirements are noted
59
59
  - [ ] Decisions marked "pre-taken" are FINAL — @dev does not re-discuss
60
60
 
@@ -7,10 +7,10 @@
7
7
  | Phase | MICRO (0–1) | SMALL (2–3) | MEDIUM (4–6) |
8
8
  |-------|-------------|-------------|--------------|
9
9
  | Specify (PRD) | 1 conversation, lite template | Full PRD conversation | Full PRD + `## Specify depth` section |
10
- | Research (@sheldon) | Skip unless links/external sources provided | Recommendedrun before @analyst | Required — run Modo C (full validation) |
11
- | Requirements (@analyst) | Skip — go @product → @dev | Required `requirements-{slug}.md` | Required — with requirement IDs + ACs |
12
- | Design (@architect) | Skip unless auth or external integration | Selective only if new architecture pattern | Required — full `architecture.md` |
13
- | Plan (implementation-plan) | Optional — suggest only if @dev asks | Recommended | Required — with gate approval + verification criteria |
10
+ | Research (@sheldon) | Skip unless links/external sources provided | Required`@sheldon` is the single spec authority (lean default) | Required — folded into the `@orchestrator` maestro fan-out (consolidated, not a separate `@sheldon` hop) |
11
+ | Requirements (@analyst) | Skip — go @product → @dev | From `@sheldon` in the lean default; `@analyst` only on the full-chain detour | Required — produced via the `@orchestrator` maestro fan-out (`@analyst` sub-agent), with requirement IDs + ACs |
12
+ | Design (@architect) | Skip unless auth or external integration | From `@sheldon` in the lean default; `@architect` only on the full-chain detour | Required — produced via the `@orchestrator` maestro fan-out (`@architect` sub-agent), design-doc + `architecture.md` |
13
+ | Plan (implementation-plan) | Optional — suggest only if @dev asks | Recommended | Required — produced via the `@orchestrator` maestro fan-out (`@pm` sub-agent), with gate approval + verification criteria |
14
14
  | Execute (@dev) | Direct from PRD | From requirements + spec | From approved plan only |
15
15
  | State (@dev, @deyvin) | Minimal `spec.md` note | `spec-{slug}.md` with phase_gates | Full spec pack — phase_gates + checkpoints + maintenance notes |
16
16
 
@@ -2,15 +2,15 @@
2
2
 
3
3
  > Router file. Do not duplicate logic from the generic references — load those directly.
4
4
 
5
- ## Which references to load for implementation
6
-
7
- ### Always load when this skill is active
8
-
9
- - `maintenance-and-state.md` — use to write and update `spec-{slug}.md` correctly: `phase_gates`, `last_checkpoint`, `pending_review`, and `Key decisions` format
10
- - `approval-gates.md` — Gate C (plan approval) must be checked before executing a significant batch; Gate D (execution verification) defines done criteria for each phase
11
- - For SMALL/MEDIUM work, confirm `.aioson/context/design-doc*.md` and `.aioson/context/readiness*.md` were produced by `@discovery-design-doc` before implementation starts. Load them only when `dev-state.md`, readiness, the plan, or touched paths require their details.
12
-
13
- ### Load when starting a new feature with classification context
5
+ ## Which references to load for implementation
6
+
7
+ ### Always load when this skill is active
8
+
9
+ - `maintenance-and-state.md` — use to write and update `spec-{slug}.md` correctly: `phase_gates`, `last_checkpoint`, `pending_review`, and `Key decisions` format
10
+ - `approval-gates.md` — Gate C (plan approval) must be checked before executing a significant batch; Gate D (execution verification) defines done criteria for each phase
11
+ - For SMALL/MEDIUM work, confirm `.aioson/context/design-doc*.md` and `.aioson/context/readiness*.md` exist before implementation starts — produced by `@orchestrator` (maestro mode) on MEDIUM, by `@sheldon` on the SMALL lean lane, or by `@architect` (merged mode) / `@discovery-design-doc` when those detours are in the sequence. Load them only when `dev-state.md`, readiness, the plan, or touched paths require their details.
12
+
13
+ ### Load when starting a new feature with classification context
14
14
 
15
15
  - `classification-map.md` — use to confirm whether an implementation plan is optional (MICRO), recommended (SMALL), or required (MEDIUM) before starting
16
16
 
@@ -35,7 +35,7 @@ At session start, after reading `spec-{slug}.md`:
35
35
  3. If versions match: proceed normally
36
36
 
37
37
  Additionally, at session start for SMALL/MEDIUM:
38
- 4. Run `aioson ac:test-audit . --feature={slug}` when a feature slug exists, or manually check that each `AC-*` from `requirements-{slug}.md` appears in a corresponding test file
38
+ 4. Run `aioson ac:test-audit . --feature={slug}` when a feature slug exists, or manually check that each `AC-*` from `requirements-{slug}.md` appears in a corresponding test file
39
39
  5. If coverage is < 50%:
40
40
  > "⚠ AC coverage is low ({N}/{M} ACs have tests). Consider writing missing tests before adding new behavior."
41
41
  This is informational, not blocking.
@@ -43,8 +43,8 @@ Additionally, at session start for SMALL/MEDIUM:
43
43
  ## Behavioral notes
44
44
 
45
45
  - `spec-{slug}.md` must be updated at the end of every implementation session — see `maintenance-and-state.md` for format
46
- - Gate C from `approval-gates.md` means the implementation plan is locked — do not re-discuss pre-taken decisions
47
- - Treat `dev-state.md` as the primary activation package and `implementation-plan-{slug}.md` as the source for phase-triggered context loads
48
- - Gate D verification must happen before marking a phase complete — not just "I think it works". The deterministic floor is `aioson ac:test-audit . --feature={slug}` plus the real test command.
49
- - If `phase_gates.plan` is `pending` and classification is SMALL/MEDIUM, suggest generating an implementation plan before proceeding
50
- - If `design-doc.md` or `readiness.md` is missing for SMALL/MEDIUM, route to `@discovery-design-doc` instead of coding first
46
+ - Gate C from `approval-gates.md` means the implementation plan is locked — do not re-discuss pre-taken decisions
47
+ - Treat `dev-state.md` as the primary activation package and `implementation-plan-{slug}.md` as the source for phase-triggered context loads
48
+ - Gate D verification must happen before marking a phase complete — not just "I think it works". The deterministic floor is `aioson ac:test-audit . --feature={slug}` plus the real test command.
49
+ - If `phase_gates.plan` is `pending` and classification is SMALL/MEDIUM, suggest generating an implementation plan before proceeding
50
+ - If `design-doc.md` or `readiness.md` is missing for SMALL/MEDIUM, route back to their producer instead of coding first — `@orchestrator` (maestro mode) on MEDIUM, `@sheldon` on the SMALL lean lane, or `@architect` (merged mode) / `@discovery-design-doc` when those detours are active
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: briefing-expansion-scout
3
- description: "Briefing process skill for early feature expansion scouting. Use in @briefing or @briefing-refiner when an idea may have a rich surface and the user wants to explore whether it is worth pursuing before PRD: tools, workflows, generators, dashboards, editors, collaboration, automation, templates, media outputs, or Trello/CRM/Kanban-like systems."
3
+ description: "Briefing process skill for early feature expansion and operational surface scouting. Use in @briefing or @briefing-refiner when an idea may have a rich surface and the user wants to explore whether it is worth pursuing before PRD: tools, workflows, generators, dashboards, editors, collaboration, automation, templates, media outputs, workspace/board/card systems, operational CRUD, or Trello/CRM/Kanban-like systems."
4
4
  ---
5
5
 
6
6
  # Briefing Expansion Scout
@@ -22,11 +22,25 @@ Also read existing expansion artifacts when present:
22
22
  Run only when one is true:
23
23
 
24
24
  - user asks to explore, expand, evaluate, or pressure-test an idea
25
- - the idea has a rich surface: workflow, collaboration, editor/builder, generator, dashboard, automation, templates, media output, repeated operational use
25
+ - the idea has a rich surface: workflow, collaboration, editor/builder, generator, dashboard, automation, templates, media output, repeated operational use, workspaces, boards, operational CRUD, or admin/management surfaces
26
26
  - briefing-refiner detects that an existing briefing feels too thin for team discussion
27
27
 
28
28
  If the idea is a tiny bugfix or a one-field CRUD addition, skip and say the normal briefing path is enough.
29
29
 
30
+ ## Operational Surface Scout
31
+
32
+ Before writing the artifact, build the Operational Surface Map from `.aioson/docs/feature-expansion-taxonomy.md`.
33
+
34
+ Treat this as discovery pressure, not committed PRD scope:
35
+
36
+ - Name the likely Core objects and their parent/owner relationships.
37
+ - For each Core object, identify the minimum management surface that must exist if the product ships.
38
+ - Flag missing create/edit/delete/archive/restore paths as gaps, not optional polish.
39
+ - For Trello/Kanban/CRM-style ideas, assume workspace/account home, board/list index, main work surface, item detail, empty states, and permission boundaries are relevant unless evidence says otherwise.
40
+ - Keep speculative objects in Recommended MVP / Optional / V2 buckets until the user approves them.
41
+
42
+ If the plan says "Trello-like", "board", "card", "workspace", "pipeline", "CRM", "dashboard", "admin", or "manage X", the scout must explicitly answer: where does the user create/manage each object, and what happens when there are none?
43
+
30
44
  ## Output
31
45
 
32
46
  Write `.aioson/briefings/{slug}/expansion-scout.md`.
@@ -44,6 +58,13 @@ Use this structure:
44
58
  | Lens | Useful possibilities | Why it matters | Risk |
45
59
  |---|---|---|---|
46
60
 
61
+ ## Operational Surface Map
62
+ | Object | Parent / owner | Lifecycle states | Required actions | Management surface | Empty / error states | Bucket |
63
+ |---|---|---|---|---|---|---|
64
+
65
+ ## Missing Management Surfaces
66
+ - ...
67
+
47
68
  ## Likely MVP Shape
48
69
  - Core:
49
70
  - Recommended MVP:
@@ -67,6 +88,7 @@ Proceed to product definition? yes / no / only after questions.
67
88
  - Mark assumptions explicitly.
68
89
  - Separate attractive ideas from useful ideas.
69
90
  - Prefer 3-7 high-signal possibilities over exhaustive lists.
91
+ - Do not let "simple MVP" mean "core object exists but cannot be managed."
92
+ - A Core object without add/edit/list/archive behavior is a blocking gap in the briefing, not a V2 suggestion.
70
93
  - Do not approve V2 ideas; park them.
71
94
  - Do not modify the PRD.
72
-
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: design-hybrid-forge
3
- description: Process skill that creates project-local hybrid design skills by fusing exactly two primary AIOSON design skills, with optional limited modifiers. When activated, guides you through pair selection, identity synthesis, crossover spec, skill generation, preview creation, metadata, and optional promotion.
3
+ description: Process skill that creates project-local hybrid design skills by fusing exactly two primary design parents — each a local AIOSON design skill or an external DESIGN.md source (refero.design md-example or similar) — with optional limited modifiers. When activated, guides you through pair selection, identity synthesis, crossover spec, skill generation, preview creation, metadata, and optional promotion.
4
4
  activation: |
5
5
  You are now running the design-hybrid-forge process. Begin by asking the user for the names of the two primary AIOSON design skills they want to combine, then ask whether they want optional modifiers. Use up to two modifiers by default, or up to three only when the active variation preset or the user explicitly enables advanced mode. Follow the phases described in this skill.
6
6
  ---
@@ -88,8 +88,8 @@ Each phase must complete before the next begins. Do not skip phase 2 and 3 — t
88
88
  ## Input contract
89
89
 
90
90
  ```
91
- primary_a: {skill-name} # e.g. "cognitive-core-ui"
92
- primary_b: {skill-name} # e.g. "glassmorphism-ui"
91
+ primary_a: {skill-name} # local AIOSON skill (e.g. "cognitive-core-ui") OR external:{DESIGN.md} (e.g. "external:linear")
92
+ primary_b: {skill-name} # local AIOSON skill (e.g. "glassmorphism-ui") OR an external DESIGN.md source (refero.design md-example / similar)
93
93
  modifiers: {optional 0..2} # e.g. ["bold-editorial-ui"] or ["threejs-spatial"]
94
94
  # threejs-spatial is a special modifier: it layers WebGL/Three.js
95
95
  # on any primary pair, adding particle/3D scene as visual substrate
@@ -130,6 +130,7 @@ The hybrid must satisfy ALL of the following:
130
130
  | `references/output-contract.md` | Running phases 4 and 5 (file generation) |
131
131
  | `references/naming-registry.md` | Naming the hybrid and checking for conflicts |
132
132
  | `references/quality-gates.md` | Validating the hybrid before shipping (distribution / promotion gates) |
133
+ | `references/external-source-ingestion.md` | Ingesting an external DESIGN.md (refero.design md-example or similar) as a parent or modifier |
133
134
 
134
135
  ## Non-negotiable rules
135
136
 
@@ -145,3 +146,4 @@ The hybrid must satisfy ALL of the following:
145
146
  10. Project-local generation goes to `.aioson/installed-skills/` by default. Promotion to core is a separate, explicit step.
146
147
  11. `design-hybrid:options` creates a temporary preset in `.aioson/context/design-variation-preset.md`; after successful generation, archive or remove the active preset and preserve the history snapshot.
147
148
  12. **`threejs-spatial` modifier rules:** It is NOT a primary parent. It layers WebGL/Three.js as a visual enhancement on the chosen primary pair. It does not own substrate (CSS gradient is still the base), does not own structure (HTML layout is CSS), and does not own tokens. Accent colors from primary parents MUST flow through Three.js parameters. Three.js CDN (no npm install) is the only supported delivery mode.
149
+ 13. **External DESIGN.md sources:** A primary parent or modifier may be an external DESIGN.md (refero.design md-example or similar). Normalize it to parent DNA via `references/external-source-ingestion.md`, record its provenance under `sources[]` in `.skill-meta.json`, and keep the anti-clone rule — the hybrid is a new identity: never reproduce the source's brand, logo, trademark, or exact palette 1:1, and never name the hybrid after the source.
@@ -0,0 +1,89 @@
1
+ # External Source Ingestion
2
+
3
+ > Load this reference when a primary parent or a modifier is an **external DESIGN.md source**
4
+ > (a refero.design md-example, or a similar portable design spec extracted from a real site)
5
+ > instead of a local AIOSON design skill.
6
+
7
+ The hybrid model is unchanged: **exactly 2 primary parents**, optional modifiers. This reference only
8
+ widens where a parent can come from — a parent may now be local (an AIOSON design skill) or external
9
+ (a DESIGN.md source). Everything downstream (crossover protocol, output contract, quality gates) runs the
10
+ same, operating on the normalized DNA produced here.
11
+
12
+ ## What an external DESIGN.md is
13
+
14
+ A DESIGN.md is a portable, prose+token description of a real product's visual system — e.g. refero.design
15
+ publishes curated examples (Apple, Linear, Stripe, Mercury, Superhuman, Raycast, …). It typically carries:
16
+
17
+ - color palette
18
+ - typography
19
+ - spacing / layout rhythm
20
+ - component patterns
21
+ - overall visual tone / feel
22
+
23
+ It is the "system behind the screenshot", meant to be **pasted as context**, not copied pixel for pixel.
24
+
25
+ ## Accepted forms
26
+
27
+ Take the source in whichever form the user has:
28
+
29
+ 1. **Pasted content** — the user pastes the DESIGN.md text into the conversation.
30
+ 2. **Local file** — the user saved it at `.aioson/context/design-sources/{source}.design.md`.
31
+ 3. **URL** — the user gives a link (refero.design or similar). Fetch it; if the page is JS-heavy or the
32
+ fetch returns little, ask the user to paste the DESIGN.md text instead. Never block on a flaky fetch.
33
+
34
+ ## Normalize to parent DNA
35
+
36
+ Map the source onto the same DNA dimensions the crossover protocol expects from a local parent:
37
+
38
+ | Dimension | Pull from the source |
39
+ |---|---|
40
+ | Substrate / background model | base background, surface model, depth/elevation approach |
41
+ | Structure / layout | layout rhythm, density, grid/spacing scale |
42
+ | Tokens | color palette, typography, spacing, radius, shadow/depth |
43
+ | Components | the component patterns described (buttons, cards, nav, inputs, …) |
44
+ | Motion / feel | transitions, easing, the stated tone/feel |
45
+ | Signature | the one or two moves that make it recognizable |
46
+
47
+ If a dimension is missing in the source, mark it `not provided` — the **other** (local) parent or the
48
+ modifiers fill it. Do not invent brand-specific detail the source did not state.
49
+
50
+ ## Eligibility: primary parent vs modifier
51
+
52
+ - **Primary parent** requires at least: a clear substrate/background model **and** a token system
53
+ (color + typography) **and** a handful of components.
54
+ - A source that only yields accent, motion, or typographic flavor is a **modifier**, not a primary parent
55
+ (modifiers never own substrate or structure — same rule as local modifiers).
56
+
57
+ ## Provenance (mandatory)
58
+
59
+ Record every external source in `.skill-meta.json` under `sources[]`:
60
+
61
+ ```json
62
+ "sources": [
63
+ { "type": "local", "name": "cognitive-core-ui" },
64
+ { "type": "external", "name": "linear", "url": "https://styles.refero.design/...",
65
+ "retrieved_at": "{ISO-date}", "license": "unspecified — reference only",
66
+ "note": "refero.design md-example; used as reference, not copied" }
67
+ ]
68
+ ```
69
+
70
+ refero.design and similar sites publish these as **references, not templates**, with no explicit license.
71
+ Treat them accordingly: use the system, attribute the source in metadata, do not redistribute the source
72
+ file as your own.
73
+
74
+ ## Anti-clone (hard)
75
+
76
+ An external source contributes DNA exactly like a local parent — the crossover still synthesizes a
77
+ distinct third identity. Therefore:
78
+
79
+ - Never reproduce the source's brand name, logo, wordmark, or trademarked assets.
80
+ - Never copy the source's exact palette or type ramp 1:1 — the hybrid accent must be a genuine fusion
81
+ (the existing accent rule), not the source's accent.
82
+ - Never name the hybrid after the source brand (no `linear-hybrid`, no `stripe-core`).
83
+ - The hybrid's `## Hybrid DNA` section names the source as a parent and states what it contributed and
84
+ what is new — same explicitness required of local parents.
85
+
86
+ ## Hand-off
87
+
88
+ Once normalized and validated, treat the external source as an ordinary parent/modifier and continue with
89
+ `references/crossover-protocol.md` (identity synthesis + crossover spec) exactly as for local parents.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: product-scope-expansion
3
- description: "Product process skill for controlled scope expansion before writing or updating a PRD. Use in @product when a feature has a rich surface, when a briefing expansion scout exists, or when the user asks for a more complete MVP without turning the feature into an oversized V2."
3
+ description: "Product process skill for controlled scope expansion and operational completeness before writing or updating a PRD. Use in @product when a feature has a rich surface, when a briefing expansion scout exists, when the user asks for a more complete MVP, or when the product implies workspaces, boards, cards, pipelines, operational CRUD, admin/management surfaces, or Trello/CRM/Kanban-like behavior without turning the feature into an oversized V2."
4
4
  ---
5
5
 
6
6
  # Product Scope Expansion
@@ -27,6 +27,23 @@ When the feature is not obviously rich, ask a short choice:
27
27
 
28
28
  When a scout artifact exists or the user explicitly asks for richer product thinking, run the skill without re-asking unless expansion would materially change classification or timeline.
29
29
 
30
+ ## Operational Completeness Gate
31
+
32
+ Before writing or updating the PRD, build the Operational Surface Map from `.aioson/docs/feature-expansion-taxonomy.md`.
33
+
34
+ This is not optional for rich-surface products. A Core object is incomplete until the PRD accounts for:
35
+
36
+ - parent/owner relationship
37
+ - lifecycle states
38
+ - create, list/view, edit, delete/archive, and restore behavior, or an explicit deferral
39
+ - the page, panel, modal, drawer, inline action, settings screen, or command where the user manages it
40
+ - first-use empty state and validation/error state
41
+ - basic role/permission boundary when ownership or collaboration exists
42
+
43
+ If any Core object lacks a management surface or add/edit path, do not finalize the PRD as-is. Either ask one owner-level decision, choose the smallest defensible default, or put the missing behavior in `## Open questions` and keep it out of "ready for dev" handoff.
44
+
45
+ For Trello/Kanban/CRM/workspace-like products, treat workspace/account home, board/pipeline index, main work surface, item detail, and empty/error surfaces as expected Core surfaces unless explicitly excluded.
46
+
30
47
  ## Output
31
48
 
32
49
  Write `.aioson/context/features/{slug}/scope-expansion.md`.
@@ -51,6 +68,15 @@ Use this structure:
51
68
  | V2 / Later | ... | ... | yes, future |
52
69
  | Cut List | ... | ... | no |
53
70
 
71
+ ## Operational Surface Map
72
+ | Object | Parent / owner | Lifecycle states | Required actions | Management surface | Empty / error states | PRD destination |
73
+ |---|---|---|---|---|---|---|
74
+
75
+ ## Core Capability Closure
76
+ - Complete:
77
+ - Missing / needs decision:
78
+ - Explicitly deferred:
79
+
54
80
  ## Recommended Product Shape
55
81
  - Include in PRD:
56
82
  - Keep as optional:
@@ -71,4 +97,5 @@ Use this structure:
71
97
  - Do not silently include Optional V1, Delight, or V2 items.
72
98
  - If expansion raises classification, surface that before finalizing.
73
99
  - Preserve "small project, small solution": a rich feature can still have a small first release.
74
-
100
+ - Core operational surfaces must appear in `## MVP scope`, `## User flows`, `## Out of scope`, or `## Open questions`; never leave them only in `scope-expansion.md`.
101
+ - Do not route to implementation while a Core object's create/manage flow is undefined.
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: prototype-forge
3
+ description: "Process skill for generating a clickable, self-contained HTML app-shell prototype from an operational surface map. Use in @briefing-refiner (optional visual refinement) when a rich-surface product — workspaces, boards, cards, pipelines, CRM/Kanban, dashboards, editors/builders, admin/management surfaces, repeated-use CRUD — needs its screens, navigation, and CRUD interactions validated before the PRD. Delegates all visual language to the selected design_skill; owns structure, behavior, and state."
4
+ ---
5
+
6
+ # Prototype Forge
7
+
8
+ Generate a clickable, self-contained HTML **app-shell prototype** that materializes a product's
9
+ operational surface map — every screen, navigation path, and CRUD interaction — so completeness and
10
+ interaction are validated *visually* before the PRD, not discovered later as gaps in a broken first build.
11
+
12
+ This is an **app** prototype skill. It is not the landing-page guide
13
+ (`.aioson/skills/static/static-html-patterns.md`, which `skip_if: app dashboard, admin panel`).
14
+
15
+ ## When to run
16
+
17
+ Optional and user-invoked, inside `@briefing-refiner`. Run when a rich-surface product would benefit
18
+ from seeing its screens and interactions before committing scope: workspaces, boards, cards, pipelines,
19
+ CRM/Kanban, dashboards, editors/builders, admin/management surfaces, repeated-use CRUD.
20
+
21
+ Skip for tiny single-screen features, one-field CRUD, or pure content/marketing pages.
22
+
23
+ ## Division of labor (do not blur)
24
+
25
+ - **prototype-forge owns** structure + behavior + state: which screens exist, navigation/routing,
26
+ seeded mock data, client-side CRUD, and the empty/loading/error/permission state matrix.
27
+ - **The selected `design_skill` owns visuals**: tokens, component anatomy, page composition, motion.
28
+ Read `design_skill` from `.aioson/context/project.context.md` and compose from that skill's
29
+ components. Never invent a second visual system. (e.g. `cognitive-core-ui` already ships `modal`,
30
+ `table`, `list-detail`, `settings`, and a `CRM` dashboard preset — compose from those.)
31
+
32
+ The "add card doesn't work" and "no board-management screen" failures live in **this** skill's layer,
33
+ not in the design skill's.
34
+
35
+ ## Inputs (read in this order)
36
+
37
+ 1. The operational surface map: `.aioson/briefings/{slug}/solution-options.md` (the chosen shape) or
38
+ `.aioson/briefings/{slug}/expansion-scout.md`, falling back to the Operational Surface Map in
39
+ `.aioson/docs/feature-expansion-taxonomy.md`.
40
+ 2. `.aioson/briefings/{slug}/briefings.md` for problem, users, and the chosen direction.
41
+ 3. `design_skill` from `.aioson/context/project.context.md`; load that skill before any layout.
42
+ 4. When `design_skill: interface-design`, resolve an `identity.md` — `.aioson/briefings/{slug}/identity.md`,
43
+ else `.aioson/context/identity.md`. If one exists it is the visual source of truth the engine **applies**:
44
+ tokens come from its `## Palette` / `## Typography` / `## Spacing & layout` / `## Radius & depth` /
45
+ `## Motion` sections, and its `## Component structure notes` augment the surface map (input 1) with
46
+ per-component regions, anatomy, and states. `identity.md` overlays the one engine — it is **not** a
47
+ second visual system. If none exists, `interface-design` runs intent-first.
48
+
49
+ If no operational surface map exists, build one first — it is the screen inventory, and without it the
50
+ prototype cannot be complete.
51
+
52
+ ## Build contract (enforceable)
53
+
54
+ 1. **Single self-contained file** — one `prototype.html`, inline CSS + JS, no build, no external
55
+ services, opens in a browser. (Mirrors `review.html`.)
56
+ 2. **Seeded realistic mock state** — plausible data for every Core object (e.g. 2-3 workspaces, a few
57
+ boards, several cards), never lorem ipsum. Enough to look real *and* to toggle the empty state. When
58
+ the product is authenticated, seed the logged-in app chrome too: a working account/user menu
59
+ (profile, settings, switch account, sign out) and any always-present chrome (search, notifications)
60
+ the product implies — a bare avatar with no menu is incomplete.
61
+ 3. **Navigational completeness** — every Core object in the surface map gets a reachable screen via
62
+ in-file routing (hash routes/tabs): a list/index surface, a detail surface, and its management
63
+ surface (page, panel, modal, drawer, or settings screen). A surface-map object with no reachable
64
+ screen is a **blocking gap**, not a backlog item.
65
+ 4. **Real client-side CRUD** — create/edit/delete/archive/restore mutate in-memory state and re-render.
66
+ "Add card"-class actions must actually add and persist for the session. Use modals/drawers/toasts
67
+ for feedback. A button that does nothing is a failure. Never use native `alert()`/`confirm()`/
68
+ `prompt()` — every create/edit/delete and every confirmation is an in-system modal, drawer, or
69
+ inline form styled by the `design_skill` (a destructive confirm is a styled dialog, not `confirm()`).
70
+ Native browser dialogs break visual fidelity and leave @dev with no spec for that surface.
71
+ 5. **State matrix** — empty, loading, error, populated, and permission-denied are each renderable and
72
+ toggleable, not only the happy path.
73
+ 6. **Visual fidelity** — all look-and-feel comes from the `design_skill`; honor its quality and
74
+ stability gates (tokens first, no nested cards, responsive grid constraints, prefers-reduced-motion).
75
+ 7. **Prototype as reference** — it is the downstream development reference. Record its lock status in
76
+ the manifest (`draft` until @product/@sheldon freeze scope, then re-synced and locked).
77
+
78
+ ## Output
79
+
80
+ Write to `.aioson/briefings/{slug}/`:
81
+
82
+ - `prototype.html` — the clickable app-shell.
83
+ - `prototype-manifest.md` — the screen inventory (one row per Core object: screens + management
84
+ surface); a `## Core interactions` section listing every demonstrated interaction as a backtick token,
85
+ one per line (e.g. `` - `add card` — adds a card to a list ``), so `aioson prototype:check` can verify each
86
+ one is later echoed by an acceptance criterion; the `design_skill` used, an explicit
87
+ "mock only — refresh resets, no backend" note, and lock status (`draft` / `locked-at: {ref}`).
88
+
89
+ ## Completeness gate (before handing back)
90
+
91
+ - Every Core object is reachable **and** manageable (create/list/edit/archive/restore, or an explicit defer).
92
+ - Every Core action named in the surface map works against mock state and re-renders.
93
+ - Empty and error states are visible, not implied.
94
+ - No action falls back to a native browser dialog; every create/edit/delete/confirm is an in-system surface.
95
+ - When the product is authenticated, the account/user menu is present and functional, not a dead avatar.
96
+ - The visual is faithful to the `design_skill`, not generic.
97
+ - If any Core object cannot be managed in the prototype, report it as a blocking gap — never hand back a
98
+ prototype that looks complete but cannot manage its own objects.
@@ -0,0 +1,164 @@
1
+ ---
2
+ name: reference-identity-extract
3
+ description: "Process skill that distills user-provided reference images — a brand/visual-identity set and an optional component/structure set — into a single text identity.md (token system + per-component structure notes) ONCE, so the build consumes text, not images. Use inside @briefing-refiner (or @setup for project-wide brand) when the user wants a specific, premium look driven by their own references instead of a fixed preset. Pairs with the interface-design engine: identity.md is the extracted-from-references form of its system.md. Owns extraction + the identity record; never owns the build."
4
+ ---
5
+
6
+ # Reference Identity Extract
7
+
8
+ Turn **reference images** into a **text identity record** that the `interface-design` engine
9
+ applies. The user drops images — their brand, a product they admire, a screen they want — and this
10
+ skill reads them **once** (vision) and writes `identity.md`: real tokens (palette, type, spacing,
11
+ depth, motion, signature moves) plus per-component **structure notes**. Every later build reads the
12
+ **text**, never the images.
13
+
14
+ Why text, not images on every build: the build then runs on any harness (a vision-less harness still
15
+ reads the record), the user can **correct** the extracted palette, the record is **gateable**
16
+ (`verify:artifact --kind=identity`), and two extractions can't silently disagree — the frozen text is
17
+ the source of truth.
18
+
19
+ This generalizes what AIOSON already does when it extracts a real website into a token spec: same
20
+ idea, but the **source** is images and the **lifetime** is per-briefing (or per-project brand), not a
21
+ frozen preset.
22
+
23
+ ## Division of labor (do not blur)
24
+
25
+ - **This skill owns** extraction + the `identity.md` record: tokens from identity images, structure
26
+ notes from component/screen images.
27
+ - **`interface-design` owns the build**: it *applies* `identity.md` as its identity source-of-truth.
28
+ `identity.md` is an INPUT that parameterizes the one engine — never a second design skill.
29
+ - **`prototype-forge` owns** screens/navigation/CRUD/state; it reads `identity.md`'s
30
+ `## Component structure notes` to seed its surface map.
31
+
32
+ ## Two image roles (keep them separate)
33
+
34
+ | role | folder | feeds |
35
+ |---|---|---|
36
+ | **Visual identity** (brand: color, type, texture, feel) | `references/identity/` | the token sections |
37
+ | **Component / structure** (a board, a table, a screen) | `references/structure/` | `## Component structure notes` → the surface map |
38
+
39
+ Synthesis = **apply the identity to the structure**. A component image contributes layout/structure
40
+ *only* — its own colors/fonts are ignored; the look comes from the identity images.
41
+
42
+ ## Scope & paths (resolve before writing)
43
+
44
+ - **Per-briefing (default):** record `.aioson/briefings/{slug}/identity.md`; images in
45
+ `.aioson/briefings/{slug}/references/identity/` and `.../references/structure/`.
46
+ - **Project brand:** record `.aioson/context/identity.md`; images in
47
+ `.aioson/context/brand-references/identity/` and `.../brand-references/structure/`.
48
+
49
+ Read order used by every consumer (`@ux-ui`, `prototype-forge`): per-briefing → project brand → none.
50
+ The **text record is canonical and committed**; the images are raw source and may be `.gitignore`d —
51
+ extraction is one-time, so the build never needs them again.
52
+
53
+ ## Inputs (read in this order)
54
+
55
+ 1. Scope + target path (briefing `{slug}`, or `brand`).
56
+ 2. Every file under `references/identity/` and `references/structure/` for that scope.
57
+ 3. `.aioson/context/project.context.md` for `design_skill` / domain (and to confirm interface-design).
58
+
59
+ ## Build contract (enforceable)
60
+
61
+ 1. **One vision pass, then text only.** Read each image once. Identity images →
62
+ palette/type/spacing/radius/depth/motion/signature/anti-goals. Structure images → one
63
+ `### {component}` block each (regions, anatomy, state matrix, interactions). After this pass the
64
+ build never touches images again.
65
+ 2. **Real values, never placeholders.** Emit concrete hex, named font stacks, numeric scales. Do not
66
+ leave `#RRGGBB`, `{hex}`, `{token}`, `TODO`, `Lorem ipsum`, or any unfilled token — the gate
67
+ rejects them.
68
+ 3. **Map to interface-design token families.** Palette → foreground/background/border/brand/semantic;
69
+ type → display/body/mono + scale; spacing/radius/depth → the engine's families. Pick **exactly one**
70
+ depth strategy (`borders-only` | `subtle-shadows` | `layered-surfaces`).
71
+ 4. **Anti-sameness anchors are mandatory.** `## Design pillars` (2–3) and `## Signature moves` (1–3,
72
+ something that could only belong to THIS product) must be present and specific — they are what
73
+ defeat the generic look.
74
+ 5. **Structure notes drive the surface map.** Each `### {component}` lists regions, anatomy, the
75
+ empty/loading/error/populated/permission states, and the interactions. If no structure images were
76
+ given, write `None — identity-only` under `## Component structure notes`.
77
+ 6. **Self-gate before handing back.** Run
78
+ `aioson verify:artifact . --kind=identity --file=<path> --advisory 2>/dev/null || true` and fix any
79
+ reported gap before returning.
80
+ 7. **Generic provenance.** `## Provenance` describes the sources by type only (e.g. "3 identity
81
+ images, 1 board screenshot"). Never name an external product, brand, site, or tool in any field.
82
+
83
+ ## identity.md schema (write exactly these headers)
84
+
85
+ ```markdown
86
+ ---
87
+ kind: identity
88
+ scope: briefing # briefing | brand
89
+ slug: {slug} # briefing slug, or "project" for brand scope
90
+ source: references # references (from images) | intent (image-less fallback)
91
+ generated_by: reference-identity-extract
92
+ generated_at: {YYYY-MM-DD}
93
+ confidence: high # high | medium | low — how well the images pinned each token
94
+ theme: light-dark # light | dark | light-dark
95
+ base_unit: 4px
96
+ ---
97
+
98
+ ## Design pillars
99
+ - <2–3 specific pillars; the primary anti-sameness anchor>
100
+
101
+ ## Palette
102
+ - foreground/primary: #RRGGBB ← real hex only
103
+ - foreground/secondary: #RRGGBB
104
+ - background/base: #RRGGBB
105
+ - background/surface: #RRGGBB
106
+ - border/default: rgba(…)
107
+ - brand/primary: #RRGGBB
108
+ - semantic/success | warning | danger | info: #…, #…, #…, #…
109
+
110
+ ## Typography
111
+ - display / body / mono: "<family>", <fallback stack>
112
+ - scale: page <px/weight>, section <px/weight>, body <px/weight/line-height>, meta <px/weight>
113
+
114
+ ## Spacing & layout
115
+ - base: 4px — scale: 4, 8, 12, 16, 24, 32
116
+ - breakpoints: mobile <px> / tablet <px> / desktop <px>
117
+ - grid: <cols>-col, gutter <px>
118
+
119
+ ## Radius & depth
120
+ - radius ladder: sharp <px> / medium <px> / large <px>
121
+ - depth strategy: borders-only ← exactly ONE of borders-only | subtle-shadows | layered-surfaces
122
+
123
+ ## Motion
124
+ - posture: <duration/easing>; entrances <description>
125
+ - reduced-motion: honor prefers-reduced-motion
126
+
127
+ ## Signature moves
128
+ - <1–3 moves that could only belong to THIS product; second anti-sameness anchor>
129
+
130
+ ## Anti-goals
131
+ - <3 generic defaults this identity explicitly replaces>
132
+
133
+ ## Component structure notes
134
+ <one ### block per structure image, or "None — identity-only">
135
+
136
+ ### Board
137
+ - regions: <…>
138
+ - anatomy: <…>
139
+ - states: empty, loading, error, populated, permission-denied
140
+ - interactions: <add / move / edit / archive / …>
141
+
142
+ ## Provenance
143
+ - Generic only. e.g. "identity references: 3 images; structure references: 1 board screenshot."
144
+ ```
145
+
146
+ ## Image-less fallback (no references given)
147
+
148
+ Do **not** fabricate a palette. Either:
149
+ - **(default)** write nothing and let `interface-design` run its own Phase 0 (intent-first) — its
150
+ domain palette + signature move already defeat sameness; or
151
+ - if the user wants a **persisted** system anyway, run interface-design Phase 0 yourself and write
152
+ `identity.md` with `source: intent` and the same schema (still no placeholders).
153
+
154
+ ## Cross-harness note
155
+
156
+ A vision-less harness cannot run the extraction pass. There, either run extraction once on a
157
+ vision-capable harness, or hand-author `identity.md` from the schema above — the gate then proves it
158
+ is complete. The build is identical in both cases because it only ever reads the text.
159
+
160
+ ## Output
161
+
162
+ - The `identity.md` record at the resolved path (briefing or project scope).
163
+ - Nothing else. This skill never builds UI, never edits `briefings.md`, and never becomes canonical
164
+ feedback — it produces the identity record the build consumes.