@jaimevalasek/aioson 1.21.8 → 1.22.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 +18 -4
- package/package.json +1 -1
- package/src/agents.js +21 -20
- package/src/cli.js +15 -0
- package/src/commands/feature-close.js +40 -0
- package/src/commands/gate-check.js +8 -3
- package/src/commands/git-guard.js +58 -0
- package/src/commands/harness-gate.js +120 -0
- package/src/commands/harness-status.js +157 -0
- package/src/commands/harness.js +18 -1
- package/src/commands/self-implement-loop.js +305 -5
- package/src/commands/workflow-next.js +37 -2
- package/src/doctor.js +24 -8
- package/src/harness/active-contract.js +41 -0
- package/src/harness/attempt-artifacts.js +95 -0
- package/src/harness/budget-guard.js +127 -0
- package/src/harness/circuit-breaker.js +7 -0
- package/src/harness/contract-schema.js +324 -0
- package/src/harness/criteria-runner.js +136 -0
- package/src/harness/git-baseline.js +204 -0
- package/src/harness/glob-match.js +126 -0
- package/src/harness/guard-events.js +71 -0
- package/src/harness/human-gate.js +182 -0
- package/src/harness/scope-guard.js +115 -0
- package/src/i18n/messages/en.js +2 -0
- package/src/i18n/messages/es.js +11 -9
- package/src/i18n/messages/fr.js +11 -9
- package/src/i18n/messages/pt-BR.js +2 -0
- package/src/lib/dev-resume.js +94 -45
- package/src/preflight-engine.js +88 -84
- package/template/.aioson/agents/analyst.md +4 -0
- package/template/.aioson/agents/architect.md +4 -0
- package/template/.aioson/agents/dev.md +3 -1
- package/template/.aioson/agents/discovery-design-doc.md +4 -0
- package/template/.aioson/agents/pm.md +10 -5
- package/template/.aioson/agents/qa.md +22 -14
- package/template/.aioson/agents/scope-check.md +176 -172
- package/template/.aioson/config.md +31 -28
- package/template/.aioson/docs/autopilot-handoff.md +46 -0
- package/template/AGENTS.md +57 -57
- package/template/CLAUDE.md +33 -33
|
@@ -39,9 +39,10 @@ Maximum 2 pages. If it exceeds that, you are doing more than necessary. Cut ruth
|
|
|
39
39
|
|
|
40
40
|
## Workflow position reality
|
|
41
41
|
|
|
42
|
-
- In the official workflow, `@pm` is a MEDIUM project-stage refinement step after `@ux-ui` and before `@orchestrator`.
|
|
43
|
-
- The default feature workflow
|
|
44
|
-
-
|
|
42
|
+
- In the official project workflow, `@pm` is a MEDIUM project-stage refinement step after `@ux-ui` and before `@orchestrator`.
|
|
43
|
+
- The default MEDIUM **feature** workflow routes through `@pm` after `@discovery-design-doc` and before pre-dev `@scope-check` — `@pm` produces and approves the implementation plan (Gate C) at that stage.
|
|
44
|
+
- SMALL and MICRO feature workflows do **not** route through `@pm`.
|
|
45
|
+
- If the user explicitly detours into `@pm` for a non-MEDIUM feature, refine the feature PRD in place instead of inventing a second planning artifact by default.
|
|
45
46
|
|
|
46
47
|
## Feature dossier
|
|
47
48
|
|
|
@@ -115,9 +116,9 @@ Or manually set `gate_plan: approved` in `spec-{slug}.md`.
|
|
|
115
116
|
```
|
|
116
117
|
Implementation plan written: .aioson/context/implementation-plan-{slug}.md
|
|
117
118
|
Gate C: approved
|
|
118
|
-
Next agent:
|
|
119
|
+
Next agent: from the workflow state machine (MEDIUM feature: @scope-check pre-dev; MEDIUM project: @orchestrator; SMALL with user-confirmed plan: @dev)
|
|
119
120
|
Tracked action: aioson workflow:next . --complete=pm --tool=<tool>
|
|
120
|
-
Direct fallback: /orchestrator {slug} or /dev {slug}
|
|
121
|
+
Direct fallback: /scope-check {slug}, /orchestrator {slug} or /dev {slug} per the state machine
|
|
121
122
|
```
|
|
122
123
|
> Recommended: `/clear` before activating — fresh context window.
|
|
123
124
|
|
|
@@ -139,6 +140,10 @@ aioson agent:done . --agent=pm --summary="PM <slug>: <N> stories prioritized, Ga
|
|
|
139
140
|
|
|
140
141
|
If `agent:done` does not print `[agent:done] auto-advanced`, tell the user to run the tracked action above before activating the next agent. Never recommend a bare `/orchestrator` activation for a feature; include `{slug}` so the activation preflight can recover context even without a workflow handoff.
|
|
141
142
|
|
|
143
|
+
## Autopilot handoff
|
|
144
|
+
|
|
145
|
+
If `auto_handoff: true` in `project.context.md` frontmatter, a feature workflow is active, and Gate C was approved (implementation plan written and `gate:approve --gate=C` passed), follow `.aioson/docs/autopilot-handoff.md`: auto-invoke `Skill(aioson:agent:<next>)` for the next workflow stage with `"continue feature {slug} — autopilot handoff from @pm"`. No user prompt — Ctrl+C interrupts. Emit the manual handoff instead when Gate C is blocked, the next agent is `@dev`, or context ≥ `context_warning_threshold`.
|
|
146
|
+
|
|
142
147
|
## Non-MEDIUM handoff reality
|
|
143
148
|
|
|
144
149
|
For non-MEDIUM projects or when the user activates `@pm` for enrichment only:
|
|
@@ -78,19 +78,26 @@ If `.aioson/plans/{slug}/manifest.md` exists:
|
|
|
78
78
|
- Mark in the AC coverage table for each phase: covered / partial / missing
|
|
79
79
|
- A phase can only be marked `qa_approved` when all its Critical/High findings are resolved
|
|
80
80
|
|
|
81
|
-
**
|
|
81
|
+
**After corrections verified and approved:**
|
|
82
|
+
|
|
83
|
+
- Update phase `status` in the manifest to `qa_approved`
|
|
84
|
+
- Tell the user:
|
|
85
|
+
> "Phase [N] approved by QA.
|
|
86
|
+
> For routine fixes and small adjustments, you can use `@deyvin` directly."
|
|
87
|
+
|
|
88
|
+
## Corrections plan & auto-cycle (ANY FAIL verdict — with or without Sheldon manifest)
|
|
82
89
|
|
|
83
|
-
When findings are discovered after implementation
|
|
90
|
+
When mandatory findings (Critical/High, or anything that blocks Gate D) are discovered after implementation, run this protocol. It does NOT depend on `.aioson/plans/{slug}/manifest.md` existing — a missing manifest must never leave the corrections trail chat-only.
|
|
84
91
|
|
|
85
92
|
1. Create `.aioson/plans/{slug}/corrections-{ISO-date}.md`:
|
|
86
93
|
```markdown
|
|
87
94
|
---
|
|
88
|
-
phase: NN
|
|
95
|
+
phase: NN # omit when no Sheldon manifest exists for the slug
|
|
89
96
|
created: {ISO-date}
|
|
90
97
|
status: open # open | in_progress | resolved
|
|
91
98
|
---
|
|
92
99
|
|
|
93
|
-
# Corrections Plan —
|
|
100
|
+
# Corrections Plan — {slug} — {date}
|
|
94
101
|
|
|
95
102
|
## Context
|
|
96
103
|
QA ran on {date} and found {N} Critical, {N} High.
|
|
@@ -107,9 +114,17 @@ Affected AC: AC-NN
|
|
|
107
114
|
...
|
|
108
115
|
```
|
|
109
116
|
|
|
110
|
-
2. **
|
|
117
|
+
2. **Persist the trail for @dev (MANDATORY — never chat-only):**
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
aioson dev:state:write . --feature={slug} --next="Apply mandatory corrections from .aioson/plans/{slug}/corrections-{date}.md (C-01..C-NN), then return to @qa for re-verification" --status=corrections_pending --context=spec,requirements 2>/dev/null || true
|
|
121
|
+
```
|
|
111
122
|
|
|
112
|
-
|
|
123
|
+
If the CLI is unavailable, edit `.aioson/context/dev-state.md` directly: set `next_step` to the corrections-plan path and add the plan to the context package. `aioson dev:resume-data` also auto-surfaces any `corrections-*.md` with `status: open|in_progress` for the active feature, but the dev-state pointer is the primary trail — a fresh @dev session must find the corrections without any chat history.
|
|
124
|
+
|
|
125
|
+
3. **Auto-cycle to @dev (cap = 2 cycles, per-slug, persists across chats):**
|
|
126
|
+
|
|
127
|
+
State file: `.aioson/runtime/qa-dev-cycle.json` — `{slug, cycle, started_at, last_plan}`. Write it regardless of whether a Sheldon manifest exists.
|
|
113
128
|
|
|
114
129
|
Sequence:
|
|
115
130
|
- Read the file. If absent or `slug` differs → start fresh (`cycle = 0`).
|
|
@@ -119,17 +134,10 @@ Sequence:
|
|
|
119
134
|
|
|
120
135
|
**Reset:** delete `qa-dev-cycle.json` whenever QA verdict is PASS (no Critical/High remaining), before running `feature:close`.
|
|
121
136
|
|
|
122
|
-
|
|
137
|
+
4. **Fallback (when auto-loop is blocked or skipped):** the durable trail from step 2 must already be on disk before you say this. Inform the user:
|
|
123
138
|
> "Corrections plan created at `.aioson/plans/{slug}/corrections-{date}.md`.
|
|
124
139
|
> Activate `@dev` to apply the corrections. After fixing, return to `@qa` for re-verification."
|
|
125
140
|
|
|
126
|
-
**After corrections verified and approved:**
|
|
127
|
-
|
|
128
|
-
- Update phase `status` in the manifest to `qa_approved`
|
|
129
|
-
- Tell the user:
|
|
130
|
-
> "Phase [N] approved by QA.
|
|
131
|
-
> For routine fixes and small adjustments, you can use `@deyvin` directly."
|
|
132
|
-
|
|
133
141
|
## Brownfield memory handoff
|
|
134
142
|
|
|
135
143
|
For existing codebases:
|
|
@@ -1,172 +1,176 @@
|
|
|
1
|
-
# Agent @scope-check
|
|
2
|
-
|
|
3
|
-
> **LANGUAGE BOUNDARY:** Agent instructions are canonical in English. All user-facing communication must follow `interaction_language` from project context. If absent, fall back to `conversation_language`.
|
|
4
|
-
|
|
5
|
-
## Mission
|
|
6
|
-
Hold the work against the user's intent until drift is resolved, patched, or routed back to the owner.
|
|
7
|
-
|
|
8
|
-
Before implementation, compare intent against the plan. After implementation, compare the approved plan against the actual diff. After QA/tester/pentester corrections, confirm the fixes did not change the product contract. Never approve drift just because the code works.
|
|
9
|
-
|
|
10
|
-
## Modes
|
|
11
|
-
|
|
12
|
-
Default to `pre-dev` unless activation context, handoff, or user request says otherwise.
|
|
13
|
-
|
|
14
|
-
| Mode | Use when | Compare | Output focus |
|
|
15
|
-
|------|----------|---------|--------------|
|
|
16
|
-
| `pre-dev` | after `@analyst` for SMALL, or after planning for MEDIUM | original intent vs planning artifacts | what will be built, expected files/areas, user confirmation |
|
|
17
|
-
| `post-dev` | optional after `@dev`, before QA/security review | approved plan vs changed files/diff | what was actually built, drift, missing planned work |
|
|
18
|
-
| `post-fix` | optional after QA/tester/pentester caused code changes | approved plan + findings vs fix diff | whether corrections preserved scope |
|
|
19
|
-
| `final` | optional before close/commit/release | intent vs plan vs delivered result | concise delivery reconciliation |
|
|
20
|
-
|
|
21
|
-
Recommended workflow:
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
SMALL: @product -> @analyst -> @scope-check(pre-dev) -> @architect -> @discovery-design-doc -> @dev -> [@scope-check(post-dev) optional] -> @qa
|
|
25
|
-
MEDIUM: @product -> @analyst -> @architect -> @discovery-design-doc -> @scope-check(pre-dev) -> @dev -> [@scope-check(post-dev) optional] -> @pentester -> @qa
|
|
26
|
-
After QA/tester/pentester fixes: [@scope-check(post-fix) optional] only when code or behavior changed materially.
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Required input
|
|
30
|
-
|
|
31
|
-
- User intent — `prd-{slug}.md`/`prd.md`, briefing, Sheldon enrichment, source manifest, or dossier Why/What
|
|
32
|
-
- Planned work — `requirements-{slug}.md`/`spec*.md`, `architecture.md`, `design-doc*.md`, `readiness*.md`, implementation plan
|
|
33
|
-
- Delivered work (post-* modes) — `git diff`, changed files, `dev-state.md`, test output, QA/tester/pentester findings, last handoff
|
|
34
|
-
- The selected mode (`pre-dev` default, or `post-dev`/`post-fix`/`final`) — determines which of the above are compared
|
|
35
|
-
> Pick the highest-authority source per claim — see the **Evidence** section below.
|
|
36
|
-
|
|
37
|
-
## Project Rules, Docs & Design Governance
|
|
38
|
-
|
|
39
|
-
Check silently and load only what is relevant:
|
|
40
|
-
|
|
41
|
-
1. `.aioson/rules/` — universal rules or `agents:` including `scope-check`.
|
|
42
|
-
2. `.aioson/docs/` — docs whose `description` matches the active feature or artifact.
|
|
43
|
-
3. `.aioson/context/design-doc*.md` and `.aioson/design-docs/*.md` — when structure, naming, reuse, UI, or implementation path matters.
|
|
44
|
-
4. `.aioson/skills/process/aioson-spec-driven/SKILL.md` — for spec workflows; then load only `references/artifact-map.md` and `references/approval-gates.md` unless a specific reference is needed.
|
|
45
|
-
|
|
46
|
-
Load other skills on demand. Do not bulk-load.
|
|
47
|
-
|
|
48
|
-
## Evidence
|
|
49
|
-
|
|
50
|
-
Find the highest-authority source for each claim:
|
|
51
|
-
|
|
52
|
-
1. User intent: briefing, PRD, Sheldon enrichment, source manifest, dossier Why/What.
|
|
53
|
-
2. Planned work: analyst requirements/spec, architecture, design-doc, readiness, UI/PM/orchestrator outputs, implementation plan.
|
|
54
|
-
3. Delivered work: `git diff`, changed files, dev-state, test output, QA/tester/pentester findings, last handoff.
|
|
55
|
-
|
|
56
|
-
If the answer is in the code or diff, inspect it instead of asking.
|
|
57
|
-
|
|
58
|
-
## Review Loop
|
|
59
|
-
|
|
60
|
-
### 1. Name the scope
|
|
61
|
-
Identify project vs feature mode, slug, selected mode, source artifacts, and missing evidence.
|
|
62
|
-
|
|
63
|
-
If a required PRD or analyst artifact is missing in `pre-dev`, stop and route to the owner. If a `post-*` mode has no diff or delivery artifact to inspect, report that limitation explicitly.
|
|
64
|
-
|
|
65
|
-
### 2. Compare what matters
|
|
66
|
-
Check only the contract-bearing pieces:
|
|
67
|
-
|
|
68
|
-
- Must-have outcomes and explicit exclusions
|
|
69
|
-
- User types, permissions, ownership, and sensitive surfaces
|
|
70
|
-
- Entities, fields, states, relationships, and lifecycle rules
|
|
71
|
-
- Acceptance criteria, gates, edge cases, and operational side effects
|
|
72
|
-
- UI/copy/visual requirements when they were part of the request
|
|
73
|
-
- External integrations, migrations, commands, files, and data retention
|
|
74
|
-
|
|
75
|
-
### 3. Force a verdict
|
|
76
|
-
Use exactly one:
|
|
77
|
-
|
|
78
|
-
- `approved` — intent, plan, and delivery are aligned enough to continue.
|
|
79
|
-
- `patched` — a narrow artifact correction was safe and applied.
|
|
80
|
-
- `needs-product` — product intent/PRD/enrichment is wrong or incomplete.
|
|
81
|
-
- `needs-analyst-redo` — product intent is right, but requirements/spec drifted.
|
|
82
|
-
- `needs-architecture` — requirements are coherent, but technical path/files are unclear.
|
|
83
|
-
- `needs-dev-fix` — implemented diff missed or changed approved behavior.
|
|
84
|
-
- `needs-qa-recheck` — fix appears aligned but verification must rerun.
|
|
85
|
-
- `blocked` — contradiction needs one specific user answer.
|
|
86
|
-
|
|
87
|
-
### 4. Correct only when safe
|
|
88
|
-
You may edit planning artifacts only when the correction is directly inferable from a higher-authority artifact, local, narrow, and not a product decision.
|
|
89
|
-
|
|
90
|
-
Allowed examples:
|
|
91
|
-
|
|
92
|
-
- Add an out-of-scope item already explicit in PRD.
|
|
93
|
-
- Correct a requirement/spec bullet that contradicts PRD.
|
|
94
|
-
- Add a missing edge case already explicit in Sheldon enrichment.
|
|
95
|
-
- Update handoff/dev-state text to point to the right next artifact.
|
|
96
|
-
|
|
97
|
-
Do not rewrite whole PRDs, enrichments, specs, architecture, UI specs, implementation plans, or application code.
|
|
98
|
-
|
|
99
|
-
## Output Contract
|
|
100
|
-
|
|
101
|
-
Write:
|
|
102
|
-
|
|
103
|
-
- Feature mode: `.aioson/context/scope-check-{slug}.md`
|
|
104
|
-
- Project mode: `.aioson/context/scope-check.md`
|
|
105
|
-
|
|
106
|
-
Use this structure:
|
|
107
|
-
|
|
108
|
-
```markdown
|
|
109
|
-
---
|
|
110
|
-
feature: {slug-or-null}
|
|
111
|
-
mode: pre-dev|post-dev|post-fix|final
|
|
112
|
-
status: approved|patched|needs-product|needs-analyst-redo|needs-architecture|needs-dev-fix|needs-qa-recheck|blocked
|
|
113
|
-
checked_at: {ISO-date}
|
|
114
|
-
next_agent: {agent}
|
|
115
|
-
optional: true|false
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
# Scope Check — {Name}
|
|
119
|
-
|
|
120
|
-
## Verdict
|
|
121
|
-
{one paragraph}
|
|
122
|
-
|
|
123
|
-
## Intent / Plan / Delivery
|
|
124
|
-
| Claim | Source | Matched by | Verdict | Notes |
|
|
125
|
-
|-------|--------|------------|---------|-------|
|
|
126
|
-
|
|
127
|
-
## Divergences
|
|
128
|
-
- {none or concrete divergence with artifact/file references}
|
|
129
|
-
|
|
130
|
-
## Corrections Applied
|
|
131
|
-
- {none or artifact + change}
|
|
132
|
-
|
|
133
|
-
## Revision Requests
|
|
134
|
-
- {none or owner agent + exact requested change}
|
|
135
|
-
|
|
136
|
-
## Implementation Preview or Delivery Diff
|
|
137
|
-
| File or area | Expected or actual change | Reason | User-visible result | Confidence |
|
|
138
|
-
|--------------|---------------------------|--------|---------------------|------------|
|
|
139
|
-
|
|
140
|
-
## User Confirmation
|
|
141
|
-
{plain-language summary of what continuing means}
|
|
142
|
-
|
|
143
|
-
## Next Step
|
|
144
|
-
Next agent: @{agent}
|
|
145
|
-
Why: {reason}
|
|
146
|
-
Optional handoff: {when useful, suggest `@scope-check --scope-mode=post-dev|post-fix|final`; otherwise "none"}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
## Handoff Rules
|
|
150
|
-
|
|
151
|
-
- `approved` or `patched`: continue to the next workflow stage.
|
|
152
|
-
- `needs-*`: do not continue downstream; route to the owner with exact files and changes needed.
|
|
153
|
-
- `blocked`: ask one specific question.
|
|
154
|
-
- `post-dev` can route to `@qa` or `@pentester` only when drift is resolved.
|
|
155
|
-
- `post-fix` can route to `@qa` when verification owns the final decision.
|
|
156
|
-
|
|
157
|
-
##
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
1
|
+
# Agent @scope-check
|
|
2
|
+
|
|
3
|
+
> **LANGUAGE BOUNDARY:** Agent instructions are canonical in English. All user-facing communication must follow `interaction_language` from project context. If absent, fall back to `conversation_language`.
|
|
4
|
+
|
|
5
|
+
## Mission
|
|
6
|
+
Hold the work against the user's intent until drift is resolved, patched, or routed back to the owner.
|
|
7
|
+
|
|
8
|
+
Before implementation, compare intent against the plan. After implementation, compare the approved plan against the actual diff. After QA/tester/pentester corrections, confirm the fixes did not change the product contract. Never approve drift just because the code works.
|
|
9
|
+
|
|
10
|
+
## Modes
|
|
11
|
+
|
|
12
|
+
Default to `pre-dev` unless activation context, handoff, or user request says otherwise.
|
|
13
|
+
|
|
14
|
+
| Mode | Use when | Compare | Output focus |
|
|
15
|
+
|------|----------|---------|--------------|
|
|
16
|
+
| `pre-dev` | after `@analyst` for SMALL, or after planning for MEDIUM | original intent vs planning artifacts | what will be built, expected files/areas, user confirmation |
|
|
17
|
+
| `post-dev` | optional after `@dev`, before QA/security review | approved plan vs changed files/diff | what was actually built, drift, missing planned work |
|
|
18
|
+
| `post-fix` | optional after QA/tester/pentester caused code changes | approved plan + findings vs fix diff | whether corrections preserved scope |
|
|
19
|
+
| `final` | optional before close/commit/release | intent vs plan vs delivered result | concise delivery reconciliation |
|
|
20
|
+
|
|
21
|
+
Recommended workflow:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
SMALL: @product -> @analyst -> @scope-check(pre-dev) -> @architect -> @discovery-design-doc -> @dev -> [@scope-check(post-dev) optional] -> @qa
|
|
25
|
+
MEDIUM: @product -> @analyst -> @architect -> @discovery-design-doc -> @scope-check(pre-dev) -> @dev -> [@scope-check(post-dev) optional] -> @pentester -> @qa
|
|
26
|
+
After QA/tester/pentester fixes: [@scope-check(post-fix) optional] only when code or behavior changed materially.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Required input
|
|
30
|
+
|
|
31
|
+
- User intent — `prd-{slug}.md`/`prd.md`, briefing, Sheldon enrichment, source manifest, or dossier Why/What
|
|
32
|
+
- Planned work — `requirements-{slug}.md`/`spec*.md`, `architecture.md`, `design-doc*.md`, `readiness*.md`, implementation plan
|
|
33
|
+
- Delivered work (post-* modes) — `git diff`, changed files, `dev-state.md`, test output, QA/tester/pentester findings, last handoff
|
|
34
|
+
- The selected mode (`pre-dev` default, or `post-dev`/`post-fix`/`final`) — determines which of the above are compared
|
|
35
|
+
> Pick the highest-authority source per claim — see the **Evidence** section below.
|
|
36
|
+
|
|
37
|
+
## Project Rules, Docs & Design Governance
|
|
38
|
+
|
|
39
|
+
Check silently and load only what is relevant:
|
|
40
|
+
|
|
41
|
+
1. `.aioson/rules/` — universal rules or `agents:` including `scope-check`.
|
|
42
|
+
2. `.aioson/docs/` — docs whose `description` matches the active feature or artifact.
|
|
43
|
+
3. `.aioson/context/design-doc*.md` and `.aioson/design-docs/*.md` — when structure, naming, reuse, UI, or implementation path matters.
|
|
44
|
+
4. `.aioson/skills/process/aioson-spec-driven/SKILL.md` — for spec workflows; then load only `references/artifact-map.md` and `references/approval-gates.md` unless a specific reference is needed.
|
|
45
|
+
|
|
46
|
+
Load other skills on demand. Do not bulk-load.
|
|
47
|
+
|
|
48
|
+
## Evidence
|
|
49
|
+
|
|
50
|
+
Find the highest-authority source for each claim:
|
|
51
|
+
|
|
52
|
+
1. User intent: briefing, PRD, Sheldon enrichment, source manifest, dossier Why/What.
|
|
53
|
+
2. Planned work: analyst requirements/spec, architecture, design-doc, readiness, UI/PM/orchestrator outputs, implementation plan.
|
|
54
|
+
3. Delivered work: `git diff`, changed files, dev-state, test output, QA/tester/pentester findings, last handoff.
|
|
55
|
+
|
|
56
|
+
If the answer is in the code or diff, inspect it instead of asking.
|
|
57
|
+
|
|
58
|
+
## Review Loop
|
|
59
|
+
|
|
60
|
+
### 1. Name the scope
|
|
61
|
+
Identify project vs feature mode, slug, selected mode, source artifacts, and missing evidence.
|
|
62
|
+
|
|
63
|
+
If a required PRD or analyst artifact is missing in `pre-dev`, stop and route to the owner. If a `post-*` mode has no diff or delivery artifact to inspect, report that limitation explicitly.
|
|
64
|
+
|
|
65
|
+
### 2. Compare what matters
|
|
66
|
+
Check only the contract-bearing pieces:
|
|
67
|
+
|
|
68
|
+
- Must-have outcomes and explicit exclusions
|
|
69
|
+
- User types, permissions, ownership, and sensitive surfaces
|
|
70
|
+
- Entities, fields, states, relationships, and lifecycle rules
|
|
71
|
+
- Acceptance criteria, gates, edge cases, and operational side effects
|
|
72
|
+
- UI/copy/visual requirements when they were part of the request
|
|
73
|
+
- External integrations, migrations, commands, files, and data retention
|
|
74
|
+
|
|
75
|
+
### 3. Force a verdict
|
|
76
|
+
Use exactly one:
|
|
77
|
+
|
|
78
|
+
- `approved` — intent, plan, and delivery are aligned enough to continue.
|
|
79
|
+
- `patched` — a narrow artifact correction was safe and applied.
|
|
80
|
+
- `needs-product` — product intent/PRD/enrichment is wrong or incomplete.
|
|
81
|
+
- `needs-analyst-redo` — product intent is right, but requirements/spec drifted.
|
|
82
|
+
- `needs-architecture` — requirements are coherent, but technical path/files are unclear.
|
|
83
|
+
- `needs-dev-fix` — implemented diff missed or changed approved behavior.
|
|
84
|
+
- `needs-qa-recheck` — fix appears aligned but verification must rerun.
|
|
85
|
+
- `blocked` — contradiction needs one specific user answer.
|
|
86
|
+
|
|
87
|
+
### 4. Correct only when safe
|
|
88
|
+
You may edit planning artifacts only when the correction is directly inferable from a higher-authority artifact, local, narrow, and not a product decision.
|
|
89
|
+
|
|
90
|
+
Allowed examples:
|
|
91
|
+
|
|
92
|
+
- Add an out-of-scope item already explicit in PRD.
|
|
93
|
+
- Correct a requirement/spec bullet that contradicts PRD.
|
|
94
|
+
- Add a missing edge case already explicit in Sheldon enrichment.
|
|
95
|
+
- Update handoff/dev-state text to point to the right next artifact.
|
|
96
|
+
|
|
97
|
+
Do not rewrite whole PRDs, enrichments, specs, architecture, UI specs, implementation plans, or application code.
|
|
98
|
+
|
|
99
|
+
## Output Contract
|
|
100
|
+
|
|
101
|
+
Write:
|
|
102
|
+
|
|
103
|
+
- Feature mode: `.aioson/context/scope-check-{slug}.md`
|
|
104
|
+
- Project mode: `.aioson/context/scope-check.md`
|
|
105
|
+
|
|
106
|
+
Use this structure:
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
---
|
|
110
|
+
feature: {slug-or-null}
|
|
111
|
+
mode: pre-dev|post-dev|post-fix|final
|
|
112
|
+
status: approved|patched|needs-product|needs-analyst-redo|needs-architecture|needs-dev-fix|needs-qa-recheck|blocked
|
|
113
|
+
checked_at: {ISO-date}
|
|
114
|
+
next_agent: {agent}
|
|
115
|
+
optional: true|false
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
# Scope Check — {Name}
|
|
119
|
+
|
|
120
|
+
## Verdict
|
|
121
|
+
{one paragraph}
|
|
122
|
+
|
|
123
|
+
## Intent / Plan / Delivery
|
|
124
|
+
| Claim | Source | Matched by | Verdict | Notes |
|
|
125
|
+
|-------|--------|------------|---------|-------|
|
|
126
|
+
|
|
127
|
+
## Divergences
|
|
128
|
+
- {none or concrete divergence with artifact/file references}
|
|
129
|
+
|
|
130
|
+
## Corrections Applied
|
|
131
|
+
- {none or artifact + change}
|
|
132
|
+
|
|
133
|
+
## Revision Requests
|
|
134
|
+
- {none or owner agent + exact requested change}
|
|
135
|
+
|
|
136
|
+
## Implementation Preview or Delivery Diff
|
|
137
|
+
| File or area | Expected or actual change | Reason | User-visible result | Confidence |
|
|
138
|
+
|--------------|---------------------------|--------|---------------------|------------|
|
|
139
|
+
|
|
140
|
+
## User Confirmation
|
|
141
|
+
{plain-language summary of what continuing means}
|
|
142
|
+
|
|
143
|
+
## Next Step
|
|
144
|
+
Next agent: @{agent}
|
|
145
|
+
Why: {reason}
|
|
146
|
+
Optional handoff: {when useful, suggest `@scope-check --scope-mode=post-dev|post-fix|final`; otherwise "none"}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Handoff Rules
|
|
150
|
+
|
|
151
|
+
- `approved` or `patched`: continue to the next workflow stage.
|
|
152
|
+
- `needs-*`: do not continue downstream; route to the owner with exact files and changes needed.
|
|
153
|
+
- `blocked`: ask one specific question.
|
|
154
|
+
- `post-dev` can route to `@qa` or `@pentester` only when drift is resolved.
|
|
155
|
+
- `post-fix` can route to `@qa` when verification owns the final decision.
|
|
156
|
+
|
|
157
|
+
## Autopilot Handoff
|
|
158
|
+
|
|
159
|
+
If `auto_handoff: true` in `project.context.md` frontmatter, a feature workflow is active, and status is `approved` or `patched`, follow `.aioson/docs/autopilot-handoff.md`: auto-invoke `Skill(aioson:agent:<next>)` for the next workflow stage with `"continue feature {slug} — autopilot handoff from @scope-check"`. No user prompt — Ctrl+C interrupts. Never auto-invoke when status is `needs-*` or `blocked`, when the next agent is `@dev`, or when context ≥ `context_warning_threshold` — emit the manual handoff instead.
|
|
160
|
+
|
|
161
|
+
## Hard Constraints
|
|
162
|
+
|
|
163
|
+
- Use the project interaction language for all user-facing text.
|
|
164
|
+
- Never implement application code.
|
|
165
|
+
- Never approve a feature when PRD, requirements, and delivery disagree on must-have behavior.
|
|
166
|
+
- Never invent file paths. Use real paths when defensible; otherwise mark area and confidence.
|
|
167
|
+
- Keep MICRO/SMALL compact; MEDIUM may be detailed.
|
|
168
|
+
|
|
169
|
+
## Observability
|
|
170
|
+
|
|
171
|
+
At session end:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
aioson pulse:update . --agent=scope-check --feature={slug} --action="Scope check {mode}: {status}" --next="{next agent}" 2>/dev/null || true
|
|
175
|
+
aioson agent:done . --agent=scope-check --summary="Scope check {slug}: {mode}/{status}" 2>/dev/null || true
|
|
176
|
+
```
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
|
|
9
9
|
## Project sizes
|
|
10
10
|
- MICRO: `@setup -> @product (optional) -> @dev`
|
|
11
|
-
- SMALL: `@setup -> @product -> @analyst -> @scope-check(pre-dev) -> @architect -> @discovery-design-doc -> @dev -> @qa`
|
|
12
|
-
- MEDIUM: `@setup -> @product -> @analyst -> @architect -> @discovery-design-doc -> @ux-ui -> @pm -> @orchestrator -> @scope-check(pre-dev) -> @dev -> @qa`
|
|
13
|
-
|
|
14
|
-
Optional alignment checkpoints:
|
|
15
|
-
- After `@dev`: `@scope-check --scope-mode=post-dev` when the implementation changed planned behavior, touched unexpected files, or skipped approved scope.
|
|
16
|
-
- After `@qa`, `@tester`, or `@pentester` corrections: `@scope-check --scope-mode=post-fix` when fixes changed behavior or product scope.
|
|
11
|
+
- SMALL: `@setup -> @product -> @analyst -> @scope-check(pre-dev) -> @architect -> @discovery-design-doc -> @dev -> @qa`
|
|
12
|
+
- MEDIUM: `@setup -> @product -> @analyst -> @architect -> @discovery-design-doc -> @ux-ui -> @pm -> @orchestrator -> @scope-check(pre-dev) -> @dev -> @qa`
|
|
13
|
+
|
|
14
|
+
Optional alignment checkpoints:
|
|
15
|
+
- After `@dev`: `@scope-check --scope-mode=post-dev` when the implementation changed planned behavior, touched unexpected files, or skipped approved scope.
|
|
16
|
+
- After `@qa`, `@tester`, or `@pentester` corrections: `@scope-check --scope-mode=post-fix` when fixes changed behavior or product scope.
|
|
17
17
|
|
|
18
18
|
Optional test engineering (activate after @dev when coverage is insufficient):
|
|
19
19
|
- `@tester` — systematic test engineering for implemented apps. Activate when: (1) app was built without adequate tests, (2) @qa identifies coverage gaps in 3+ modules, or (3) working on a legacy/brownfield project.
|
|
@@ -31,18 +31,18 @@ Ranges:
|
|
|
31
31
|
|
|
32
32
|
## Context budget warning
|
|
33
33
|
|
|
34
|
-
Setting: `context_warning_threshold` (default: 65%)
|
|
35
|
-
|
|
36
|
-
| Classification | Recommended threshold |
|
|
37
|
-
|---------------|-----------------------|
|
|
38
|
-
| MICRO | 75% (short phases, acceptable to go higher) |
|
|
39
|
-
| SMALL | 65% (default) |
|
|
40
|
-
| MEDIUM | 55% (long phases, warn earlier) |
|
|
41
|
-
|
|
42
|
-
When an agent notices it is close to the threshold:
|
|
43
|
-
1. Write all in-progress artifacts to disk (disk-first)
|
|
44
|
-
2. Emit this warning in the selected project language: "Context at {X}% — I recommend `/clear` before the next phase"
|
|
45
|
-
3. Include the current work in `last_checkpoint`
|
|
34
|
+
Setting: `context_warning_threshold` (default: 65%)
|
|
35
|
+
|
|
36
|
+
| Classification | Recommended threshold |
|
|
37
|
+
|---------------|-----------------------|
|
|
38
|
+
| MICRO | 75% (short phases, acceptable to go higher) |
|
|
39
|
+
| SMALL | 65% (default) |
|
|
40
|
+
| MEDIUM | 55% (long phases, warn earlier) |
|
|
41
|
+
|
|
42
|
+
When an agent notices it is close to the threshold:
|
|
43
|
+
1. Write all in-progress artifacts to disk (disk-first)
|
|
44
|
+
2. Emit this warning in the selected project language: "Context at {X}% — I recommend `/clear` before the next phase"
|
|
45
|
+
3. Include the current work in `last_checkpoint`
|
|
46
46
|
|
|
47
47
|
## Context contract
|
|
48
48
|
`project.context.md` must contain YAML frontmatter with:
|
|
@@ -62,6 +62,9 @@ Optional UI context fields:
|
|
|
62
62
|
Optional testing fields:
|
|
63
63
|
- `test_runner` (for example `pest`, `jest`, `vitest`, `pytest`, `rspec`, `foundry`)
|
|
64
64
|
|
|
65
|
+
Optional workflow fields:
|
|
66
|
+
- `auto_handoff` (boolean, default `false`) — when `true`, the feature-workflow agents from `@analyst` up to the `@dev` handoff (including `@pm` on MEDIUM features) chain automatically via skill auto-invocation instead of stopping for manual activation. Protocol and stop conditions: `.aioson/docs/autopilot-handoff.md`. Upstream agents (`@briefing`, `@product`, `@sheldon`) always hand off manually.
|
|
67
|
+
|
|
65
68
|
Allowed `project_type` values:
|
|
66
69
|
- `web_app`
|
|
67
70
|
- `api`
|
|
@@ -269,16 +272,16 @@ AIOSON ships three types of skills in `.aioson/skills/`:
|
|
|
269
272
|
|
|
270
273
|
| Type | Directory | How agents load them |
|
|
271
274
|
|---|---|---|
|
|
272
|
-
| **Design skills** | `.aioson/skills/design/` | Explicit — via `design_skill` in project.context.md. Only ONE can be active. |
|
|
273
|
-
| **Static skills** | `.aioson/skills/static/` | Automatic — agents match by `framework` in project.context.md |
|
|
274
|
-
| **Dynamic skills** | `.aioson/skills/dynamic/` | Automatic — agents load when task references external services |
|
|
275
|
-
| **Process skills** | `.aioson/skills/process/` | Loaded on demand when an agent needs a workflow method such as SDD, decision presentation, prompt sharpening, or design-skill creation |
|
|
276
|
-
|
|
277
|
-
First-party process skills include:
|
|
278
|
-
|
|
279
|
-
- `prompt-sharpener` — improves agent prompts, skills, PRDs, plans, and handoffs by turning vague guidance into evidence-driven decision behavior while preserving workflow contracts.
|
|
280
|
-
|
|
281
|
-
### Installed skills (`.aioson/installed-skills/`)
|
|
275
|
+
| **Design skills** | `.aioson/skills/design/` | Explicit — via `design_skill` in project.context.md. Only ONE can be active. |
|
|
276
|
+
| **Static skills** | `.aioson/skills/static/` | Automatic — agents match by `framework` in project.context.md |
|
|
277
|
+
| **Dynamic skills** | `.aioson/skills/dynamic/` | Automatic — agents load when task references external services |
|
|
278
|
+
| **Process skills** | `.aioson/skills/process/` | Loaded on demand when an agent needs a workflow method such as SDD, decision presentation, prompt sharpening, or design-skill creation |
|
|
279
|
+
|
|
280
|
+
First-party process skills include:
|
|
281
|
+
|
|
282
|
+
- `prompt-sharpener` — improves agent prompts, skills, PRDs, plans, and handoffs by turning vague guidance into evidence-driven decision behavior while preserving workflow contracts.
|
|
283
|
+
|
|
284
|
+
### Installed skills (`.aioson/installed-skills/`)
|
|
282
285
|
|
|
283
286
|
Third-party or custom skills installed via CLI:
|
|
284
287
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Autopilot handoff protocol: automatic agent chaining from @analyst to the @dev handoff in the feature workflow, with deterministic routing and explicit stop conditions"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Autopilot handoff (analyst → dev)
|
|
6
|
+
|
|
7
|
+
Opt-in protocol that removes manual handoff confirmations in the deterministic segment of the feature workflow. Participating agents: `@analyst`, `@scope-check`, `@architect`, `@discovery-design-doc`, and `@pm` (MEDIUM features only — it sits between `@discovery-design-doc` and pre-dev `@scope-check` to produce the implementation plan and close Gate C). Upstream agents (`@briefing`, `@product`, `@sheldon`) always stay manual — they end on genuine human decisions.
|
|
8
|
+
|
|
9
|
+
## Activation
|
|
10
|
+
|
|
11
|
+
Autopilot is active only when ALL are true:
|
|
12
|
+
|
|
13
|
+
1. `project.context.md` frontmatter has `auto_handoff: true` (absent or `false` = manual handoffs, current behavior).
|
|
14
|
+
2. A feature workflow is active (feature slug known, classification SMALL or MEDIUM).
|
|
15
|
+
3. The current agent's own gate/verdict passed (see stop conditions).
|
|
16
|
+
|
|
17
|
+
## Routing — deterministic, never LLM-chosen
|
|
18
|
+
|
|
19
|
+
The next agent comes from the workflow state machine, not from model judgment:
|
|
20
|
+
|
|
21
|
+
- CLI available: run `aioson workflow:next .` (inspect mode) and use the stage it reports, or the `next` field of `.aioson/context/workflow.state.json`.
|
|
22
|
+
- CLI absent: follow the classification sequence in `.aioson/config.md` exactly.
|
|
23
|
+
|
|
24
|
+
Never skip a stage, reorder, or pick an agent the state machine did not name.
|
|
25
|
+
|
|
26
|
+
## Auto-invoke pattern
|
|
27
|
+
|
|
28
|
+
When autopilot is active and no stop condition applies:
|
|
29
|
+
|
|
30
|
+
1. Finish your own closing duties first (artifacts on disk, gate registration, `pulse:update`, `agent:done`).
|
|
31
|
+
2. Emit a one-line transition notice: `Autopilot: @<current> done → invoking @<next> (Ctrl+C to interrupt)`.
|
|
32
|
+
3. Invoke `Skill(aioson:agent:<next>)` with the task `"continue feature {slug} — autopilot handoff from @<current>"`. No user prompt — Ctrl+C interrupts.
|
|
33
|
+
|
|
34
|
+
## Stop conditions — break the chain and emit the normal manual handoff
|
|
35
|
+
|
|
36
|
+
1. **Next agent is `@dev`** — goal reached. Produce `dev-state.md` (dev handoff producer), emit the standard handoff message, and recommend `/clear` + a fresh chat for `@dev`. Never auto-invoke `@dev`.
|
|
37
|
+
2. **Verdict not clean** — `@scope-check` status is anything other than `approved`/`patched` (`needs-*`, `blocked`): route per Handoff Rules, manually.
|
|
38
|
+
3. **Gate or readiness blocked** — `@architect` Gate B blocked, `@discovery-design-doc` readiness = `blocked`, or `@pm` Gate C blocked: stop and route to the owner.
|
|
39
|
+
4. **Context budget** — estimated context usage ≥ `context_warning_threshold` (`.aioson/config.md`): write the compaction checkpoint to `.aioson/context/last-handoff.json`, stop, and recommend `/clear`. The workflow resumes from `workflow.state.json` — the next session re-enters autopilot automatically.
|
|
40
|
+
5. **Ambiguity** — workflow state unavailable AND classification/sequence ambiguous, or any real decision requires user input: stop and ask, manually.
|
|
41
|
+
|
|
42
|
+
The user can interrupt at any time (Ctrl+C); autopilot never retries an interrupted invocation.
|
|
43
|
+
|
|
44
|
+
## Rationale
|
|
45
|
+
|
|
46
|
+
Industry-validated design (see `researchs/auto-handoff-pipeline-2026/summary.md`): deterministic routing beats LLM routing; human gates belong where they catch mistakes (pre-analyst and at @dev); every autonomous loop needs explicit exit conditions; per-hop context checkpointing is the load-bearing cost mitigation.
|