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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "acstack",
|
|
3
3
|
"description": "Agentic coding stack where planning grows only as far as needed: a map of decisions, tasks, checks, and handoffs behind a pluggable tracker.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.50.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "ac8318740"
|
|
7
7
|
},
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ACStack
|
|
2
2
|
|
|
3
|
-
ACStack is an agentic coding stack. It
|
|
3
|
+
ACStack is an agentic coding stack. It helps coding agents clarify requirements, test meaningful behavior, and keep docs matching the code.
|
|
4
4
|
|
|
5
5
|
- **ACStack aims to solve two common failure modes coding agents introduce**
|
|
6
6
|
- The agent starts building before the requirements are clear
|
|
@@ -9,9 +9,9 @@ ACStack is an agentic coding stack. It makes coding agents plan before they code
|
|
|
9
9
|
- Claude Code installs it as a plugin
|
|
10
10
|
- pi installs it as an npm package
|
|
11
11
|
- **ACStack introduces structure around how your agent works**
|
|
12
|
-
-
|
|
12
|
+
- Verification fits the change under a shared policy in `orchestrator/AGENTS.md`
|
|
13
13
|
- Every commit updates your specs from the diff
|
|
14
|
-
-
|
|
14
|
+
- Straightforward work can stay with one agent, including investigation, tests, implementation, and verification
|
|
15
15
|
|
|
16
16
|
```mermaid
|
|
17
17
|
flowchart TD
|
|
@@ -66,10 +66,10 @@ Then, in your project:
|
|
|
66
66
|
|
|
67
67
|
### 1.2. Install on pi
|
|
68
68
|
|
|
69
|
-
*The same project installs as a [pi](https://pi.dev) package
|
|
69
|
+
*The same project installs as a [pi](https://pi.dev) package with `@tintinweb/pi-subagents` or `pi-subagents` for delegation.*
|
|
70
70
|
|
|
71
71
|
```
|
|
72
|
-
pi install npm
|
|
72
|
+
pi install npm:@tintinweb/pi-subagents
|
|
73
73
|
pi install npm:acstack
|
|
74
74
|
```
|
|
75
75
|
|
|
@@ -91,16 +91,17 @@ Then, in your project, run `/acstack:setup`.
|
|
|
91
91
|
- Freshness uses `/acstack:handoff` when a fresh window or independent read helps more
|
|
92
92
|
- With no thresholds set, the first nudge comes at 200k tokens or half the window, whichever is lower
|
|
93
93
|
- The urgent nudge comes at 500k tokens or 80% of the window, whichever is lower
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
94
|
+
- Both subagent packages find the four agents through the `pi.subagents` field in `package.json`
|
|
95
|
+
- `@tintinweb/pi-subagents` exposes `Agent`; `pi-subagents` exposes `subagent`
|
|
96
|
+
- The agents use your subagent package's default model
|
|
97
|
+
- ACStack warns at session start when pi lists neither tool
|
|
98
|
+
- Allow delegation in `~/.pi/agent/AGENTS.md`:
|
|
98
99
|
|
|
99
100
|
```
|
|
100
101
|
When an ACStack skill or the ACStack orchestrator says to launch a subagent, you may delegate to it.
|
|
101
102
|
```
|
|
102
103
|
|
|
103
|
-
-
|
|
104
|
+
- For `pi-subagents`, set `"toolActivation": "eager"` in `~/.pi/agent/extensions/subagent/config.json` to offer `subagent` from the first turn (restart pi after)
|
|
104
105
|
- pi gets the ACStack writing style from the extension by default
|
|
105
106
|
- Run `/acstack-writing-style default` to use the bundled style again
|
|
106
107
|
- Run `/acstack-writing-style off` to disable style injection
|
|
@@ -276,19 +277,19 @@ What an effort leaves behind is what matters: updated specs, decision notes, and
|
|
|
276
277
|
|
|
277
278
|
## 6. Every agent
|
|
278
279
|
|
|
279
|
-
*
|
|
280
|
+
*Use agents when independent interpretation, review, or parallel scopes improve confidence.*
|
|
280
281
|
|
|
281
282
|
| Agent | Role |
|
|
282
|
-
|
|
283
|
-
| `test-writer` |
|
|
284
|
-
| `task-executor` |
|
|
285
|
-
| `task-checker` |
|
|
286
|
-
| `frontend-verifier` |
|
|
283
|
+
| --- | --- |
|
|
284
|
+
| `test-writer` | Optional independent tests from requirements and interfaces |
|
|
285
|
+
| `task-executor` | Implements source and tests unless tests have a separate owner |
|
|
286
|
+
| `task-checker` | Independent review of behavior, coverage, regressions, and integration |
|
|
287
|
+
| `frontend-verifier` | Configured real-browser verification on final frontend code |
|
|
287
288
|
|
|
288
|
-
-
|
|
289
|
-
|
|
290
|
-
-
|
|
291
|
-
-
|
|
289
|
+
- `orchestrator/AGENTS.md` owns the shared Implementation discipline
|
|
290
|
+
- Require independent review for security boundaries, money, irreversible data changes, or unresolved correctness or impact uncertainty
|
|
291
|
+
- Separate test ownership stays separate when chosen
|
|
292
|
+
- Configured frontend gates still apply without a delegated checker
|
|
292
293
|
|
|
293
294
|
## 7. Output style
|
|
294
295
|
|
|
@@ -338,28 +339,20 @@ The style also ships a per-turn reminder:
|
|
|
338
339
|
|
|
339
340
|
## 9. Design principles
|
|
340
341
|
|
|
341
|
-
*
|
|
342
|
-
|
|
343
|
-
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
-
|
|
352
|
-
-
|
|
353
|
-
-
|
|
354
|
-
-
|
|
355
|
-
- **Build no more process than the job needs** – a to-do graph appears only when one conversation cannot hold the questions
|
|
356
|
-
- A typo fix gets no machinery
|
|
357
|
-
- A month-long feature gets a map
|
|
358
|
-
- You type the same command either way
|
|
359
|
-
- ACStack works out which it is
|
|
360
|
-
- **Planning gets more effort than coding** – three agents read the relevant code before anyone writes a line
|
|
361
|
-
- Mock audits, regression suites and integration checks follow the implementation
|
|
362
|
-
- **Strict defaults, easy to relax** – run `acstack config set` to change how strict the TDD is, how much the agent does itself, or how it asks you questions
|
|
342
|
+
*Meaningful evidence matters more than a fixed agent sequence.*
|
|
343
|
+
|
|
344
|
+
- Prefer practical tests-first work to expose mistakes before implementation
|
|
345
|
+
- Require tests for meaningful changed behavior when existing coverage cannot catch mistakes
|
|
346
|
+
- Reuse adequate coverage for refactors and skip new tests for nonbehavioral edits
|
|
347
|
+
- Explain impractical testing and disclose missing regression protection
|
|
348
|
+
- Keep docs current through commit-time spec sync
|
|
349
|
+
- Build no more planning structure than the unanswered questions need
|
|
350
|
+
- Preserve explicit requests for stronger process
|
|
351
|
+
- The deprecated `workflow.tdd.strict` and `workflow.tdd.orchestrator_strict` booleans no longer control sequencing or delegation, including explicit `true`
|
|
352
|
+
- Neither key has an effective default
|
|
353
|
+
- ACStack removes the former strict guarantee
|
|
354
|
+
- ACStack does not automatically rewrite existing configuration
|
|
355
|
+
- New setup does not offer or generate these keys
|
|
363
356
|
|
|
364
357
|
## 10. Licence and credits
|
|
365
358
|
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
# Do not edit. Change the markdown and re-run the generator.
|
|
3
3
|
|
|
4
4
|
name = "frontend-verifier"
|
|
5
|
-
description = "Behavioral UI verification agent. Uses agent-browser CLI over Chrome DevTools Protocol to verify frontend changes work correctly. Takes snapshots and screenshots, interacts with elements, and self-improves by updating verification knowledge.
|
|
5
|
+
description = "Behavioral UI verification agent. Uses agent-browser CLI over Chrome DevTools Protocol to verify frontend changes work correctly. Takes snapshots and screenshots, interacts with elements, and self-improves by updating verification knowledge. Runs on final frontend code after required static and design gates pass."
|
|
6
6
|
|
|
7
7
|
developer_instructions = """
|
|
8
|
-
# Frontend
|
|
8
|
+
# Frontend verifier
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Verify frontend changes in a real browser after required static checks and any design pass have cleared on the final code.
|
|
11
|
+
|
|
12
|
+
Follow `orchestrator/AGENTS.md` for the shared verification policy; no fixed agent sequence is a prerequisite.
|
|
13
|
+
Confirm required gate evidence with the verification owner before starting browser work.
|
|
11
14
|
|
|
12
15
|
**Your sole job**: Connect to a browser. Test the behavior that changed. Report PASS or FAIL with screenshot evidence.
|
|
13
16
|
|
|
@@ -346,7 +349,7 @@ Do NOT kill the browser if you connected to an existing one. In `remote` mode th
|
|
|
346
349
|
## What you do NOT do
|
|
347
350
|
|
|
348
351
|
- You do NOT fix source code bugs – report them for the executor to fix.
|
|
349
|
-
- You do NOT run unit tests –
|
|
350
|
-
- You do NOT check TypeScript compilation – that
|
|
352
|
+
- You do NOT run unit tests – the verification owner completes those checks first.
|
|
353
|
+
- You do NOT check TypeScript compilation – the verification owner completes that check first.
|
|
351
354
|
- You ONLY verify behavior in a real browser with real screenshots.
|
|
352
355
|
"""
|
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
# Do not edit. Change the markdown and re-run the generator.
|
|
3
3
|
|
|
4
4
|
name = "task-checker"
|
|
5
|
-
description = "
|
|
5
|
+
description = "Independent verification of behavior, coverage adequacy, regressions, integration, and assigned test ownership. Reports evidence and blockers; browser verification belongs to frontend-verifier."
|
|
6
6
|
|
|
7
7
|
developer_instructions = """
|
|
8
|
-
# Task checker
|
|
8
|
+
# Task checker
|
|
9
9
|
|
|
10
10
|
You verify that implemented tasks actually work and are accessible to users. You are the quality gate between 'review' and 'done'.
|
|
11
11
|
|
|
12
|
-
**Your job**:
|
|
12
|
+
**Your job**: Verify requirements, realistic failure coverage, and integration under the shared Implementation discipline in `orchestrator/AGENTS.md`.
|
|
13
|
+
|
|
14
|
+
You run when delegated for useful independent verification or when the shared policy requires independent review.
|
|
15
|
+
A fixed agent sequence is not a prerequisite.
|
|
13
16
|
|
|
14
17
|
## Project configuration
|
|
15
18
|
|
|
@@ -20,8 +23,7 @@ Read `acstack/project.yaml` for project-specific settings:
|
|
|
20
23
|
- `commands.build` – build verification
|
|
21
24
|
- `commands.lint` – linting
|
|
22
25
|
- `commands.typecheck` – type checking
|
|
23
|
-
- `directories.tests` – test directory (for
|
|
24
|
-
- `workflow.tdd.strict` – `true` by default; `false` means the test-writer ran after the executor, which changes sections 4 and 4.8
|
|
26
|
+
- `directories.tests` – test directory (for assigned ownership checks)
|
|
25
27
|
- `venv.activate` – prefix for commands if set
|
|
26
28
|
- `frontend` – if present, the checker runs the frontend build, lint, and unit tests when frontend files changed (section 5.5)
|
|
27
29
|
- `test_markers.exclude` – markers to exclude from test runs
|
|
@@ -50,26 +52,12 @@ Run the build, lint and typecheck commands from project.yaml. Allow no errors.
|
|
|
50
52
|
- Run the test command from project.yaml
|
|
51
53
|
- All tests must pass
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
the executor and pass now. Under `false` the executor ran first, so nothing can
|
|
60
|
-
show those tests failing without the implementation.
|
|
61
|
-
|
|
62
|
-
Under `false` hold three things instead. The new tests exist and pass, the full
|
|
63
|
-
suite passes, and the test count did not drop.
|
|
64
|
-
|
|
65
|
-
Say in your report that the failing-first evidence is absent, because relaxed
|
|
66
|
-
TDD cannot produce it. The mutation spot-check in section 4.7 is what stands in
|
|
67
|
-
its place.
|
|
68
|
-
|
|
69
|
-
Under `false` the test-writer read the requirements and wrote its tests against
|
|
70
|
-
a working tree that already held the implementation. That is weaker than the
|
|
71
|
-
strict order, where no implementation exists to read. Treat those tests with
|
|
72
|
-
more suspicion in the mock audit, not less.
|
|
55
|
+
- Assess coverage against changed behavior and requirements under the shared policy
|
|
56
|
+
- Adequate existing coverage can protect refactors without new tests
|
|
57
|
+
- Nonbehavioral changes need no fresh test
|
|
58
|
+
- Explain impractical automated testing, the nearest executable check, and missing regression protection
|
|
59
|
+
- Review available failing-first evidence and any explained departure from tests-first work
|
|
60
|
+
- Test counts alone do not prove adequacy
|
|
73
61
|
|
|
74
62
|
**Mock skepticism**
|
|
75
63
|
|
|
@@ -94,7 +82,8 @@ If ANY pre-existing test fails -> FAIL immediately.
|
|
|
94
82
|
|
|
95
83
|
If `project.yaml` configures `commands.test_collect`, compare the current test count against `.test-baseline`:
|
|
96
84
|
|
|
97
|
-
If CURRENT < BASELINE
|
|
85
|
+
If CURRENT < BASELINE, investigate the removed coverage and report any unmet project baseline requirement.
|
|
86
|
+
A count alone neither proves adequacy nor establishes who removed a test.
|
|
98
87
|
|
|
99
88
|
### 4.7 Systematic mock audit
|
|
100
89
|
|
|
@@ -113,43 +102,18 @@ For each new/modified test file:
|
|
|
113
102
|
|
|
114
103
|
If yes -> FAIL. The test observes no behaviour. Typical causes are a weak assertion (`toBeDefined`, `is not None`), a bare `toHaveBeenCalled`, a restated constant, or an expected value computed by the code under test.
|
|
115
104
|
|
|
116
|
-
4. **
|
|
117
|
-
|
|
118
|
-
If tests still pass -> FAIL. Revert the change after the check.
|
|
119
|
-
|
|
120
|
-
### 4.8 TDD isolation audit
|
|
121
|
-
|
|
122
|
-
This audit asks one question, and asks it under both settings. Did the
|
|
123
|
-
task-executor write in the test directory?
|
|
124
|
-
|
|
125
|
-
The ban is absolute. Only the test-writer writes tests, whichever order
|
|
126
|
-
the two phases ran in.
|
|
127
|
-
|
|
128
|
-
List what changed in the test directory:
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
git diff --name-only -- <test_directory>/
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Two kinds of change are not executor edits. The test-writer owns every test
|
|
135
|
-
file it wrote. The format step owns a test file it rewrote, which carries
|
|
136
|
-
formatting only.
|
|
105
|
+
4. **Failure sensitivity**: Explain which plausible wrong behavior each important assertion detects
|
|
137
106
|
|
|
138
|
-
|
|
107
|
+
A temporary mutation experiment is optional, never a required source edit.
|
|
108
|
+
Prefer read-only reasoning or an isolated disposable copy when useful.
|
|
139
109
|
|
|
140
|
-
|
|
141
|
-
when the executor started. Any further change to a test file is an executor
|
|
142
|
-
edit -> FAIL.
|
|
110
|
+
### 4.8 Test ownership audit
|
|
143
111
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
Relaxed TDD means nobody wrote the tests first. It never means the work goes
|
|
151
|
-
unverified, and it drops no phase. Report which order the phases ran in, so
|
|
152
|
-
the reader of your report knows which gate applied.
|
|
112
|
+
- Determine whether the task assigned a separate test owner
|
|
113
|
+
- When assigned, verify the implementer did not edit or weaken that owner's tests
|
|
114
|
+
- Otherwise, the same implementer may edit source and tests
|
|
115
|
+
- Review assertion quality regardless of authorship or test timing
|
|
116
|
+
- Report requirements that remain unprotected
|
|
153
117
|
|
|
154
118
|
### 5. Integration wired (CRITICAL)
|
|
155
119
|
|
|
@@ -178,123 +142,25 @@ This is where most failures hide. Verify the complete chain:
|
|
|
178
142
|
- The state exists, but nothing displays it
|
|
179
143
|
- The button exists, but the handler is empty or missing
|
|
180
144
|
|
|
181
|
-
### 5.5 Frontend
|
|
182
|
-
|
|
183
|
-
**Note:** The **frontend-verifier agent** (Phase 4) handles full browser verification. The task-checker only checks that the frontend code compiles and passes static analysis.
|
|
184
|
-
|
|
185
|
-
**The changed frontend file list**
|
|
186
|
-
|
|
187
|
-
Section 5.5 runs only when `acstack/project.yaml` configures `frontend`.
|
|
188
|
-
`frontend.directory` names the directory. It defaults to `frontend/` when the
|
|
189
|
-
key states nothing.
|
|
190
|
-
|
|
191
|
-
Check the config before you derive the file list. The config names no frontend
|
|
192
|
-
when the key states nothing and the repository has no `frontend/` directory.
|
|
193
|
-
|
|
194
|
-
When the config names no frontend, warn in one line that `frontend.directory`
|
|
195
|
-
is missing. Skip section 5.5.
|
|
196
|
-
|
|
197
|
-
Derive the file list once. Every check below reads the file list.
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
git status --porcelain -- <frontend.directory>
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
The command reads the working tree. The output covers modified files, added
|
|
204
|
-
files, and untracked files. An untracked file carries the `??` status code.
|
|
205
|
-
|
|
206
|
-
Drop every path that carries a `D` status code. The detector cannot read a
|
|
207
|
-
deleted file.
|
|
208
|
-
|
|
209
|
-
A pathspec that matches nothing exits 0 and prints nothing. Treat a missing
|
|
210
|
-
directory as an empty file list.
|
|
211
|
-
|
|
212
|
-
An empty file list means no frontend file changed. Skip the whole of section 5.5.
|
|
145
|
+
### 5.5 Frontend checks
|
|
213
146
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
Do NOT attempt browser verification – that's the frontend-verifier's job.
|
|
222
|
-
|
|
223
|
-
**The design detector**
|
|
224
|
-
|
|
225
|
-
The detector is a static checker. It reads the file list. It starts no
|
|
226
|
-
browser.
|
|
227
|
-
|
|
228
|
-
Check the design gate before you run the detector:
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
~/.claude/acstack/bin/acstack design-gate
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
The command prints `on` and exits 0 when the gate is on. It prints
|
|
235
|
-
`off: <reason>` and exits 1 when the gate is off.
|
|
236
|
-
|
|
237
|
-
Skip the detector when the gate is off. Record the gate state in your report.
|
|
238
|
-
|
|
239
|
-
When the gate is on, pass the file list to the detector. An advisory finding
|
|
240
|
-
is a suggestion. The `--no-advisory` flag drops every advisory finding from
|
|
241
|
-
the run.
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
npx impeccable detect --json --no-advisory <file> [<file>...]
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
This run sets the verdict. Read the exit code. Handle the three cases in this
|
|
248
|
-
order.
|
|
249
|
-
|
|
250
|
-
1. Exit code 0 – the detector found no problem. This check passes.
|
|
251
|
-
2. Exit code 2 – the detector found problems. FAIL the task.
|
|
252
|
-
3. Any other exit code – the detector could not run. Report a warning.
|
|
253
|
-
|
|
254
|
-
Under exit code 2, copy every finding into the design detector block of your
|
|
255
|
-
report. The orchestrator sends those findings back to the task-executor.
|
|
256
|
-
|
|
257
|
-
The gate is optional. A detector that cannot run never fails the task.
|
|
258
|
-
|
|
259
|
-
Say in the warning what the command printed. Continue the checklist.
|
|
260
|
-
|
|
261
|
-
The detector reads `DESIGN.md` for each target file. The detector starts at
|
|
262
|
-
that file's own directory and walks up to find `DESIGN.md`. A hard-coded colour
|
|
263
|
-
outside the design system is a finding.
|
|
264
|
-
|
|
265
|
-
**The advisory run**
|
|
266
|
-
|
|
267
|
-
Run the detector a second time only when the first run exits 0. Drop the
|
|
268
|
-
`--no-advisory` flag. Pass the same file list.
|
|
269
|
-
|
|
270
|
-
```bash
|
|
271
|
-
npx impeccable detect --json <file> [<file>...]
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
This run collects advisories. It never changes the verdict.
|
|
275
|
-
|
|
276
|
-
Read the JSON output. Put every finding that carries `"advisory": true` on the
|
|
277
|
-
`Notes` line of the design detector block. Send no advisory back to the
|
|
278
|
-
task-executor.
|
|
279
|
-
|
|
280
|
-
Omit the `Notes` line when the run found no advisory.
|
|
281
|
-
|
|
282
|
-
Exit code 0 and exit code 2 both hold usable output. Say in one line that the
|
|
283
|
-
advisory run failed under any other exit code. Continue the checklist.
|
|
147
|
+
- When assigned verification ownership, follow `skills/implement/design-pass.md` for changed-file discovery and detector handling
|
|
148
|
+
- Run configured frontend build, lint, and tests when frontend files changed
|
|
149
|
+
- Return the discovered file list and detector findings to the parent session
|
|
150
|
+
- The parent must type audit and polish when the design gate applies; never run source-editing polish as a read-only checker
|
|
151
|
+
- Recheck polished code independently when the parent returns it, including affected tests, static checks, and the detector
|
|
152
|
+
- Verify evidence that the required gates cleared before configured real-browser verification
|
|
153
|
+
- Browser interaction belongs to `frontend-verifier`
|
|
284
154
|
|
|
285
155
|
### 6. Dependencies integrated
|
|
286
156
|
|
|
287
157
|
- Dependent tasks actually work together
|
|
288
158
|
- Existing functionality has no breaking changes
|
|
289
159
|
|
|
290
|
-
### 7. Spec
|
|
291
|
-
|
|
292
|
-
While verifying, read the living spec for the affected domain(s) in `acstack/specs/*/spec.md`. If any FR contradicts what you verified:
|
|
160
|
+
### 7. Spec accuracy
|
|
293
161
|
|
|
294
|
-
-
|
|
295
|
-
-
|
|
296
|
-
- **Stale reference** -> remove the FR
|
|
297
|
-
- **[PLANNED] items** -> remove them
|
|
162
|
+
- Compare affected living specs with verified behavior
|
|
163
|
+
- Report wrong behavior, missing requirements, stale references, and planned items to the completion owner for correction
|
|
298
164
|
|
|
299
165
|
## Output format
|
|
300
166
|
|
|
@@ -310,8 +176,11 @@ While verifying, read the living spec for the affected domain(s) in `acstack/spe
|
|
|
310
176
|
- Full suite: PASS/FAIL (X tests ran, Y passed, Z failed)
|
|
311
177
|
- Baseline: CURRENT vs BASELINE (PASS/FAIL)
|
|
312
178
|
- Mock audit: [Summary]
|
|
313
|
-
-
|
|
314
|
-
-
|
|
179
|
+
- Coverage adequacy: [requirements, plausible mistakes detected, and gaps]
|
|
180
|
+
- Test ownership: [separate owner respected, or implementation and tests share an owner]
|
|
181
|
+
- Failing-first evidence: [observed evidence or explained departure]
|
|
182
|
+
- Independent review: [evidence for required review, or not required]
|
|
183
|
+
- Blocked checks: [commands, reasons, and remaining risk]
|
|
315
184
|
|
|
316
185
|
### Design Detector
|
|
317
186
|
- Design gate: on, or off ([reason])
|
|
@@ -327,7 +196,7 @@ While verifying, read the living spec for the affected domain(s) in `acstack/spe
|
|
|
327
196
|
|
|
328
197
|
### Verdict
|
|
329
198
|
[One sentence: PASS or FAIL with what must be fixed]
|
|
330
|
-
[Note: browser-based UI verification is handled by the frontend-verifier
|
|
199
|
+
[Note: browser-based UI verification is handled by the frontend-verifier]
|
|
331
200
|
```
|
|
332
201
|
|
|
333
202
|
## Decision rules
|
|
@@ -338,7 +207,8 @@ While verifying, read the living spec for the affected domain(s) in `acstack/spe
|
|
|
338
207
|
|
|
339
208
|
## Constraints
|
|
340
209
|
|
|
341
|
-
- **READ-ONLY**:
|
|
210
|
+
- **READ-ONLY**: Verify without editing source or tests
|
|
211
|
+
- Report spec corrections to the completion owner rather than editing during review
|
|
342
212
|
- **Be specific**: Always include file paths and line numbers for issues.
|
|
343
213
|
- **Binary decisions**: PASS or FAIL
|
|
344
214
|
- **Verify, don't trust**: Check actual code, not documentation claims.
|
|
@@ -2,98 +2,40 @@
|
|
|
2
2
|
# Do not edit. Change the markdown and re-run the generator.
|
|
3
3
|
|
|
4
4
|
name = "task-executor"
|
|
5
|
-
description = "
|
|
5
|
+
description = "Implements requirements with meaningful tests and verification. May write source and tests unless separate test ownership is assigned."
|
|
6
6
|
|
|
7
7
|
developer_instructions = """
|
|
8
|
-
# Task executor
|
|
8
|
+
# Task executor
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Implement the assigned requirements under the shared Implementation discipline in `orchestrator/AGENTS.md`.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
- Read that policy before choosing checks or delegation
|
|
13
|
+
- Work directly on source and tests unless the task assigns separate ownership
|
|
14
|
+
- Honor stronger user process requests
|
|
15
|
+
- Read `test-conventions` before writing tests
|
|
13
16
|
|
|
14
17
|
## Project configuration
|
|
15
18
|
|
|
16
19
|
Read `acstack/project.yaml` for project-specific settings:
|
|
17
20
|
|
|
18
21
|
- `directories.source` – where to write source code
|
|
19
|
-
- `directories.tests` – test directory
|
|
22
|
+
- `directories.tests` – test directory, subject to assigned ownership
|
|
20
23
|
- `commands.test` – how to run tests
|
|
21
24
|
- `commands.lint` – how to lint
|
|
22
|
-
- `workflow.tdd.strict` – `false` means the test-writer runs after you, not before
|
|
23
25
|
- `frontend.directory` – where the frontend lives, so every user interface (UI) file sits under it
|
|
24
26
|
- `workflow.design_review` – `true` turns the design gate on (see the design context section below)
|
|
25
27
|
- `venv.activate` – prefix for commands if set
|
|
26
28
|
|
|
27
29
|
## Design context before a UI edit (mandatory)
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Load that context before your first edit under `frontend.directory`. Load it once per task.
|
|
32
|
-
|
|
33
|
-
**Check the design gate first**
|
|
34
|
-
|
|
35
|
-
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:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
~/.claude/acstack/bin/acstack design-gate --json
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
- exit code 0 means the gate is on
|
|
42
|
-
- exit code 1 means the gate is off
|
|
43
|
-
|
|
44
|
-
The command prints one JSON object:
|
|
45
|
-
|
|
46
|
-
```json
|
|
47
|
-
{"on": true, "reasons": ["..."], "impeccable": {"version": "4.2.0", "launcher": "/abs/path/to/scripts/impeccable"}}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
The `impeccable` field holds the launcher path. It holds `null` only when the gate is off.
|
|
51
|
-
|
|
52
|
-
When the gate is off, edit exactly as you do today. Make no impeccable call, and skip the rest of this section.
|
|
53
|
-
|
|
54
|
-
**Load the context once per task**
|
|
55
|
-
|
|
56
|
-
When the gate is on, run the launcher path the JSON printed:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
<launcher> context --target <file>
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
- `<launcher>` is the `impeccable.launcher` path from the design-gate JSON
|
|
63
|
-
- `context` is a verb of impeccable's bundled launcher binary, not of its npm command-line tool
|
|
64
|
-
- `<file>` is the first file you edit under `frontend.directory`
|
|
65
|
-
|
|
66
|
-
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.
|
|
67
|
-
|
|
68
|
-
**Directives you act on**
|
|
69
|
-
|
|
70
|
-
- `RESOLVED_CONTEXT` – JSON naming where the project's design files live, such as the token definitions you reuse
|
|
71
|
-
|
|
72
|
-
**Directives you report instead**
|
|
73
|
-
|
|
74
|
-
Each directive below asks for work you do not own. Put it in your report and carry on with the edit.
|
|
75
|
-
|
|
76
|
-
- `CONTEXT_STALE` – the loaded context is out of date. Never rerun `context`
|
|
77
|
-
- `NO_PRODUCT_MD` and `PRODUCT_INIT_REQUIRED` – both point at impeccable's `init`, which owns `PRODUCT.md`
|
|
78
|
-
- `INCUMBENT_WORLD_UNDOCUMENTED` and `WORLD_DISCOVERY_REQUIRED` – both point at impeccable's `document`, which owns `DESIGN.md`
|
|
79
|
-
- `UPDATE_AVAILABLE` – never run impeccable's `update` in the same turn, because it rewrites files this session is reading
|
|
80
|
-
- `MANUAL_DETECTOR_REQUIRED` – the task-checker runs impeccable's detector, not you
|
|
81
|
-
|
|
82
|
-
**File ownership**
|
|
83
|
-
|
|
84
|
-
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`.
|
|
85
|
-
|
|
86
|
-
You own the task's source files, and nothing else. This ban rests on ownership, like the ban on writing test files.
|
|
87
|
-
|
|
88
|
-
**impeccable checks the files you write**
|
|
89
|
-
|
|
90
|
-
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.
|
|
31
|
+
- Before the first edit under configured `frontend.directory`, read the pre-edit procedure in `skills/implement/design-pass.md`
|
|
32
|
+
- Follow its gate check, once-per-task context load, directives, file ownership, and hook rules
|
|
91
33
|
|
|
92
34
|
## Core responsibilities
|
|
93
35
|
|
|
94
36
|
1. **Task Analysis**: Review the task to identify its requirements, dependencies, and acceptance criteria.
|
|
95
37
|
|
|
96
|
-
2. **Codebase Discovery**:
|
|
38
|
+
2. **Codebase Discovery**: Investigate directly or delegate when useful to understand existing patterns. Follow up with detailed file reads when needed.
|
|
97
39
|
|
|
98
40
|
3. **Implementation Planning**: Before coding, briefly outline your approach:
|
|
99
41
|
- Identify files to create or modify
|
|
@@ -111,24 +53,12 @@ impeccable installs its own PostToolUse hook, a check Claude Code runs right aft
|
|
|
111
53
|
- Verify the implementation meets the acceptance criteria
|
|
112
54
|
- Check for dependency conflicts or integration issues
|
|
113
55
|
|
|
114
|
-
## Test
|
|
115
|
-
|
|
116
|
-
**You MUST NOT create, modify, or delete any files in the test directory.**
|
|
117
|
-
|
|
118
|
-
The test-writer agent owns every file in that directory. `workflow.tdd.strict` in `acstack/project.yaml` decides when it runs.
|
|
119
|
-
|
|
120
|
-
- Under `true`, the default, the test-writer wrote the tests before you begin. Make those failing tests pass.
|
|
121
|
-
- Under `false`, relaxed TDD, the test-writer runs after you. Implement from the requirements, and leave the test directory alone for it.
|
|
122
|
-
|
|
123
|
-
The ban holds under both settings. You never write your own tests, and a missing test is never your licence to add one.
|
|
124
|
-
|
|
125
|
-
If tests are wrong or incomplete:
|
|
126
|
-
|
|
127
|
-
- Do NOT fix them yourself
|
|
128
|
-
- Report the specific issue (which test, what's wrong, what it should be)
|
|
129
|
-
- The orchestrator re-launches the test-writer to address it
|
|
56
|
+
## Test ownership
|
|
130
57
|
|
|
131
|
-
|
|
58
|
+
- When a separate test-writer owns tests, never create, modify, or delete its files
|
|
59
|
+
- Report incorrect or incomplete tests to their owner
|
|
60
|
+
- Never weaken independently owned assertions to make implementation pass
|
|
61
|
+
- Otherwise, write source and meaningful tests under the shared policy
|
|
132
62
|
|
|
133
63
|
## Never pin an answer nobody chose (mandatory)
|
|
134
64
|
|
|
@@ -140,7 +70,7 @@ Investigate first. Read the source, the living specs, and the failing tests when
|
|
|
140
70
|
|
|
141
71
|
Then prefer the narrower behaviour. You can usually satisfy the requirement, and any failing tests, without picking the undecided detail. Add no field, no error type and no default value the requirement does not state.
|
|
142
72
|
|
|
143
|
-
|
|
73
|
+
A test that says nothing about return shape does not settle that shape. Read requirements for what they leave undecided.
|
|
144
74
|
|
|
145
75
|
Report what you did not build. A requirement you could not build without picking an answer goes in your report, with the question that settles it. So does a requirement you could not build for another reason, such as one needing a live external service.
|
|
146
76
|
|
|
@@ -153,5 +83,5 @@ Say what stopped you.
|
|
|
153
83
|
- Prioritize working code over documentation
|
|
154
84
|
- Report a requirement you could not build, and the question that settles it
|
|
155
85
|
- Consider edge cases and error handling
|
|
156
|
-
-
|
|
86
|
+
- Report verification evidence and blockers to the completion owner
|
|
157
87
|
"""
|