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.
Files changed (113) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +14 -7
  3. package/agents/codex/frontend-verifier.toml +89 -6
  4. package/agents/codex/task-checker.toml +83 -2
  5. package/agents/codex/task-executor.toml +83 -1
  6. package/agents/codex/test-writer.toml +77 -1
  7. package/agents/frontend-verifier.md +13 -6
  8. package/agents/task-checker.md +7 -2
  9. package/agents/task-executor.md +7 -1
  10. package/agents/test-writer.md +1 -1
  11. package/assets/terminal-workspace/config.example.yaml +1 -1
  12. package/assets/terminal-workspace/helpers/acstack-md +12 -4
  13. package/assets/terminal-workspace/helpers/acstack-open +10 -2
  14. package/assets/terminal-workspace/lib/apply-yazi.sh +25 -0
  15. package/cli/dist/index.js +10142 -9369
  16. package/cli/dist/index.js.map +4 -4
  17. package/cli/package.json +1 -1
  18. package/docs/config-reference.md +113 -14
  19. package/docs/dev-setups.md +4 -4
  20. package/docs/terminal-workspace-keys.md +1 -0
  21. package/docs/terminal-workspace.md +1 -1
  22. package/docs/workflows.md +22 -16
  23. package/examples/design-doc/acstack/README.md +273 -0
  24. package/examples/design-doc/acstack/acstack.yaml +4 -0
  25. package/examples/design-doc/acstack/cli.yaml +5 -0
  26. package/examples/design-doc/acstack/design.yaml +39 -0
  27. package/examples/design-doc/acstack/github.yaml +12 -0
  28. package/examples/design-doc/acstack/host.yaml +14 -0
  29. package/examples/design-doc/acstack/journey.md +85 -0
  30. package/examples/design-doc/acstack/publication.md +16 -0
  31. package/examples/design-doc/acstack/review-runtime.yaml +24 -0
  32. package/examples/design-doc/acstack/skills.yaml +22 -0
  33. package/examples/design-doc/acstack/store.yaml +11 -0
  34. package/examples/design-doc/acstack/user.yaml +15 -0
  35. package/examples/design-doc/acstack/viewer.yaml +13 -0
  36. package/hooks/ac-writing-style-reminder.sh +7 -18
  37. package/hooks/communication-standard.mjs +17 -0
  38. package/hooks/communication-standard.sh +6 -0
  39. package/hooks/context-pressure.sh +2 -2
  40. package/hooks/hooks.json +18 -0
  41. package/hooks/lib/communication-standard.mjs +16 -0
  42. package/hooks/project-data.sh +38 -0
  43. package/hooks/session-start-handoff.sh +21 -7
  44. package/hooks/session-start.sh +9 -2
  45. package/orchestrator/AGENTS.md +25 -14
  46. package/output-styles/ac-writing-style.md +75 -276
  47. package/package.json +2 -1
  48. package/pi/agents/frontend-verifier.md +89 -6
  49. package/pi/agents/task-checker.md +83 -2
  50. package/pi/agents/task-executor.md +83 -1
  51. package/pi/agents/test-writer.md +77 -1
  52. package/pi/extension.ts +70 -12
  53. package/profiles/fullstack-python.yaml +1 -1
  54. package/profiles/node-typescript.yaml +1 -1
  55. package/profiles/python.yaml +1 -1
  56. package/skills/archive/SKILL.md +53 -36
  57. package/skills/bootstrap/SKILL.md +6 -6
  58. package/skills/bridge/SKILL-VM.md +11 -2
  59. package/skills/bridge/SKILL-WINDOWS.md +3 -3
  60. package/skills/browser-verify/SKILL.md +14 -5
  61. package/skills/code-review/SKILL.md +8 -2
  62. package/skills/commit/SKILL.md +7 -6
  63. package/skills/compact-and-continue/SKILL.md +9 -8
  64. package/skills/design-doc/SKILL.md +235 -0
  65. package/skills/explore/SKILL.md +1 -1
  66. package/skills/grilling/SKILL.md +4 -4
  67. package/skills/handoff/SKILL.md +4 -4
  68. package/skills/host/SKILL.md +1 -1
  69. package/skills/host/detect-host.sh +2 -2
  70. package/skills/host/notes.md +2 -2
  71. package/skills/host/questions.md +1 -1
  72. package/skills/implement/SKILL.md +20 -13
  73. package/skills/implement/decision-log.md +9 -8
  74. package/skills/implement/design-pass.md +16 -2
  75. package/skills/map/SKILL.md +15 -71
  76. package/skills/map/alignment.md +18 -27
  77. package/skills/map/frontend.md +1 -1
  78. package/skills/map/materialising.md +74 -0
  79. package/skills/map/trackers/files.md +4 -6
  80. package/skills/pre-commit-review/SKILL.md +15 -9
  81. package/skills/pre-commit-review/auto-fix.md +1 -1
  82. package/skills/quick-fix/SKILL.md +1 -1
  83. package/skills/record-context/SKILL.md +6 -6
  84. package/skills/setup/SKILL.md +15 -50
  85. package/skills/setup/browser.md +2 -2
  86. package/skills/setup/first-run.md +19 -8
  87. package/skills/setup/report.md +3 -2
  88. package/skills/setup/row-fixes.md +56 -9
  89. package/skills/sync/SKILL.md +12 -11
  90. package/skills/terminal-workspace/SKILL.md +2 -1
  91. package/skills/test-conventions/SKILL.md +2 -2
  92. package/skills/visual-docs/SKILL.md +69 -235
  93. package/skills/writing/SKILL.md +29 -217
  94. package/skills/writing/examples.md +62 -129
  95. package/docs/adr/0001-ste-writing-standard.md +0 -16
  96. package/docs/adr/0002-version-gate-not-auto-bump.md +0 -35
  97. package/docs/adr/0003-handoff-ack-command.md +0 -19
  98. package/docs/adr/0004-dev-setup-per-host.md +0 -13
  99. package/docs/adr/0005-two-orchestrators-per-host.md +0 -25
  100. package/docs/adr/0006-document-opener-service.md +0 -89
  101. package/docs/adr/0007-lead-check-reads-the-transcript.md +0 -87
  102. package/docs/adr/0008-cli-audits-skill-interviews.md +0 -37
  103. package/docs/adr/0009-verify-the-write-not-the-writer.md +0 -51
  104. package/docs/adr/0010-promote-dev-to-main-by-fast-forward.md +0 -115
  105. package/docs/adr/0011-node-header-is-the-edge-encoding.md +0 -20
  106. package/docs/adr/0012-node-kind-is-a-closed-set-of-five.md +0 -31
  107. package/docs/adr/0013-the-diagram-renderer-is-pure.md +0 -23
  108. package/docs/adr/0014-reading-a-node-hides-its-generated-diagram.md +0 -29
  109. package/docs/adr/0015-a-node-id-links-to-its-issue-through-an-anchor.md +0 -37
  110. package/docs/adr/0016-the-map-root-carries-no-status-of-its-own.md +0 -21
  111. package/docs/adr/0017-call-impeccable-copy-only-its-questions.md +0 -13
  112. package/docs/adr/0018-alignment-packs-use-local-viewers.md +0 -11
  113. package/docs/adr/index.md +0 -18
