acstack 0.49.2 → 0.50.1
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/.claude-plugin/plugin.json +1 -1
- package/README.md +35 -42
- package/agents/codex/frontend-verifier.toml +8 -5
- package/agents/codex/task-checker.toml +43 -173
- package/agents/codex/task-executor.toml +18 -88
- package/agents/codex/test-writer.toml +18 -26
- package/agents/frontend-verifier.md +8 -5
- package/agents/task-checker.md +43 -173
- package/agents/task-executor.md +18 -88
- package/agents/test-writer.md +18 -26
- package/cli/dist/index.js +0 -2
- package/cli/dist/index.js.map +2 -2
- package/cli/package.json +1 -1
- package/docs/config-reference.md +31 -50
- package/docs/workflows.md +28 -66
- package/orchestrator/AGENTS.md +146 -273
- package/package.json +1 -1
- package/pi/agents/frontend-verifier.md +8 -5
- package/pi/agents/task-checker.md +43 -173
- package/pi/agents/task-executor.md +20 -88
- package/pi/agents/test-writer.md +18 -26
- package/pi/extension.ts +2 -2
- package/skills/browser-verify/SKILL.md +2 -2
- package/skills/grilling/SKILL.md +9 -10
- package/skills/implement/SKILL.md +23 -90
- package/skills/implement/decision-log.md +1 -1
- package/skills/implement/design-pass.md +159 -21
- package/skills/map/SKILL.md +4 -7
- package/skills/pre-commit-review/SKILL.md +24 -24
- package/skills/pre-commit-review/auto-fix.md +1 -1
- package/skills/pre-commit-review/interactive.md +1 -1
- package/skills/quick-fix/SKILL.md +20 -22
- package/skills/setup/SKILL.md +2 -2
- package/skills/setup/first-run.md +3 -12
- package/skills/setup/report.md +5 -10
- package/skills/setup/row-fixes.md +3 -6
- package/skills/implement/relaxed-tdd.md +0 -28
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: implement
|
|
3
|
-
description:
|
|
3
|
+
description: Implement clear requests with adaptive testing and verification under the shared Implementation discipline in orchestrator/AGENTS.md. A map is a stored graph of question and work nodes. Claims afk nodes – away from keyboard, meaning nodes an agent settles alone – from the map frontier, the nodes ready to be worked now, when a map exists; runs the same discipline directly on the request when none does. A unit of work carries its own size – one node is a quick change, forty is a long effort, and nothing declares which. Invoke whenever the way is clear and something needs building, changing or extending, however small. Use quick-fix instead when something is broken and needs a root cause found, and map instead when decisions still need settling before anyone can build.
|
|
4
4
|
argument-hint: "[map name, or the request to implement]"
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -12,19 +12,13 @@ $ARGUMENTS
|
|
|
12
12
|
|
|
13
13
|
## What this skill does
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
map
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
- Apply the shared Implementation discipline in `orchestrator/AGENTS.md`
|
|
16
|
+
- Use a map node as the work item when a map exists, otherwise use the request itself
|
|
17
|
+
- Keep tracker claims and resolutions as the progress record
|
|
18
|
+
- Choose delegation for confidence or independent scopes rather than a fixed sequence
|
|
19
19
|
|
|
20
20
|
## Steps
|
|
21
21
|
|
|
22
|
-
Before step 1, copy the eight step headings below into your todo list word
|
|
23
|
-
for word. They go ahead of any task-specific items. A step you skip stays in
|
|
24
|
-
the list, marked `skip: <reason>`.
|
|
25
|
-
|
|
26
|
-
When step 5 runs on a node, copy its eight numbered steps the same way.
|
|
27
|
-
|
|
28
22
|
### 1. Find the work
|
|
29
23
|
|
|
30
24
|
Check the configured tracker for maps (`workflow.maps.tracker` in
|
|
@@ -107,69 +101,21 @@ Claim each node as you start it:
|
|
|
107
101
|
|
|
108
102
|
Nodes describe behaviour, not paths. **Resolve paths at claim time**.
|
|
109
103
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
Use as many as there are distinct places to look, not a fixed count. Act on
|
|
114
|
-
what they find.
|
|
115
|
-
|
|
116
|
-
Downstream pipeline subagents start fresh. Pass the source, test, and doc paths
|
|
117
|
-
you already discovered into each test-writer, task-executor, task-checker, audit,
|
|
118
|
-
polish, and verifier prompt. Tell them to read those paths directly instead of
|
|
119
|
-
searching the codebase again.
|
|
104
|
+
Investigate relevant source, callers, tests, and docs directly or through useful delegation.
|
|
105
|
+
Pass discovered paths and requirements to any delegated agents to avoid repeated searches.
|
|
120
106
|
|
|
121
107
|
### 5. Execute within the claim
|
|
122
108
|
|
|
123
|
-
|
|
124
|
-
claimed node (or the bare request), run the Implementation discipline to
|
|
125
|
-
completion:
|
|
126
|
-
|
|
127
|
-
1. **test-writer subagent** – tests from the node's behaviour description.
|
|
128
|
-
Under strict they must all fail before step 2 runs. Skip step 1 for pure
|
|
129
|
-
config or setup work with no testable behaviour.
|
|
130
|
-
|
|
131
|
-
2. **task-executor subagent** – make the tests pass. Executor CANNOT modify
|
|
132
|
-
test files.
|
|
133
|
-
|
|
134
|
-
3. **Format** – run `commands.format` over the files the work touched. A
|
|
135
|
-
`null` value means this project has no format step.
|
|
136
|
-
|
|
137
|
-
Report a non-zero exit. It never counts as a failed implementation.
|
|
138
|
-
|
|
139
|
-
4. **task-checker subagent** – verify the build compiles, lints, and
|
|
140
|
-
typechecks. Verify tests pass, the full suite passes, and test count >=
|
|
141
|
-
baseline. Also check the mock audit, TDD isolation, and integration
|
|
142
|
-
wired.
|
|
109
|
+
Apply the shared Implementation discipline to the claimed node or bare request.
|
|
143
110
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
111
|
+
- Choose useful checks before nontrivial edits
|
|
112
|
+
- Test, implement, format, and verify against requirements
|
|
113
|
+
- Get independent review when the shared policy requires it
|
|
114
|
+
- Read `design-pass.md` when the design gate is on and configured frontend files changed
|
|
115
|
+
- Delegate configured real-browser verification after the required gates pass
|
|
116
|
+
- Fix failures and repeat the affected checks
|
|
117
|
+
- Release a stalled claim (`--status open`) when the session must stop
|
|
147
118
|
|
|
148
|
-
5. **`/impeccable audit`** – report design findings on the changed frontend
|
|
149
|
-
files. Steps 5 to 7 run only when three conditions hold: the design gate
|
|
150
|
-
is on, `acstack/project.yaml` configures `frontend`, and frontend files
|
|
151
|
-
changed.
|
|
152
|
-
|
|
153
|
-
6. **`/impeccable polish`** – fix the same files, from the audit findings.
|
|
154
|
-
|
|
155
|
-
7. **task-checker subagent, second run** – verify the code polish changed.
|
|
156
|
-
|
|
157
|
-
Read `design-pass.md` before steps 5 to 7. It holds who types the
|
|
158
|
-
commands, how to read the gate, and what polish must leave alone.
|
|
159
|
-
|
|
160
|
-
8. **frontend-verifier subagent** – verify the UI in a browser. The
|
|
161
|
-
verifier runs after the second checker passes, only when
|
|
162
|
-
`acstack/project.yaml` configures `frontend`, frontend files changed,
|
|
163
|
-
and `workflow.frontend_verification` is true.
|
|
164
|
-
|
|
165
|
-
`workflow.tdd.strict: false`, relaxed TDD, runs step 2 before step 1 and
|
|
166
|
-
skips nothing. Read `relaxed-tdd.md` when the project sets it. It holds how
|
|
167
|
-
the test-writer and the checker's gate change.
|
|
168
|
-
|
|
169
|
-
If either checker run fails, route back to the executor with the feedback.
|
|
170
|
-
If the work stalls or the session must stop mid-node, release the claim
|
|
171
|
-
(`--status open`). The node is plainly open again, and you need no phase
|
|
172
|
-
breadcrumb.
|
|
173
119
|
|
|
174
120
|
**Decision log**: on afk nodes, append one row per decision point to
|
|
175
121
|
`<main checkout>/acstack/.decisions/<name>.tsv`. A decision point is a fork chosen, a
|
|
@@ -178,14 +124,12 @@ unit verified, a revert, or a blocker.
|
|
|
178
124
|
Read `decision-log.md` before the first row. It holds how to find the main
|
|
179
125
|
checkout, the columns, and the `.gitignore` the directory needs.
|
|
180
126
|
|
|
181
|
-
**Parallelism**:
|
|
182
|
-
|
|
183
|
-
owns one node and its file set. Otherwise, or on a host without agent teams,
|
|
184
|
-
work them sequentially.
|
|
127
|
+
**Parallelism**: use teams when independent nodes benefit from parallel work.
|
|
128
|
+
Assign non-overlapping files, and schedule shared-file changes sequentially.
|
|
185
129
|
|
|
186
130
|
### 6. Resolve
|
|
187
131
|
|
|
188
|
-
When
|
|
132
|
+
When required verification passes, resolve the node in one call:
|
|
189
133
|
|
|
190
134
|
```bash
|
|
191
135
|
~/.claude/acstack/bin/acstack node update <id> --map <name> --status resolved \
|
|
@@ -216,8 +160,7 @@ pass before claiming the next node.
|
|
|
216
160
|
### 8. Completion
|
|
217
161
|
|
|
218
162
|
Stop when the afk frontier is empty, or when only `hitl` nodes remain (hand
|
|
219
|
-
those to `/acstack:map`). With no map, stop when
|
|
220
|
-
7 verification is green.
|
|
163
|
+
those to `/acstack:map`). With no map, stop when required verification is green.
|
|
221
164
|
|
|
222
165
|
Report: nodes resolved, tests passing, lines added/removed. Remind the user:
|
|
223
166
|
`/acstack:commit` to commit – spec sync extracts the durable record from the
|
|
@@ -225,21 +168,11 @@ diff.
|
|
|
225
168
|
|
|
226
169
|
## Key rules
|
|
227
170
|
|
|
228
|
-
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
With the design gate on, the audit and polish pass and a second
|
|
234
|
-
task-checker run sit between the first checker and the verifier
|
|
235
|
-
|
|
236
|
-
- **Executors CANNOT modify test files** – if tests are wrong, report it.
|
|
237
|
-
- **The tracker is the progress record** – claim on start, resolve on pass,
|
|
238
|
-
release on stall. No checkbox files, no phase fields.
|
|
171
|
+
- Apply `orchestrator/AGENTS.md` as the shared verification policy
|
|
172
|
+
- Respect separate test ownership when chosen
|
|
173
|
+
- Claim on start, resolve after verification, and release on stall
|
|
174
|
+
- Investigate before editing, directly or through useful delegation
|
|
239
175
|
|
|
240
|
-
- **Explore before writing** – parallel read-only codebase-search subagents
|
|
241
|
-
over the relevant code, sized to the node, before any edit. Use `Explore` on
|
|
242
|
-
Claude Code and `scout` on pi.
|
|
243
176
|
|
|
244
177
|
- **Resume is a query** – picking up where you left off means asking the
|
|
245
178
|
tracker what is workable now, not reconstructing history. A fresh session
|
|
@@ -9,7 +9,7 @@ row.
|
|
|
9
9
|
Write one row per decision point, never one per action:
|
|
10
10
|
|
|
11
11
|
- **A fork chosen** – two ways to build something, and you picked one
|
|
12
|
-
- **A unit verified** – a node's
|
|
12
|
+
- **A unit verified** – a node's verification passed, or a build verification went green
|
|
13
13
|
- **A revert** – you undid work, and the row names what triggered it
|
|
14
14
|
- **A blocker** – something stopped the node, and the row names it
|
|
15
15
|
|
|
@@ -1,32 +1,170 @@
|
|
|
1
|
-
# The
|
|
1
|
+
# The design pass
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
states when steps 5 to 7 run. This file holds how to run them.
|
|
3
|
+
The parent session owns audit and polish; frontend checks remain required even when the session delegates no task-checker.
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
```mermaid
|
|
6
|
+
flowchart TD
|
|
7
|
+
P["Before UI edits<br/>Load design context"] --> A["Discover frontend files"]
|
|
8
|
+
A --> B["Run static checks and detector"]
|
|
9
|
+
B -->|clear| C["Parent session<br/>Audit"]
|
|
10
|
+
B -->|findings| F["Fix and recheck"]
|
|
11
|
+
F --> B
|
|
12
|
+
C --> D["Parent session<br/>Polish"]
|
|
13
|
+
D --> E["Recheck final code"]
|
|
14
|
+
E -->|failure| F
|
|
15
|
+
E -->|pass| G["Configured real-browser verification"]
|
|
16
|
+
```
|
|
8
17
|
|
|
9
|
-
|
|
10
|
-
as a markdown playbook.
|
|
18
|
+
## 0. Load design context before a UI edit (mandatory)
|
|
11
19
|
|
|
12
|
-
|
|
20
|
+
impeccable is a third-party design plugin. It holds the project's design context, meaning the files that state the design rules and the token definitions a UI file follows.
|
|
13
21
|
|
|
14
|
-
|
|
15
|
-
`git status --porcelain -- <frontend.directory>`.
|
|
22
|
+
Load that context before your first edit under `frontend.directory`. Load it once per task.
|
|
16
23
|
|
|
17
|
-
|
|
18
|
-
findings as its backlog. It edits source.
|
|
24
|
+
**Check the design gate first**
|
|
19
25
|
|
|
20
|
-
|
|
26
|
+
The design gate is the set of optional checks impeccable adds to acstack's pipeline. `workflow.design_review` in `acstack/project.yaml` turns the gate on. Ask acstack for the answer:
|
|
21
27
|
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
```bash
|
|
29
|
+
~/.claude/acstack/bin/acstack design-gate --json
|
|
30
|
+
```
|
|
24
31
|
|
|
25
|
-
|
|
26
|
-
|
|
32
|
+
- exit code 0 means the gate is on
|
|
33
|
+
- exit code 1 means the gate is off
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
completion report, so the user can pick one later.
|
|
35
|
+
The command prints one JSON object:
|
|
30
36
|
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
```json
|
|
38
|
+
{"on": true, "reasons": ["..."], "impeccable": {"version": "4.2.0", "launcher": "/abs/path/to/scripts/impeccable"}}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The `impeccable` field holds the launcher path. It holds `null` only when the gate is off.
|
|
42
|
+
|
|
43
|
+
When the gate is off, edit exactly as you do today. Make no impeccable call, and skip the rest of this section.
|
|
44
|
+
|
|
45
|
+
**Load the context once per task**
|
|
46
|
+
|
|
47
|
+
When the gate is on, run the launcher path the JSON printed:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
<launcher> context --target <file>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
- `<launcher>` is the `impeccable.launcher` path from the design-gate JSON
|
|
54
|
+
- `context` is a verb of impeccable's bundled launcher binary, not of its npm command-line tool
|
|
55
|
+
- `<file>` is the first file you edit under `frontend.directory`
|
|
56
|
+
|
|
57
|
+
Run this command once for the whole task. impeccable's own skill says to follow the directives it prints and never to rerun the command.
|
|
58
|
+
|
|
59
|
+
**Directives you act on**
|
|
60
|
+
|
|
61
|
+
- `RESOLVED_CONTEXT` – JSON naming where the project's design files live, such as the token definitions you reuse
|
|
62
|
+
|
|
63
|
+
**Directives you report instead**
|
|
64
|
+
|
|
65
|
+
Each directive below asks for work you do not own. Put it in your report and carry on with the edit.
|
|
66
|
+
|
|
67
|
+
- `CONTEXT_STALE` – the loaded context is out of date. Never rerun `context`
|
|
68
|
+
- `NO_PRODUCT_MD` and `PRODUCT_INIT_REQUIRED` – both point at impeccable's `init`, which owns `PRODUCT.md`
|
|
69
|
+
- `INCUMBENT_WORLD_UNDOCUMENTED` and `WORLD_DISCOVERY_REQUIRED` – both point at impeccable's `document`, which owns `DESIGN.md`
|
|
70
|
+
- `UPDATE_AVAILABLE` – never run impeccable's `update` in the same turn, because it rewrites files this session is reading
|
|
71
|
+
- `MANUAL_DETECTOR_REQUIRED` – report it to the verification owner, who runs the detector under `skills/implement/design-pass.md`
|
|
72
|
+
|
|
73
|
+
**File ownership**
|
|
74
|
+
|
|
75
|
+
You never write `PRODUCT.md` or `DESIGN.md`. impeccable's `init` interviews the user and writes `PRODUCT.md`. acstack's sync skill runs impeccable's `document` at commit time, which refreshes `DESIGN.md`.
|
|
76
|
+
|
|
77
|
+
Edit only assigned files, including tests when the task assigns no separate test owner.
|
|
78
|
+
|
|
79
|
+
**impeccable checks the files you write**
|
|
80
|
+
|
|
81
|
+
impeccable installs its own PostToolUse hook, a check Claude Code runs right after a file write. The hook reads each UI file you write. You never run that check yourself.
|
|
82
|
+
|
|
83
|
+
## 1. Discover frontend files
|
|
84
|
+
|
|
85
|
+
- Follow the shared Implementation discipline in `orchestrator/AGENTS.md`
|
|
86
|
+
- The verification owner gathers the file list, completes static checks, and handles the detector
|
|
87
|
+
- A delegated task-checker may own this work, but its presence is optional
|
|
88
|
+
- Read `acstack/project.yaml` before deriving paths
|
|
89
|
+
- This pass requires a configured `frontend`
|
|
90
|
+
- `frontend.directory` defaults to `frontend/` when omitted
|
|
91
|
+
- If the project configures no frontend, warn that `frontend.directory` is missing and skip this pass
|
|
92
|
+
- Derive one changed-file list for the checks, detector, audit, and polish
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
git status --porcelain -- <frontend.directory>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- Include modified, added, and untracked files (`??`)
|
|
99
|
+
- Drop paths carrying a `D` status because the detector cannot read deleted files
|
|
100
|
+
- Treat a missing directory or unmatched pathspec as an empty list
|
|
101
|
+
- Skip this pass when the list is empty
|
|
102
|
+
- Run configured frontend checks when the list contains files
|
|
103
|
+
- `frontend.commands.build`
|
|
104
|
+
- `frontend.commands.lint`
|
|
105
|
+
- `frontend.commands.test`
|
|
106
|
+
- Leave browser interaction to `frontend-verifier` after the required gates pass
|
|
107
|
+
|
|
108
|
+
## 2. Run the design detector
|
|
109
|
+
|
|
110
|
+
- Check the design gate before running the detector
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
~/.claude/acstack/bin/acstack design-gate
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- Exit code 0 prints `on`
|
|
117
|
+
- Exit code 1 prints `off: <reason>`
|
|
118
|
+
- Record the gate state and skip the detector, audit, and polish when the gate is off
|
|
119
|
+
- When the gate is on, run the nonadvisory detector over the discovered file list
|
|
120
|
+
- The detector reads files without starting a browser
|
|
121
|
+
- It searches upward from each target for `DESIGN.md`
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npx impeccable detect --json --no-advisory <file> [<file>...]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- Use this run to set the verdict
|
|
128
|
+
- Exit code 0 passes
|
|
129
|
+
- Exit code 2 fails verification
|
|
130
|
+
- Report each finding with its file and line, then send it to the implementation owner
|
|
131
|
+
- Any other exit code means the detector could not run
|
|
132
|
+
- Report a warning with the command output and continue verification
|
|
133
|
+
- Detector unavailability alone does not fail the task
|
|
134
|
+
- Run the advisory detector only after the nonadvisory run exits 0
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
npx impeccable detect --json <file> [<file>...]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- Use the same file list and report each `"advisory": true` finding as a note
|
|
141
|
+
- Omit the notes when none exist
|
|
142
|
+
- Advisory findings never change the verdict or require implementation changes
|
|
143
|
+
- Exit codes 0 and 2 hold usable advisory output
|
|
144
|
+
- Report other exit codes as advisory-run warnings and continue
|
|
145
|
+
|
|
146
|
+
## 3. Audit and polish
|
|
147
|
+
|
|
148
|
+
- Run audit and polish only when the design gate is on and configured frontend files changed
|
|
149
|
+
- Complete applicable static checks and resolve detector failures before audit
|
|
150
|
+
- The parent session is the session directing this work, including direct implementation without delegation
|
|
151
|
+
- A delegated checker returns the discovered file list and findings to the parent without editing files
|
|
152
|
+
- The parent session must type `/impeccable audit` over the discovered file list
|
|
153
|
+
- Audit edits nothing and needs no browser
|
|
154
|
+
- Ask audit to name each recommended command against its finding
|
|
155
|
+
- The parent session must type `/impeccable polish` over the same files using the audit findings
|
|
156
|
+
- Slash playbooks expand only in the session that types them
|
|
157
|
+
- Leave factual claims in copy untouched during unattended polish
|
|
158
|
+
- Ask polish to list every factual claim it left alone
|
|
159
|
+
- Run only `polish` from the audit's recommended commands
|
|
160
|
+
- `harden`, `clarify`, `adapt`, `optimize`, and `onboard` require a human decision
|
|
161
|
+
- Repeat recommended command names with their findings in the completion report
|
|
162
|
+
|
|
163
|
+
## 4. Recheck final code
|
|
164
|
+
|
|
165
|
+
- The parent sends polished code back to the independent checker when the workflow chose one
|
|
166
|
+
- The checker reruns affected tests, static checks, and the detector without editing files
|
|
167
|
+
- Without a delegated checker, the parent reruns those checks on the polished code
|
|
168
|
+
- Resolve failures before browser verification
|
|
169
|
+
- Delegate `frontend-verifier` on final code when the project enables configured browser verification
|
|
170
|
+
- Report actual checks and results, including detector warnings and advisory findings
|
package/skills/map/SKILL.md
CHANGED
|
@@ -176,13 +176,11 @@ the list, marked `skip: <reason>`.
|
|
|
176
176
|
the node's diagram shape, never its route):
|
|
177
177
|
- `hitl` nodes: run grilling rounds over them. A round is the whole hitl
|
|
178
178
|
frontier.
|
|
179
|
-
- `afk` nodes: claim and run without the user.
|
|
180
|
-
|
|
181
|
-
`Explore` on Claude Code and `scout` on pi.
|
|
179
|
+
- `afk` nodes: claim and run without the user. Choose direct work or useful delegation
|
|
180
|
+
under the shared Implementation discipline in `orchestrator/AGENTS.md`.
|
|
182
181
|
|
|
183
182
|
Implementation work follows `/acstack:implement`'s procedure – it owns
|
|
184
|
-
the claim-execute-resolve flow
|
|
185
|
-
pipeline. Do not restate that flow here. Invoke it.
|
|
183
|
+
the claim-execute-resolve flow and adaptive verification. Do not restate that flow here. Invoke it.
|
|
186
184
|
|
|
187
185
|
4. **Claim, then resolve** – `afk` nodes only. A `hitl` resolution happens
|
|
188
186
|
inside the grilling round, with no claim step. Both are compositions over
|
|
@@ -196,8 +194,7 @@ the list, marked `skip: <reason>`.
|
|
|
196
194
|
<what was decided or done, and why>"
|
|
197
195
|
```
|
|
198
196
|
|
|
199
|
-
|
|
200
|
-
phase field to maintain. If the work stalls or fails, release the claim
|
|
197
|
+
Work stays inside the claim, with no per-phase bookkeeping. If the work stalls or fails, release the claim
|
|
201
198
|
(`--status open`) and the node is plainly open again.
|
|
202
199
|
|
|
203
200
|
5. **After every resolution**, in order:
|
|
@@ -40,9 +40,9 @@ LLM decided to commit during autonomous work -> auto-fix.
|
|
|
40
40
|
|
|
41
41
|
```
|
|
42
42
|
1. SNAPSHOT – collect the diff and understand what changed
|
|
43
|
-
2. DISCOVER – learn project conventions dynamically
|
|
44
|
-
3. REVIEW – analyze changes against conventions
|
|
45
|
-
4. ADJACENT – check surrounding code for related rot
|
|
43
|
+
2. DISCOVER – learn project conventions dynamically
|
|
44
|
+
3. REVIEW – analyze changes against conventions and requirements
|
|
45
|
+
4. ADJACENT – check surrounding code for related rot
|
|
46
46
|
5. REPORT – synthesize findings
|
|
47
47
|
6. FIX – auto-fix or interactive proposal waves
|
|
48
48
|
```
|
|
@@ -69,15 +69,16 @@ Categorize changed files into scopes using the project configuration:
|
|
|
69
69
|
- **tests**: files under `directories.tests` from project.yaml
|
|
70
70
|
- **other**: everything else
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
Judge changes by effect, including behavior changed through config, assets, or shipped guidance.
|
|
73
|
+
For nonbehavioral edits, review accuracy and run prose lint when Markdown changed.
|
|
73
74
|
|
|
74
75
|
## Step 2: DISCOVER – Learn project conventions (parallel)
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
Follow the shared Implementation discipline in `orchestrator/AGENTS.md` for delegation and required independent review.
|
|
78
|
+
Investigate these dimensions directly or through useful delegation.
|
|
79
|
+
Discover current conventions rather than hardcoding them.
|
|
79
80
|
|
|
80
|
-
**
|
|
81
|
+
**Living specs and architecture:**
|
|
81
82
|
|
|
82
83
|
```
|
|
83
84
|
Read the living specs relevant to this change:
|
|
@@ -88,7 +89,7 @@ Read the living specs relevant to this change:
|
|
|
88
89
|
Report: list of project conventions and patterns relevant to these changes.
|
|
89
90
|
```
|
|
90
91
|
|
|
91
|
-
**
|
|
92
|
+
**Codebase patterns:**
|
|
92
93
|
|
|
93
94
|
```
|
|
94
95
|
Search the codebase for established patterns related to the changes.
|
|
@@ -99,7 +100,7 @@ Identify: how does the rest of the codebase handle similar things?
|
|
|
99
100
|
Report: established patterns, common approaches, naming conventions observed.
|
|
100
101
|
```
|
|
101
102
|
|
|
102
|
-
**
|
|
103
|
+
**Local context and configuration:**
|
|
103
104
|
|
|
104
105
|
```
|
|
105
106
|
For each changed file, read:
|
|
@@ -109,15 +110,15 @@ For each changed file, read:
|
|
|
109
110
|
Report: local conventions, related code patterns, existing abstractions nearby.
|
|
110
111
|
```
|
|
111
112
|
|
|
112
|
-
Synthesize
|
|
113
|
-
review subagents measure changes against.
|
|
113
|
+
Synthesize findings into a convention profile for the review.
|
|
114
114
|
|
|
115
115
|
## Step 3: REVIEW – Analyze changes (parallel)
|
|
116
116
|
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
Review every dimension below, directly or through useful delegation.
|
|
118
|
+
Give delegated reviewers the diff and the convention profile from Step 2.
|
|
119
|
+
Assess coverage against requirements instead of assuming a task-checker already assessed it.
|
|
119
120
|
|
|
120
|
-
**
|
|
121
|
+
**Hardcodes and single source of truth:**
|
|
121
122
|
|
|
122
123
|
```
|
|
123
124
|
Examine the diff for:
|
|
@@ -132,7 +133,7 @@ For each finding, report:
|
|
|
132
133
|
FILE:LINE | SEVERITY (MUST/SHOULD/CONSIDER) | WHAT | WHY | SUGGESTED FIX
|
|
133
134
|
```
|
|
134
135
|
|
|
135
|
-
**
|
|
136
|
+
**Scalability and readability:**
|
|
136
137
|
|
|
137
138
|
```
|
|
138
139
|
Examine the diff for:
|
|
@@ -148,7 +149,7 @@ For each finding, report:
|
|
|
148
149
|
FILE:LINE | SEVERITY (MUST/SHOULD/CONSIDER) | WHAT | WHY | SUGGESTED FIX
|
|
149
150
|
```
|
|
150
151
|
|
|
151
|
-
**
|
|
152
|
+
**Edge cases and failure handling:**
|
|
152
153
|
|
|
153
154
|
```
|
|
154
155
|
Examine the diff for:
|
|
@@ -178,9 +179,8 @@ Add each finding to the review as `SHOULD | PROSE`, at the `file:line` it names.
|
|
|
178
179
|
|
|
179
180
|
## Step 4: ADJACENT – Check surrounding code for rot
|
|
180
181
|
|
|
181
|
-
For each file with findings
|
|
182
|
-
|
|
183
|
-
Each subagent examines the rest of that file and its immediate imports for the same categories of issue.
|
|
182
|
+
For each file with findings, examine the surrounding code and immediate imports for related issues.
|
|
183
|
+
Delegate when useful, with non-overlapping scopes.
|
|
184
184
|
|
|
185
185
|
```
|
|
186
186
|
File [path] has these issues in the changed code: [summary].
|
|
@@ -197,7 +197,7 @@ same module, or same pattern). Stay narrowly scoped.
|
|
|
197
197
|
|
|
198
198
|
## Step 5: REPORT – Synthesize findings
|
|
199
199
|
|
|
200
|
-
Merge all
|
|
200
|
+
Merge all findings. Deduplicate. Sort by:
|
|
201
201
|
|
|
202
202
|
1. MUST FIX (correctness, security, will-break-in-prod)
|
|
203
203
|
2. SHOULD FIX (convention violations, readability, maintainability)
|
|
@@ -212,7 +212,7 @@ For each finding, make sure it has:
|
|
|
212
212
|
- Why it matters (1 sentence)
|
|
213
213
|
- Suggested fix (concrete, actionable – code snippet or approach)
|
|
214
214
|
|
|
215
|
-
If
|
|
215
|
+
If a finding needs deeper analysis, investigate directly or delegate with this brief:
|
|
216
216
|
|
|
217
217
|
```
|
|
218
218
|
This code has [problem]. The file is [path]. Here's the surrounding context: [context].
|
|
@@ -233,11 +233,11 @@ Consider: does a fix here require changes in other files? What's the minimal cha
|
|
|
233
233
|
| SHOULD | Violates conventions, hurts maintainability, tech debt | SSOT violations, unclear naming, missing error handling on I/O |
|
|
234
234
|
| CONSIDER | Improvement opportunity, not urgent | Adjacent rot, minor style, could-be-cleaner patterns |
|
|
235
235
|
|
|
236
|
-
##
|
|
236
|
+
## Review responsibilities and tool checks
|
|
237
237
|
|
|
238
238
|
- **Formatting/style** – linters and formatters handle this
|
|
239
239
|
- **Type errors** – typecheckers handle this
|
|
240
|
-
-
|
|
240
|
+
- Assess test adequacy under the shared Implementation discipline, even when no task-checker ran
|
|
241
241
|
- **UI rendering** – frontend-verify handles this
|
|
242
242
|
- **Security scanning** – dedicated security tools handle credentials in committed code
|
|
243
243
|
|
|
@@ -4,7 +4,7 @@ Step 6 of `SKILL.md` in auto-fix mode.
|
|
|
4
4
|
|
|
5
5
|
For each finding (MUST first, then SHOULD, then CONSIDER):
|
|
6
6
|
|
|
7
|
-
1.
|
|
7
|
+
1. Apply the shared Implementation discipline in `orchestrator/AGENTS.md` to the finding, directly or through a task-executor
|
|
8
8
|
2. Verify the fix doesn't break anything (run lint, typecheck, and test commands from project.yaml)
|
|
9
9
|
3. If fix breaks something, revert and try alternate approach
|
|
10
10
|
4. Move to next finding
|
|
@@ -30,6 +30,6 @@ Reply with numbers to fix (e.g., "1,2,4") or "all" or "skip all", and any notes
|
|
|
30
30
|
|
|
31
31
|
After user responds:
|
|
32
32
|
|
|
33
|
-
- Fix selected items
|
|
33
|
+
- Fix selected items under the shared Implementation discipline in `orchestrator/AGENTS.md`, directly or through useful delegation
|
|
34
34
|
- Present next wave if more findings remain
|
|
35
35
|
- Continue until all findings addressed or user says "done" / "skip the rest"
|
|
@@ -18,9 +18,9 @@ If `$ARGUMENTS` is empty, ask the user to describe what's broken.
|
|
|
18
18
|
|
|
19
19
|
## Before you start
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Read the shared Implementation discipline in `orchestrator/AGENTS.md`.
|
|
22
|
+
Choose checks and delegation under that policy while investigating the bug.
|
|
22
23
|
|
|
23
|
-
When Step 5 runs, copy its four numbered steps the same way.
|
|
24
24
|
|
|
25
25
|
## Step 1: Understand the problem
|
|
26
26
|
|
|
@@ -37,11 +37,11 @@ If the user provided an error message or stack trace, note the key details (file
|
|
|
37
37
|
|
|
38
38
|
## Step 2: Explore the codebase
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
Investigate directly or delegate when another agent improves confidence:
|
|
41
41
|
|
|
42
|
-
1. **Locate the code**:
|
|
42
|
+
1. **Locate the code**: Find the files involved, including existing regression coverage
|
|
43
43
|
|
|
44
|
-
2. **Read the integration points**:
|
|
44
|
+
2. **Read the integration points**: Read the broken function's callers and callees, not just the function:
|
|
45
45
|
- What calls this code? (upstream)
|
|
46
46
|
- What does this code call? (downstream)
|
|
47
47
|
- What data flows through it? (inputs/outputs)
|
|
@@ -69,7 +69,7 @@ Based on the exploration, identify the root cause – not just the symptom.
|
|
|
69
69
|
Bad: "The function returns null" (symptom).
|
|
70
70
|
Good: "The function returns null because the query filter uses `org_id`, but the test user's org isn't in the result set" (root cause).
|
|
71
71
|
|
|
72
|
-
If the root cause
|
|
72
|
+
If the root cause remains unclear, investigate further or seek independent help rather than guessing.
|
|
73
73
|
|
|
74
74
|
## Step 4: Plan the fix
|
|
75
75
|
|
|
@@ -83,12 +83,14 @@ If the fix touches more than 3 files, pause. Confirm the scope with the user –
|
|
|
83
83
|
|
|
84
84
|
## Step 5: Implement via the Implementation discipline
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
Apply the shared policy to the minimal fix.
|
|
87
|
+
|
|
88
|
+
- Reproduce the bug with a failing regression test before fixing it when practical
|
|
89
|
+
- Confirm the intended failure, then implement the fix
|
|
90
|
+
- Explain any departure from tests-first work
|
|
91
|
+
- Preserve regression protection and separate test ownership when chosen
|
|
92
|
+
- Follow `../implement/design-pass.md` when its frontend design gate applies
|
|
87
93
|
|
|
88
|
-
1. **test-writer** – Write a failing test that reproduces the problem (if testable behavior exists). Skip for pure config/infra fixes.
|
|
89
|
-
2. **task-executor** – Implement the minimal fix to make the test pass. Executor CANNOT modify test files.
|
|
90
|
-
3. **task-checker** – Verify: task tests pass, full suite passes, test count >= baseline, no regressions.
|
|
91
|
-
4. **frontend-verify** – Only if the fix touches frontend files (check `frontend.directory` in project.yaml).
|
|
92
94
|
|
|
93
95
|
## Step 6: Verify
|
|
94
96
|
|
|
@@ -99,15 +101,9 @@ Run build verification using commands from `acstack/project.yaml`:
|
|
|
99
101
|
# Read these from project.yaml – do not hardcode
|
|
100
102
|
```
|
|
101
103
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
If the project has a frontend verification agent or browser verification configured, use them. Otherwise, take a browser screenshot and think through:
|
|
105
|
-
|
|
106
|
-
1. **Expected vs actual** – What should the change look like? Does the screenshot match?
|
|
107
|
-
2. **Gaps** – Is anything missing, wrong, or showing the wrong data/labels/formatting?
|
|
108
|
-
3. **General UX** – Anything weird? Overlapping elements, bad spacing, truncation, unprofessional appearance?
|
|
104
|
+
Use the configured frontend gates under the shared policy.
|
|
105
|
+
Do not proceed with failed required checks or unverified configured browser behavior.
|
|
109
106
|
|
|
110
|
-
If verification finds a problem, fix it. Verify again. Do NOT proceed to Step 7 with unverified frontend changes.
|
|
111
107
|
|
|
112
108
|
## Step 7: Report
|
|
113
109
|
|
|
@@ -118,8 +114,10 @@ Problem: <one-line description>
|
|
|
118
114
|
Root cause: <what was actually wrong>
|
|
119
115
|
Fix: <what changed and why>
|
|
120
116
|
Files modified: <list>
|
|
121
|
-
|
|
122
|
-
|
|
117
|
+
Verification: <actual commands and results>
|
|
118
|
+
Blocked checks: <checks that could not run and why, or none>
|
|
119
|
+
Missing regression protection: <behavior left unprotected, or none identified>
|
|
120
|
+
Remaining risks: <known risks and uncertainty, or none identified>
|
|
123
121
|
```
|
|
124
122
|
|
|
125
|
-
Remind the user to `/commit` when they're satisfied.
|
|
123
|
+
Remind the user to `/acstack:commit` when they're satisfied.
|