acstack 0.50.3 → 0.51.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/.claude-plugin/plugin.json +1 -1
- package/README.md +14 -7
- package/agents/codex/frontend-verifier.toml +89 -6
- package/agents/codex/task-checker.toml +83 -2
- package/agents/codex/task-executor.toml +83 -1
- package/agents/codex/test-writer.toml +77 -1
- package/agents/frontend-verifier.md +13 -6
- package/agents/task-checker.md +7 -2
- package/agents/task-executor.md +7 -1
- package/agents/test-writer.md +1 -1
- package/assets/terminal-workspace/config.example.yaml +1 -1
- package/assets/terminal-workspace/helpers/acstack-md +12 -4
- package/assets/terminal-workspace/helpers/acstack-open +10 -2
- package/assets/terminal-workspace/lib/apply-yazi.sh +25 -0
- package/cli/dist/index.js +10142 -9369
- package/cli/dist/index.js.map +4 -4
- package/cli/package.json +1 -1
- package/docs/config-reference.md +113 -14
- package/docs/dev-setups.md +4 -4
- package/docs/terminal-workspace-keys.md +1 -0
- package/docs/terminal-workspace.md +1 -1
- package/docs/workflows.md +22 -16
- package/examples/design-doc/acstack/README.md +273 -0
- package/examples/design-doc/acstack/acstack.yaml +4 -0
- package/examples/design-doc/acstack/cli.yaml +5 -0
- package/examples/design-doc/acstack/design.yaml +39 -0
- package/examples/design-doc/acstack/github.yaml +12 -0
- package/examples/design-doc/acstack/host.yaml +14 -0
- package/examples/design-doc/acstack/journey.md +85 -0
- package/examples/design-doc/acstack/publication.md +16 -0
- package/examples/design-doc/acstack/review-runtime.yaml +24 -0
- package/examples/design-doc/acstack/skills.yaml +22 -0
- package/examples/design-doc/acstack/store.yaml +11 -0
- package/examples/design-doc/acstack/user.yaml +15 -0
- package/examples/design-doc/acstack/viewer.yaml +13 -0
- package/hooks/ac-writing-style-reminder.sh +7 -18
- package/hooks/communication-standard.mjs +17 -0
- package/hooks/communication-standard.sh +6 -0
- package/hooks/context-pressure.sh +2 -2
- package/hooks/hooks.json +18 -0
- package/hooks/lib/communication-standard.mjs +16 -0
- package/hooks/project-data.sh +38 -0
- package/hooks/session-start-handoff.sh +21 -7
- package/hooks/session-start.sh +9 -2
- package/orchestrator/AGENTS.md +25 -14
- package/output-styles/ac-writing-style.md +75 -276
- package/package.json +2 -1
- package/pi/agents/frontend-verifier.md +89 -6
- package/pi/agents/task-checker.md +83 -2
- package/pi/agents/task-executor.md +83 -1
- package/pi/agents/test-writer.md +77 -1
- package/pi/extension.ts +70 -12
- package/profiles/fullstack-python.yaml +1 -1
- package/profiles/node-typescript.yaml +1 -1
- package/profiles/python.yaml +1 -1
- package/skills/archive/SKILL.md +53 -36
- package/skills/bootstrap/SKILL.md +6 -6
- package/skills/bridge/SKILL-VM.md +11 -2
- package/skills/bridge/SKILL-WINDOWS.md +3 -3
- package/skills/browser-verify/SKILL.md +14 -5
- package/skills/code-review/SKILL.md +8 -2
- package/skills/commit/SKILL.md +7 -6
- package/skills/compact-and-continue/SKILL.md +9 -8
- package/skills/design-doc/SKILL.md +235 -0
- package/skills/explore/SKILL.md +1 -1
- package/skills/grilling/SKILL.md +4 -4
- package/skills/handoff/SKILL.md +4 -4
- package/skills/host/SKILL.md +1 -1
- package/skills/host/detect-host.sh +2 -2
- package/skills/host/notes.md +2 -2
- package/skills/host/questions.md +1 -1
- package/skills/implement/SKILL.md +20 -13
- package/skills/implement/decision-log.md +9 -8
- package/skills/implement/design-pass.md +16 -2
- package/skills/map/SKILL.md +15 -71
- package/skills/map/alignment.md +18 -27
- package/skills/map/frontend.md +1 -1
- package/skills/map/materialising.md +74 -0
- package/skills/map/trackers/files.md +4 -6
- package/skills/pre-commit-review/SKILL.md +15 -9
- package/skills/pre-commit-review/auto-fix.md +1 -1
- package/skills/quick-fix/SKILL.md +1 -1
- package/skills/record-context/SKILL.md +6 -6
- package/skills/setup/SKILL.md +15 -50
- package/skills/setup/browser.md +2 -2
- package/skills/setup/first-run.md +19 -8
- package/skills/setup/report.md +3 -2
- package/skills/setup/row-fixes.md +56 -9
- package/skills/sync/SKILL.md +12 -11
- package/skills/terminal-workspace/SKILL.md +2 -1
- package/skills/test-conventions/SKILL.md +2 -2
- package/skills/visual-docs/SKILL.md +69 -235
- package/skills/writing/SKILL.md +29 -217
- package/skills/writing/examples.md +62 -129
- package/docs/adr/0001-ste-writing-standard.md +0 -16
- package/docs/adr/0002-version-gate-not-auto-bump.md +0 -35
- package/docs/adr/0003-handoff-ack-command.md +0 -19
- package/docs/adr/0004-dev-setup-per-host.md +0 -13
- package/docs/adr/0005-two-orchestrators-per-host.md +0 -25
- package/docs/adr/0006-document-opener-service.md +0 -89
- package/docs/adr/0007-lead-check-reads-the-transcript.md +0 -87
- package/docs/adr/0008-cli-audits-skill-interviews.md +0 -37
- package/docs/adr/0009-verify-the-write-not-the-writer.md +0 -51
- package/docs/adr/0010-promote-dev-to-main-by-fast-forward.md +0 -115
- package/docs/adr/0011-node-header-is-the-edge-encoding.md +0 -20
- package/docs/adr/0012-node-kind-is-a-closed-set-of-five.md +0 -31
- package/docs/adr/0013-the-diagram-renderer-is-pure.md +0 -23
- package/docs/adr/0014-reading-a-node-hides-its-generated-diagram.md +0 -29
- package/docs/adr/0015-a-node-id-links-to-its-issue-through-an-anchor.md +0 -37
- package/docs/adr/0016-the-map-root-carries-no-status-of-its-own.md +0 -21
- package/docs/adr/0017-call-impeccable-copy-only-its-questions.md +0 -13
- package/docs/adr/0018-alignment-packs-use-local-viewers.md +0 -11
- package/docs/adr/index.md +0 -18
package/orchestrator/AGENTS.md
CHANGED
|
@@ -66,7 +66,17 @@ ACStack runs on Claude Code, Codex, and pi. The skills name each capability once
|
|
|
66
66
|
|
|
67
67
|
## Project configuration
|
|
68
68
|
|
|
69
|
-
All
|
|
69
|
+
- All ACStack-owned project data lives under `.acstack/` and stays local by default
|
|
70
|
+
- The root `.gitignore` is the sole tracking policy; user exceptions after its managed baseline opt individual parts in
|
|
71
|
+
- Before a configuration gate, CLI and host session startup run `~/.claude/acstack/bin/acstack project-data ensure`
|
|
72
|
+
- When creating `.acstack/` manually, run that command immediately; it needs no project config
|
|
73
|
+
- Filesystem creation alone triggers nothing; the next CLI invocation or session startup enforces the baseline, without a watcher
|
|
74
|
+
- Never force-add ignored project data, change the Git index, or create automatic tracking exceptions
|
|
75
|
+
- For legacy layouts, follow the explicit migration procedure in `docs/config-reference.md`
|
|
76
|
+
- Update installed tools first, stop old agents and reviews, migrate the selected checkout, then restart with updated tools
|
|
77
|
+
- Never silently migrate another checkout or work around legacy data by creating a partial `.acstack/` there
|
|
78
|
+
|
|
79
|
+
All project-specific commands and paths come from `.acstack/project.yaml`. Read this file before you run any build, test or lint command. If it doesn't exist, prompt the user to run `/acstack:setup`.
|
|
70
80
|
|
|
71
81
|
Key fields:
|
|
72
82
|
|
|
@@ -250,18 +260,19 @@ flowchart TD
|
|
|
250
260
|
|
|
251
261
|
Spec sync keeps living specs current, whichever workflow you ran. It runs as part of every `/acstack:commit`.
|
|
252
262
|
|
|
253
|
-
When `workflow.spec_sync` is `true` in
|
|
263
|
+
When `workflow.spec_sync` is `true` in `.acstack/project.yaml`:
|
|
254
264
|
|
|
255
265
|
1. Run `git diff --staged` to see what is changing
|
|
256
|
-
2. Map changed files to spec domains via
|
|
257
|
-
3. For each affected domain with a
|
|
266
|
+
2. Map changed files to spec domains via `.acstack/domain-map.yaml`
|
|
267
|
+
3. For each affected domain with a `.acstack/specs/[domain]/spec.md`:
|
|
258
268
|
- Analyze what the staged changes ADD, MODIFY, or REMOVE
|
|
259
269
|
- Generate lightweight ADDED/MODIFIED/REMOVED entries
|
|
260
270
|
- Update the spec.md
|
|
261
|
-
4. Stage updated
|
|
271
|
+
4. Stage updated specs only when native `.gitignore` rules allow tracking
|
|
272
|
+
- Keep ignored specs updated locally; never force-add them or change the Git index to bypass the user's choice
|
|
262
273
|
5. Flag unmapped source files. Prompt the user to map them.
|
|
263
274
|
|
|
264
|
-
|
|
275
|
+
Spec sync updates local records with every commit, including when those records stay ignored.
|
|
265
276
|
|
|
266
277
|
---
|
|
267
278
|
|
|
@@ -278,9 +289,9 @@ This is lightweight – retroactive spec documentation, not upfront planning. Sp
|
|
|
278
289
|
|
|
279
290
|
## Living specs
|
|
280
291
|
|
|
281
|
-
-
|
|
292
|
+
- `.acstack/specs/` contains the cumulative source of truth for the system
|
|
282
293
|
- `/acstack:commit` updates them automatically through spec sync; `/acstack:archive` closes out a cleared map
|
|
283
|
-
- Domain-organized per
|
|
294
|
+
- Domain-organized per `.acstack/domain-map.yaml`
|
|
284
295
|
- Format: Given/When/Then, FR-NNN requirements
|
|
285
296
|
- Bootstrap from existing codebase: `/acstack:bootstrap`
|
|
286
297
|
- Map nodes: ACStack CLI (`~/.claude/acstack/bin/acstack node create | read | update | list`, plus the composed `node frontier` and `node walk` queries)
|
|
@@ -303,13 +314,13 @@ Read-only reviewers report discrepancies to the completion owner.
|
|
|
303
314
|
|
|
304
315
|
**Before marking ANY task as complete, you MUST verify the project builds.**
|
|
305
316
|
|
|
306
|
-
Read
|
|
317
|
+
Read `.acstack/project.yaml` for the specific commands. The general pattern:
|
|
307
318
|
|
|
308
319
|
1. Run the build command if the project configures one
|
|
309
320
|
2. Run lint
|
|
310
321
|
3. Run typecheck if the project configures one
|
|
311
322
|
4. Run the full test suite – ALL tests must pass
|
|
312
|
-
5. Compare the test count against `.test-baseline`. The count must not drop.
|
|
323
|
+
5. Compare the test count against `.acstack/.test-baseline`. The count must not drop.
|
|
313
324
|
6. Run the frontend build and lint if the project configures a frontend
|
|
314
325
|
|
|
315
326
|
### When to run
|
|
@@ -329,7 +340,7 @@ Read `acstack/project.yaml` for the specific commands. The general pattern:
|
|
|
329
340
|
|
|
330
341
|
## Frontend visual verification
|
|
331
342
|
|
|
332
|
-
**This section applies only when
|
|
343
|
+
**This section applies only when `.acstack/project.yaml` sets `frontend` and `workflow.frontend_verification` is `true`.**
|
|
333
344
|
|
|
334
345
|
When a change touches frontend files, delegate real-browser verification to frontend-verifier after required checks pass. Never substitute a confidence claim for browser evidence.
|
|
335
346
|
|
|
@@ -337,7 +348,7 @@ The design pass runs before browser verification when the design gate is on, fol
|
|
|
337
348
|
|
|
338
349
|
The frontend-verifier agent:
|
|
339
350
|
|
|
340
|
-
1. Reads the project's verification knowledge base (
|
|
351
|
+
1. Reads the project's verification knowledge base (`.acstack/verification/VERIFICATION-KNOWLEDGE.md`)
|
|
341
352
|
2. Checks what frontend files changed
|
|
342
353
|
3. Starts the dev server if it's not running
|
|
343
354
|
4. Connects to a browser through the Chrome DevTools Protocol (CDP), over a remote tunnel or local headless Chromium
|
|
@@ -350,8 +361,8 @@ The frontend-verifier agent:
|
|
|
350
361
|
|
|
351
362
|
Run `/acstack:setup` to set up browser verification. This creates:
|
|
352
363
|
|
|
353
|
-
-
|
|
354
|
-
-
|
|
364
|
+
- **`.acstack/agent-browser.json`** – CDP connection config, selected by an absolute `--config` path or `AGENT_BROWSER_CONFIG`
|
|
365
|
+
- **`.acstack/verification/VERIFICATION-KNOWLEDGE.md`** – Evolving knowledge base of element patterns, gotchas, and proven verification sequences
|
|
355
366
|
|
|
356
367
|
`frontend.browser.mode` in project.yaml holds the browser environment: remote, headless, or local.
|
|
357
368
|
|
|
@@ -1,286 +1,85 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ac-writing-style
|
|
3
|
-
description:
|
|
3
|
+
description: Use the fewest clear words that preserve all necessary information, with structure that matches the ideas and relationships.
|
|
4
4
|
keep-coding-instructions: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# ac writing style
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
- Go deep only where the depth would change what they decide or do
|
|
77
|
-
- If they need to double click on something you said, they will do so in a follow-up message
|
|
78
|
-
- Don't proactively add details they would otherwise have been unlikely to follow-up on
|
|
79
|
-
- **Brevity is never a reason to hide something they need to make their decision or act**
|
|
80
|
-
- You are constantly weighing every detail against all the others, then surfacing only those that truly matter
|
|
81
|
-
- Surface anything they would be angry to learn about later
|
|
82
|
-
- If they double click anywhere, give them every detail they need to decide
|
|
83
|
-
|
|
84
|
-
## Shape: Minto pyramid
|
|
85
|
-
|
|
86
|
-
**STRUCTURE IS EVERYTHING**
|
|
87
|
-
|
|
88
|
-
- Lead with the answer
|
|
89
|
-
- State the conclusion or recommendation in the first bullet
|
|
90
|
-
- Support points and/or add more context/color with sub-bullets, only as necessary
|
|
91
|
-
- Name the complication, or what the answer is trying to solve, if that context is necessary and additive for the user
|
|
92
|
-
- Without the complication the answer reads as an assertion, not a conclusion (conclusion is better)
|
|
93
|
-
- Open a durable artifact with one sentence that summarises the full artifact
|
|
94
|
-
- Never open with a paragraph of setup
|
|
95
|
-
- A PR body, an ADR, a handoff, and a README are all examples of artifacts that MUST follow this pattern
|
|
96
|
-
- A reply to a question that the user just asked does not need this pattern (the user just asked the question and therefore has context)
|
|
97
|
-
- Write every document for a developer who has never seen the repository
|
|
98
|
-
- Every sentence has to be extremely intuitive on that developer's first read
|
|
99
|
-
- Never use a metaphor when plain English word(s) would suffice
|
|
100
|
-
- Never put a metaphor in a heading (a heading carries no context from the line above it)
|
|
101
|
-
- Every heading summarises everything under it
|
|
102
|
-
- Sibling sections and sibling bullets are MECE: the same kind of thing with no overlap nor gaps relative to the parent's claim
|
|
103
|
-
- Everything at one level MUST be apples-to-apples
|
|
104
|
-
- E.g., everything under one heading or at one indent level should support the same thing (and all are additive with no overlap)
|
|
105
|
-
- Never put a bullet about what a thing does beside a bullet about how to install it
|
|
106
|
-
- Order siblings deliberately
|
|
107
|
-
- Chronologically for anything with a sequence
|
|
108
|
-
- By structure for parts
|
|
109
|
-
- By degree for importance
|
|
110
|
-
- Etc. – any other order that makes the sequence obvious to the reader
|
|
111
|
-
- When an explanation of how something works runs past about ten bullets, lead with one Mermaid diagram and derive the sections from its nodes
|
|
112
|
-
- Label nodes with the human-readable name first and the technical name underneath
|
|
113
|
-
- Cap a diagram at roughly nine nodes
|
|
114
|
-
- Show the failure path if/when there is one
|
|
115
|
-
- End with the last fact
|
|
116
|
-
- Do not close with an offer of further help
|
|
117
|
-
|
|
118
|
-
## Brevity
|
|
119
|
-
|
|
120
|
-
1. Lead with the result – no preamble
|
|
121
|
-
2. Cut ALL narration, but keep all NECESSARY substance
|
|
122
|
-
3. Say it in half the words
|
|
123
|
-
- Write the reply, then cut it in half without losing one point
|
|
124
|
-
- Cut words, never points
|
|
125
|
-
- Rewrite the sentence when the cut would lose a point
|
|
126
|
-
4. Short by default
|
|
127
|
-
- 1 to 3 sentences for simple questions
|
|
128
|
-
- A short answer is one or two bullets
|
|
129
|
-
- Any longer needs structure (headers and bullets), covered under Bullets and headings
|
|
130
|
-
5. NO JARGON (use plain English)
|
|
131
|
-
- Only caveat something if it is absolutely necessary
|
|
132
|
-
6. Give full detail if requested
|
|
133
|
-
- Brevity does not mean withholding requested information
|
|
134
|
-
7. Never trade correctness for brevity
|
|
135
|
-
- Error reports, failing test output, security warnings, and destructive-action confirmations should keep their full content
|
|
136
|
-
8. Pick the phrasing a reader understands on the first pass
|
|
137
|
-
- E.g., write "something you can't understand yet", not "something nobody can state precisely yet"
|
|
138
|
-
|
|
139
|
-
## Bullets and headings
|
|
140
|
-
|
|
141
|
-
- Put 90% or more of every reply in bullets
|
|
142
|
-
- Prose paragraphs are the exception
|
|
143
|
-
- Write a paragraph only when the user asked for prose, or when the whole answer is one line
|
|
144
|
-
- One sentence per bullet, never two or more
|
|
145
|
-
- Never write a compound sentence without a reason
|
|
146
|
-
- A compound sentence joins two clauses with a comma, or with "and", "so", "but", "which" or "where"
|
|
147
|
-
- Keep the second clause only when it carries a fact the first clause needs
|
|
148
|
-
- Cut a trailing clause that only justifies, softens or restates the first half
|
|
149
|
-
- Write "Claude starts building before the requirements are clear", never that plus ", so you get the wrong thing quickly"
|
|
150
|
-
- Lead with the conclusion when the trailing clause is the point, rather than cutting it
|
|
151
|
-
- Write "Don't cache the token – it expires in five minutes", never "The token expires in five minutes, so don't cache it"
|
|
152
|
-
- Put a cross-reference in parentheses: "(see section 2)", never ", covered in section 2"
|
|
153
|
-
- A sub-bullet carries what its parent can't hold on its own
|
|
154
|
-
- It argues for the parent
|
|
155
|
-
- It adds the detail the point needs to land
|
|
156
|
-
- It gives context the reader can't do without
|
|
157
|
-
- It lists the questions under the parent question
|
|
158
|
-
- Nest as deep as the argument needs, and no deeper
|
|
159
|
-
- Read every level top-down: the parent states the point, its children carry whatever the reader needs to take it
|
|
160
|
-
- A reader who stops at any level still leaves with the point
|
|
161
|
-
- Every bullet at every level carries a distinct point of its own
|
|
162
|
-
- Cut any bullet that narrates, softens or restates
|
|
163
|
-
- Split "X and also Y" into two siblings, or nest one under the other
|
|
164
|
-
- Use parallel grammar across siblings
|
|
165
|
-
- Indent every nested bullet four spaces per level, in a chat reply and in a file alike
|
|
166
|
-
- Claude Code and GitHub both read a wider indent as run-on text under the parent, not as a list
|
|
167
|
-
- No bullet or table cell ends in a period, however long it runs
|
|
168
|
-
- A question mark or an exclamation mark at the end of a bullet is fine
|
|
169
|
-
- Headings in sentence case, no trailing period
|
|
170
|
-
- Each heading adds what its bullets do not
|
|
171
|
-
- Bold a single term for emphasis, at most
|
|
172
|
-
- Never bold whole phrases across a reply
|
|
173
|
-
- This file is the exception, because a rules file shouts its own rules
|
|
174
|
-
|
|
175
|
-
## Sentences
|
|
176
|
-
|
|
177
|
-
- Cap a descriptive sentence at 25 words and an instruction at 20
|
|
178
|
-
- One idea per sentence
|
|
179
|
-
- One instruction per sentence
|
|
180
|
-
- Never write a compound sentence without a reason
|
|
181
|
-
- Cut a trailing clause that only justifies, softens or restates the first half
|
|
182
|
-
- Keep a second clause only when it carries a fact the first clause needs
|
|
183
|
-
- Lead with the conclusion when the trailing clause is the point, rather than cutting it
|
|
184
|
-
- Write "Roll back the deploy – it broke the checkout page"
|
|
185
|
-
- Never write "The deploy broke the checkout page, so roll it back"
|
|
186
|
-
- Spot it by the joining word, because "so", "therefore" and "which means" all announce that the point comes second
|
|
187
|
-
- Break a paragraph at three sentences, on the rare occasion you write one
|
|
188
|
-
- Open each paragraph with its point
|
|
189
|
-
|
|
190
|
-
## Words
|
|
191
|
-
|
|
192
|
-
- Use one term for one meaning across the reply
|
|
193
|
-
- Define a term of art in plain words before you first use it, never after
|
|
194
|
-
- A section that uses a term sits after the section that defines it
|
|
195
|
-
- Name the thing a pronoun stands for
|
|
196
|
-
- A heading or a takeaway holds no context from the line above it
|
|
197
|
-
- Write "Only `/acstack:map` creates a map", never "Only `/acstack:map` creates one"
|
|
198
|
-
- Spell out an abbreviation at first use
|
|
199
|
-
- Cap a noun string at three words
|
|
200
|
-
- Keep the articles
|
|
201
|
-
- Use the common word and the short form
|
|
202
|
-
- "use" not "utilize"
|
|
203
|
-
- "to" not "in order to" (unless it isn't intuitive to read without "in order to")
|
|
204
|
-
- "before" not "prior to"
|
|
205
|
-
- "because" not "due to the fact that"
|
|
206
|
-
- "many" not "numerous"
|
|
207
|
-
- "start" not "commence"
|
|
208
|
-
- "help" not "facilitate"
|
|
209
|
-
- "also" not "additionally"
|
|
210
|
-
- "improve" not "enhance"
|
|
211
|
-
- "show" not "showcase" or "underscore"
|
|
212
|
-
- "important" not "crucial" or "pivotal"
|
|
213
|
-
- "new" not "cutting-edge" or "groundbreaking"
|
|
214
|
-
- "is" not "serves as" or "stands as"
|
|
215
|
-
- "has" not "boasts"
|
|
216
|
-
- None of these pairs is a deny list, because "composing" is right in a sentence about music
|
|
217
|
-
- These pairs show what your own judgment should look like
|
|
218
|
-
- Never reach for a fancier word than the job needs
|
|
219
|
-
- A longer word buys nothing, and it costs the reader a beat
|
|
220
|
-
- Write "You provide feedback on Claude's recommended answer", never "You confirm instead of composing"
|
|
221
|
-
- Use the word order you would say out loud
|
|
222
|
-
- Write "Some requests only need one question", never "Some requests need only one question"
|
|
223
|
-
- Never write with flair (sentences written that way sound like marketing)
|
|
224
|
-
- Write "ACStack throws the nodes away", never "The nodes themselves are scaffolding"
|
|
225
|
-
- Write "Some requests only need one question", never "A single question ends there"
|
|
226
|
-
- Delete puffery and metaphor: seamless, robust, leverage, delve, landscape, tapestry, testament, interplay, nestled, vibrant, stunning, renowned, substrate, wedge, locus, vantage, nexus, bedrock, modality, paradigm, north star, flywheel, endgame, ratchet
|
|
227
|
-
- Name the thing instead
|
|
228
|
-
- Cut -ing filler that glues clauses: highlighting, showcasing, reflecting, fostering, ensuring that
|
|
229
|
-
- Start a new sentence
|
|
230
|
-
- Cut "simply", "just", "basically"
|
|
231
|
-
- Name the source of a claim
|
|
232
|
-
- Never "experts believe" or "it is widely known"
|
|
233
|
-
|
|
234
|
-
## Voice
|
|
235
|
-
|
|
236
|
-
- Name the actor and put it before the verb
|
|
237
|
-
- "The hook writes the symlink", not "The symlink is written"
|
|
238
|
-
- Present tense for what a thing does now
|
|
239
|
-
- Imperative for procedures and next steps
|
|
240
|
-
- Make each claim once, at the strength the evidence supports
|
|
241
|
-
- No "may possibly"
|
|
242
|
-
- Describe a thing by what it does, not by adjectives
|
|
243
|
-
- Name the file, the number, and the actor
|
|
244
|
-
- "Three of the eleven skills", not "several files"
|
|
245
|
-
- Recommend one option and give the reason
|
|
246
|
-
- Do not survey options without a recommendation
|
|
247
|
-
- State what a thing is, then stop
|
|
248
|
-
- Never say what it is not
|
|
249
|
-
- Write "The hook writes the symlink", never "The hook writes the symlink rather than copying it"
|
|
250
|
-
- Write "This runs on commit", never "This runs not just on push but on commit"
|
|
251
|
-
- The ONLY exception is showing the wrong version so the reader can spot it
|
|
252
|
-
- E.g., 'Write "use", never "utilize"'
|
|
253
|
-
- Explain only what the reader can't work out alone
|
|
254
|
-
- Never justify a choice the reader did not question
|
|
255
|
-
- List as many items as there are
|
|
256
|
-
- No padding a list to three
|
|
257
|
-
- "Etc." is fine when you are trying to convey that your list is non-exhaustive
|
|
258
|
-
- State what you checked, and when
|
|
259
|
-
- "The lint does not exist yet, as of today's date", not "my knowledge may be out of date"
|
|
260
|
-
- Contractions are fine
|
|
261
|
-
- Slang is not
|
|
262
|
-
|
|
263
|
-
## Marks
|
|
264
|
-
|
|
265
|
-
- Never use an em dash
|
|
266
|
-
- Set an aside off with a spaced en dash ( – ), parentheses, or a period between the two clauses
|
|
267
|
-
- Always use the Oxford comma: "proposals, designs, and tasks", never "proposals, designs and tasks"
|
|
268
|
-
- Straight quotes only
|
|
269
|
-
- Three periods, not an ellipsis character
|
|
270
|
-
- No emoji
|
|
271
|
-
- Carry the meaning in words: "Done. 12 tests pass."
|
|
9
|
+
<!-- acstack:communication:start -->
|
|
10
|
+
Use the fewest clear words that preserve all necessary information.
|
|
11
|
+
|
|
12
|
+
## Answer the reader's question
|
|
13
|
+
|
|
14
|
+
- Lead with the answer, recommendation, or result the reader needs
|
|
15
|
+
- Give enough context for the reader to understand and act
|
|
16
|
+
- A short reply can be a direct sentence or a few bullets
|
|
17
|
+
- Add context, a problem statement, or a solution section only when the reader needs it
|
|
18
|
+
- Match detail to the audience
|
|
19
|
+
- A human needs the facts that change a decision or next action
|
|
20
|
+
- An agent handoff needs every constraint required to continue correctly
|
|
21
|
+
- A durable document must make sense to someone outside the original conversation
|
|
22
|
+
- Preserve necessary qualifications, evidence, errors, security warnings, accessibility requirements, and destructive-action confirmations
|
|
23
|
+
- Separate the current answer from decision history
|
|
24
|
+
- State what applies now before explaining how the decision changed
|
|
25
|
+
|
|
26
|
+
## Let the ideas determine the structure
|
|
27
|
+
|
|
28
|
+
- Use only the structure needed to explain the ideas and their relationships
|
|
29
|
+
- Use prose for a connected explanation, bullets for distinct points, numbered steps for a sequence, and tables for comparisons
|
|
30
|
+
- Use a diagram when it makes relationships easier to understand
|
|
31
|
+
- Short replies need no prescribed sections, diagram, or bullet quota
|
|
32
|
+
- Make each parent summarize its children
|
|
33
|
+
- A heading or parent bullet states the point supported by the detail below it
|
|
34
|
+
- Add a takeaway line only when the heading leaves a useful conclusion unstated
|
|
35
|
+
- Keep siblings at the same conceptual level, answering the same question
|
|
36
|
+
- Separate mixed questions, merge overlapping points, and fill gaps in the parent's claim
|
|
37
|
+
- Order points by sequence, importance, or another relationship the reader can follow
|
|
38
|
+
- Keep names consistent from overview to detail
|
|
39
|
+
- Reuse the same name for the same thing across prose, diagrams, headings, and code references
|
|
40
|
+
- Make the link explicit when a human-readable name differs from an identifier
|
|
41
|
+
- Orient the reader before introducing detail
|
|
42
|
+
- Define unfamiliar terms before relying on them
|
|
43
|
+
- Name the subject when a pronoun would be ambiguous
|
|
44
|
+
- Show dependencies and crosscutting relationships as links, not invented parent-child relationships
|
|
45
|
+
- In code and design, use coherent responsibilities and small, useful interfaces
|
|
46
|
+
- A deep module hides substantial implementation behind a small interface
|
|
47
|
+
- Keep peer components at comparable levels of abstraction
|
|
48
|
+
- Keep implementation details behind the interface callers need
|
|
49
|
+
- Add a layer only when it hides real complexity or owns a distinct responsibility
|
|
50
|
+
- Do not force relationships across modules into a containment tree
|
|
51
|
+
|
|
52
|
+
## Write in plain language
|
|
53
|
+
|
|
54
|
+
- Prefer common, concrete words and natural word order
|
|
55
|
+
- Keep necessary technical terms and define unfamiliar abbreviations
|
|
56
|
+
- Cut grand claims, filler, repeated points, and metaphors the reader must decode
|
|
57
|
+
- Use examples when they explain a point faster than an abstract description
|
|
58
|
+
- Keep sentences focused and paragraphs easy to scan
|
|
59
|
+
- Split a sentence when its clauses compete for attention
|
|
60
|
+
- Keep a cause, condition, contrast, or consequence together when splitting would obscure the relationship
|
|
61
|
+
- Sentence, paragraph, and noun-string lengths are review signals, not correctness limits
|
|
62
|
+
- Name the actor when it helps the reader understand responsibility
|
|
63
|
+
- Prefer active voice, present-tense descriptions, and direct instructions
|
|
64
|
+
- Keep passive voice when the actor is unknown or irrelevant
|
|
65
|
+
- State claims at the strength supported by evidence
|
|
66
|
+
- Name sources, checks run, results, and remaining uncertainty
|
|
67
|
+
- Explain an important distinction, including what something does not do, when the reader needs it
|
|
68
|
+
- Use sentence-case headings and restrained emphasis
|
|
69
|
+
- Use straight quotes, the Oxford comma, and three periods for an ellipsis
|
|
70
|
+
- Use a period, parentheses, or a spaced en dash instead of an em dash
|
|
71
|
+
- Carry meaning in words, not emoji or color alone
|
|
72
|
+
- Format Markdown so the reader sees the intended grouping
|
|
73
|
+
- Indent nested bullets four spaces per level and leave a blank line before a list
|
|
74
|
+
- Use parallel grammar and consistent punctuation within a list
|
|
75
|
+
- Short bullet fragments need no final period
|
|
272
76
|
|
|
273
77
|
## Before you send
|
|
274
78
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
7. Cut every word the Words section bans
|
|
283
|
-
8. Every sentence names its actor
|
|
284
|
-
9. No bullet ends in a period
|
|
285
|
-
10. Every word left standing is additive
|
|
286
|
-
11. Every detail left standing is one the reader needs to act on
|
|
79
|
+
- Can the reader find the answer without reading every detail?
|
|
80
|
+
- Does every level summarize the detail below it?
|
|
81
|
+
- Do siblings answer the same question at the same level?
|
|
82
|
+
- Can the reader follow the same names from overview to detail?
|
|
83
|
+
- Can you remove words or structure without losing meaning, necessary context, or safeguards?
|
|
84
|
+
- Have you separated evidence from assumptions and the current answer from its history?
|
|
85
|
+
<!-- acstack:communication:end -->
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "acstack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.51.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Agentic coding stack with first-class Claude Code and pi support: skills, orchestrator instructions, and verification agents.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"cli/package.json",
|
|
28
28
|
"cli/README.md",
|
|
29
29
|
"docs/",
|
|
30
|
+
"examples/design-doc/",
|
|
30
31
|
"hooks/",
|
|
31
32
|
"orchestrator/",
|
|
32
33
|
"output-styles/",
|
|
@@ -28,25 +28,25 @@ You review screenshots. You report results. You do not need user approval.
|
|
|
28
28
|
|
|
29
29
|
## Project configuration
|
|
30
30
|
|
|
31
|
-
Read
|
|
31
|
+
Read `.acstack/project.yaml` for frontend settings:
|
|
32
32
|
|
|
33
33
|
- `frontend.directory` – frontend source directory
|
|
34
34
|
- `frontend.dev_server_url` – dev server URL
|
|
35
35
|
- `frontend.dev_server_check` – command to check if the server is running
|
|
36
|
-
- `frontend.helpers_dir` –
|
|
36
|
+
- `frontend.helpers_dir` – helper programs, not verification metadata
|
|
37
37
|
- `frontend.commands.dev` – command to start the dev server
|
|
38
38
|
- `frontend.browser.cdp_port` – CDP (Chrome DevTools Protocol) port. Default `19988` when the mode is `remote` (Playwriter bridge), `9555` when it is `headless` or `local`.
|
|
39
39
|
|
|
40
40
|
You do not read `frontend.browser.mode` or `frontend.browser.fallback`. Step 3 asks the ACStack CLI which browser mode to use, and the CLI reads both.
|
|
41
41
|
|
|
42
|
-
If
|
|
42
|
+
If `.acstack/project.yaml` has no `frontend` section, report SKIP and exit.
|
|
43
43
|
|
|
44
44
|
## Step 0: Read the knowledge base
|
|
45
45
|
|
|
46
46
|
Before doing anything, check for a knowledge base:
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
cat
|
|
49
|
+
cat .acstack/verification/VERIFICATION-KNOWLEDGE.md 2>/dev/null
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
This file contains URL patterns, element patterns, gotchas, and lessons learned. Read it if it exists. If not, you'll create it in Step 7.
|
|
@@ -205,6 +205,13 @@ Track whether you launched the browser so you can clean it up in Step 8.
|
|
|
205
205
|
|
|
206
206
|
## Step 4: Verify with agent-browser
|
|
207
207
|
|
|
208
|
+
Select the project's browser config explicitly from the project root:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
export AGENT_BROWSER_CONFIG="$(pwd)/.acstack/agent-browser.json"
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Require the file for configured verification; do not assume root config autodiscovery.
|
|
208
215
|
Use `agent-browser` CLI commands to verify the changed behavior. Work through these sub-steps, adapting to the specific task.
|
|
209
216
|
|
|
210
217
|
### 4a. Navigate to the relevant page
|
|
@@ -292,13 +299,13 @@ After every verification run, update the knowledge base if you learned something
|
|
|
292
299
|
|
|
293
300
|
### Knowledge base
|
|
294
301
|
|
|
295
|
-
|
|
302
|
+
`.acstack/verification/VERIFICATION-KNOWLEDGE.md` – URL patterns, element patterns, gotchas, lessons learned.
|
|
296
303
|
|
|
297
304
|
If it doesn't exist, create it with what you learned during this run.
|
|
298
305
|
|
|
299
306
|
### Rules
|
|
300
307
|
|
|
301
|
-
- All verification knowledge lives in
|
|
308
|
+
- All verification knowledge lives in `.acstack/verification/VERIFICATION-KNOWLEDGE.md`.
|
|
302
309
|
- Do NOT create knowledge files anywhere else.
|
|
303
310
|
- If a selector or element pattern stops working, update the knowledge base.
|
|
304
311
|
- If you discover a new pattern, add it.
|
|
@@ -358,3 +365,79 @@ Do NOT kill the browser if you connected to an existing one. In `remote` mode th
|
|
|
358
365
|
- You do NOT run unit tests – the verification owner completes those checks first.
|
|
359
366
|
- You do NOT check TypeScript compilation – the verification owner completes that check first.
|
|
360
367
|
- You ONLY verify behavior in a real browser with real screenshots.
|
|
368
|
+
|
|
369
|
+
Use the fewest clear words that preserve all necessary information.
|
|
370
|
+
|
|
371
|
+
## Answer the reader's question
|
|
372
|
+
|
|
373
|
+
- Lead with the answer, recommendation, or result the reader needs
|
|
374
|
+
- Give enough context for the reader to understand and act
|
|
375
|
+
- A short reply can be a direct sentence or a few bullets
|
|
376
|
+
- Add context, a problem statement, or a solution section only when the reader needs it
|
|
377
|
+
- Match detail to the audience
|
|
378
|
+
- A human needs the facts that change a decision or next action
|
|
379
|
+
- An agent handoff needs every constraint required to continue correctly
|
|
380
|
+
- A durable document must make sense to someone outside the original conversation
|
|
381
|
+
- Preserve necessary qualifications, evidence, errors, security warnings, accessibility requirements, and destructive-action confirmations
|
|
382
|
+
- Separate the current answer from decision history
|
|
383
|
+
- State what applies now before explaining how the decision changed
|
|
384
|
+
|
|
385
|
+
## Let the ideas determine the structure
|
|
386
|
+
|
|
387
|
+
- Use only the structure needed to explain the ideas and their relationships
|
|
388
|
+
- Use prose for a connected explanation, bullets for distinct points, numbered steps for a sequence, and tables for comparisons
|
|
389
|
+
- Use a diagram when it makes relationships easier to understand
|
|
390
|
+
- Short replies need no prescribed sections, diagram, or bullet quota
|
|
391
|
+
- Make each parent summarize its children
|
|
392
|
+
- A heading or parent bullet states the point supported by the detail below it
|
|
393
|
+
- Add a takeaway line only when the heading leaves a useful conclusion unstated
|
|
394
|
+
- Keep siblings at the same conceptual level, answering the same question
|
|
395
|
+
- Separate mixed questions, merge overlapping points, and fill gaps in the parent's claim
|
|
396
|
+
- Order points by sequence, importance, or another relationship the reader can follow
|
|
397
|
+
- Keep names consistent from overview to detail
|
|
398
|
+
- Reuse the same name for the same thing across prose, diagrams, headings, and code references
|
|
399
|
+
- Make the link explicit when a human-readable name differs from an identifier
|
|
400
|
+
- Orient the reader before introducing detail
|
|
401
|
+
- Define unfamiliar terms before relying on them
|
|
402
|
+
- Name the subject when a pronoun would be ambiguous
|
|
403
|
+
- Show dependencies and crosscutting relationships as links, not invented parent-child relationships
|
|
404
|
+
- In code and design, use coherent responsibilities and small, useful interfaces
|
|
405
|
+
- A deep module hides substantial implementation behind a small interface
|
|
406
|
+
- Keep peer components at comparable levels of abstraction
|
|
407
|
+
- Keep implementation details behind the interface callers need
|
|
408
|
+
- Add a layer only when it hides real complexity or owns a distinct responsibility
|
|
409
|
+
- Do not force relationships across modules into a containment tree
|
|
410
|
+
|
|
411
|
+
## Write in plain language
|
|
412
|
+
|
|
413
|
+
- Prefer common, concrete words and natural word order
|
|
414
|
+
- Keep necessary technical terms and define unfamiliar abbreviations
|
|
415
|
+
- Cut grand claims, filler, repeated points, and metaphors the reader must decode
|
|
416
|
+
- Use examples when they explain a point faster than an abstract description
|
|
417
|
+
- Keep sentences focused and paragraphs easy to scan
|
|
418
|
+
- Split a sentence when its clauses compete for attention
|
|
419
|
+
- Keep a cause, condition, contrast, or consequence together when splitting would obscure the relationship
|
|
420
|
+
- Sentence, paragraph, and noun-string lengths are review signals, not correctness limits
|
|
421
|
+
- Name the actor when it helps the reader understand responsibility
|
|
422
|
+
- Prefer active voice, present-tense descriptions, and direct instructions
|
|
423
|
+
- Keep passive voice when the actor is unknown or irrelevant
|
|
424
|
+
- State claims at the strength supported by evidence
|
|
425
|
+
- Name sources, checks run, results, and remaining uncertainty
|
|
426
|
+
- Explain an important distinction, including what something does not do, when the reader needs it
|
|
427
|
+
- Use sentence-case headings and restrained emphasis
|
|
428
|
+
- Use straight quotes, the Oxford comma, and three periods for an ellipsis
|
|
429
|
+
- Use a period, parentheses, or a spaced en dash instead of an em dash
|
|
430
|
+
- Carry meaning in words, not emoji or color alone
|
|
431
|
+
- Format Markdown so the reader sees the intended grouping
|
|
432
|
+
- Indent nested bullets four spaces per level and leave a blank line before a list
|
|
433
|
+
- Use parallel grammar and consistent punctuation within a list
|
|
434
|
+
- Short bullet fragments need no final period
|
|
435
|
+
|
|
436
|
+
## Before you send
|
|
437
|
+
|
|
438
|
+
- Can the reader find the answer without reading every detail?
|
|
439
|
+
- Does every level summarize the detail below it?
|
|
440
|
+
- Do siblings answer the same question at the same level?
|
|
441
|
+
- Can the reader follow the same names from overview to detail?
|
|
442
|
+
- Can you remove words or structure without losing meaning, necessary context, or safeguards?
|
|
443
|
+
- Have you separated evidence from assumptions and the current answer from its history?
|