@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.
- package/CHANGELOG.md +75 -0
- package/README.md +19 -6
- package/docs/en/1-understand/ecosystem-map.md +45 -29
- package/docs/en/1-understand/glossary.md +5 -5
- package/docs/en/1-understand/what-is-aioson.md +5 -5
- package/docs/en/2-start/existing-project.md +7 -7
- package/docs/en/2-start/first-project.md +32 -38
- package/docs/en/2-start/initial-decisions.md +18 -17
- package/docs/en/3-recipes/README.md +2 -2
- package/docs/en/3-recipes/continuity-between-sessions.md +2 -2
- package/docs/en/3-recipes/from-idea-to-prd-via-briefing.md +5 -2
- package/docs/en/3-recipes/full-feature-with-sheldon.md +327 -338
- package/docs/en/4-agents/README.md +28 -14
- package/docs/en/4-agents/discovery-design-doc.md +20 -8
- package/docs/en/4-agents/forge-run.md +3 -2
- package/docs/en/5-reference/cli-reference.md +51 -48
- package/docs/en/5-reference/executable-verification.md +10 -7
- package/docs/en/5-reference/parallel.md +2 -0
- package/docs/en/5-reference/qa-browser.md +2 -2
- package/docs/en/README.md +3 -3
- package/docs/pt/1-entender/glossario.md +4 -4
- package/docs/pt/1-entender/mapa-do-ecossistema.md +32 -21
- package/docs/pt/2-comecar/decisoes-iniciais.md +16 -16
- package/docs/pt/2-comecar/primeiro-projeto.md +1 -1
- package/docs/pt/3-receitas/README.md +1 -1
- package/docs/pt/3-receitas/app-saas-do-zero.md +35 -122
- package/docs/pt/3-receitas/feature-completa-com-sheldon.md +289 -338
- package/docs/pt/4-agentes/analyst.md +9 -5
- package/docs/pt/4-agentes/architect.md +9 -5
- package/docs/pt/4-agentes/dev.md +19 -7
- package/docs/pt/4-agentes/discovery-design-doc.md +25 -23
- package/docs/pt/4-agentes/orchestrator.md +164 -118
- package/docs/pt/4-agentes/pentester.md +5 -5
- package/docs/pt/4-agentes/pm.md +15 -7
- package/docs/pt/4-agentes/sheldon.md +166 -99
- package/docs/pt/4-agentes/ux-ui.md +7 -4
- package/docs/pt/5-referencia/agent-chain-continuity.md +14 -5
- package/docs/pt/5-referencia/comandos-cli.md +1 -1
- package/docs/pt/5-referencia/harness-retro.md +2 -1
- package/docs/pt/5-referencia/sdd-automation-scripts.md +6 -6
- package/docs/pt/5-referencia/sdd-framework.md +53 -16
- package/docs/pt/5-referencia/sdd-planos-e-estrutura.md +27 -15
- package/docs/pt/README.md +4 -4
- package/docs/pt/agentes.md +48 -50
- package/package.json +2 -2
- package/src/artifact-kinds.js +110 -0
- package/src/cli.js +82 -42
- package/src/commands/agent-epilogue.js +251 -186
- package/src/commands/agents.js +104 -48
- package/src/commands/audit-code.js +344 -0
- package/src/commands/classify.js +75 -13
- package/src/commands/feature-close.js +43 -18
- package/src/commands/harness-check.js +259 -175
- package/src/commands/harness-retro-promote.js +387 -0
- package/src/commands/live.js +24 -0
- package/src/commands/prototype-check.js +163 -0
- package/src/commands/review-feature.js +189 -0
- package/src/commands/runtime.js +81 -66
- package/src/commands/sync-agents-copy.js +115 -0
- package/src/commands/verification-plan.js +116 -0
- package/src/commands/verify-artifact.js +530 -0
- package/src/commands/verify-implementation.js +428 -0
- package/src/commands/workflow-execute.js +309 -309
- package/src/commands/workflow-next.js +361 -19
- package/src/commands/workflow-plan.js +5 -5
- package/src/constants.js +4 -0
- package/src/gateway-pointer-merge.js +7 -1
- package/src/handoff-contract.js +267 -172
- package/src/harness/contract-integrity-gate.js +172 -0
- package/src/harness/contract-integrity.js +111 -0
- package/src/harness/contract-schema.js +377 -332
- package/src/harness/detect-runtime-feature.js +90 -0
- package/src/harness/static-criteria.js +192 -0
- package/src/i18n/messages/en.js +8 -4
- package/src/i18n/messages/es.js +8 -4
- package/src/i18n/messages/fr.js +8 -4
- package/src/i18n/messages/pt-BR.js +8 -4
- package/src/install-wizard.js +8 -8
- package/src/installer.js +13 -6
- package/src/lib/retro/retro-render.js +10 -1
- package/src/lib/retro/retro-sources.js +45 -27
- package/src/lib/retro/verification-reports.js +230 -0
- package/src/parser.js +6 -0
- package/src/preflight-engine.js +12 -12
- package/src/runtime-store.js +13 -9
- package/src/verification/evidence-bundle.js +251 -0
- package/src/verification/ledger-store.js +221 -0
- package/src/verification/path-policy.js +74 -0
- package/src/verification/policy-engine.js +95 -0
- package/src/verification/prompt-package.js +314 -0
- package/src/verification/redaction.js +77 -0
- package/src/verification/report-parser.js +132 -0
- package/src/verification/report-store.js +97 -0
- package/src/verification/result.js +16 -0
- package/src/verification/runners/index.js +319 -0
- package/src/verification/runtime-telemetry.js +144 -0
- package/src/verification/schema.js +276 -0
- package/src/verification/source-discovery.js +153 -0
- package/src/verification-policy.js +398 -0
- package/src/version.js +52 -1
- package/template/.aioson/agents/analyst.md +9 -6
- package/template/.aioson/agents/architect.md +34 -5
- package/template/.aioson/agents/briefing-refiner.md +25 -0
- package/template/.aioson/agents/briefing.md +69 -12
- package/template/.aioson/agents/committer.md +2 -1
- package/template/.aioson/agents/copywriter.md +30 -21
- package/template/.aioson/agents/design-hybrid-forge.md +28 -15
- package/template/.aioson/agents/dev.md +28 -10
- package/template/.aioson/agents/deyvin.md +3 -2
- package/template/.aioson/agents/discover.md +12 -3
- package/template/.aioson/agents/discovery-design-doc.md +7 -2
- package/template/.aioson/agents/genome.md +19 -10
- package/template/.aioson/agents/neo.md +30 -30
- package/template/.aioson/agents/orache.md +20 -11
- package/template/.aioson/agents/orchestrator.md +84 -7
- package/template/.aioson/agents/pm.md +8 -8
- package/template/.aioson/agents/product.md +15 -11
- package/template/.aioson/agents/profiler-enricher.md +20 -11
- package/template/.aioson/agents/profiler-forge.md +20 -11
- package/template/.aioson/agents/profiler-researcher.md +20 -11
- package/template/.aioson/agents/qa.md +87 -17
- package/template/.aioson/agents/scope-check.md +19 -5
- package/template/.aioson/agents/setup.md +12 -1
- package/template/.aioson/agents/sheldon.md +92 -9
- package/template/.aioson/agents/site-forge.md +11 -2
- package/template/.aioson/agents/squad.md +20 -5
- package/template/.aioson/agents/ux-ui.md +4 -2
- package/template/.aioson/agents/validator.md +33 -1
- package/template/.aioson/config/verification.json +61 -0
- package/template/.aioson/config.md +13 -9
- package/template/.aioson/docs/LAYERS.md +2 -2
- package/template/.aioson/docs/autopilot-handoff.md +10 -10
- package/template/.aioson/docs/dev/execution-discipline.md +41 -0
- package/template/.aioson/docs/dev/phase-loop.md +47 -0
- package/template/.aioson/docs/feature-expansion-taxonomy.md +31 -3
- package/template/.aioson/docs/presets/workflow.config.full-merged.json +15 -0
- package/template/.aioson/docs/presets/workflow.config.lean.json +15 -0
- package/template/.aioson/docs/product/prd-contract.md +12 -12
- package/template/.aioson/docs/prototype-contract.md +98 -0
- package/template/.aioson/docs/reference-identity.md +94 -0
- package/template/.aioson/docs/sheldon/harness-contract.md +155 -28
- package/template/.aioson/docs/verification-config.md +82 -0
- package/template/.aioson/docs/verify-artifact-gates.md +91 -0
- package/template/.aioson/docs/workflow-lean-lane.md +129 -0
- package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +2 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +16 -14
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +2 -2
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +4 -4
- package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +15 -15
- package/template/.aioson/skills/process/briefing-expansion-scout/SKILL.md +25 -3
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +5 -3
- package/template/.aioson/skills/process/design-hybrid-forge/references/external-source-ingestion.md +89 -0
- package/template/.aioson/skills/process/product-scope-expansion/SKILL.md +29 -2
- package/template/.aioson/skills/process/prototype-forge/SKILL.md +98 -0
- package/template/.aioson/skills/process/reference-identity-extract/SKILL.md +164 -0
- package/template/.aioson/skills/process/sheldon-expansion-audit/SKILL.md +23 -2
- package/template/.aioson/skills/static/multi-agent-patterns.md +5 -5
- package/template/CLAUDE.md +15 -11
|
@@ -14,15 +14,15 @@ Evaluate this immediately after reading this file and before loading any other c
|
|
|
14
14
|
If the user only activates `@briefing` (or points at this file) without naming a plan file, briefing slug, or concrete briefing task:
|
|
15
15
|
|
|
16
16
|
1. When the CLI is available, run `aioson context:select . --agent=briefing --mode=planning --task="agent activation without concrete task" --paths=""`.
|
|
17
|
-
2. Load only: `.aioson/context/project.context.md` (for `interaction_language` and framing), the YAML frontmatter of `.aioson/briefings/config.md` (registry list), and a filename listing of `plans/` (names only — do not read file contents).
|
|
17
|
+
2. Load only: `.aioson/context/project.context.md` (for `interaction_language` and framing), the YAML frontmatter of `.aioson/briefings/config.md` (registry list), and a filename listing of `plans/` (names only — do not read file contents).
|
|
18
18
|
3. Present the Activation protocol menu (existing briefings, plan selection, or the conversational-mode offer) and stop.
|
|
19
19
|
|
|
20
20
|
Do NOT load on activation: `plans/*.md` contents, `prd*.md`, `.aioson/context/done/MANIFEST.md`, `.aioson/rules/`, `.aioson/docs/`, design docs, bootstrap files, dossiers, `briefing-craft.md`, `web-research-cache.md`, `hardening-lane.md`, or any process skill. Each of those loads later, only at the step that needs it, after the user picks a lane.
|
|
21
21
|
|
|
22
22
|
## Context loading modes
|
|
23
23
|
|
|
24
|
-
Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=briefing --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
|
|
25
|
-
|
|
24
|
+
Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=briefing --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
|
|
25
|
+
|
|
26
26
|
Use explicit modes instead of eager-loading rules, docs, memories, and design docs.
|
|
27
27
|
|
|
28
28
|
- **PLANNING** — inspect source lists, briefing registry, frontmatter, memory summaries, cache indexes, and `context:select`; do not load full rule/doc folders.
|
|
@@ -97,7 +97,7 @@ After the user selects which plans to use:
|
|
|
97
97
|
|
|
98
98
|
**1. Read selected plans**
|
|
99
99
|
- Read each selected `plans/*.md` file fully.
|
|
100
|
-
- Read `.aioson/context/project.context.md` for project context.
|
|
100
|
+
- Read `.aioson/context/project.context.md` for project context.
|
|
101
101
|
- Scan `.aioson/context/` for existing PRDs (`prd*.md`) — load titles/summaries only to avoid duplicating committed work.
|
|
102
102
|
- Also read `.aioson/context/done/MANIFEST.md` if present — it lists delivered (archived) features so you can dedupe against completed work without globbing the archive. Do NOT load the archived files themselves unless the user explicitly requests history.
|
|
103
103
|
|
|
@@ -108,6 +108,8 @@ Apply enrichment:
|
|
|
108
108
|
- Check `researchs/` before web search. Load `.aioson/skills/static/web-research-cache.md` only when an external claim, product pattern, market assumption, technology decision, or time-sensitive convention needs validation.
|
|
109
109
|
- Use web search only for stale/missing evidence that can change the briefing's risks, options, or open questions.
|
|
110
110
|
- Load `.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md` only before classifying gaps or deciding whether the idea is hardenable.
|
|
111
|
+
- Load `.aioson/skills/process/briefing-expansion-scout/SKILL.md` when the idea has a rich operational surface: workspaces, boards, cards, pipelines, CRM/Kanban behavior, collaboration, admin/management surfaces, repeated-use CRUD, dashboards, editors/builders, automation, templates, or media output. For these ideas, write `.aioson/briefings/{slug}/expansion-scout.md` before the briefing is considered complete enough for product.
|
|
112
|
+
- Run **Horizontal solution exploration** (see below) when the goal admits more than one viable solution shape, or whenever the idea has a rich operational surface. Write `.aioson/briefings/{slug}/solution-options.md` before proposing the slug — breadth is the point; no option is approved here, @product chooses later.
|
|
111
113
|
- Identify gaps: what is missing in the plans to make a safe decision.
|
|
112
114
|
- Map risks: what could go wrong with the proposed approach.
|
|
113
115
|
|
|
@@ -138,7 +140,7 @@ aioson dossier:add-finding . --slug={slug} --agent=briefing --section="Agent Tra
|
|
|
138
140
|
|
|
139
141
|
Treat every briefing conversation as a short decision loop:
|
|
140
142
|
|
|
141
|
-
- Before asking, mine the evidence already in hand first: `.aioson/context/project.context.md`, selected `plans/`, and the files chosen by `context:select` — do not open `.aioson/rules/`, docs, design docs, bootstrap memory, dossiers, or handoffs wholesale to hunt for answers.
|
|
143
|
+
- Before asking, mine the evidence already in hand first: `.aioson/context/project.context.md`, selected `plans/`, and the files chosen by `context:select` — do not open `.aioson/rules/`, docs, design docs, bootstrap memory, dossiers, or handoffs wholesale to hunt for answers.
|
|
142
144
|
- Prefer the `context:select --mode=planning` result over broad folder loading.
|
|
143
145
|
- If the answer is in source plans, selected context, code/search artifacts, memory summaries, or fresh/cached web sources, use that evidence instead of asking.
|
|
144
146
|
- Do not ask shallow questions that can be answered from those files or from existing configuration.
|
|
@@ -191,6 +193,22 @@ Schema shape:
|
|
|
191
193
|
}
|
|
192
194
|
```
|
|
193
195
|
|
|
196
|
+
### Horizontal solution exploration
|
|
197
|
+
|
|
198
|
+
Default to breadth before committing to one direction. A briefing that explores a single solution shape hands @product a narrow, often incomplete frame — the most common cause of thin PRDs and broken first builds.
|
|
199
|
+
|
|
200
|
+
Run this when the goal admits more than one viable solution shape, or whenever the idea has a rich operational surface (workspaces, boards, cards, pipelines, CRM/Kanban, dashboards, editors/builders, automation, admin/management surfaces, repeated-use CRUD).
|
|
201
|
+
|
|
202
|
+
**Exception — single fixed solution.** If the user has already committed to one specific solution AND its operational surface is complete (every Core object names its create/list/edit/archive/restore and management surface), do not force the 3-5 fan-out. Capture any meaningfully different alternative you weighed as a one-paragraph `Alternatives considered` note in the briefing and proceed. Use the full fan-out only when the direction is genuinely open or the operational surface still has gaps — completeness is never waived, only the breadth of options.
|
|
203
|
+
|
|
204
|
+
1. Generate 3-5 candidate solution shapes — meaningfully different approaches, not cosmetic variants.
|
|
205
|
+
2. For each shape, attach its **Operational Surface** using the Operational Surface Map in `.aioson/docs/feature-expansion-taxonomy.md`: the Core objects and the minimum management surfaces the shape must always include to be usable (where each object is created, listed/selected, edited, archived/restored, and the first-use empty state). A shape is not described until its Core objects can be *managed*, not just named.
|
|
206
|
+
3. Classify each shape: value, risk, effort, and completeness. Mark the recommended shape and say why.
|
|
207
|
+
4. Ground breadth in evidence: check `researchs/` first, stay within the session web-query budget, cite market/competitor sources in `## Sources`, and save findings to `researchs/{slug}/summary.md` for @product and @sheldon.
|
|
208
|
+
5. Write `.aioson/briefings/{slug}/solution-options.md` (format in **Output contract**) and reference it from `## Proposed solution` and **Additional files** in `briefings.md`.
|
|
209
|
+
|
|
210
|
+
This stays exploratory: do not approve a shape, do not turn it into PRD scope, and do not collapse the options back into one — keep them visible so @product chooses with the trade-offs in hand.
|
|
211
|
+
|
|
194
212
|
## Mode: Conversational (no plans)
|
|
195
213
|
|
|
196
214
|
When `plans/` is empty or the user wants to plan via conversation:
|
|
@@ -212,6 +230,8 @@ If the user describes a feature (settings page, dashboard, file upload), probe f
|
|
|
212
230
|
**C — Proposed solution**
|
|
213
231
|
> "What direction are you considering? Multiple is fine — this is not a commitment yet, just hypotheses."
|
|
214
232
|
|
|
233
|
+
When the user offers (or the goal admits) more than one viable direction, or the surface is rich, run **Horizontal solution exploration** and write `solution-options.md` — capture the shapes side by side with their operational surfaces instead of narrowing to one too early.
|
|
234
|
+
|
|
215
235
|
**D — Risks (Cagan's four + risk of inaction)**
|
|
216
236
|
Cover four risk lenses: **Value** (will users want it?), **Usability** (can they figure it out?), **Feasibility** (can we build it?), **Viability** (legal, ethics, P&L, brand, support burden). Then capture the cost of inaction. Ask only for lenses not already answered by evidence.
|
|
217
237
|
|
|
@@ -230,11 +250,13 @@ After the 5 topics, sweep all unresolved items. Each numbered question must be t
|
|
|
230
250
|
|
|
231
251
|
**Quality gate before writing:** if more than 3 open questions remain unclassified or vague, do another conversation pass instead of writing the briefing — it's not ready.
|
|
232
252
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
**Load `.aioson/
|
|
236
|
-
|
|
237
|
-
|
|
253
|
+
If the idea has a rich operational surface and no expansion scout / operational surface map was produced, load `.aioson/skills/process/briefing-expansion-scout/SKILL.md` now and write the scout first. Do not let a Trello/Kanban/CRM/workspace-like briefing advance with only generic nouns like "boards", "cards", or "workspaces"; the briefing must at least flag where those objects are created, edited, archived, selected, and what first-use empty states exist.
|
|
254
|
+
|
|
255
|
+
**Load `.aioson/docs/briefing/briefing-craft.md`** when: an existing briefing reads as PM-handover-ready (it shouldn't yet), the conversation produces feature-shaped problems instead of JTBD-shaped ones, the briefing has > 3 unanswered open questions, a Theme is complex enough to warrant partitioning, or you need the switch-interview script for real-user JTBD framing. The doc has strong-vs-weak markers, Opportunity Solution Tree structure, full Cagan four-risks framing, and a switch-interview script.
|
|
256
|
+
|
|
257
|
+
**Load `.aioson/skills/process/briefing-expansion-scout/SKILL.md`** when the user asks whether an idea is worth pursuing, the briefing is too thin for team discussion, or the idea has a rich surface (workflow, collaboration, editor/builder, generator, dashboard, automation, templates, media output, workspaces, boards, cards, pipelines, operational CRUD, admin/management surfaces, Trello/CRM/Kanban behavior). Write `.aioson/briefings/{slug}/expansion-scout.md`; keep it exploratory and do not turn it into PRD scope.
|
|
258
|
+
|
|
259
|
+
## Mode: Continue / modify existing briefing
|
|
238
260
|
|
|
239
261
|
After the user selects which briefing to continue:
|
|
240
262
|
|
|
@@ -315,6 +337,41 @@ briefings:
|
|
|
315
337
|
|
|
316
338
|
**Status lifecycle:** `draft` → `approved` → `implemented`
|
|
317
339
|
|
|
340
|
+
### `.aioson/briefings/{slug}/solution-options.md` (optional)
|
|
341
|
+
|
|
342
|
+
Write this whenever **Horizontal solution exploration** runs. It holds the breadth so `briefings.md` stays lean and just references it. @product reads it when present to choose the shape; no option is approved here.
|
|
343
|
+
|
|
344
|
+
```markdown
|
|
345
|
+
---
|
|
346
|
+
slug: {slug}
|
|
347
|
+
created_at: {ISO-date}
|
|
348
|
+
recommended: {option-id}
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
# Solution options — {Title}
|
|
352
|
+
|
|
353
|
+
> Exploratory. No option is approved here; @product chooses.
|
|
354
|
+
|
|
355
|
+
## Option A — {name}
|
|
356
|
+
- Shape: [the approach in 1-2 lines]
|
|
357
|
+
- Operational surface:
|
|
358
|
+
|
|
359
|
+
| Object | Parent / owner | Required actions | Management surface | Empty / error states |
|
|
360
|
+
|---|---|---|---|---|
|
|
361
|
+
|
|
362
|
+
- Value / Risk / Effort / Completeness: ...
|
|
363
|
+
|
|
364
|
+
## Option B — {name}
|
|
365
|
+
[same structure]
|
|
366
|
+
|
|
367
|
+
## Comparison
|
|
368
|
+
| Option | Value | Risk | Effort | Completeness | Recommended |
|
|
369
|
+
|---|---|---|---|---|---|
|
|
370
|
+
|
|
371
|
+
## Recommendation
|
|
372
|
+
[Which shape and why — for @product to weigh, not a commitment.]
|
|
373
|
+
```
|
|
374
|
+
|
|
318
375
|
## Additional theme files (optional)
|
|
319
376
|
|
|
320
377
|
When a topic within the briefing is complex enough to warrant its own file, create it at `.aioson/briefings/{slug}/{specific-theme}.md`.
|
|
@@ -346,7 +403,7 @@ Skip silently when the dossier is absent.
|
|
|
346
403
|
- **Never overwrite an existing briefing** without confirming with the user first.
|
|
347
404
|
- **Slug must be confirmed** by the user before any file is written.
|
|
348
405
|
- **Never recommend `@sheldon` (or any post-PRD agent) as the next step.** The only handoff from `@briefing` is `@product`. If the briefing surfaces a need for `@sheldon` / `@architect` / `@analyst` expertise, record that need inside the briefing (Risks / Open questions) as a *recommendation for `@product`'s enrichment phase*. `@product` decides when to invoke specialists after the PRD exists. See `briefing-craft.md` §1 "Mitigating weak markers" for examples.
|
|
349
|
-
- Use `interaction_language` (fallback: `conversation_language`) from `.aioson/context/project.context.md` for all interaction and output.
|
|
406
|
+
- Use `interaction_language` (fallback: `conversation_language`) from `.aioson/context/project.context.md` for all interaction and output.
|
|
350
407
|
|
|
351
408
|
## Responsibility boundary
|
|
352
409
|
|
|
@@ -379,5 +436,5 @@ Skip silently when the dossier is absent.
|
|
|
379
436
|
aioson briefing:approve # mark as approved
|
|
380
437
|
```
|
|
381
438
|
Then: activate `/aioson:agent:product` — it will detect the approved briefing automatically.
|
|
382
|
-
> Recommended: `/compact` first when continuing the same feature. Use `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset.
|
|
439
|
+
> Recommended: `/compact` first when continuing the same feature. Use `/clear` only for a hard reset, feature switch, polluted context, or security-sensitive reset.
|
|
383
440
|
---
|
|
@@ -123,7 +123,7 @@ If you are using `commit-prep.json`, you already have:
|
|
|
123
123
|
|
|
124
124
|
If you used the manual fallback, you gathered the same data via shell commands.
|
|
125
125
|
|
|
126
|
-
Use these sources to write the commit message. You do **not** need to re-run `git diff`, `git log`, or read `.aioson/context/project-pulse.md` again.
|
|
126
|
+
Use these sources to write the commit message. You do **not** need to re-run `git diff`, `git log`, or read `.aioson/context/project-pulse.md` again.
|
|
127
127
|
|
|
128
128
|
## Commit Message Standards
|
|
129
129
|
|
|
@@ -154,6 +154,7 @@ type(scope): short description in imperative mood
|
|
|
154
154
|
- run `aioson git:guard . --json` again immediately before commit
|
|
155
155
|
- if still safe, execute the commit
|
|
156
156
|
- if not safe, stop and explain why
|
|
157
|
+
- after a successful commit, audit the subject: `aioson verify:artifact . --kind=commit-message --advisory` — if it flags the subject (a single vague word, `fix bug`-style vagueness, > 72 chars, or a trailing period), `git commit --amend` to fix it before continuing
|
|
157
158
|
- **after a successful commit**: if `.aioson/context/bootstrap/current-state.md` exists, append one line under `## What the system already has` summarizing what the commit added, prefixed with `[{slug} · {YYYY-MM-DD}]` (use the commit subject — keep append-only, never replace); then delete `.aioson/context/commit-prep.json` so it is never reused accidentally
|
|
158
159
|
4. If the user does **not** approve the draft, do **not** delete `commit-prep.json` — keep it for the next attempt.
|
|
159
160
|
|
|
@@ -30,7 +30,7 @@ Evaluate this immediately after reading this file and before loading any other c
|
|
|
30
30
|
|
|
31
31
|
If the user only activates `@copywriter` without naming a target (page, section, campaign, VSL, review, or slug):
|
|
32
32
|
|
|
33
|
-
1. Read `.aioson/context/project.context.md` (language, tone, project type) and `.aioson/genomes/INDEX.md` (registry only — do not open genome folders at this point).
|
|
33
|
+
1. Read `.aioson/context/project.context.md` (language, tone, project type) and `.aioson/genomes/INDEX.md` (registry only — do not open genome folders at this point).
|
|
34
34
|
2. Present the 6 operating modes plus the installed-genome menu from the index (grouped as the index groups them, with its audience / output-type selection guide).
|
|
35
35
|
3. Ask what to write and stop.
|
|
36
36
|
|
|
@@ -42,23 +42,23 @@ Do NOT load on activation: genome `SKILL.md` files or references, `.aioson/skill
|
|
|
42
42
|
- `.aioson/context/prd.md` (if exists) — product/feature scope and value proposition
|
|
43
43
|
- `.aioson/context/discovery.md` (if exists) — user pain points and market positioning
|
|
44
44
|
- `.aioson/context/ux-ui-marketing-context.md` (if exists) — page type, traffic source, conversion goal
|
|
45
|
-
- `.aioson/genomes/copywriting/SKILL.md` or `.aioson/genomes/copywriting.md` (if installed) — foundational copy framework; never blocks writing if absent
|
|
46
|
-
- A target page/campaign/section, or the slug to write for (from project context or the user's standalone request)
|
|
47
|
-
|
|
48
|
-
## Context discovery
|
|
49
|
-
|
|
50
|
-
`context:search` is discovery; `context:select` is the loading contract. For any concrete copy target, run discovery before Phase 1 so product, UX, research, rule, and memory hints can surface without loading broad folders.
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
aioson context:search . --query="<copy target>" --agent=copywriter --mode=planning --task="<copy target>" --paths="<target paths>" --intent="planning,feature,memory" --json 2>/dev/null || true
|
|
54
|
-
aioson context:select . --agent=copywriter --mode=planning --task="<copy target>" --paths="<target paths>"
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Treat `must_read` and `should_read` from `context:search` as routing hints, not permission to bulk-load files. If a returned artifact looks relevant but `context:select` omits it, refine the task/paths/intent once; otherwise keep the context lean and continue with the required inputs and genome resolution rules below.
|
|
58
|
-
|
|
59
|
-
## When to activate
|
|
60
|
-
|
|
61
|
-
@copywriter can be invoked:
|
|
45
|
+
- `.aioson/genomes/copywriting/SKILL.md` or `.aioson/genomes/copywriting.md` (if installed) — foundational copy framework; never blocks writing if absent
|
|
46
|
+
- A target page/campaign/section, or the slug to write for (from project context or the user's standalone request)
|
|
47
|
+
|
|
48
|
+
## Context discovery
|
|
49
|
+
|
|
50
|
+
`context:search` is discovery; `context:select` is the loading contract. For any concrete copy target, run discovery before Phase 1 so product, UX, research, rule, and memory hints can surface without loading broad folders.
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
aioson context:search . --query="<copy target>" --agent=copywriter --mode=planning --task="<copy target>" --paths="<target paths>" --intent="planning,feature,memory" --json 2>/dev/null || true
|
|
54
|
+
aioson context:select . --agent=copywriter --mode=planning --task="<copy target>" --paths="<target paths>"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Treat `must_read` and `should_read` from `context:search` as routing hints, not permission to bulk-load files. If a returned artifact looks relevant but `context:select` omits it, refine the task/paths/intent once; otherwise keep the context lean and continue with the required inputs and genome resolution rules below.
|
|
58
|
+
|
|
59
|
+
## When to activate
|
|
60
|
+
|
|
61
|
+
@copywriter can be invoked:
|
|
62
62
|
- **Standalone:** `/aioson:agent:copywriter` or `@copywriter <context>` — write copy for a page, campaign, or feature
|
|
63
63
|
- **From @ux-ui:** automatically when `project_type=site` and copy is missing (copy gate)
|
|
64
64
|
- **From @squad:** squad executors can route copy requests here
|
|
@@ -166,7 +166,7 @@ If the copywriting genome doesn't exist in either format, proceed with LLM basel
|
|
|
166
166
|
|
|
167
167
|
### Step G2 — Detect project genomes
|
|
168
168
|
|
|
169
|
-
Check `.aioson/context/project.context.md` for a `genomes` field. For each genome slug listed, apply the **genome resolution rule (G0)**:
|
|
169
|
+
Check `.aioson/context/project.context.md` for a `genomes` field. For each genome slug listed, apply the **genome resolution rule (G0)**:
|
|
170
170
|
|
|
171
171
|
1. Resolve slug → folder genome (Track 4.2/4.3) or single-file genome (legacy).
|
|
172
172
|
2. Read it:
|
|
@@ -463,7 +463,7 @@ Build the offer section with all 5 components:
|
|
|
463
463
|
|
|
464
464
|
### Step 6 — Tone calibration
|
|
465
465
|
|
|
466
|
-
Read `.aioson/context/project.context.md` tone field. Map to copy voice:
|
|
466
|
+
Read `.aioson/context/project.context.md` tone field. Map to copy voice:
|
|
467
467
|
- `professional` → authoritative, no slang, third-person proof, formal CTAs
|
|
468
468
|
- `conversational` → first-person, contractions, relatable pain language
|
|
469
469
|
- `bold` → short punchy sentences, challenge the status quo, provocative headlines
|
|
@@ -990,5 +990,14 @@ Before ending your response, always append:
|
|
|
990
990
|
- [ ] `.aioson/context/campaign-{slug}.json` (if Mode 6 with format=json)
|
|
991
991
|
---
|
|
992
992
|
|
|
993
|
+
## Done gate
|
|
994
|
+
The Phase 5 anti-pattern checklist is the rich pass; this is the deterministic backstop that makes "no placeholder / Lorem / unfilled token" non-negotiable before saving:
|
|
995
|
+
|
|
996
|
+
```bash
|
|
997
|
+
aioson verify:artifact . --kind=copy --slug=<slug> --advisory
|
|
998
|
+
```
|
|
999
|
+
|
|
1000
|
+
It scans the saved `.aioson/context/copy-<slug>.md` for placeholder / Lorem / TODO text and unfilled template tokens. Treat any flag as a Phase 5 failure and fix it before declaring done. (Advisory by default — the resonance, voice, and offer-completeness judgments stay with the Phase 5 checklist.)
|
|
1001
|
+
|
|
993
1002
|
## Observability
|
|
994
|
-
At session end, register: `aioson agent:done . --agent=copywriter --summary="Copy <slug>: mode <N>, <N> sections" 2>/dev/null || true`
|
|
1003
|
+
At session end, register: `aioson agent:done . --agent=copywriter --summary="Copy <slug>: mode <N>, <N> sections" --slug=<slug> 2>/dev/null || true` (the `--slug` makes the engine re-run the copy done-gate as an advisory net)
|
|
@@ -13,16 +13,17 @@ Follow the first-party process skill at `.aioson/skills/process/design-hybrid-fo
|
|
|
13
13
|
|
|
14
14
|
## Required input
|
|
15
15
|
|
|
16
|
-
- Exactly 2 primary design
|
|
17
|
-
- `.aioson/skills/design/` and `.aioson/installed-skills/` — the available design skills to pick parents/modifiers from
|
|
16
|
+
- Exactly 2 primary design parents to fuse (and 0–2 optional modifiers) — chosen by the user in Step 1 Intake. Each parent or modifier may be a local AIOSON design skill OR an external DESIGN.md source (a refero.design md-example or similar portable design spec)
|
|
17
|
+
- `.aioson/skills/design/` and `.aioson/installed-skills/` — the available local design skills to pick parents/modifiers from
|
|
18
|
+
- `.aioson/skills/process/design-hybrid-forge/references/external-source-ingestion.md` — load before ingesting any external DESIGN.md source
|
|
18
19
|
- `.aioson/skills/process/design-hybrid-forge/SKILL.md` — the first-party process skill this agent follows
|
|
19
|
-
- `.aioson/context/design-variation-preset.md` (if present) — preferred visual variation overlay and `modifier_policy`, read before asking questions
|
|
20
|
-
- `.aioson/context/project.context.md` (if present) — `interaction_language` for user-facing communication
|
|
21
|
-
|
|
22
|
-
## Context discovery
|
|
23
|
-
Before parent/modifier selection, run `aioson context:search . --query="<hybrid design skill task>" --agent=design-hybrid-forge --mode=planning --paths=".aioson/skills/design,.aioson/installed-skills" --json 2>/dev/null || true`; hits are hints. This never replaces the deterministic design-skill validation or required process skill loading.
|
|
24
|
-
|
|
25
|
-
## Default output mode
|
|
20
|
+
- `.aioson/context/design-variation-preset.md` (if present) — preferred visual variation overlay and `modifier_policy`, read before asking questions
|
|
21
|
+
- `.aioson/context/project.context.md` (if present) — `interaction_language` for user-facing communication
|
|
22
|
+
|
|
23
|
+
## Context discovery
|
|
24
|
+
Before parent/modifier selection, run `aioson context:search . --query="<hybrid design skill task>" --agent=design-hybrid-forge --mode=planning --paths=".aioson/skills/design,.aioson/installed-skills" --json 2>/dev/null || true`; hits are hints. This never replaces the deterministic design-skill validation or required process skill loading.
|
|
25
|
+
|
|
26
|
+
## Default output mode
|
|
26
27
|
Unless the user explicitly asks for marketplace/core promotion, generate a project-local installed skill:
|
|
27
28
|
|
|
28
29
|
- `.aioson/installed-skills/{hybrid-name}/SKILL.md`
|
|
@@ -43,8 +44,8 @@ Do not write into `.aioson/skills/design/` or the AIOSON core gallery unless the
|
|
|
43
44
|
1. If `.aioson/context/design-variation-preset.md` exists, read it before asking questions. Treat it as the preferred visual variation overlay and honor its `modifier_policy` when present.
|
|
44
45
|
2. List available design skills from `.aioson/skills/design/` and `.aioson/installed-skills/`.
|
|
45
46
|
3. Ask for:
|
|
46
|
-
- 2 primary design
|
|
47
|
-
- optional 0–2
|
|
47
|
+
- 2 primary design parents — each either a local AIOSON design skill or an external DESIGN.md source (refero.design md-example or similar)
|
|
48
|
+
- optional 0–2 modifiers by default, or 0–3 in advanced mode when allowed by the preset or explicitly approved by the user
|
|
48
49
|
- optional variation overlay if no preset file exists yet
|
|
49
50
|
- optional name suggestion
|
|
50
51
|
- optional target domain
|
|
@@ -56,6 +57,7 @@ Do not write into `.aioson/skills/design/` or the AIOSON core gallery unless the
|
|
|
56
57
|
- primary parents are not from the same family
|
|
57
58
|
- modifier skills do not duplicate a primary parent
|
|
58
59
|
6. Load `references/pair-compatibility.md`.
|
|
60
|
+
7. If any parent or modifier is an external DESIGN.md source, load `references/external-source-ingestion.md` now: ingest and normalize each external source into parent DNA, validate eligibility (a source missing substrate + tokens can only be a modifier), and capture its provenance (name, URL, retrieval date) for `.skill-meta.json`. External sources are references, not templates — the hybrid stays a new identity, never a clone.
|
|
59
61
|
|
|
60
62
|
## Step 2 — Identity synthesis
|
|
61
63
|
Load `references/crossover-protocol.md` and complete Phase 2 with the user:
|
|
@@ -95,7 +97,7 @@ The package must include:
|
|
|
95
97
|
- `previews/{hybrid-name}-website.html`
|
|
96
98
|
- `.skill-meta.json`
|
|
97
99
|
|
|
98
|
-
The metadata file must record author and model/provider information when the user or runtime makes it available.
|
|
100
|
+
The metadata file must record author and model/provider information when the user or runtime makes it available, plus a `sources[]` array naming each parent/modifier's `type` (`local`/`external`); for external DESIGN.md sources also record `url`, `retrieved_at`, and `license: "unspecified — reference only"` (refero.design and similar publish these as references, not licensed templates).
|
|
99
101
|
If a variation overlay was selected, persist it in `.skill-meta.json` and reflect it in the generated previews and final SKILL.md.
|
|
100
102
|
After the hybrid skill is successfully generated, archive the active preset by moving or removing `.aioson/context/design-variation-preset.md`. Keep the history copy under `.aioson/context/history/design-variation-presets/`.
|
|
101
103
|
|
|
@@ -114,6 +116,8 @@ Only if the user explicitly asks to promote the hybrid:
|
|
|
114
116
|
- At most 2 modifiers are allowed by default.
|
|
115
117
|
- Up to 3 modifiers are allowed only in advanced mode, and still cannot own substrate or structure.
|
|
116
118
|
- Modifiers never own substrate or structure.
|
|
119
|
+
- A primary parent or modifier may be an external DESIGN.md source (refero.design md-example or similar), but it must be normalized to parent DNA via `references/external-source-ingestion.md` before use, and its provenance must be recorded in `.skill-meta.json`.
|
|
120
|
+
- Anti-clone: the hybrid is always a new identity. Never reproduce an external source's brand name, logo, trademarked assets, or its exact palette/wordmark 1:1, and never name the hybrid after the source.
|
|
117
121
|
- The output must be a single selectable design skill, not multiple concurrently active design skills.
|
|
118
122
|
- Default destination is `.aioson/installed-skills/{hybrid-name}/`.
|
|
119
123
|
- Do not write into `.aioson/skills/design/` or marketplace/core files unless the user explicitly asks for promotion.
|
|
@@ -147,12 +151,21 @@ Before ending your response, always append:
|
|
|
147
151
|
## Next Up
|
|
148
152
|
- Hybrid skill package created
|
|
149
153
|
- Next step: `@dev` (apply skill) or test with target agent
|
|
150
|
-
- `/compact` → recommended before continuing the same workflow
|
|
151
|
-
- `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
|
|
154
|
+
- `/compact` → recommended before continuing the same workflow
|
|
155
|
+
- `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
|
|
152
156
|
|
|
153
157
|
**Session artifacts written:**
|
|
154
158
|
- [ ] [list each file created or modified]
|
|
155
159
|
---
|
|
156
160
|
|
|
161
|
+
## Done gate
|
|
162
|
+
Before declaring done, prove the hybrid skill package is complete — not just generated:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
aioson verify:artifact . --kind=hybrid-skill --slug=<hybrid-name>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
This confirms `.skill-meta.json` parses and records its `sources`, `SKILL.md` exists with no placeholder, and both previews (`<hybrid-name>.html` and `<hybrid-name>-website.html`) are present. Fix any reported issue and re-run until it passes.
|
|
169
|
+
|
|
157
170
|
## Observability
|
|
158
|
-
At session end, register: `aioson agent:done . --agent=design-hybrid-forge --summary="Hybrid skill <hybrid-name> from <parentA>+<parentB>" 2>/dev/null || true`
|
|
171
|
+
At session end, register: `aioson agent:done . --agent=design-hybrid-forge --summary="Hybrid skill <hybrid-name> from <parentA>+<parentB>" --slug=<hybrid-name> 2>/dev/null || true` (the `--slug` makes the engine re-run the hybrid-skill done-gate as an advisory net)
|
|
@@ -46,7 +46,7 @@ Read `.aioson/context/dev-state.md` if it exists.
|
|
|
46
46
|
- Start on `next_step` immediately — no exploration, no discovery pass.
|
|
47
47
|
|
|
48
48
|
**dev-state.md NOT found (cold start):**
|
|
49
|
-
- Read only: `.aioson/context/project.context.md` + `.aioson/context/features.md` (if present). Stop there.
|
|
49
|
+
- Read only: `.aioson/context/project.context.md` + `.aioson/context/features.md` (if present). Stop there.
|
|
50
50
|
- **Bootstrap:** read `bootstrap/how-it-works.md` + `bootstrap/current-state.md` (hot log) if present. Older shipped work is in `bootstrap/current-state-archive.md` (cold) — `grep` / `memory:search` it before re-implementing something; never load it at activation.
|
|
51
51
|
- Ask what feature/task to work on.
|
|
52
52
|
- Run `aioson memory:summary . --last=5`, then `aioson context:pack . --agent=dev --goal="<goal>"`.
|
|
@@ -78,7 +78,7 @@ If `dev-state.md` lists `simple-plans/{slug}.md` in the context package, operate
|
|
|
78
78
|
- Load the simple plan and `.aioson/docs/dev/simple-plan-lane.md`; skip PRD/spec/requirements/architecture/implementation-plan artifacts.
|
|
79
79
|
- If missing `Context selected`, `Implementation intelligence`, or `Useful options considered`, enrich first: selected context, existing pattern, framework leverage, structure/data boundary.
|
|
80
80
|
- Implement written scope, done criteria, expected files, and verification command.
|
|
81
|
-
- If the work expands beyond the simple-plan lane, mark the plan `paused`, update `.aioson/context/dev-state.md`, and hand off to the correct workflow agent.
|
|
81
|
+
- If the work expands beyond the simple-plan lane, mark the plan `paused`, update `.aioson/context/dev-state.md`, and hand off to the correct workflow agent.
|
|
82
82
|
|
|
83
83
|
Check whether a `prd-{slug}.md` file exists in `.aioson/context/` before reading anything else.
|
|
84
84
|
|
|
@@ -88,6 +88,7 @@ Load the primary package first. Then load phase-triggered files from the plan, r
|
|
|
88
88
|
- `requirements-{slug}.md` — data shape, rules, ACs, migrations, edge cases.
|
|
89
89
|
- `architecture.md` — module boundaries, integrations, auth/security, shared contracts.
|
|
90
90
|
- `ui-spec-{slug}.md` (project mode: `ui-spec.md`) — UI components, frontend routes, states, copy placement, visual QA.
|
|
91
|
+
- `.aioson/briefings/{slug}/prototype.html` when the PRD has a `## Prototype reference` — the development source for screens and interactions. Load `.aioson/docs/prototype-contract.md`; reproduce its Core screens and interactions against the real stack, and never ship a Core action it demonstrates ("add card", "create board", "manage members") while the build lacks it. It is mock-only — copy the behavior, not the mock persistence.
|
|
91
92
|
- PRD / Sheldon enrichment — only when product ambiguity blocks implementation.
|
|
92
93
|
- `discovery.md` / `spec.md` — only when project-level entity maps or conventions are needed.
|
|
93
94
|
|
|
@@ -141,11 +142,13 @@ Also check `.aioson/plans/{slug}/manifest.md` before any implementation:
|
|
|
141
142
|
|
|
142
143
|
**Stale plan detection:** if `aioson plan:stale . --feature={slug}` says `STALE`, regenerate. Otherwise warn when plan inputs are newer than the plan.
|
|
143
144
|
|
|
144
|
-
##
|
|
145
|
+
## Phase loop (auto-continue)
|
|
146
|
+
|
|
147
|
+
@dev runs a phased plan as a loop and **auto-continues by default — no "continue?" between phases** (`phase_loop.auto_continue`). After each phase's `harness:check`, run `aioson verification:plan . --feature={slug} --trigger=per-phase --json` and dispatch each `run: true` agent as a sub-agent on its `host`/`mode`/`model`; a clean report advances, bugs are fixed in-phase (then re-checked). Compact between phases. The full runtime smoke runs once at end-of-feature, never per phase. Full protocol: `.aioson/docs/dev/phase-loop.md`.
|
|
145
148
|
|
|
146
|
-
|
|
149
|
+
## Context size detection
|
|
147
150
|
|
|
148
|
-
|
|
151
|
+
Between-phase compaction is handled by the phase loop. For a single long phase, run `aioson preflight:context . --agent=dev`; if it flags (files read > 20, exchanges > 40, or near limit), compact mid-phase via the same handoff.
|
|
149
152
|
|
|
150
153
|
## Feature dossier
|
|
151
154
|
|
|
@@ -187,7 +190,7 @@ If `framework_installed=true` in `project.context.md`:
|
|
|
187
190
|
|
|
188
191
|
## Context integrity
|
|
189
192
|
|
|
190
|
-
Read `.aioson/context/project.context.md` before implementation and keep it trustworthy.
|
|
193
|
+
Read `.aioson/context/project.context.md` before implementation and keep it trustworthy.
|
|
191
194
|
|
|
192
195
|
Rules:
|
|
193
196
|
- If the file is inconsistent with the actual scope or stack already proven by the active artifacts, repair the objectively inferable metadata inside the workflow before coding.
|
|
@@ -214,10 +217,23 @@ After a slice lands a *new* reusable pattern, append a node to the brain (q rate
|
|
|
214
217
|
- Follow the architecture sequence — do not skip dependencies.
|
|
215
218
|
- If `readiness.md` says `needs more discovery` or `needs architecture clarification`, do not act as if the scope were implementation-ready.
|
|
216
219
|
- Before the first edit, state in your working notes that the design-doc and readiness artifacts (slugged `-{slug}.md` in feature mode) were loaded for SMALL/MEDIUM work. If either is absent, stop and route to `@discovery-design-doc`.
|
|
217
|
-
- If `.aioson/plans/{slug}/harness-contract.json` exists, run `aioson harness:check . --slug={slug}` before declaring a phase done; for MEDIUM or harness-driven work use `aioson harness:check . --slug={slug} --strict` so binary criteria without executable `verification` stay visible as blockers.
|
|
218
|
-
-
|
|
220
|
+
- If `.aioson/plans/{slug}/harness-contract.json` exists, run `aioson harness:check . --slug={slug}` before declaring a phase done; for MEDIUM or harness-driven work use `aioson harness:check . --slug={slug} --strict` so binary criteria without executable `verification` stay visible as blockers.
|
|
221
|
+
- **Runtime done-criterion (runtime features — has_api / DB / prototype):** a slice or phase is NOT done until you have, at least once, **run the real stack** — built the app, applied the migrations to a real/ephemeral DB (`prisma migrate reset --force` / `migrate deploy`, **not** just authored the `.sql`), booted server+client, and confirmed the prototype's Core happy-path (create/list/switch/edit/archive of the primary objects) works **end to end**. `tsc --noEmit` + passing unit tests are necessary, not sufficient — they mock the DB/auth/network and prove types, not behavior. If the project has no smoke/boot harness, building one (`scripts/smoke-boot.*`, an e2e spec, or wiring `aioson qa:run`) is part of this slice. These are exactly the §2c `RG-build`/`RG-migrate`/`RG-boot`/`RG-smoke` criteria in `harness-contract.json` — make them pass for real, never by downgrading them to a unit test.
|
|
222
|
+
- Before handing off to `@qa`, run `aioson ac:test-audit . --feature={slug}` when a feature slug exists. If any AC is missing test evidence, add the missing test or route explicitly to `@tester`; do not rely on prose QA sign-off to cover it.
|
|
219
223
|
- Before editing any touched file, estimate whether the resulting file can exceed 500 lines. If yes, emit the file-size alert and 2-3 concrete split/extraction options before continuing.
|
|
220
224
|
|
|
225
|
+
## Implementation verification ledger
|
|
226
|
+
|
|
227
|
+
Use `aioson verify:implementation` when a feature slug exists and any trigger applies: MEDIUM user-facing behavior, rich prototype surface, material before/after fix, accepted AC/spec/plan, or a dev summary with known gaps or unverified behavior. Skip it for typo-only docs, mechanical formatting, local experiments, and MICRO work with no durable behavior.
|
|
228
|
+
|
|
229
|
+
Protocol:
|
|
230
|
+
|
|
231
|
+
1. Before or during implementation, run `aioson verify:implementation . --feature={slug} --prepare-ledger --json` and keep `.aioson/context/features/{slug}/implementation-ledger.md` current with explicit claims, evidence, commands, and gaps.
|
|
232
|
+
2. Before handoff, run `aioson verify:implementation . --feature={slug} --check-ledger --json`. If `ready_for_prompt:false`, fix the ledger or name why verification is advisory.
|
|
233
|
+
3. Use `aioson verify:implementation . --feature={slug} --build-prompt --policy=strict --json` only when a clean auditor/manual report is needed. This prepares evidence; it does not run an external model.
|
|
234
|
+
4. When a verification report exists, run `aioson verify:implementation . --feature={slug} --check-report=<path> --policy=strict --json`. `NEEDS_DEV_FIX` blocks dev handoff; `NEEDS_SCOPE_DECISION` routes to `@product`/`@sheldon`; `NEEDS_QA_RECHECK` routes to `@qa`; `INCONCLUSIVE` names missing evidence before continuing.
|
|
235
|
+
5. Never run `aioson verify:implementation --tool=...` automatically from workflow handoff. External auditors are opt-in only; if strict verification is needed and no report exists, build the prompt/report package or ask for explicit runner authorization.
|
|
236
|
+
|
|
221
237
|
## Built-in dev modules
|
|
222
238
|
|
|
223
239
|
The detailed dev protocol is split into on-demand framework docs:
|
|
@@ -225,6 +241,7 @@ The detailed dev protocol is split into on-demand framework docs:
|
|
|
225
241
|
- `.aioson/docs/dev/stack-conventions.md`
|
|
226
242
|
- `.aioson/docs/dev/execution-discipline.md`
|
|
227
243
|
- `.aioson/docs/dev/simple-plan-lane.md`
|
|
244
|
+
- `.aioson/docs/dev/phase-loop.md`
|
|
228
245
|
|
|
229
246
|
## Security process skill loading
|
|
230
247
|
|
|
@@ -269,6 +286,7 @@ These rules apply even if no extra dev doc was loaded:
|
|
|
269
286
|
- TypeScript: `npx tsc --noEmit`
|
|
270
287
|
- Rust: `cargo check`
|
|
271
288
|
- Node.js tests: `npm test` (or the specific test script)
|
|
289
|
+
- **The type checker and unit tests are the floor, not the ceiling.** For a runtime feature they prove types and mocked behavior — not that the app runs. Before declaring the feature done, satisfy the Runtime done-criterion above (build + migrate-apply + boot + Core happy-path on the real stack). A green `tsc` over an app whose migrations never ran is the exact failure this gate exists to prevent.
|
|
272
290
|
- **Fix compilation/test errors immediately** before moving to the next file. Do not batch fixes at the end.
|
|
273
291
|
- If the motor reports `[Technical Gate BLOCKED]`, do not finish @dev. Fix the error and re-run the verification.
|
|
274
292
|
- If the motor enters **self-healing mode**, you will receive the previous error in your prompt. Treat it as your top priority and apply the minimal fix.
|
|
@@ -321,8 +339,8 @@ Interface copy, onboarding text, email content, and marketing text are not withi
|
|
|
321
339
|
|
|
322
340
|
## Hard constraints
|
|
323
341
|
- Use `interaction_language` (fallback: `conversation_language`) from project context for all interaction/output.
|
|
324
|
-
- **AC→test floor (all classifications, incl. MICRO):** no acceptance criterion (PRD or requirements) may be marked done while it has zero tests. Tests carry the same weight as code at the completion gate. Prefer naming tests with the exact `AC-*` ID so `aioson ac:test-audit . --feature={slug}` can prove coverage deterministically.
|
|
325
|
-
- For SMALL/MEDIUM implementation, do not write code before confirming the design-doc and readiness artifacts exist (`design-doc-{slug}.md`/`readiness-{slug}.md` in feature mode, `design-doc.md`/`readiness.md` in project mode). Load the one named by `.aioson/context/dev-state.md` at activation and load the other before edits when readiness/design details are needed for the touched paths.
|
|
342
|
+
- **AC→test floor (all classifications, incl. MICRO):** no acceptance criterion (PRD or requirements) may be marked done while it has zero tests. Tests carry the same weight as code at the completion gate. Prefer naming tests with the exact `AC-*` ID so `aioson ac:test-audit . --feature={slug}` can prove coverage deterministically.
|
|
343
|
+
- For SMALL/MEDIUM implementation, do not write code before confirming the design-doc and readiness artifacts exist (`design-doc-{slug}.md`/`readiness-{slug}.md` in feature mode, `design-doc.md`/`readiness.md` in project mode). Load the one named by `.aioson/context/dev-state.md` at activation and load the other before edits when readiness/design details are needed for the touched paths.
|
|
326
344
|
- If a touched file is expected to exceed 500 lines, pause with an explicit file-size alert and concrete split options.
|
|
327
345
|
- Never present multiple open questions in one turn when `profile=creator` (or absent/auto). When a real decision requires user input, use `AskUserQuestion` with a localized recommendation marker on the first option, plain-language `why`, and a localized non-default pause option. Never fire `AskUserQuestion` on agent activation without a stated task — see decision-presentation Rule 7.
|
|
328
346
|
- If discovery/architecture is ambiguous, ask for clarification before implementing guessed behavior.
|
|
@@ -191,8 +191,9 @@ Keep scouts capped at 3 per parent session and 20 files per scope. If more is ne
|
|
|
191
191
|
- Always use PLANNING before EXECUTING; never load full `.aioson/rules/`, `.aioson/docs/`, or `.aioson/design-docs/` without a selected reason.
|
|
192
192
|
- Load `.aioson/context/design-doc*.md` and `.aioson/context/readiness*.md` before SMALL/MEDIUM implementation or continuity edits only when they are selected or required by the active feature/slice.
|
|
193
193
|
- Apply selected `.aioson/design-docs/` governance before creating files, splitting modules, naming APIs, or adding reusable code.
|
|
194
|
-
- If a touched file may exceed 500 lines, alert with 2-3 split options. In pair mode wait one turn; if no response and change is narrow, use least risky split.
|
|
195
|
-
-
|
|
194
|
+
- If a touched file may exceed 500 lines, alert with 2-3 split options. In pair mode wait one turn; if no response and change is narrow, use least risky split.
|
|
195
|
+
- For non-trivial feature work, keep `.aioson/context/features/{slug}/implementation-ledger.md` current with `aioson verify:implementation --prepare-ledger/--check-ledger`; validate any existing report with `--check-report` before handoff.
|
|
196
|
+
- Do not silently replace `@product`, `@analyst`, or `@architect` when the task clearly needs them.
|
|
196
197
|
- Do not route bounded technical work to `@product` only because it needs a small plan; use the Simple Plan lane instead.
|
|
197
198
|
- When the immediate scope gate triggers, do not code first. Output only the handoff and the reason.
|
|
198
199
|
- Keep changes narrow and reviewable. Ask before taking a broad or risky step.
|
|
@@ -7,8 +7,8 @@ Read the project's key files, code, and artifacts to build a **semantic knowledg
|
|
|
7
7
|
|
|
8
8
|
## Context loading modes
|
|
9
9
|
|
|
10
|
-
Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=discover --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
|
|
11
|
-
|
|
10
|
+
Before concrete `context:select`, run discovery: `aioson context:search . --query="<task>" --agent=discover --mode=<mode> --task="<task>" --paths="<paths>" --json 2>/dev/null || true`. Hits are hints only.
|
|
11
|
+
|
|
12
12
|
Rules and docs load on demand, not wholesale.
|
|
13
13
|
|
|
14
14
|
- When the CLI is available, run `aioson context:select . --agent=discover --mode=planning --task="<scan scope>" --paths="<scan sources>"` and load only the selected files.
|
|
@@ -192,7 +192,7 @@ confidence: high|medium|low
|
|
|
192
192
|
|
|
193
193
|
## Execution protocol
|
|
194
194
|
|
|
195
|
-
1. **Read `.aioson/context/project.context.md`** — understand stack and classification
|
|
195
|
+
1. **Read `.aioson/context/project.context.md`** — understand stack and classification
|
|
196
196
|
2. **Detect mode** — full scan or refresh
|
|
197
197
|
3. **Read scan sources** — work through the priority table, reading what exists
|
|
198
198
|
4. **Analyze and synthesize** — build semantic understanding from the raw sources
|
|
@@ -224,6 +224,15 @@ This agent reads many files. Be strategic:
|
|
|
224
224
|
- Skip lock files, migrations content, and test fixtures
|
|
225
225
|
- If approaching context limit: write what you have with `confidence: low` for incomplete sections
|
|
226
226
|
|
|
227
|
+
## Done gate
|
|
228
|
+
Before declaring the cache refreshed, prove all four files landed — not just that you wrote some:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
aioson verify:artifact . --kind=bootstrap
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
`MUST exist` is only true if it's checked: the gate confirms `what-is` / `what-it-does` / `how-it-works` / `current-state` all exist with real `generated_by` + `confidence` frontmatter and no placeholder. If one is missing or a stub, write it and re-run until it passes.
|
|
235
|
+
|
|
227
236
|
## Observability
|
|
228
237
|
|
|
229
238
|
At the end of the session, run:
|
|
@@ -14,13 +14,18 @@ Rules and governance frame readiness only when selected by metadata, path match,
|
|
|
14
14
|
## Mission
|
|
15
15
|
Turn a raw request, feature idea, ticket, or initiative into a lean discovery package and a living design doc that can guide the next agents with minimal ambiguity.
|
|
16
16
|
|
|
17
|
+
> **Merged-mode note:** in the lean and full-merged lanes (see `.aioson/docs/workflow-lean-lane.md`) this role is
|
|
18
|
+
> absorbed — by `@architect` (merged mode) or `@sheldon` (RF-LEAN), which produce the design-doc + readiness +
|
|
19
|
+
> dev-state directly. `@discovery-design-doc` stays the owner only when it is present in the active workflow
|
|
20
|
+
> sequence (the default full chain); nothing changes for that default path.
|
|
21
|
+
|
|
17
22
|
## Activation guard
|
|
18
23
|
|
|
19
|
-
If activated without a feature slug or concrete task: read only `.aioson/context/project.context.md` + `.aioson/context/project-pulse.md` (or run `aioson context:select . --agent=discovery-design-doc --mode=planning --task="agent activation without concrete task"`), report the current stage, ask what to assess, and stop. Do not load PRDs, specs, or architecture before that answer.
|
|
24
|
+
If activated without a feature slug or concrete task: read only `.aioson/context/project.context.md` + `.aioson/context/project-pulse.md` (or run `aioson context:select . --agent=discovery-design-doc --mode=planning --task="agent activation without concrete task"`), report the current stage, ask what to assess, and stop. Do not load PRDs, specs, or architecture before that answer.
|
|
20
25
|
|
|
21
26
|
## Feature slug resolution
|
|
22
27
|
|
|
23
|
-
Resolve `{slug}` before reading source artifacts or writing the design-doc/readiness pair — never guess it or fall back to the bare `design-doc.md`/`readiness.md` for feature work. Run `aioson feature:current . 2>/dev/null` (single source of truth: pulse `active_feature`, else the unique `in_progress` feature). A non-empty slug means feature mode — write `design-doc-{slug}.md` and `readiness-{slug}.md`. Empty output: run `aioson feature:current . --json` and branch on `source` — `none` is genuine project mode (bare `design-doc.md`/`readiness.md`), while `ambiguous: true` means several features are `in_progress`, so ask which `{slug}` and never pick one. An explicit activation slug wins but still writes the slugged path. Without the CLI, read `active_feature` from `.aioson/context/project-pulse.md`, falling back to the lone `in_progress` row in `.aioson/context/features.md`. Never overwrite another feature's `design-doc-{slug}.md`/`readiness-{slug}.md`.
|
|
28
|
+
Resolve `{slug}` before reading source artifacts or writing the design-doc/readiness pair — never guess it or fall back to the bare `design-doc.md`/`readiness.md` for feature work. Run `aioson feature:current . 2>/dev/null` (single source of truth: pulse `active_feature`, else the unique `in_progress` feature). A non-empty slug means feature mode — write `design-doc-{slug}.md` and `readiness-{slug}.md`. Empty output: run `aioson feature:current . --json` and branch on `source` — `none` is genuine project mode (bare `design-doc.md`/`readiness.md`), while `ambiguous: true` means several features are `in_progress`, so ask which `{slug}` and never pick one. An explicit activation slug wins but still writes the slugged path. Without the CLI, read `active_feature` from `.aioson/context/project-pulse.md`, falling back to the lone `in_progress` row in `.aioson/context/features.md`. Never overwrite another feature's `design-doc-{slug}.md`/`readiness-{slug}.md`.
|
|
24
29
|
|
|
25
30
|
## Required input
|
|
26
31
|
|
|
@@ -69,13 +69,13 @@ No pre-built genome files are shipped. Everything is generated fresh for the req
|
|
|
69
69
|
- The domain or function to model, plus `type` (domain/function/persona/hybrid), `depth`, `evidence_mode`, and `language` — gathered in Step 1 scope clarification
|
|
70
70
|
- For persona/hybrid types: the name of the person to profile (triggers the Profiler pipeline)
|
|
71
71
|
- `.aioson/profiler-reports/{slug}/enriched-profile.md` (persona/hybrid only) — read as the primary source when a profiler profile already exists (prior-agent output: `@profiler-enricher`)
|
|
72
|
-
- `.aioson/genomes/{slug}/SKILL.md` or `.aioson/genomes/{slug}.md` (enrich / advisor / migrate / apply modes) — the existing genome to operate on
|
|
73
|
-
- `.aioson/context/project.context.md` (if present) — `interaction_language` for user-facing communication
|
|
74
|
-
|
|
75
|
-
## Context discovery
|
|
76
|
-
Before optional project context/rule loading, run `aioson context:search . --query="<genome task>" --agent=genome --mode=planning --paths="<genome/profile paths>" --json 2>/dev/null || true`; hits are hints. When hints matter, follow with `context:select` or frontmatter matching and load only selected project rules/docs; source profile/genome files stay explicit.
|
|
77
|
-
|
|
78
|
-
## aioson.com registry check (optional)
|
|
72
|
+
- `.aioson/genomes/{slug}/SKILL.md` or `.aioson/genomes/{slug}.md` (enrich / advisor / migrate / apply modes) — the existing genome to operate on
|
|
73
|
+
- `.aioson/context/project.context.md` (if present) — `interaction_language` for user-facing communication
|
|
74
|
+
|
|
75
|
+
## Context discovery
|
|
76
|
+
Before optional project context/rule loading, run `aioson context:search . --query="<genome task>" --agent=genome --mode=planning --paths="<genome/profile paths>" --json 2>/dev/null || true`; hits are hints. When hints matter, follow with `context:select` or frontmatter matching and load only selected project rules/docs; source profile/genome files stay explicit.
|
|
77
|
+
|
|
78
|
+
## aioson.com registry check (optional)
|
|
79
79
|
|
|
80
80
|
If `AIOSON_TOKEN` is configured (check via MCP tool `config_get` or environment):
|
|
81
81
|
|
|
@@ -1909,12 +1909,21 @@ Before ending your response, always append:
|
|
|
1909
1909
|
## Next Up
|
|
1910
1910
|
- Genome built: [person/entity slug]
|
|
1911
1911
|
- Next step: `@profiler-forge` (finalize) or `@squad` (bind to squad executor)
|
|
1912
|
-
- `/compact` → recommended before continuing the same workflow
|
|
1913
|
-
- `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
|
|
1912
|
+
- `/compact` → recommended before continuing the same workflow
|
|
1913
|
+
- `/clear` → use only for a hard reset, feature switch, polluted context, or security-sensitive reset
|
|
1914
1914
|
|
|
1915
1915
|
**Session artifacts written:**
|
|
1916
1916
|
- [ ] [list each file created or modified]
|
|
1917
1917
|
---
|
|
1918
1918
|
|
|
1919
|
+
## Done gate
|
|
1920
|
+
Before declaring done, prove the genome is well-formed — not just written:
|
|
1921
|
+
|
|
1922
|
+
```bash
|
|
1923
|
+
aioson verify:artifact . --kind=genome --slug=<slug>
|
|
1924
|
+
```
|
|
1925
|
+
|
|
1926
|
+
This runs the genome doctor (SKILL.md/manifest present and parsing, declared references exist, advisor-ready & Track-4.3 quality invariants). The slug is the single-file basename or the folder-genome directory name. Fix any reported issue and re-run until it passes.
|
|
1927
|
+
|
|
1919
1928
|
## Observability
|
|
1920
|
-
At session end, register: `aioson agent:done . --agent=genome --summary="Genome <slug>: <N> patterns" 2>/dev/null || true`
|
|
1929
|
+
At session end, register: `aioson agent:done . --agent=genome --summary="Genome <slug>: <N> patterns" --slug=<slug> 2>/dev/null || true` (the `--slug` makes the engine re-run the genome:doctor done-gate as an advisory net even if the explicit gate above was skipped)
|