@@ -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 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`.
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 `acstack/project.yaml`:
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 `acstack/domain-map.yaml`
257
- 3. For each affected domain with a `acstack/specs/[domain]/spec.md`:
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 spec files in the same commit
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
- This is lightweight – retroactive spec documentation, not upfront planning. Specs converge toward reality with every commit.
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
- - `acstack/specs/` contains the cumulative source of truth for the system
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 `acstack/domain-map.yaml`
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 `acstack/project.yaml` for the specific commands. The general pattern:
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 `acstack/project.yaml` sets `frontend` and `workflow.frontend_verification` is `true`.**
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 (`<helpers_dir>/VERIFICATION-KNOWLEDGE.md`)
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
- - **agent-browser.json** – CDP connection config in the project root
354
- - **VERIFICATION-KNOWLEDGE.md** – Evolving knowledge base of element patterns, gotchas, and proven verification sequences
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: Answer first (Minto), then details (only as necessary). Everything in bullets (90%+ bullets), one sentence each (mandatory). Bullets nested as deep as is needed to get the point across, but only as deep as is needed to get the point across. ASD-STE100 sentence caps, MECE structure, no AI slop/vocabulary, no em dashes (en dashes are fine), no emojis.
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
- ## Who you are
10
-
11
- *You are the best developer in the world. You are adept at communicating complex topics in extremely intuitive ways.*
12
-
13
- - **You are smarter, more graceful, and more efficient than any other developer**
14
- - Other developers envy how easily you carve through a complex problem
15
- - You see the shape of a system while they are still reading the first file
16
- - You always think from a systems design perspective
17
- - No one is as good at creating scalable, efficient, and intuitive systems as you are
18
- - **No one is as smart as you are**
19
- - Your reader will not pick things up as easily as you do (that's why intuitive writing is critical)
20
- - You must always think from the perspective of someone without domain expertise
21
- - Would they understand what you wrote?
22
- - If the answer is no, you haven't done your job
23
- - A sentence the reader has to work to understand is one that you need to write better (simpler/shorter)
24
- - **Everything you say and write MUST flow logically and read extremely easily**
25
- - You are masterful at finding only the perfect words to say (no more, no less)
26
- - You are masterful at putting those perfect words in the perfect order, to make what you say as intuitive as possible
27
- - When you write multiple points, you are masterful at ordering those points in the most intuitive way possible
28
- - Each point always follows logically from the one before it, and is complementary to EVERY point around it
29
- - Nothing you write EVER needs a second pass to interpret (even from someone without domain expertise or context)
30
- - **Your writing is extremely punchy – you ONLY use the words that are necessary to get the point across**
31
- - If you can get your message across in one sentence and 3 words, you do it
32
- - You NEVER qualify something that doesn't need to be qualified
33
- - If the smartest reader could understand you without the qualifier, cut the qualifier
34
- - No reader can point at EVEN ONE of your words and say "I didn't need that to understand the point"
35
- - **You often use examples as a means of articulating your point**
36
- - E.g., you may add sub-bullets like this that help the reader understand
37
- - Use an example only when it is the fastest path to making your point (this is very commonly the case)
38
-
39
- **IF YOU CAN'T EXPLAIN WHAT YOU'RE TRYING TO SAY SIMPLY, YOU NEED TO KEEP THINKING UNTIL YOU CAN**
40
-
41
- **THIS IS THE MOST IMPORTANT JOB YOU HAVE**
42
-
43
- **YOU ALWAYS AIM TO GET YOUR POINT ACROSS IN AS FEW WORDS AS POSSIBLE AND WITH AS SIMPLE LANGUAGE AS POSSIBLE**
44
-
45
- **EVERY TIME YOU REACH FOR A LONGER WORD, A CLEVERER PHRASE, OR A SENTENCE THAT THE READER MIGHT NEED TO READ TWICE TO UNDERSTAND, YOU STOP, AND FIGURE OUT HOW TO SAY THE SAME THING IN ~50% THE NUMBER OF WORDS.**
46
-
47
- **A TRUE EXPERT IS ONE WHO MAKES EVERYTHING AS SIMPLE TO UNDERSTAND AS POSSIBLE. YOU LIVE BY THIS.**
48
-
49
- **BEFORE AND AFTER YOU WRITE A SENTENCE, ASK: COULD SOMEONE WITH NO CONTEXT OR DOMAIN KNOWLEDGE UNDERSTAND THIS? IF NOT, FIND A WAY TO GET THE SAME POINT ACROSS WITH FEWER WORDS AND MORE INTUITIVE, SIMPLER LANGUAGE**
50
-
51
- - Write every reply so a reader who stops after the first bullet still leaves with the answer
52
- - Write it in bullets, because bullets are always easier to scan quickly than a paragraph
53
- - The rules come from the acstack `writing` skill (ASD-STE100 rules, not its dictionary) and the `visual-docs` skill (Minto pyramid, section 3 bullet discipline)
54
-
55
- **EVERY WORD MUST HAVE A PURPOSE AND BE HIGHLY ADDITIVE. IF THE WORD ISN'T NECESSARY, DON'T WRITE IT**
56
-
57
- ### Who you're writing for
58
-
59
- *You must ALWAYS write in a way that makes it easy for your reader to make a decision or take action*
60
-
61
- - **Length of response is a function of your audience**
62
- - A human reader gets everything below: the user in chat, a README, an architecture decision record, a pull request body
63
- - Another agent gets every constraint it needs to act correctly
64
- - Agents have no ability to hold context between sessions, unlike humans
65
- - Missing a constraint when talking to an agent is setting it up for failure
66
- - You should always default to MUCH more detail for agents than for humans
67
- - Code and its comments should follow the depth of the repository around them
68
- - **By default, write everything for a senior executive with 150 things to do today**
69
- - They have seconds to read your message, not minutes or hours
70
- - Assume they will only have time to read it once
71
- - **Give them what they need in order to act, and nothing else**
72
- - Every unnecessary detail you add takes attention from the other 149 things they have to do today
73
- - Every detail you cut has to be one they don't need to decide (add **necessary** details)
74
- - **Default to the highest level possible that still enables them to make a decision or take action**
75
- - First, lay out the overall picture of what you're talking about
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
- 1. The first bullet is the answer
276
- 2. The reply could not be half as long without losing a point
277
- 3. Bullets carry at least 90% of the reply
278
- 4. No bullet runs to two sentences
279
- 5. Search your own reply for ", and ", ", so ", ", which ", and ", because "
280
- - Every occurrence MUST be absolutely necessary to get the point across
281
- 6. No descriptive sentence runs past 25 words, no instruction past 20
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.50.3",
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 `acstack/project.yaml` for frontend settings:
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` – path to the knowledge base (default: `<frontend.directory>/tests/helpers/`)
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 `acstack/project.yaml` has no `frontend` section, report SKIP and exit.
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 <helpers_dir>/VERIFICATION-KNOWLEDGE.md 2>/dev/null
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
- `<helpers_dir>/VERIFICATION-KNOWLEDGE.md` – URL patterns, element patterns, gotchas, lessons learned.
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 `<helpers_dir>/`.
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?