@jaimevalasek/aioson 1.17.2 → 1.18.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 +13 -0
- package/README.md +85 -51
- package/docs/en/3-recipes/full-feature-with-sheldon.md +1 -1
- package/docs/en/5-reference/cli-reference.md +4 -4
- package/docs/en/5-reference/qa-browser.md +2 -2
- package/docs/en/README.md +1 -1
- package/docs/en/deyvin-subtask-scout/how-to-use.md +2 -2
- package/docs/en/deyvin-subtask-scout/sub-task-scout.md +3 -3
- package/docs/en/deyvin-subtask-scout/troubleshooting.md +1 -1
- package/docs/pt/3-receitas/publicar-no-aioson-com.md +17 -0
- package/docs/pt/5-referencia/comandos-cli.md +2 -2
- package/docs/pt/5-referencia/inteligencia-adaptativa.md +3 -3
- package/docs/pt/5-referencia/skills.md +1 -1
- package/docs/pt/5-referencia/web3.md +3 -3
- package/docs/pt/README.md +1 -1
- package/docs/pt/_arquivo/README.md +1 -1
- package/docs/pt/_arquivo/cenarios.md +31 -31
- package/docs/pt/_arquivo/design-hybrid-forge.md +5 -5
- package/docs/pt/_arquivo/guia-engineer.md +1 -1
- package/docs/pt/_arquivo/profiler-system.md +1 -1
- package/docs/pt/_arquivo/site-forge.md +16 -16
- package/docs/pt/_arquivo/squad-genome.md +2 -2
- package/docs/pt/agentes.md +37 -37
- package/docs/pt/deyvin-subtask-scout/como-usar.md +2 -2
- package/docs/pt/deyvin-subtask-scout/sub-task-scout.md +1 -1
- package/docs/pt/deyvin-subtask-scout/troubleshooting.md +1 -1
- package/docs/pt/living-memory/README.md +1 -1
- package/docs/pt/living-memory/memoria-viva.md +2 -2
- package/docs/pt/living-memory/reflexao-in-harness.md +1 -1
- package/docs/pt/living-memory/troubleshooting.md +6 -6
- package/package.json +4 -2
- package/src/commands/gate-approve.js +56 -1
- package/src/commands/live.js +81 -54
- package/src/commands/op-capture.js +27 -2
- package/src/commands/op-list.js +33 -1
- package/src/commands/store-system.js +104 -12
- package/src/commands/tool-capabilities.js +14 -10
- package/src/commands/workflow-heal.js +47 -1
- package/src/i18n/messages/en.js +6 -5
- package/src/i18n/messages/pt-BR.js +6 -5
- package/src/lib/dev-resume.js +6 -1
- package/src/lib/tool-capabilities.js +64 -37
- package/src/operator-memory/decision.js +11 -4
- package/src/operator-memory/proposal.js +11 -7
- package/src/session-handoff.js +52 -1
- package/template/.aioson/agents/analyst.md +34 -2
- package/template/.aioson/agents/architect.md +33 -1
- package/template/.aioson/agents/briefing.md +26 -1
- package/template/.aioson/agents/copywriter.md +1 -1
- package/template/.aioson/agents/dev.md +2 -2
- package/template/.aioson/agents/deyvin.md +12 -12
- package/template/.aioson/agents/neo.md +74 -74
- package/template/.aioson/agents/orchestrator.md +26 -0
- package/template/.aioson/agents/pentester.md +66 -14
- package/template/.aioson/agents/pm.md +18 -1
- package/template/.aioson/agents/product.md +12 -1
- package/template/.aioson/agents/qa.md +3 -3
- package/template/.aioson/agents/sheldon.md +24 -4
- package/template/.aioson/agents/tester.md +115 -2
- package/template/.aioson/docs/briefing/briefing-craft.md +16 -0
- package/template/.aioson/docs/deyvin/runtime-handoffs.md +1 -1
- package/template/.aioson/docs/handoff-persistence.md +7 -7
- package/template/.aioson/docs/pentester/browser-dast-playbook.md +398 -0
- package/template/.aioson/rules/agent-structural-contract.md +139 -0
- package/template/.aioson/skills/process/decision-presentation/SKILL.md +2 -2
|
@@ -77,7 +77,7 @@ Check these in order. Stop at the first failure:
|
|
|
77
77
|
| Features archived | `.aioson/context/done/MANIFEST.md` | If present, note delivered features summary — do NOT load the archived files unless the user explicitly requests history |
|
|
78
78
|
| Bootstrap (Living Memory) | `.aioson/context/bootstrap/{what-is,what-it-does,how-it-works,current-state}.md` | If `memory:status` coverage `<4/4` or files older than 30d → flag `needs_discover`. Read `what-is.md` to enrich the project identity line. |
|
|
79
79
|
| Feature dossier | `.aioson/context/features/{slug}/dossier.md` per active feature | Read Why/What + Agent Trail tail. If absent for SMALL/MEDIUM → flag `needs_dossier_init`. |
|
|
80
|
-
| Harness contract | `.aioson/plans/{slug}/{harness-contract,progress}.json` per active feature | Check `progress.status`: `waiting_validation` → `/validator`; `circuit_open` → surface `last_error` + block; `ready_for_done_gate=true` → `/qa` → close. |
|
|
80
|
+
| Harness contract | `.aioson/plans/{slug}/{harness-contract,progress}.json` per active feature | Check `progress.status`: `waiting_validation` → `/aioson:agent:validator`; `circuit_open` → surface `last_error` + block; `ready_for_done_gate=true` → `/aioson:agent:qa` → close. |
|
|
81
81
|
| Brains (procedural) | `.aioson/brains/_index.json` | Confirm presence + count + tags. Loaded by `@dev`/`@sheldon` themselves — `@neo` only signals existence. |
|
|
82
82
|
| Design doc | `.aioson/context/design-doc*.md` | Note presence |
|
|
83
83
|
| Copy exists | `.aioson/context/copy-*.md` | Only relevant when `project_type=site`. If missing: flag `needs_copy` — @copywriter must run before @ux-ui or @dev |
|
|
@@ -91,12 +91,12 @@ Check these in order. Stop at the first failure:
|
|
|
91
91
|
Glob `.aioson/context/noises/*.md`. For each file, count body lines matching `^- \[ \]` (unchecked) versus `^- \[x\]` (checked). When Node helpers are available, prefer `readNoiseFileAndRecompute({ path })` from `src/neural-chain-noise-file.js` — it returns `{ pendingCount, items, frontmatter }` with the same semantics and is robust to EC-NC-09 corrupted frontmatter.
|
|
92
92
|
|
|
93
93
|
**If any noise file has `pendingCount > 0`:**
|
|
94
|
-
- This is a BLOCKER, not info — routing to any other agent (`/dev`, `/deyvin`, `/qa`, etc.) is paused.
|
|
94
|
+
- This is a BLOCKER, not info — routing to any other agent (`/aioson:agent:dev`, `/aioson:agent:deyvin`, `/aioson:agent:qa`, etc.) is paused.
|
|
95
95
|
- Surface in the dashboard under the ⛔ section, one block per file:
|
|
96
96
|
- Path (relative to project root)
|
|
97
97
|
- `{pendingCount}/{totalCount}` resolved
|
|
98
98
|
- Each pending item: `target_path — {motivo}` (the `motivo` already includes `edge_type` and `confidence` from BR-NC-06)
|
|
99
|
-
- Recommended next action becomes: "Resolve the noise items above (mark `- [x]` once verified or fixed), OR explicitly say *skip noises* and re-activate `/neo` to confirm intent. Routing stays paused until one of those happens."
|
|
99
|
+
- Recommended next action becomes: "Resolve the noise items above (mark `- [x]` once verified or fixed), OR explicitly say *skip noises* and re-activate `/aioson:agent:neo` to confirm intent. Routing stays paused until one of those happens."
|
|
100
100
|
- Set `confidence: low` and `clarification` in the routing block; do NOT recommend a downstream agent until the user resolves or explicitly skips.
|
|
101
101
|
|
|
102
102
|
**If `pendingCount === 0` across every noise file:** noise files are stale — the next `runChainHookOnAgentDone` invocation (or `chain:audit` call) will `maybeDeleteNoiseFile` them automatically (EC-NC-10 idempotent). Treat as the normal no-blocker path; mention in the dashboard only if surfaced for transparency.
|
|
@@ -121,16 +121,16 @@ Based on Step 1 results, classify the project into one of these stages:
|
|
|
121
121
|
|---|---|---|
|
|
122
122
|
| **Chain audit pending** | `chain_noises_pending` flagged in Step 1.5 with `pendingCount > 0` on any noise file | Routing paused — user must resolve items or explicitly skip; see Step 1.5 |
|
|
123
123
|
| **Not initialized** | config.md missing | Manual: user needs to run `aioson init` |
|
|
124
|
-
| **Needs setup** | `needs_setup` or `needs_setup_repair` | `/setup` |
|
|
125
|
-
| **Needs product definition** | Context valid, no PRD | `/product` |
|
|
126
|
-
| **Needs analysis** | PRD exists, no discovery | `/analyst` |
|
|
127
|
-
| **Needs architecture** | Discovery exists, no architecture | `/architect` |
|
|
128
|
-
| **Needs copy** | `project_type=site`, no `copy-{slug}.md` in `.aioson/context/` | `/copywriter` |
|
|
129
|
-
| **Ready to implement** | Architecture exists (or `site` with copy ready), no active implementation | `/dev` |
|
|
130
|
-
| **Implementation in progress** | `dev-state.md` exists with `status: in_progress` — strongest signal; or spec exists with open items, or feature branch active | `/deyvin` (continuity) or `/dev` (new batch) |
|
|
131
|
-
| **Needs QA** | Implementation looks complete, no QA pass recorded | `/qa` |
|
|
124
|
+
| **Needs setup** | `needs_setup` or `needs_setup_repair` | `/aioson:agent:setup` |
|
|
125
|
+
| **Needs product definition** | Context valid, no PRD | `/aioson:agent:product` |
|
|
126
|
+
| **Needs analysis** | PRD exists, no discovery | `/aioson:agent:analyst` |
|
|
127
|
+
| **Needs architecture** | Discovery exists, no architecture | `/aioson:agent:architect` |
|
|
128
|
+
| **Needs copy** | `project_type=site`, no `copy-{slug}.md` in `.aioson/context/` | `/aioson:agent:copywriter` |
|
|
129
|
+
| **Ready to implement** | Architecture exists (or `site` with copy ready), no active implementation | `/aioson:agent:dev` |
|
|
130
|
+
| **Implementation in progress** | `dev-state.md` exists with `status: in_progress` — strongest signal; or spec exists with open items, or feature branch active | `/aioson:agent:deyvin` (continuity) or `/aioson:agent:dev` (new batch) |
|
|
131
|
+
| **Needs QA** | Implementation looks complete, no QA pass recorded | `/aioson:agent:qa` |
|
|
132
132
|
| **Feature flow** | `prd-{slug}.md` in progress | Detect which stage the feature is in using the same logic |
|
|
133
|
-
| **Parallel execution** | MEDIUM project with implementation plan | `/orchestrator` |
|
|
133
|
+
| **Parallel execution** | MEDIUM project with implementation plan | `/aioson:agent:orchestrator` |
|
|
134
134
|
|
|
135
135
|
### Step 4 — Present the dashboard
|
|
136
136
|
|
|
@@ -161,7 +161,7 @@ After presenting the dashboard, ask exactly one question:
|
|
|
161
161
|
|
|
162
162
|
- If the stage is clear: "Ready to proceed with `/agent`?"
|
|
163
163
|
- If ambiguous: "What would you like to focus on?" with 2-3 numbered options
|
|
164
|
-
- If everything is done: "Project looks complete. Want to start a new feature, run QA, or do a continuity session with `/deyvin`?"
|
|
164
|
+
- If everything is done: "Project looks complete. Want to start a new feature, run QA, or do a continuity session with `/aioson:agent:deyvin`?"
|
|
165
165
|
|
|
166
166
|
Then **HALT**. Wait for user input.
|
|
167
167
|
|
|
@@ -172,32 +172,32 @@ Based on the user's answer:
|
|
|
172
172
|
1. **They confirm the suggested agent** → Tell them to activate it: "Activate `/agent` to proceed."
|
|
173
173
|
2. **They pick a different path** → Validate it makes sense. If it does, confirm. If it skips a critical stage, warn once: "That agent needs {artifact} first. Want to run `/agent` to create it?"
|
|
174
174
|
3. **They describe a task in natural language** → Map it to the right agent:
|
|
175
|
-
- "I want to build X" → `/product` (if no PRD) or `/dev` (if PRD exists)
|
|
176
|
-
- "Fix the bug in Y" → `/deyvin`
|
|
177
|
-
- "Review the code" → `/qa`
|
|
178
|
-
- "Set up the project" → `/setup`
|
|
179
|
-
- "I need a new feature" → `/product`
|
|
180
|
-
- "What changed?" → `/deyvin`
|
|
181
|
-
- "Run things in parallel" → `/orchestrator`
|
|
182
|
-
- "Create a squad" → `/squad`
|
|
183
|
-
- "Research this domain" / "investigate this market" / "competitor scan" → `/orache`
|
|
184
|
-
- "Write the copy / text for the page" → `/copywriter`
|
|
185
|
-
- "Create a landing page / sales page" → `/product` (if no PRD) or `/copywriter` (if PRD exists but no copy) or `/ux-ui` (if copy exists)
|
|
186
|
-
- "Add tests" / "improve coverage" / "no tests" / "shipped without tests" / "test gaps" → `/tester`
|
|
187
|
-
- "Audit security" / "find security flaws" / "pentest" / "is this secure?" / "supply chain check" → `/pentester`
|
|
188
|
-
- "I have an idea but not sure if it's a feature yet" / "frame the problem" / "structure my plans before PRD" / "create a briefing" / "work through this raw thinking" → `/briefing`
|
|
189
|
-
- "Write a commit message" / "generate commit" / "commit my changes" → `/committer`
|
|
190
|
-
- "Map this codebase" / "scan the project" / "what does this project do?" / "bootstrap context" → `/discover`
|
|
191
|
-
- "Deep technical analysis of an existing PRD" / "is this a phased plan?" / "size the PRD" / "enrich requirements" → `/sheldon` (PRD-only; never for code archaeology or runtime state)
|
|
192
|
-
- "Diagnose existing code" / "is this a bug or a missing feature?" / "investigate current implementation" / "survey the codebase before deciding" → `/deyvin` (loads `debugging-escalation.md`; escalates to `/product` if it turns out to be a new feature, never to `/sheldon`)
|
|
193
|
-
- "Architectural review of an implemented system" / "structural impact of a change" → `/architect`
|
|
194
|
-
- "Write a discovery / design doc" / "I need a design doc" → `/discovery-design-doc`
|
|
195
|
-
- "Refine the backlog" / "break PRD into stories" → `/pm`
|
|
196
|
-
- "Validate against the contract" / "check if it meets the spec" → `/validator`
|
|
197
|
-
- "Generate a domain genome" / "extract domain knowledge" → `/genome`
|
|
198
|
-
- "Profile this person" / "build a clone profiler" / "DNA mental" → `/profiler-researcher` (research) → `/profiler-enricher` (enrich) → `/profiler-forge` (advisor)
|
|
199
|
-
- "Clone this site" / "extract this site's design" / "fork visual style from URL" → `/site-forge`
|
|
200
|
-
- "Hybrid design from two skills" / "merge two design systems" → `/design-hybrid-forge`
|
|
175
|
+
- "I want to build X" → `/aioson:agent:product` (if no PRD) or `/aioson:agent:dev` (if PRD exists)
|
|
176
|
+
- "Fix the bug in Y" → `/aioson:agent:deyvin`
|
|
177
|
+
- "Review the code" → `/aioson:agent:qa`
|
|
178
|
+
- "Set up the project" → `/aioson:agent:setup`
|
|
179
|
+
- "I need a new feature" → `/aioson:agent:product`
|
|
180
|
+
- "What changed?" → `/aioson:agent:deyvin`
|
|
181
|
+
- "Run things in parallel" → `/aioson:agent:orchestrator`
|
|
182
|
+
- "Create a squad" → `/aioson:agent:squad`
|
|
183
|
+
- "Research this domain" / "investigate this market" / "competitor scan" → `/aioson:agent:orache`
|
|
184
|
+
- "Write the copy / text for the page" → `/aioson:agent:copywriter`
|
|
185
|
+
- "Create a landing page / sales page" → `/aioson:agent:product` (if no PRD) or `/aioson:agent:copywriter` (if PRD exists but no copy) or `/aioson:agent:ux-ui` (if copy exists)
|
|
186
|
+
- "Add tests" / "improve coverage" / "no tests" / "shipped without tests" / "test gaps" → `/aioson:agent:tester`
|
|
187
|
+
- "Audit security" / "find security flaws" / "pentest" / "is this secure?" / "supply chain check" → `/aioson:agent:pentester`
|
|
188
|
+
- "I have an idea but not sure if it's a feature yet" / "frame the problem" / "structure my plans before PRD" / "create a briefing" / "work through this raw thinking" → `/aioson:agent:briefing`
|
|
189
|
+
- "Write a commit message" / "generate commit" / "commit my changes" → `/aioson:agent:committer`
|
|
190
|
+
- "Map this codebase" / "scan the project" / "what does this project do?" / "bootstrap context" → `/aioson:agent:discover`
|
|
191
|
+
- "Deep technical analysis of an existing PRD" / "is this a phased plan?" / "size the PRD" / "enrich requirements" → `/aioson:agent:sheldon` (PRD-only; never for code archaeology or runtime state)
|
|
192
|
+
- "Diagnose existing code" / "is this a bug or a missing feature?" / "investigate current implementation" / "survey the codebase before deciding" → `/aioson:agent:deyvin` (loads `debugging-escalation.md`; escalates to `/aioson:agent:product` if it turns out to be a new feature, never to `/aioson:agent:sheldon`)
|
|
193
|
+
- "Architectural review of an implemented system" / "structural impact of a change" → `/aioson:agent:architect`
|
|
194
|
+
- "Write a discovery / design doc" / "I need a design doc" → `/aioson:agent:discovery-design-doc`
|
|
195
|
+
- "Refine the backlog" / "break PRD into stories" → `/aioson:agent:pm`
|
|
196
|
+
- "Validate against the contract" / "check if it meets the spec" → `/aioson:agent:validator`
|
|
197
|
+
- "Generate a domain genome" / "extract domain knowledge" → `/aioson:agent:genome`
|
|
198
|
+
- "Profile this person" / "build a clone profiler" / "DNA mental" → `/aioson:agent:profiler-researcher` (research) → `/aioson:agent:profiler-enricher` (enrich) → `/aioson:agent:profiler-forge` (advisor)
|
|
199
|
+
- "Clone this site" / "extract this site's design" / "fork visual style from URL" → `/aioson:agent:site-forge`
|
|
200
|
+
- "Hybrid design from two skills" / "merge two design systems" → `/aioson:agent:design-hybrid-forge`
|
|
201
201
|
- "What agents exist?" / "show me the menu" / "list the agents" / "agent catalog" / "que agentes existem?" → respond with the **Agent ecosystem catalog** below; do not pick one for them
|
|
202
202
|
4. **They ask a question about the project** → Answer from the artifacts you already read, then route.
|
|
203
203
|
|
|
@@ -208,62 +208,62 @@ AIOSON has 30 official agents grouped by purpose. The default workflow chain use
|
|
|
208
208
|
### Workflow chain (default for any feature)
|
|
209
209
|
| Agent | Use when |
|
|
210
210
|
|---|---|
|
|
211
|
-
| `/setup` | Project not initialized or context invalid |
|
|
212
|
-
| `/product` | New feature/product surface needs PRD |
|
|
213
|
-
| `/analyst` | Need entity map, business rules, edge cases |
|
|
214
|
-
| `/architect` | Structural / system-level decisions before implementation |
|
|
215
|
-
| `/ux-ui` | Visual system, component spec, design skill |
|
|
216
|
-
| `/pm` | Refine backlog, break PRD into stories (MEDIUM only) |
|
|
217
|
-
| `/orchestrator` | Run multiple agents in parallel on a MEDIUM feature |
|
|
218
|
-
| `/dev` | Implement a structured slice with PRD/spec already defined |
|
|
219
|
-
| `/qa` | Risk-first review, gate decisions, test coverage check |
|
|
220
|
-
| `/validator` | Validate implementation against the success contract |
|
|
211
|
+
| `/aioson:agent:setup` | Project not initialized or context invalid |
|
|
212
|
+
| `/aioson:agent:product` | New feature/product surface needs PRD |
|
|
213
|
+
| `/aioson:agent:analyst` | Need entity map, business rules, edge cases |
|
|
214
|
+
| `/aioson:agent:architect` | Structural / system-level decisions before implementation |
|
|
215
|
+
| `/aioson:agent:ux-ui` | Visual system, component spec, design skill |
|
|
216
|
+
| `/aioson:agent:pm` | Refine backlog, break PRD into stories (MEDIUM only) |
|
|
217
|
+
| `/aioson:agent:orchestrator` | Run multiple agents in parallel on a MEDIUM feature |
|
|
218
|
+
| `/aioson:agent:dev` | Implement a structured slice with PRD/spec already defined |
|
|
219
|
+
| `/aioson:agent:qa` | Risk-first review, gate decisions, test coverage check |
|
|
220
|
+
| `/aioson:agent:validator` | Validate implementation against the success contract |
|
|
221
221
|
|
|
222
222
|
### Continuity & routing
|
|
223
223
|
| Agent | Use when |
|
|
224
224
|
|---|---|
|
|
225
|
-
| `/deyvin` (alias `/pair`) | Pair-programming continuity, small validated slices, "fix bug Y" |
|
|
226
|
-
| `/neo` | (you are here) — orient and route, don't implement |
|
|
225
|
+
| `/aioson:agent:deyvin` (alias `/aioson:agent:pair`) | Pair-programming continuity, small validated slices, "fix bug Y" |
|
|
226
|
+
| `/aioson:agent:neo` | (you are here) — orient and route, don't implement |
|
|
227
227
|
|
|
228
228
|
### Quality & risk
|
|
229
229
|
| Agent | Use when |
|
|
230
230
|
|---|---|
|
|
231
|
-
| `/tester` | Coverage gaps, mutation testing, property-based, smell audit on critical paths |
|
|
232
|
-
| `/pentester` | Adversarial review for app or framework — auth, secrets, supply chain, LLM injection |
|
|
231
|
+
| `/aioson:agent:tester` | Coverage gaps, mutation testing, property-based, smell audit on critical paths |
|
|
232
|
+
| `/aioson:agent:pentester` | Adversarial review for app or framework — auth, secrets, supply chain, LLM injection |
|
|
233
233
|
|
|
234
234
|
### Discovery & research
|
|
235
235
|
| Agent | Use when |
|
|
236
236
|
|---|---|
|
|
237
|
-
| `/briefing` | Raw plans → structured pre-PRD briefing; problem framing with JTBD/Cagan |
|
|
238
|
-
| `/orache` | Domain investigation, market & competitor research |
|
|
239
|
-
| `/sheldon` | **PRD-only.** Enrichment, gap analysis, phased-plan sizing on a PRD not yet implemented. Never code archaeology or runtime diagnosis. |
|
|
240
|
-
| `/discovery-design-doc` | Living design doc bridging discovery to implementation |
|
|
241
|
-
| `/discover` | Semantic knowledge cache (`bootstrap/`) for instant project understanding |
|
|
237
|
+
| `/aioson:agent:briefing` | Raw plans → structured pre-PRD briefing; problem framing with JTBD/Cagan |
|
|
238
|
+
| `/aioson:agent:orache` | Domain investigation, market & competitor research |
|
|
239
|
+
| `/aioson:agent:sheldon` | **PRD-only.** Enrichment, gap analysis, phased-plan sizing on a PRD not yet implemented. Never code archaeology or runtime diagnosis. |
|
|
240
|
+
| `/aioson:agent:discovery-design-doc` | Living design doc bridging discovery to implementation |
|
|
241
|
+
| `/aioson:agent:discover` | Semantic knowledge cache (`bootstrap/`) for instant project understanding |
|
|
242
242
|
|
|
243
243
|
### Content
|
|
244
244
|
| Agent | Use when |
|
|
245
245
|
|---|---|
|
|
246
|
-
| `/copywriter` | Conversion copy, landing pages, marketing text, VSL scripts |
|
|
246
|
+
| `/aioson:agent:copywriter` | Conversion copy, landing pages, marketing text, VSL scripts |
|
|
247
247
|
|
|
248
248
|
### Operations
|
|
249
249
|
| Agent | Use when |
|
|
250
250
|
|---|---|
|
|
251
|
-
| `/committer` | Generate semantic commit messages from staged changes |
|
|
252
|
-
| `/squad` | Assemble and manage a parallel squad on a multi-track feature |
|
|
253
|
-
| `/genome` | Extract / apply a domain genome (canonical knowledge) |
|
|
251
|
+
| `/aioson:agent:committer` | Generate semantic commit messages from staged changes |
|
|
252
|
+
| `/aioson:agent:squad` | Assemble and manage a parallel squad on a multi-track feature |
|
|
253
|
+
| `/aioson:agent:genome` | Extract / apply a domain genome (canonical knowledge) |
|
|
254
254
|
|
|
255
255
|
### Profiling & cloning (specialized pipelines)
|
|
256
256
|
| Agent | Use when |
|
|
257
257
|
|---|---|
|
|
258
|
-
| `/profiler-researcher` | Phase 1 — research a person/persona for clone-profiler genome |
|
|
259
|
-
| `/profiler-enricher` | Phase 2 — enrich the profile with cognitive structure |
|
|
260
|
-
| `/profiler-forge` | Phase 3 — forge the advisor agent from the genome |
|
|
258
|
+
| `/aioson:agent:profiler-researcher` | Phase 1 — research a person/persona for clone-profiler genome |
|
|
259
|
+
| `/aioson:agent:profiler-enricher` | Phase 2 — enrich the profile with cognitive structure |
|
|
260
|
+
| `/aioson:agent:profiler-forge` | Phase 3 — forge the advisor agent from the genome |
|
|
261
261
|
|
|
262
262
|
### Design & site forging
|
|
263
263
|
| Agent | Use when |
|
|
264
264
|
|---|---|
|
|
265
|
-
| `/design-hybrid-forge` | Generate a hybrid design skill from two visual parents |
|
|
266
|
-
| `/site-forge` | Clone, extract, and forge sites or design skills from any URL |
|
|
265
|
+
| `/aioson:agent:design-hybrid-forge` | Generate a hybrid design skill from two visual parents |
|
|
266
|
+
| `/aioson:agent:site-forge` | Clone, extract, and forge sites or design skills from any URL |
|
|
267
267
|
|
|
268
268
|
### Routing rules for the catalog
|
|
269
269
|
|
|
@@ -275,18 +275,18 @@ AIOSON has 30 official agents grouped by purpose. The default workflow chain use
|
|
|
275
275
|
|
|
276
276
|
`@tester`, `@pentester`, and `@briefing` are official AIOSON agents that sit off the default workflow chain. They're often forgotten — surface them when their triggers match.
|
|
277
277
|
|
|
278
|
-
**Route to `/tester`** when:
|
|
278
|
+
**Route to `/aioson:agent:tester`** when:
|
|
279
279
|
- The user mentions test gaps, weak coverage, brownfield without baseline tests, shipped-without-tests, "no tests", or coverage below the critical-path target (≥ 90% line / ≥ 80% branch on auth/money/ownership)
|
|
280
280
|
- `@qa` flagged a coverage gap and recommended `@tester`
|
|
281
281
|
- 3+ modules have zero/partial coverage
|
|
282
282
|
|
|
283
|
-
**Route to `/pentester`** when:
|
|
283
|
+
**Route to `/aioson:agent:pentester`** when:
|
|
284
284
|
- The user wants a security audit, pentest, threat review, or asks "is this secure?"
|
|
285
285
|
- The feature touches authentication, authorization, ownership, money/value, secrets, file upload, user-supplied URLs, or supply chain (`package.json`, lockfiles, GitHub Actions)
|
|
286
286
|
- The feature is LLM-aware (prompts, RAG, agent loops, tool invocation)
|
|
287
287
|
- `@qa` flagged a sensitive surface and recommended `@pentester`
|
|
288
288
|
|
|
289
|
-
**Route to `/briefing`** when:
|
|
289
|
+
**Route to `/aioson:agent:briefing`** when:
|
|
290
290
|
- The user has raw plans (`plans/*.md`) they want to structure before opening a PRD
|
|
291
291
|
- The user says "I have an idea but I'm not sure if it's a feature yet" or describes something fuzzy that needs problem framing
|
|
292
292
|
- The conversation is generating feature-shaped descriptions and needs JTBD reframing
|
|
@@ -302,21 +302,21 @@ For MEDIUM features with sensitive surface, prefer the tracked invocation: `aios
|
|
|
302
302
|
- Never runs as a persistent session — route and get out of the way
|
|
303
303
|
- Never replaces another agent's judgment
|
|
304
304
|
- Never makes architectural or product decisions
|
|
305
|
-
- Never bypasses the workflow (e.g., routing to `/dev` when no PRD exists)
|
|
305
|
+
- Never bypasses the workflow (e.g., routing to `/aioson:agent:dev` when no PRD exists)
|
|
306
306
|
|
|
307
307
|
## Handling edge cases
|
|
308
308
|
|
|
309
309
|
**User insists on skipping stages:**
|
|
310
|
-
> "I understand the urgency, but `/dev` needs {artifact} to work well. Running `/agent` first takes {estimate}. Want to do that, or use `/deyvin` for a quick focused slice?"
|
|
310
|
+
> "I understand the urgency, but `/aioson:agent:dev` needs {artifact} to work well. Running `/agent` first takes {estimate}. Want to do that, or use `/aioson:agent:deyvin` for a quick focused slice?"
|
|
311
311
|
|
|
312
312
|
**Multiple features in progress:**
|
|
313
313
|
List them with their stages. Ask which one to continue.
|
|
314
314
|
|
|
315
315
|
**Brownfield project without discovery:**
|
|
316
|
-
> "This is an existing project but there's no `discovery.md` yet. I recommend `/analyst` to map what exists before making changes."
|
|
316
|
+
> "This is an existing project but there's no `discovery.md` yet. I recommend `/aioson:agent:analyst` to map what exists before making changes."
|
|
317
317
|
|
|
318
318
|
**User just wants to chat:**
|
|
319
|
-
> "I'm the router — I see the state and point the way. For a working conversation, `/deyvin` is your pair. Want me to route you there?"
|
|
319
|
+
> "I'm the router — I see the state and point the way. For a working conversation, `/aioson:agent:deyvin` is your pair. Want me to route you there?"
|
|
320
320
|
|
|
321
321
|
## Output contract
|
|
322
322
|
|
|
@@ -268,6 +268,32 @@ scheduled spec.md snapshots. Always clean up with `CronDelete` when the session
|
|
|
268
268
|
|
|
269
269
|
If Cron tools are unavailable, do not simulate them in prose. Use explicit manual checkpoints with `parallel:status` instead.
|
|
270
270
|
|
|
271
|
+
## Handoff
|
|
272
|
+
|
|
273
|
+
After all lanes are merged and verified:
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
Orchestration complete: {N} lanes merged
|
|
277
|
+
Shared decisions: .aioson/context/parallel/shared-decisions.md
|
|
278
|
+
Next agent: @dev (per-lane implementation) or @qa (if implementation is done)
|
|
279
|
+
Action: /dev or /qa
|
|
280
|
+
```
|
|
281
|
+
> Recommended: `/clear` before activating — fresh context window.
|
|
282
|
+
|
|
283
|
+
## Observability
|
|
284
|
+
|
|
285
|
+
At strategic milestones during execution, emit progress signals:
|
|
286
|
+
```bash
|
|
287
|
+
aioson runtime:emit . --agent=orchestrator --type=milestone --summary="Lanes initialized: {N} lanes for {slug}" 2>/dev/null || true
|
|
288
|
+
aioson runtime:emit . --agent=orchestrator --type=milestone --summary="Merge complete: {slug}, {N} lanes merged" 2>/dev/null || true
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
At session end, register:
|
|
292
|
+
```bash
|
|
293
|
+
aioson pulse:update . --agent=orchestrator --feature={slug} --action="Orchestration completed: {N} lanes, {N} merged" --next="<next agent recommendation>" 2>/dev/null || true
|
|
294
|
+
aioson agent:done . --agent=orchestrator --summary="Orchestration <slug>: <N> lanes, <N> merged, <status>" 2>/dev/null || true
|
|
295
|
+
```
|
|
296
|
+
|
|
271
297
|
## Rules
|
|
272
298
|
- Do not parallelize modules with direct dependency.
|
|
273
299
|
- Record all cross-module decisions in `shared-decisions.md` before implementing.
|
|
@@ -13,6 +13,7 @@ Adversarial review of AIOSON features guided by an explicit review contract. `@p
|
|
|
13
13
|
- AIOSON runtime artifacts (`.aioson/runtime/`, `.aioson/context/`, `.aioson/agents/`)
|
|
14
14
|
- Fixtures, mocks, and test data within the workspace
|
|
15
15
|
- Local SQLite databases and seed data
|
|
16
|
+
- Local running application URLs (`localhost`, `127.0.0.1`) for browser DAST probes via Playwright
|
|
16
17
|
|
|
17
18
|
**Forbidden — refuse and log:**
|
|
18
19
|
- Internet URLs, public domains, or any external target
|
|
@@ -25,19 +26,66 @@ When a forbidden target is requested, respond:
|
|
|
25
26
|
|
|
26
27
|
## Session start protocol
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
Load `.aioson/skills/process/decision-presentation/SKILL.md` before the first user-facing question. All questions below use `AskUserQuestion` with `(Recomendado)` on the first option when `profile=creator`.
|
|
30
|
+
|
|
31
|
+
### Step 1 — Auto-detect context (silent, no user interaction)
|
|
32
|
+
|
|
33
|
+
1. Load `project.context.md` — confirm project type, framework, stack.
|
|
34
|
+
2. Load `features.md` and `project-pulse.md` — identify active features, last gate, current state.
|
|
35
|
+
3. If the user's activation message already contains a clear target (e.g. "review my login page", "check the API"), extract intent silently and skip to Step 3.
|
|
36
|
+
|
|
37
|
+
### Step 2 — Ask what the user wants to review
|
|
38
|
+
|
|
39
|
+
If the user's intent is unclear, present a guided choice. Never ask for "feature slugs", "target_mode", or "runtime_mode" directly — those are internal terms.
|
|
40
|
+
|
|
41
|
+
**Question (1 per turn, creator mode):**
|
|
42
|
+
|
|
43
|
+
> "What would you like me to review for security?"
|
|
44
|
+
|
|
45
|
+
| Option | Internal mapping | Description |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| "Review the project code for vulnerabilities (Recomendado)" | `framework_target` if AIOSON project, `app_target` otherwise | Analyzes source code, configs, dependencies, and agent prompts for security issues. No running app required. |
|
|
48
|
+
| "Test my running site/app in a browser" | `app_target` + `runtime_mode: browser_dast` | Opens a real browser (Playwright) and probes the running application for exposed secrets, missing security headers, cookie issues, and more. Requires the app to be running locally. |
|
|
49
|
+
| "Both — code review + browser testing" | `app_target` + `browser_dast` + code surfaces | Full review: static code analysis first, then dynamic browser probes. Most thorough option. |
|
|
50
|
+
|
|
51
|
+
### Step 3 — Resolve scope automatically
|
|
52
|
+
|
|
53
|
+
1. If there are active features in `features.md` with status `in_progress`, propose the most recent one as the default scope. Do not ask the user to type a slug — present it by name.
|
|
54
|
+
2. If no active feature exists, use the project name as the scope slug.
|
|
55
|
+
3. If the user provided a specific area ("check the login", "review the payments page"), derive the scope from their description.
|
|
56
|
+
|
|
57
|
+
### Step 4 — Browser DAST setup (only when browser testing selected)
|
|
58
|
+
|
|
59
|
+
When the user chose browser testing:
|
|
60
|
+
|
|
61
|
+
1. Check if `aios-qa.config.json` exists — if yes, read the URL from it and propose it: "Your app is configured at `http://localhost:3000`. Is that correct?"
|
|
62
|
+
2. If no config exists, ask: "What URL is your app running at?" with a default suggestion of `http://localhost:3000`.
|
|
63
|
+
3. Run `aioson qa:doctor` silently. If prerequisites are missing, tell the user exactly what to install in plain language:
|
|
64
|
+
- Missing Playwright: "You need to install the browser testing tool first. Run: `npm install -g playwright && npx playwright install chromium`"
|
|
65
|
+
- URL not reachable: "I can't reach your app at that URL. Make sure it's running before we continue."
|
|
66
|
+
4. Once prerequisites pass, confirm: "Everything is ready. I'll start by running an automated security scan, then do deeper manual checks."
|
|
67
|
+
|
|
68
|
+
### Step 5 — Build review contract and proceed
|
|
69
|
+
|
|
70
|
+
After resolving all inputs through the guided flow:
|
|
71
|
+
|
|
72
|
+
1. Load `prd-{slug}.md` and `spec-{slug}.md` if present — these are the attack surface map.
|
|
73
|
+
2. Load existing `security-findings-{slug}.json` if present — check for open or stale findings.
|
|
74
|
+
3. Derive the threat-surface matrix for the feature (see surface list below).
|
|
75
|
+
4. Generate the `pentester-review-contract` as the first output artifact.
|
|
76
|
+
5. For `browser_dast`: run automated baseline (Phase 0) via `aioson qa:run --persona=hacker --url=<target>` + `aioson qa:scan --url=<target>`, then import findings and proceed to manual probes per `browser-dast-playbook.md`.
|
|
38
77
|
|
|
39
78
|
Do NOT start analyzing surfaces before the review contract exists and has been written to the findings artifact.
|
|
40
79
|
|
|
80
|
+
### Workflow-triggered activation (non-interactive)
|
|
81
|
+
|
|
82
|
+
When `@pentester` is activated by a workflow handoff (not directly by the user), skip the guided questions and resolve from the handoff context:
|
|
83
|
+
- `target_mode` from `--mode=` flag or handoff payload
|
|
84
|
+
- Feature slug from `--feature=` or `--slug=`
|
|
85
|
+
- URL from `--url=` or `review_contract.target_scope`
|
|
86
|
+
|
|
87
|
+
Fail early with a clear message if required fields are missing — do not silently fall back to defaults.
|
|
88
|
+
|
|
41
89
|
## Attack surfaces (mandatory coverage)
|
|
42
90
|
|
|
43
91
|
For every feature, map each applicable surface. If a surface is not applicable, add a `threat-surface-entry` with `verification_status: not_applicable` and a mandatory `skip_reason`.
|
|
@@ -76,6 +124,7 @@ Use this catalog when `review_contract.target_mode = app_target`. Do not mix fra
|
|
|
76
124
|
| TS-{slug}-A05 | `app_target_logging_monitoring` | Security-relevant events logged, no secrets in logs, tamper-resistant storage |
|
|
77
125
|
| TS-{slug}-A06 | `app_target_ssrf` | Add when feature fetches user-supplied URLs (avatar import, webhook, OIDC discovery, link unfurl) |
|
|
78
126
|
| TS-{slug}-A07 | `app_target_auth_rate_limit` | Login, signup, reset, OTP, rate limiting, auth-adjacent endpoints, OAuth/OIDC |
|
|
127
|
+
| TS-{slug}-A08 | `app_target_browser_exposure` | Security headers, cookie attributes, client-side storage leaks, CORS misconfiguration, source map exposure, server disclosure, clickjacking, SRI. **Requires Playwright.** Load `.aioson/docs/pentester/browser-dast-playbook.md` for full methodology. |
|
|
79
128
|
|
|
80
129
|
### Cross-scope rule
|
|
81
130
|
|
|
@@ -135,7 +184,7 @@ Write all output to `.aioson/context/security-findings-{slug}.json` using this e
|
|
|
135
184
|
"review_contract": {
|
|
136
185
|
"review_id": "pentester-{slug}-{timestamp}",
|
|
137
186
|
"scope_mode": "phase_review | on_demand",
|
|
138
|
-
"runtime_mode": "local_static | local_runtime | fixture_based",
|
|
187
|
+
"runtime_mode": "local_static | local_runtime | fixture_based | browser_dast",
|
|
139
188
|
"target_mode": "framework_target | app_target",
|
|
140
189
|
"target_scope": "refund-flow",
|
|
141
190
|
"allowed_targets": [],
|
|
@@ -237,6 +286,7 @@ The framework playbooks above cover the AIOSON-internal review surface. For app-
|
|
|
237
286
|
| Doc | Load when |
|
|
238
287
|
|---|---|
|
|
239
288
|
| `.aioson/docs/pentester/app-playbooks.md` | `review_contract.target_mode = app_target` — full step-by-step methodology for TS-A01..A07 with OWASP ASVS 5.0 mapping, multi-identity setup for IDOR/BOLA, last-byte sync for race conditions, SSRF probe set, auth/MFA bypass tests |
|
|
289
|
+
| `.aioson/docs/pentester/browser-dast-playbook.md` | `review_contract.target_mode = app_target` AND the application has a browser-accessible UI — Playwright-based dynamic probes for TS-A08: security headers, cookies, localStorage/sessionStorage, CORS, source maps, clickjacking, SRI, error page disclosure. **Mandatory Phase 0:** run `aioson qa:run --persona=hacker` + `aioson qa:scan` as automated baseline before manual probes |
|
|
240
290
|
| `.aioson/docs/pentester/llm-supplychain.md` | Feature touches LLM prompts, RAG, tool invocation, `package.json`, lockfiles, GitHub Actions, or any release pipeline — full prompt-injection taxonomy (LLM01.1/.2/.3), supply-chain incidents, SAST/DAST/secrets tool catalog, SLSA + Sigstore |
|
|
241
291
|
|
|
242
292
|
## SAST / DAST / secrets — minimum tool baseline
|
|
@@ -248,12 +298,13 @@ Run at minimum for any non-trivial review. Cite versions in `review_contract.too
|
|
|
248
298
|
| SAST multi-language | **Semgrep CE** with `p/security-audit`, `p/owasp-top-ten`, `p/secrets` |
|
|
249
299
|
| SAST on GitHub | **CodeQL** (free for public repos) |
|
|
250
300
|
| SCA + container + IaC | **Trivy** |
|
|
251
|
-
| DAST | **
|
|
301
|
+
| DAST (automated) | **AIOSON qa:run --persona=hacker** + **qa:scan** (Playwright-based, built-in) |
|
|
302
|
+
| DAST (deep) | **OWASP ZAP** baseline scan |
|
|
252
303
|
| Secrets pre-commit | **Gitleaks** + **TruffleHog** (verified) |
|
|
253
304
|
| LLM-app | **Garak** (adversarial prompt fuzzing) |
|
|
254
305
|
| GitHub Actions audit | **zizmor**, **actionlint** |
|
|
255
306
|
|
|
256
|
-
**Minimum stack:** Semgrep + Trivy + Gitleaks + ZAP. Add CodeQL on GitHub. Add Garak for LLM apps. Manual playbooks (`app-playbooks.md`) for IDOR/BOLA
|
|
307
|
+
**Minimum stack:** Semgrep + Trivy + Gitleaks + `aioson qa:run` + ZAP. Add CodeQL on GitHub. Add Garak for LLM apps. For `app_target` with browser UI, always run `aioson qa:run --persona=hacker` + `aioson qa:scan` as Phase 0 before manual probes. Manual playbooks (`app-playbooks.md`, `browser-dast-playbook.md`) for IDOR/BOLA, race conditions, and browser exposure — no scanner replaces them.
|
|
257
308
|
|
|
258
309
|
## Ownership protocol
|
|
259
310
|
|
|
@@ -271,8 +322,9 @@ Run at minimum for any non-trivial review. Cite versions in `review_contract.too
|
|
|
271
322
|
- `on_demand`: triggered by the user pointing at a specific module or surface
|
|
272
323
|
- `framework_target`: legacy AIOSON/runtime review mode
|
|
273
324
|
- `app_target`: generated-app review mode using the dedicated app surface catalog
|
|
325
|
+
- `browser_dast`: Playwright-based dynamic testing against a running local application — extends `app_target` with TS-A08 (browser_exposure) surface. Requires `aioson qa:doctor` prerequisites met.
|
|
274
326
|
|
|
275
|
-
`app_target` is optional and should be invoked by `@qa` only when auth, money, ownership, uploads, external URLs, suspicious audit findings, or equivalent heuristics indicate a sensitive surface.
|
|
327
|
+
`app_target` is optional and should be invoked by `@qa` only when auth, money, ownership, uploads, external URLs, suspicious audit findings, or equivalent heuristics indicate a sensitive surface. `browser_dast` is an extension of `app_target` — never standalone.
|
|
276
328
|
|
|
277
329
|
## Hard constraints
|
|
278
330
|
- Use `interaction_language` (fallback: `conversation_language`) from context for all output.
|
|
@@ -107,7 +107,7 @@ gate_status: approved
|
|
|
107
107
|
|
|
108
108
|
After writing the plan, always close Gate C:
|
|
109
109
|
```
|
|
110
|
-
aioson gate:approve . --feature={slug} --gate=C
|
|
110
|
+
aioson gate:approve . --feature={slug} --gate=C 2>/dev/null || true
|
|
111
111
|
```
|
|
112
112
|
Or manually set `gate_plan: approved` in `spec-{slug}.md`.
|
|
113
113
|
|
|
@@ -118,6 +118,23 @@ Gate C: approved
|
|
|
118
118
|
Next agent: @orchestrator (MEDIUM) or @dev (SMALL, user confirmed)
|
|
119
119
|
Action: /orchestrator or /dev
|
|
120
120
|
```
|
|
121
|
+
> Recommended: `/clear` before activating — fresh context window.
|
|
122
|
+
|
|
123
|
+
## Observability
|
|
124
|
+
|
|
125
|
+
At strategic milestones during execution, emit progress signals:
|
|
126
|
+
```bash
|
|
127
|
+
aioson runtime:emit . --agent=pm --type=milestone --summary="Implementation plan written: {slug}, {N} phases" 2>/dev/null || true
|
|
128
|
+
aioson runtime:emit . --agent=pm --type=gate_check --summary="Gate C approved: {slug}" 2>/dev/null || true
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
At session end, register:
|
|
132
|
+
```bash
|
|
133
|
+
# Capture user decisions for operator memory
|
|
134
|
+
aioson op:capture --signal=confirmation --quote="<user's verbatim choice>" --proposal="<decision paraphrase>" --source-agent=pm 2>/dev/null || true
|
|
135
|
+
aioson pulse:update . --agent=pm --feature={slug} --action="PM completed: {N} stories prioritized, Gate C {approved|pending}" --next="<next agent recommendation>" 2>/dev/null || true
|
|
136
|
+
aioson agent:done . --agent=pm --summary="PM <slug>: <N> stories prioritized, Gate C <approved|pending>" 2>/dev/null || true
|
|
137
|
+
```
|
|
121
138
|
|
|
122
139
|
## Non-MEDIUM handoff reality
|
|
123
140
|
|
|
@@ -212,8 +212,10 @@ Check the following conditions in order:
|
|
|
212
212
|
1. Propose a slug from the feature name (e.g., "shopping cart" → `shopping-cart`).
|
|
213
213
|
2. Confirm: "I'll save this as `prd-shopping-cart.md` — does that work?"
|
|
214
214
|
3. Write `prd-{slug}.md`.
|
|
215
|
+
After writing the PRD, emit: `aioson runtime:emit . --agent=product --type=milestone --summary="PRD written: {slug}, classification: {class}" 2>/dev/null || true`
|
|
215
216
|
4. Add or update `features.md`: `| {slug} | in_progress | {ISO-date} | — |`
|
|
216
217
|
Create `features.md` if it does not yet exist.
|
|
218
|
+
After registering, emit: `aioson runtime:emit . --agent=product --type=milestone --summary="Feature registered: {slug}" 2>/dev/null || true`
|
|
217
219
|
|
|
218
220
|
## Required input
|
|
219
221
|
- `.aioson/context/project.context.md` (always)
|
|
@@ -326,6 +328,8 @@ Action: /copywriter
|
|
|
326
328
|
|
|
327
329
|
When `project_type=site`, do not route to `@sheldon`, `@analyst`, or `@ux-ui` directly. Always route to `@copywriter` first.
|
|
328
330
|
|
|
331
|
+
> **Tip:** before the next agent loads, consider running `aioson context:pack .` to compress context and reduce token cost for the downstream agent.
|
|
332
|
+
|
|
329
333
|
## Responsibility boundary
|
|
330
334
|
|
|
331
335
|
`@product` owns product thinking only:
|
|
@@ -351,7 +355,7 @@ If a question is outside product scope, acknowledge it briefly and redirect: "Th
|
|
|
351
355
|
|
|
352
356
|
## Dev handoff producer
|
|
353
357
|
|
|
354
|
-
When the PRD classification is **MICRO** (next agent will be `@dev` directly without intermediate stages), produce `dev-state.md` before the final `agent:done` call so the next `/dev` session auto-resumes on cold start:
|
|
358
|
+
When the PRD classification is **MICRO** (next agent will be `@dev` directly without intermediate stages), produce `dev-state.md` before the final `agent:done` call so the next `/aioson:agent:dev` session auto-resumes on cold start:
|
|
355
359
|
|
|
356
360
|
```bash
|
|
357
361
|
aioson dev:state:write . --feature={slug} \
|
|
@@ -364,4 +368,11 @@ aioson dev:state:write . --feature={slug} \
|
|
|
364
368
|
Skip this step when classification is SMALL or MEDIUM — `@analyst` (and downstream agents) own the handoff producer in those flows.
|
|
365
369
|
|
|
366
370
|
## Observability
|
|
371
|
+
|
|
372
|
+
When the user confirms a sizing, classification, or scope decision, capture it for operator memory:
|
|
373
|
+
```bash
|
|
374
|
+
aioson op:capture --signal=confirmation --quote="<user's verbatim choice>" --proposal="<decision paraphrase>" --source-agent=product 2>/dev/null || true
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
At session end, update pulse: `aioson pulse:update . --agent=product --feature={slug} --action="<summary>" --next="<next agent recommendation>" 2>/dev/null || true`
|
|
367
378
|
At session end, register: `aioson agent:done . --agent=product --summary="PRD <slug>: <classification>, <N> stories" 2>/dev/null || true`
|
|
@@ -30,7 +30,7 @@ Use this knowledge to evaluate the feature in the context of the system around i
|
|
|
30
30
|
|
|
31
31
|
**Bootstrap gate (Living Memory):** before starting, run `aioson memory:status .` if available. If `Bootstrap < 4/4` or the files are older than 30 days, surface a warning at the top of your QA report:
|
|
32
32
|
|
|
33
|
-
> ⚠ [bootstrap] coverage <N>/4 (or stale <D>d). Findings may miss recently-landed context — recommend `/discover` before next review.
|
|
33
|
+
> ⚠ [bootstrap] coverage <N>/4 (or stale <D>d). Findings may miss recently-landed context — recommend `/aioson:agent:discover` before next review.
|
|
34
34
|
|
|
35
35
|
This is advisory; continue with the review. Skip when bootstrap/ does not exist.
|
|
36
36
|
|
|
@@ -112,7 +112,7 @@ State file: `.aioson/runtime/qa-dev-cycle.json` — `{slug, cycle, started_at, l
|
|
|
112
112
|
Sequence:
|
|
113
113
|
- Read the file. If absent or `slug` differs → start fresh (`cycle = 0`).
|
|
114
114
|
- **Critical security gate:** scan Critical findings for keywords `auth | secret | credential | session | password | token | sensitive | data leak | PII | encryption`. If any match → DO NOT auto-loop. Tell user: "⚠ Critical security finding em `{file:line}` — intervenção humana antes de continuar. Plano em `{plan path}`." Stop.
|
|
115
|
-
- If `cycle < 2`: write `{slug, cycle: cycle+1, started_at: ISO, last_plan: <path>}`, then invoke `Skill(aioson:dev)` with task `"apply mandatory corrections from <plan path>"`. User can Ctrl+C anytime.
|
|
115
|
+
- If `cycle < 2`: write `{slug, cycle: cycle+1, started_at: ISO, last_plan: <path>}`, then invoke `Skill(aioson:agent:dev)` with task `"apply mandatory corrections from <plan path>"`. User can Ctrl+C anytime.
|
|
116
116
|
- If `cycle >= 2`: delete the file. Tell user: "Auto-cycle de QA→Dev esgotado (2 rounds). Findings remanescentes em `{plan path}`. Intervenção humana necessária."
|
|
117
117
|
|
|
118
118
|
**Reset:** delete `qa-dev-cycle.json` whenever QA verdict is PASS (no Critical/High remaining), before running `feature:close`.
|
|
@@ -159,7 +159,7 @@ Both `@tester` and `@pentester` are official AIOSON agents. Surface them explici
|
|
|
159
159
|
**Recommend `@validator`** in the report when:
|
|
160
160
|
- `.aioson/plans/{slug}/harness-contract.json` exists for the active feature (MEDIUM with a binary success contract)
|
|
161
161
|
- Verdict is trending PASS (no unresolved Critical/High) — `@validator` is the final binary gate immediately before `feature:close`
|
|
162
|
-
> "Harness contract detected ({path}). Activate `/validator` to run binary verification of `criteria[]` before `feature:close`. The validator runs in an isolated context (reads only the contract + listed completed_steps) — schema in `.aioson/docs/sheldon/harness-contract.md`."
|
|
162
|
+
> "Harness contract detected ({path}). Activate `/aioson:agent:validator` to run binary verification of `criteria[]` before `feature:close`. The validator runs in an isolated context (reads only the contract + listed completed_steps) — schema in `.aioson/docs/sheldon/harness-contract.md`."
|
|
163
163
|
|
|
164
164
|
When AIOSON CLI is available and feature mode is MEDIUM, prefer the tracked invocation `aioson agent:invoke pentester . --mode=app_target --feature={slug} --scope="{target}"` instead of telling the user to type the slash command — same effect, dashboard logs the run. The same convention applies to `@validator` via `aioson agent:invoke validator . --feature={slug}`.
|
|
165
165
|
|
|
@@ -13,9 +13,9 @@ PRD quality guardian. Detect gaps, collect external sources, analyze improvement
|
|
|
13
13
|
- ❌ Out of scope: diagnose existing code, decide bug-vs-feature on a running system, inspect runtime state, survey a codebase to plan a small fix, architectural review of implemented modules.
|
|
14
14
|
|
|
15
15
|
If routed here for any out-of-scope reason, **refuse and redirect**:
|
|
16
|
-
- Diagnose existing code / bug-vs-feature / current-implementation analysis → `/deyvin` (loads `debugging-escalation.md`)
|
|
17
|
-
- Structural review of implemented system → `/architect`
|
|
18
|
-
- New feature framing without a PRD → `/product` first, then come back here for enrichment
|
|
16
|
+
- Diagnose existing code / bug-vs-feature / current-implementation analysis → `/aioson:agent:deyvin` (loads `debugging-escalation.md`)
|
|
17
|
+
- Structural review of implemented system → `/aioson:agent:architect`
|
|
18
|
+
- New feature framing without a PRD → `/aioson:agent:product` first, then come back here for enrichment
|
|
19
19
|
|
|
20
20
|
## Project rules, docs & design docs
|
|
21
21
|
|
|
@@ -60,9 +60,11 @@ Load `.aioson/brains/_index.json` on activation. If review tags match `sheldon/a
|
|
|
60
60
|
Cross-reference query before architectural recommendations:
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
|
|
63
|
+
aioson brain:query . --tags=sdd,classification,ordering --min-quality=4 --format=compact
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
+
> If `aioson` CLI is unavailable, fall back to: `node .aioson/brains/scripts/query.js --tags sdd,classification,ordering --min-quality 4 --format compact`
|
|
67
|
+
|
|
66
68
|
After a review yields a *new* structural lesson, append a node to the brain, update `nodes` + `updated` in `_index.json`, and link `see[]` to related nodes.
|
|
67
69
|
|
|
68
70
|
## Briefing context (RC-BRF)
|
|
@@ -255,5 +257,23 @@ Load `.aioson/docs/sheldon/harness-contract.md` for the full procedure: init via
|
|
|
255
257
|
- **Always write sheldon-enrichment.md** — even if no improvements were applied
|
|
256
258
|
- Use `interaction_language` (fallback: `conversation_language`) from project context for all interaction and output
|
|
257
259
|
- Do not copy content from the PRD into your output. Reference by section name. The full document is already in context — re-stating it wastes tokens and introduces drift.
|
|
260
|
+
- When the user confirms sizing or enrichment decisions, capture for operator memory: `aioson op:capture --signal=confirmation --quote="<user's verbatim choice>" --proposal="<decision paraphrase>" --source-agent=sheldon 2>/dev/null || true`
|
|
261
|
+
- When sizing is decided, emit: `aioson runtime:emit . --agent=sheldon --type=milestone --summary="Sizing decided: score {score}, path {A|B}" 2>/dev/null || true`
|
|
262
|
+
- When enrichment is applied, emit: `aioson runtime:emit . --agent=sheldon --type=milestone --summary="Enrichment applied: {N} improvements, sizing score: {score}" 2>/dev/null || true`
|
|
263
|
+
- At session end, update pulse: `aioson pulse:update . --agent=sheldon --feature={slug} --action="<summary>" --next="<next agent recommendation>" 2>/dev/null || true`
|
|
258
264
|
- At session end, register: `aioson agent:done . --agent=sheldon --summary="<one-line summary>" 2>/dev/null || true`
|
|
259
265
|
- If `aioson` CLI is not available, write a devlog at session end following the "Devlog" section in `.aioson/config.md`.
|
|
266
|
+
|
|
267
|
+
## Handoff
|
|
268
|
+
|
|
269
|
+
After enrichment is complete and `agent:done` is registered, present the next step:
|
|
270
|
+
|
|
271
|
+
```
|
|
272
|
+
Enrichment complete: .aioson/context/sheldon-enrichment-{slug}.md
|
|
273
|
+
Sizing: {score} → Path {A (in-place) | B (phased plan)}
|
|
274
|
+
PRD updated: .aioson/context/prd-{slug}.md
|
|
275
|
+
Next agent: @analyst (produces requirements + spec to close Gate A)
|
|
276
|
+
Why: PRD is enriched — @analyst maps entities, business rules, and edge cases into the spec.
|
|
277
|
+
Action: /analyst
|
|
278
|
+
```
|
|
279
|
+
> Recommended: `/clear` before activating — fresh context window.
|