acstack 0.50.4 → 0.52.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 (111) 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/cli/dist/index.js +7187 -6402
  15. package/cli/dist/index.js.map +4 -4
  16. package/cli/package.json +1 -1
  17. package/docs/config-reference.md +113 -14
  18. package/docs/dev-setups.md +4 -4
  19. package/docs/terminal-workspace.md +1 -1
  20. package/docs/workflows.md +22 -16
  21. package/examples/design-doc/acstack/README.md +273 -0
  22. package/examples/design-doc/acstack/acstack.yaml +4 -0
  23. package/examples/design-doc/acstack/cli.yaml +5 -0
  24. package/examples/design-doc/acstack/design.yaml +39 -0
  25. package/examples/design-doc/acstack/github.yaml +12 -0
  26. package/examples/design-doc/acstack/host.yaml +14 -0
  27. package/examples/design-doc/acstack/journey.md +85 -0
  28. package/examples/design-doc/acstack/publication.md +16 -0
  29. package/examples/design-doc/acstack/review-runtime.yaml +24 -0
  30. package/examples/design-doc/acstack/skills.yaml +22 -0
  31. package/examples/design-doc/acstack/store.yaml +11 -0
  32. package/examples/design-doc/acstack/user.yaml +15 -0
  33. package/examples/design-doc/acstack/viewer.yaml +13 -0
  34. package/hooks/ac-writing-style-reminder.sh +7 -18
  35. package/hooks/communication-standard.mjs +17 -0
  36. package/hooks/communication-standard.sh +6 -0
  37. package/hooks/context-pressure.sh +2 -2
  38. package/hooks/hooks.json +18 -0
  39. package/hooks/lib/communication-standard.mjs +16 -0
  40. package/hooks/project-data.sh +38 -0
  41. package/hooks/session-start-handoff.sh +21 -7
  42. package/hooks/session-start.sh +9 -2
  43. package/orchestrator/AGENTS.md +25 -14
  44. package/output-styles/ac-writing-style.md +75 -276
  45. package/package.json +2 -1
  46. package/pi/agents/frontend-verifier.md +89 -6
  47. package/pi/agents/task-checker.md +83 -2
  48. package/pi/agents/task-executor.md +83 -1
  49. package/pi/agents/test-writer.md +77 -1
  50. package/pi/extension.ts +70 -12
  51. package/profiles/fullstack-python.yaml +1 -1
  52. package/profiles/node-typescript.yaml +1 -1
  53. package/profiles/python.yaml +1 -1
  54. package/skills/archive/SKILL.md +53 -36
  55. package/skills/bootstrap/SKILL.md +6 -6
  56. package/skills/bridge/SKILL-VM.md +11 -2
  57. package/skills/bridge/SKILL-WINDOWS.md +3 -3
  58. package/skills/browser-verify/SKILL.md +14 -5
  59. package/skills/code-review/SKILL.md +8 -2
  60. package/skills/commit/SKILL.md +7 -6
  61. package/skills/compact-and-continue/SKILL.md +9 -8
  62. package/skills/design-doc/SKILL.md +238 -0
  63. package/skills/explore/SKILL.md +1 -1
  64. package/skills/grilling/SKILL.md +4 -4
  65. package/skills/handoff/SKILL.md +4 -4
  66. package/skills/host/SKILL.md +1 -1
  67. package/skills/host/detect-host.sh +2 -2
  68. package/skills/host/notes.md +2 -2
  69. package/skills/host/questions.md +1 -1
  70. package/skills/implement/SKILL.md +20 -13
  71. package/skills/implement/decision-log.md +9 -8
  72. package/skills/implement/design-pass.md +16 -2
  73. package/skills/map/SKILL.md +15 -71
  74. package/skills/map/alignment.md +18 -27
  75. package/skills/map/frontend.md +1 -1
  76. package/skills/map/materialising.md +74 -0
  77. package/skills/map/trackers/files.md +4 -6
  78. package/skills/pre-commit-review/SKILL.md +15 -9
  79. package/skills/pre-commit-review/auto-fix.md +1 -1
  80. package/skills/quick-fix/SKILL.md +1 -1
  81. package/skills/record-context/SKILL.md +6 -6
  82. package/skills/setup/SKILL.md +15 -50
  83. package/skills/setup/browser.md +2 -2
  84. package/skills/setup/first-run.md +19 -8
  85. package/skills/setup/report.md +3 -2
  86. package/skills/setup/row-fixes.md +56 -9
  87. package/skills/sync/SKILL.md +12 -11
  88. package/skills/terminal-workspace/SKILL.md +1 -1
  89. package/skills/test-conventions/SKILL.md +2 -2
  90. package/skills/visual-docs/SKILL.md +69 -235
  91. package/skills/writing/SKILL.md +29 -217
  92. package/skills/writing/examples.md +62 -129
  93. package/docs/adr/0001-ste-writing-standard.md +0 -16
  94. package/docs/adr/0002-version-gate-not-auto-bump.md +0 -35
  95. package/docs/adr/0003-handoff-ack-command.md +0 -19
  96. package/docs/adr/0004-dev-setup-per-host.md +0 -13
  97. package/docs/adr/0005-two-orchestrators-per-host.md +0 -25
  98. package/docs/adr/0006-document-opener-service.md +0 -89
  99. package/docs/adr/0007-lead-check-reads-the-transcript.md +0 -87
  100. package/docs/adr/0008-cli-audits-skill-interviews.md +0 -37
  101. package/docs/adr/0009-verify-the-write-not-the-writer.md +0 -51
  102. package/docs/adr/0010-promote-dev-to-main-by-fast-forward.md +0 -115
  103. package/docs/adr/0011-node-header-is-the-edge-encoding.md +0 -20
  104. package/docs/adr/0012-node-kind-is-a-closed-set-of-five.md +0 -31
  105. package/docs/adr/0013-the-diagram-renderer-is-pure.md +0 -23
  106. package/docs/adr/0014-reading-a-node-hides-its-generated-diagram.md +0 -29
  107. package/docs/adr/0015-a-node-id-links-to-its-issue-through-an-anchor.md +0 -37
  108. package/docs/adr/0016-the-map-root-carries-no-status-of-its-own.md +0 -21
  109. package/docs/adr/0017-call-impeccable-copy-only-its-questions.md +0 -13
  110. package/docs/adr/0018-alignment-packs-use-local-viewers.md +0 -11
  111. package/docs/adr/index.md +0 -18
@@ -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.50.4",
4
+ "version": "0.52.0",
5
5
  "author": {
6
6
  "name": "ac8318740"
7
7
  },
package/README.md CHANGED
@@ -59,7 +59,14 @@ Then, in your project:
59
59
  /acstack:setup
60
60
  ```
61
61
 
62
- - `/acstack:setup` detects the project type, then writes `acstack/project.yaml` with workflow settings
62
+ - `/acstack:setup` detects the project type, then writes `.acstack/project.yaml` with workflow settings
63
+ - All ACStack-owned project records stay local by default under `.acstack/`
64
+ - Setup asks which parts to track, with none selected by default
65
+ - Native exceptions after the root `.gitignore` baseline let you track configuration, specs, decisions, or any other part independently
66
+ - See [Project data and migration](docs/config-reference.md#project-data-stays-local-by-default) for canonical paths and commands
67
+ - Update installed ACStack tools before migrating an older project
68
+ - Stop old agents and reviews, run `~/.claude/acstack/bin/acstack project-data migrate`, then restart with updated tools
69
+ - Migration aborts on collisions without overwrites or Git index changes; tracked old paths become pending deletions
63
70
  - The SessionStart hook loads the orchestrator instructions whenever it detects an ACStack project
64
71
  - Your CLAUDE.md stays clean for project-specific content
65
72
  - Upgrading from a version before 0.8.0 means deleting one stale `@import` line (see [docs/migrate-0.8.md](docs/migrate-0.8.md))
@@ -132,7 +139,7 @@ The three commands:
132
139
  - Each question comes with the agent's recommended answer
133
140
  - You provide feedback on the agent's recommended answer instead of prompting from scratch
134
141
  - Some requests only need one question
135
- - The agent writes that decision down as a short note under `docs/adr/`
142
+ - The agent writes that decision down as a short note under `.acstack/decisions/`
136
143
  - A big feature may need dozens of questions
137
144
  - The agent stores those questions as a **map**
138
145
  - You work through the map across several sessions
@@ -160,7 +167,7 @@ Each node also records six things.
160
167
  - **Who answers it**: you, or the agent working alone
161
168
  - **What kind it is**: a destination, a standing note, a decision, research, or work
162
169
  - **A short name**, which labels the node in a diagram
163
- - **Where it lives**: a GitHub issue by default, or a markdown file under `acstack/maps/` with no GitHub remote
170
+ - **Where it lives**: a GitHub issue by default, or a markdown file under `.acstack/maps/` with no GitHub remote
164
171
 
165
172
  Almost every node explains itself with a diagram.
166
173
 
@@ -184,7 +191,7 @@ For the full picture of each step and how they connect, read [docs/workflows.md]
184
191
 
185
192
  *The project states what to run. The machine states what it can do.*
186
193
 
187
- - `acstack/project.yaml` holds every project-scoped setting
194
+ - `.acstack/project.yaml` holds every project-scoped setting
188
195
  - [docs/config-reference.md](docs/config-reference.md) gives each key, its values, its default and what changes
189
196
  - `~/.config/acstack/config.json` holds the nine `host.*` axes
190
197
  - `/acstack:host` writes eight of them once per machine, and `/acstack:setup` writes the ninth
@@ -207,7 +214,7 @@ ACStack ships a Node.js CLI: `acstack config`, `acstack list`, `acstack node ...
207
214
  - The first line of every issue body carries all of that node's edges
208
215
  - One call therefore reads the whole map
209
216
  - A sub-issue and an issue dependency mirror those edges, so GitHub's own interface draws the map
210
- - Markdown files are the fallback, one per node under `acstack/maps/<name>/`
217
+ - Markdown files are the fallback, one per node under `.acstack/maps/<name>/`
211
218
  - The CLI builds everything else on those four operations
212
219
  - `acstack node frontier` lists what is ready to start now, closest to the original goal first
213
220
  - `acstack node walk` packs the whole map into one brief for a fresh session, in the order the decisions happened
@@ -251,8 +258,8 @@ For work with open decisions, chart it with `/acstack:map` first.
251
258
 
252
259
  | Skill | Description |
253
260
  |-------|-------------|
254
- | `/acstack:commit` | Commit, and update the specs under `acstack/specs/` from the diff first |
255
- | `/acstack:archive` | Close a finished map, after checking the decisions reached your specs and notes, then delete the nodes |
261
+ | `/acstack:commit` | Commit, and update the specs under `.acstack/specs/` from the diff first |
262
+ | `/acstack:archive` | Verify implemented specs and current design approval, retain review evidence, then dispose of temporary map nodes |
256
263
  | `/acstack:sync` | Update the specs from code changes, outside a commit |
257
264
  | `/acstack:handoff` | Hand work to a visible agent, a new one in its own pane or one already running, with acknowledgement |
258
265
  | `/acstack:compact-and-continue` | Anchor the session's load-bearing state to survive compaction, then continue in place |
@@ -22,25 +22,25 @@ You review screenshots. You report results. You do not need user approval.
22
22
 
23
23
  ## Project configuration
24
24
 
25
- Read `acstack/project.yaml` for frontend settings:
25
+ Read `.acstack/project.yaml` for frontend settings:
26
26
 
27
27
  - `frontend.directory` – frontend source directory
28
28
  - `frontend.dev_server_url` – dev server URL
29
29
  - `frontend.dev_server_check` – command to check if the server is running
30
- - `frontend.helpers_dir` – path to the knowledge base (default: `<frontend.directory>/tests/helpers/`)
30
+ - `frontend.helpers_dir` – helper programs, not verification metadata
31
31
  - `frontend.commands.dev` – command to start the dev server
32
32
  - `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`.
33
33
 
34
34
  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.
35
35
 
36
- If `acstack/project.yaml` has no `frontend` section, report SKIP and exit.
36
+ If `.acstack/project.yaml` has no `frontend` section, report SKIP and exit.
37
37
 
38
38
  ## Step 0: Read the knowledge base
39
39
 
40
40
  Before doing anything, check for a knowledge base:
41
41
 
42
42
  ```bash
43
- cat <helpers_dir>/VERIFICATION-KNOWLEDGE.md 2>/dev/null
43
+ cat .acstack/verification/VERIFICATION-KNOWLEDGE.md 2>/dev/null
44
44
  ```
45
45
 
46
46
  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.
@@ -199,6 +199,13 @@ Track whether you launched the browser so you can clean it up in Step 8.
199
199
 
200
200
  ## Step 4: Verify with agent-browser
201
201
 
202
+ Select the project's browser config explicitly from the project root:
203
+
204
+ ```bash
205
+ export AGENT_BROWSER_CONFIG="$(pwd)/.acstack/agent-browser.json"
206
+ ```
207
+
208
+ Require the file for configured verification; do not assume root config autodiscovery.
202
209
  Use `agent-browser` CLI commands to verify the changed behavior. Work through these sub-steps, adapting to the specific task.
203
210
 
204
211
  ### 4a. Navigate to the relevant page
@@ -286,13 +293,13 @@ After every verification run, update the knowledge base if you learned something
286
293
 
287
294
  ### Knowledge base
288
295
 
289
- `<helpers_dir>/VERIFICATION-KNOWLEDGE.md` – URL patterns, element patterns, gotchas, lessons learned.
296
+ `.acstack/verification/VERIFICATION-KNOWLEDGE.md` – URL patterns, element patterns, gotchas, lessons learned.
290
297
 
291
298
  If it doesn't exist, create it with what you learned during this run.
292
299
 
293
300
  ### Rules
294
301
 
295
- - All verification knowledge lives in `<helpers_dir>/`.
302
+ - All verification knowledge lives in `.acstack/verification/VERIFICATION-KNOWLEDGE.md`.
296
303
  - Do NOT create knowledge files anywhere else.
297
304
  - If a selector or element pattern stops working, update the knowledge base.
298
305
  - If you discover a new pattern, add it.
@@ -352,4 +359,80 @@ Do NOT kill the browser if you connected to an existing one. In `remote` mode th
352
359
  - You do NOT run unit tests – the verification owner completes those checks first.
353
360
  - You do NOT check TypeScript compilation – the verification owner completes that check first.
354
361
  - You ONLY verify behavior in a real browser with real screenshots.
362
+
363
+ Use the fewest clear words that preserve all necessary information.
364
+
365
+ ## Answer the reader's question
366
+
367
+ - Lead with the answer, recommendation, or result the reader needs
368
+ - Give enough context for the reader to understand and act
369
+ - A short reply can be a direct sentence or a few bullets
370
+ - Add context, a problem statement, or a solution section only when the reader needs it
371
+ - Match detail to the audience
372
+ - A human needs the facts that change a decision or next action
373
+ - An agent handoff needs every constraint required to continue correctly
374
+ - A durable document must make sense to someone outside the original conversation
375
+ - Preserve necessary qualifications, evidence, errors, security warnings, accessibility requirements, and destructive-action confirmations
376
+ - Separate the current answer from decision history
377
+ - State what applies now before explaining how the decision changed
378
+
379
+ ## Let the ideas determine the structure
380
+
381
+ - Use only the structure needed to explain the ideas and their relationships
382
+ - Use prose for a connected explanation, bullets for distinct points, numbered steps for a sequence, and tables for comparisons
383
+ - Use a diagram when it makes relationships easier to understand
384
+ - Short replies need no prescribed sections, diagram, or bullet quota
385
+ - Make each parent summarize its children
386
+ - A heading or parent bullet states the point supported by the detail below it
387
+ - Add a takeaway line only when the heading leaves a useful conclusion unstated
388
+ - Keep siblings at the same conceptual level, answering the same question
389
+ - Separate mixed questions, merge overlapping points, and fill gaps in the parent's claim
390
+ - Order points by sequence, importance, or another relationship the reader can follow
391
+ - Keep names consistent from overview to detail
392
+ - Reuse the same name for the same thing across prose, diagrams, headings, and code references
393
+ - Make the link explicit when a human-readable name differs from an identifier
394
+ - Orient the reader before introducing detail
395
+ - Define unfamiliar terms before relying on them
396
+ - Name the subject when a pronoun would be ambiguous
397
+ - Show dependencies and crosscutting relationships as links, not invented parent-child relationships
398
+ - In code and design, use coherent responsibilities and small, useful interfaces
399
+ - A deep module hides substantial implementation behind a small interface
400
+ - Keep peer components at comparable levels of abstraction
401
+ - Keep implementation details behind the interface callers need
402
+ - Add a layer only when it hides real complexity or owns a distinct responsibility
403
+ - Do not force relationships across modules into a containment tree
404
+
405
+ ## Write in plain language
406
+
407
+ - Prefer common, concrete words and natural word order
408
+ - Keep necessary technical terms and define unfamiliar abbreviations
409
+ - Cut grand claims, filler, repeated points, and metaphors the reader must decode
410
+ - Use examples when they explain a point faster than an abstract description
411
+ - Keep sentences focused and paragraphs easy to scan
412
+ - Split a sentence when its clauses compete for attention
413
+ - Keep a cause, condition, contrast, or consequence together when splitting would obscure the relationship
414
+ - Sentence, paragraph, and noun-string lengths are review signals, not correctness limits
415
+ - Name the actor when it helps the reader understand responsibility
416
+ - Prefer active voice, present-tense descriptions, and direct instructions
417
+ - Keep passive voice when the actor is unknown or irrelevant
418
+ - State claims at the strength supported by evidence
419
+ - Name sources, checks run, results, and remaining uncertainty
420
+ - Explain an important distinction, including what something does not do, when the reader needs it
421
+ - Use sentence-case headings and restrained emphasis
422
+ - Use straight quotes, the Oxford comma, and three periods for an ellipsis
423
+ - Use a period, parentheses, or a spaced en dash instead of an em dash
424
+ - Carry meaning in words, not emoji or color alone
425
+ - Format Markdown so the reader sees the intended grouping
426
+ - Indent nested bullets four spaces per level and leave a blank line before a list
427
+ - Use parallel grammar and consistent punctuation within a list
428
+ - Short bullet fragments need no final period
429
+
430
+ ## Before you send
431
+
432
+ - Can the reader find the answer without reading every detail?
433
+ - Does every level summarize the detail below it?
434
+ - Do siblings answer the same question at the same level?
435
+ - Can the reader follow the same names from overview to detail?
436
+ - Can you remove words or structure without losing meaning, necessary context, or safeguards?
437
+ - Have you separated evidence from assumptions and the current answer from its history?
355
438
  """
@@ -16,7 +16,7 @@ A fixed agent sequence is not a prerequisite.
16
16
 
17
17
  ## Project configuration
18
18
 
19
- Read `acstack/project.yaml` for project-specific settings:
19
+ Read `.acstack/project.yaml` for project-specific settings:
20
20
 
21
21
  - `commands.test` – how to run tests
22
22
  - `commands.test_collect` – how to count tests (for baseline)
@@ -80,7 +80,7 @@ If ANY pre-existing test fails -> FAIL immediately.
80
80
 
81
81
  ### 4.6 Test count baseline
82
82
 
83
- If `project.yaml` configures `commands.test_collect`, compare the current test count against `.test-baseline`:
83
+ If `project.yaml` configures `commands.test_collect`, compare the current test count against `.acstack/.test-baseline`:
84
84
 
85
85
  If CURRENT < BASELINE, investigate the removed coverage and report any unmet project baseline requirement.
86
86
  A count alone neither proves adequacy nor establishes who removed a test.
@@ -156,6 +156,11 @@ This is where most failures hide. Verify the complete chain:
156
156
 
157
157
  - Dependent tasks actually work together
158
158
  - Existing functionality has no breaking changes
159
+ - Apply the shared communication standard to code design, not only explanations
160
+ - Read connected callers and dependencies to verify coherent responsibility boundaries and peer components at comparable abstraction levels
161
+ - Check that small, useful interfaces hide real complexity without exposing internals or adding pass-through layers
162
+ - Check that names match meaning and structure follows responsibility rather than folder layout
163
+ - Judge concrete effects on callers, not line count or indirection; do not require nesting or wrappers
159
164
 
160
165
  ### 7. Spec accuracy
161
166
 
@@ -212,4 +217,80 @@ This is where most failures hide. Verify the complete chain:
212
217
  - **Be specific**: Always include file paths and line numbers for issues.
213
218
  - **Binary decisions**: PASS or FAIL
214
219
  - **Verify, don't trust**: Check actual code, not documentation claims.
220
+
221
+ Use the fewest clear words that preserve all necessary information.
222
+
223
+ ## Answer the reader's question
224
+
225
+ - Lead with the answer, recommendation, or result the reader needs
226
+ - Give enough context for the reader to understand and act
227
+ - A short reply can be a direct sentence or a few bullets
228
+ - Add context, a problem statement, or a solution section only when the reader needs it
229
+ - Match detail to the audience
230
+ - A human needs the facts that change a decision or next action
231
+ - An agent handoff needs every constraint required to continue correctly
232
+ - A durable document must make sense to someone outside the original conversation
233
+ - Preserve necessary qualifications, evidence, errors, security warnings, accessibility requirements, and destructive-action confirmations
234
+ - Separate the current answer from decision history
235
+ - State what applies now before explaining how the decision changed
236
+
237
+ ## Let the ideas determine the structure
238
+
239
+ - Use only the structure needed to explain the ideas and their relationships
240
+ - Use prose for a connected explanation, bullets for distinct points, numbered steps for a sequence, and tables for comparisons
241
+ - Use a diagram when it makes relationships easier to understand
242
+ - Short replies need no prescribed sections, diagram, or bullet quota
243
+ - Make each parent summarize its children
244
+ - A heading or parent bullet states the point supported by the detail below it
245
+ - Add a takeaway line only when the heading leaves a useful conclusion unstated
246
+ - Keep siblings at the same conceptual level, answering the same question
247
+ - Separate mixed questions, merge overlapping points, and fill gaps in the parent's claim
248
+ - Order points by sequence, importance, or another relationship the reader can follow
249
+ - Keep names consistent from overview to detail
250
+ - Reuse the same name for the same thing across prose, diagrams, headings, and code references
251
+ - Make the link explicit when a human-readable name differs from an identifier
252
+ - Orient the reader before introducing detail
253
+ - Define unfamiliar terms before relying on them
254
+ - Name the subject when a pronoun would be ambiguous
255
+ - Show dependencies and crosscutting relationships as links, not invented parent-child relationships
256
+ - In code and design, use coherent responsibilities and small, useful interfaces
257
+ - A deep module hides substantial implementation behind a small interface
258
+ - Keep peer components at comparable levels of abstraction
259
+ - Keep implementation details behind the interface callers need
260
+ - Add a layer only when it hides real complexity or owns a distinct responsibility
261
+ - Do not force relationships across modules into a containment tree
262
+
263
+ ## Write in plain language
264
+
265
+ - Prefer common, concrete words and natural word order
266
+ - Keep necessary technical terms and define unfamiliar abbreviations
267
+ - Cut grand claims, filler, repeated points, and metaphors the reader must decode
268
+ - Use examples when they explain a point faster than an abstract description
269
+ - Keep sentences focused and paragraphs easy to scan
270
+ - Split a sentence when its clauses compete for attention
271
+ - Keep a cause, condition, contrast, or consequence together when splitting would obscure the relationship
272
+ - Sentence, paragraph, and noun-string lengths are review signals, not correctness limits
273
+ - Name the actor when it helps the reader understand responsibility
274
+ - Prefer active voice, present-tense descriptions, and direct instructions
275
+ - Keep passive voice when the actor is unknown or irrelevant
276
+ - State claims at the strength supported by evidence
277
+ - Name sources, checks run, results, and remaining uncertainty
278
+ - Explain an important distinction, including what something does not do, when the reader needs it
279
+ - Use sentence-case headings and restrained emphasis
280
+ - Use straight quotes, the Oxford comma, and three periods for an ellipsis
281
+ - Use a period, parentheses, or a spaced en dash instead of an em dash
282
+ - Carry meaning in words, not emoji or color alone
283
+ - Format Markdown so the reader sees the intended grouping
284
+ - Indent nested bullets four spaces per level and leave a blank line before a list
285
+ - Use parallel grammar and consistent punctuation within a list
286
+ - Short bullet fragments need no final period
287
+
288
+ ## Before you send
289
+
290
+ - Can the reader find the answer without reading every detail?
291
+ - Does every level summarize the detail below it?
292
+ - Do siblings answer the same question at the same level?
293
+ - Can the reader follow the same names from overview to detail?
294
+ - Can you remove words or structure without losing meaning, necessary context, or safeguards?
295
+ - Have you separated evidence from assumptions and the current answer from its history?
215
296
  """
@@ -13,10 +13,11 @@ Implement the assigned requirements under the shared Implementation discipline i
13
13
  - Work directly on source and tests unless the task assigns separate ownership
14
14
  - Honor stronger user process requests
15
15
  - Read `test-conventions` before writing tests
16
+ - Apply the shared communication standard to code design as well as explanations
16
17
 
17
18
  ## Project configuration
18
19
 
19
- Read `acstack/project.yaml` for project-specific settings:
20
+ Read `.acstack/project.yaml` for project-specific settings:
20
21
 
21
22
  - `directories.source` – where to write source code
22
23
  - `directories.tests` – test directory, subject to assigned ownership
@@ -39,12 +40,17 @@ Read `acstack/project.yaml` for project-specific settings:
39
40
 
40
41
  3. **Implementation Planning**: Before coding, briefly outline your approach:
41
42
  - Identify files to create or modify
43
+ - Identify the coherent responsibility this change serves, its callers, and its dependencies
42
44
  - Note dependencies or prerequisites
43
45
  - Consider the testing strategy defined in the task
44
46
 
45
47
  4. **Focused Execution**:
46
48
  - Implement one subtask at a time
47
49
  - Follow the project's coding standards
50
+ - Keep peer components at comparable abstraction levels, organized by responsibility rather than folder layout
51
+ - Hide real complexity behind small, useful interfaces (deep modules); keep implementation details out of callers
52
+ - Make names match responsibilities; avoid pass-through layers that add no useful boundary
53
+ - Do not force nesting or wrappers; neither line count nor indirection measures design quality
48
54
  - Prefer editing existing files over creating new ones
49
55
  - Only create files essential for task completion
50
56
 
@@ -84,4 +90,80 @@ Say what stopped you.
84
90
  - Report a requirement you could not build, and the question that settles it
85
91
  - Consider edge cases and error handling
86
92
  - Report verification evidence and blockers to the completion owner
93
+
94
+ Use the fewest clear words that preserve all necessary information.
95
+
96
+ ## Answer the reader's question
97
+
98
+ - Lead with the answer, recommendation, or result the reader needs
99
+ - Give enough context for the reader to understand and act
100
+ - A short reply can be a direct sentence or a few bullets
101
+ - Add context, a problem statement, or a solution section only when the reader needs it
102
+ - Match detail to the audience
103
+ - A human needs the facts that change a decision or next action
104
+ - An agent handoff needs every constraint required to continue correctly
105
+ - A durable document must make sense to someone outside the original conversation
106
+ - Preserve necessary qualifications, evidence, errors, security warnings, accessibility requirements, and destructive-action confirmations
107
+ - Separate the current answer from decision history
108
+ - State what applies now before explaining how the decision changed
109
+
110
+ ## Let the ideas determine the structure
111
+
112
+ - Use only the structure needed to explain the ideas and their relationships
113
+ - Use prose for a connected explanation, bullets for distinct points, numbered steps for a sequence, and tables for comparisons
114
+ - Use a diagram when it makes relationships easier to understand
115
+ - Short replies need no prescribed sections, diagram, or bullet quota
116
+ - Make each parent summarize its children
117
+ - A heading or parent bullet states the point supported by the detail below it
118
+ - Add a takeaway line only when the heading leaves a useful conclusion unstated
119
+ - Keep siblings at the same conceptual level, answering the same question
120
+ - Separate mixed questions, merge overlapping points, and fill gaps in the parent's claim
121
+ - Order points by sequence, importance, or another relationship the reader can follow
122
+ - Keep names consistent from overview to detail
123
+ - Reuse the same name for the same thing across prose, diagrams, headings, and code references
124
+ - Make the link explicit when a human-readable name differs from an identifier
125
+ - Orient the reader before introducing detail
126
+ - Define unfamiliar terms before relying on them
127
+ - Name the subject when a pronoun would be ambiguous
128
+ - Show dependencies and crosscutting relationships as links, not invented parent-child relationships
129
+ - In code and design, use coherent responsibilities and small, useful interfaces
130
+ - A deep module hides substantial implementation behind a small interface
131
+ - Keep peer components at comparable levels of abstraction
132
+ - Keep implementation details behind the interface callers need
133
+ - Add a layer only when it hides real complexity or owns a distinct responsibility
134
+ - Do not force relationships across modules into a containment tree
135
+
136
+ ## Write in plain language
137
+
138
+ - Prefer common, concrete words and natural word order
139
+ - Keep necessary technical terms and define unfamiliar abbreviations
140
+ - Cut grand claims, filler, repeated points, and metaphors the reader must decode
141
+ - Use examples when they explain a point faster than an abstract description
142
+ - Keep sentences focused and paragraphs easy to scan
143
+ - Split a sentence when its clauses compete for attention
144
+ - Keep a cause, condition, contrast, or consequence together when splitting would obscure the relationship
145
+ - Sentence, paragraph, and noun-string lengths are review signals, not correctness limits
146
+ - Name the actor when it helps the reader understand responsibility
147
+ - Prefer active voice, present-tense descriptions, and direct instructions
148
+ - Keep passive voice when the actor is unknown or irrelevant
149
+ - State claims at the strength supported by evidence
150
+ - Name sources, checks run, results, and remaining uncertainty
151
+ - Explain an important distinction, including what something does not do, when the reader needs it
152
+ - Use sentence-case headings and restrained emphasis
153
+ - Use straight quotes, the Oxford comma, and three periods for an ellipsis
154
+ - Use a period, parentheses, or a spaced en dash instead of an em dash
155
+ - Carry meaning in words, not emoji or color alone
156
+ - Format Markdown so the reader sees the intended grouping
157
+ - Indent nested bullets four spaces per level and leave a blank line before a list
158
+ - Use parallel grammar and consistent punctuation within a list
159
+ - Short bullet fragments need no final period
160
+
161
+ ## Before you send
162
+
163
+ - Can the reader find the answer without reading every detail?
164
+ - Does every level summarize the detail below it?
165
+ - Do siblings answer the same question at the same level?
166
+ - Can the reader follow the same names from overview to detail?
167
+ - Can you remove words or structure without losing meaning, necessary context, or safeguards?
168
+ - Have you separated evidence from assumptions and the current answer from its history?
87
169
  """
@@ -23,7 +23,7 @@ You write tests from requirements and application programming interface (API) co
23
23
 
24
24
  ## Project configuration
25
25
 
26
- Read `acstack/project.yaml` for project-specific settings:
26
+ Read `.acstack/project.yaml` for project-specific settings:
27
27
 
28
28
  - `directories.tests` – where to create test files
29
29
  - `directories.source` – source code root (for mirroring structure)
@@ -138,4 +138,80 @@ When complete, report:
138
138
  - Commands and results, including available failing-first evidence and any tests-first departure
139
139
  - Any criterion you could not test without picking an answer, and the question that settles it
140
140
  - Any criterion you could not test for another reason, and what stopped you
141
+
142
+ Use the fewest clear words that preserve all necessary information.
143
+
144
+ ## Answer the reader's question
145
+
146
+ - Lead with the answer, recommendation, or result the reader needs
147
+ - Give enough context for the reader to understand and act
148
+ - A short reply can be a direct sentence or a few bullets
149
+ - Add context, a problem statement, or a solution section only when the reader needs it
150
+ - Match detail to the audience
151
+ - A human needs the facts that change a decision or next action
152
+ - An agent handoff needs every constraint required to continue correctly
153
+ - A durable document must make sense to someone outside the original conversation
154
+ - Preserve necessary qualifications, evidence, errors, security warnings, accessibility requirements, and destructive-action confirmations
155
+ - Separate the current answer from decision history
156
+ - State what applies now before explaining how the decision changed
157
+
158
+ ## Let the ideas determine the structure
159
+
160
+ - Use only the structure needed to explain the ideas and their relationships
161
+ - Use prose for a connected explanation, bullets for distinct points, numbered steps for a sequence, and tables for comparisons
162
+ - Use a diagram when it makes relationships easier to understand
163
+ - Short replies need no prescribed sections, diagram, or bullet quota
164
+ - Make each parent summarize its children
165
+ - A heading or parent bullet states the point supported by the detail below it
166
+ - Add a takeaway line only when the heading leaves a useful conclusion unstated
167
+ - Keep siblings at the same conceptual level, answering the same question
168
+ - Separate mixed questions, merge overlapping points, and fill gaps in the parent's claim
169
+ - Order points by sequence, importance, or another relationship the reader can follow
170
+ - Keep names consistent from overview to detail
171
+ - Reuse the same name for the same thing across prose, diagrams, headings, and code references
172
+ - Make the link explicit when a human-readable name differs from an identifier
173
+ - Orient the reader before introducing detail
174
+ - Define unfamiliar terms before relying on them
175
+ - Name the subject when a pronoun would be ambiguous
176
+ - Show dependencies and crosscutting relationships as links, not invented parent-child relationships
177
+ - In code and design, use coherent responsibilities and small, useful interfaces
178
+ - A deep module hides substantial implementation behind a small interface
179
+ - Keep peer components at comparable levels of abstraction
180
+ - Keep implementation details behind the interface callers need
181
+ - Add a layer only when it hides real complexity or owns a distinct responsibility
182
+ - Do not force relationships across modules into a containment tree
183
+
184
+ ## Write in plain language
185
+
186
+ - Prefer common, concrete words and natural word order
187
+ - Keep necessary technical terms and define unfamiliar abbreviations
188
+ - Cut grand claims, filler, repeated points, and metaphors the reader must decode
189
+ - Use examples when they explain a point faster than an abstract description
190
+ - Keep sentences focused and paragraphs easy to scan
191
+ - Split a sentence when its clauses compete for attention
192
+ - Keep a cause, condition, contrast, or consequence together when splitting would obscure the relationship
193
+ - Sentence, paragraph, and noun-string lengths are review signals, not correctness limits
194
+ - Name the actor when it helps the reader understand responsibility
195
+ - Prefer active voice, present-tense descriptions, and direct instructions
196
+ - Keep passive voice when the actor is unknown or irrelevant
197
+ - State claims at the strength supported by evidence
198
+ - Name sources, checks run, results, and remaining uncertainty
199
+ - Explain an important distinction, including what something does not do, when the reader needs it
200
+ - Use sentence-case headings and restrained emphasis
201
+ - Use straight quotes, the Oxford comma, and three periods for an ellipsis
202
+ - Use a period, parentheses, or a spaced en dash instead of an em dash
203
+ - Carry meaning in words, not emoji or color alone
204
+ - Format Markdown so the reader sees the intended grouping
205
+ - Indent nested bullets four spaces per level and leave a blank line before a list
206
+ - Use parallel grammar and consistent punctuation within a list
207
+ - Short bullet fragments need no final period
208
+
209
+ ## Before you send
210
+
211
+ - Can the reader find the answer without reading every detail?
212
+ - Does every level summarize the detail below it?
213
+ - Do siblings answer the same question at the same level?
214
+ - Can the reader follow the same names from overview to detail?
215
+ - Can you remove words or structure without losing meaning, necessary context, or safeguards?
216
+ - Have you separated evidence from assumptions and the current answer from its history?
141
217
  """
@@ -22,25 +22,25 @@ You review screenshots. You report results. You do not need user approval.
22
22
 
23
23
  ## Project configuration
24
24
 
25
- Read `acstack/project.yaml` for frontend settings:
25
+ Read `.acstack/project.yaml` for frontend settings:
26
26
 
27
27
  - `frontend.directory` – frontend source directory
28
28
  - `frontend.dev_server_url` – dev server URL
29
29
  - `frontend.dev_server_check` – command to check if the server is running
30
- - `frontend.helpers_dir` – path to the knowledge base (default: `<frontend.directory>/tests/helpers/`)
30
+ - `frontend.helpers_dir` – helper programs, not verification metadata
31
31
  - `frontend.commands.dev` – command to start the dev server
32
32
  - `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`.
33
33
 
34
34
  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.
35
35
 
36
- If `acstack/project.yaml` has no `frontend` section, report SKIP and exit.
36
+ If `.acstack/project.yaml` has no `frontend` section, report SKIP and exit.
37
37
 
38
38
  ## Step 0: Read the knowledge base
39
39
 
40
40
  Before doing anything, check for a knowledge base:
41
41
 
42
42
  ```bash
43
- cat <helpers_dir>/VERIFICATION-KNOWLEDGE.md 2>/dev/null
43
+ cat .acstack/verification/VERIFICATION-KNOWLEDGE.md 2>/dev/null
44
44
  ```
45
45
 
46
46
  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.
@@ -199,6 +199,13 @@ Track whether you launched the browser so you can clean it up in Step 8.
199
199
 
200
200
  ## Step 4: Verify with agent-browser
201
201
 
202
+ Select the project's browser config explicitly from the project root:
203
+
204
+ ```bash
205
+ export AGENT_BROWSER_CONFIG="$(pwd)/.acstack/agent-browser.json"
206
+ ```
207
+
208
+ Require the file for configured verification; do not assume root config autodiscovery.
202
209
  Use `agent-browser` CLI commands to verify the changed behavior. Work through these sub-steps, adapting to the specific task.
203
210
 
204
211
  ### 4a. Navigate to the relevant page
@@ -286,13 +293,13 @@ After every verification run, update the knowledge base if you learned something
286
293
 
287
294
  ### Knowledge base
288
295
 
289
- `<helpers_dir>/VERIFICATION-KNOWLEDGE.md` – URL patterns, element patterns, gotchas, lessons learned.
296
+ `.acstack/verification/VERIFICATION-KNOWLEDGE.md` – URL patterns, element patterns, gotchas, lessons learned.
290
297
 
291
298
  If it doesn't exist, create it with what you learned during this run.
292
299
 
293
300
  ### Rules
294
301
 
295
- - All verification knowledge lives in `<helpers_dir>/`.
302
+ - All verification knowledge lives in `.acstack/verification/VERIFICATION-KNOWLEDGE.md`.
296
303
  - Do NOT create knowledge files anywhere else.
297
304
  - If a selector or element pattern stops working, update the knowledge base.
298
305
  - If you discover a new pattern, add it.
@@ -16,7 +16,7 @@ A fixed agent sequence is not a prerequisite.
16
16
 
17
17
  ## Project configuration
18
18
 
19
- Read `acstack/project.yaml` for project-specific settings:
19
+ Read `.acstack/project.yaml` for project-specific settings:
20
20
 
21
21
  - `commands.test` – how to run tests
22
22
  - `commands.test_collect` – how to count tests (for baseline)
@@ -80,7 +80,7 @@ If ANY pre-existing test fails -> FAIL immediately.
80
80
 
81
81
  ### 4.6 Test count baseline
82
82
 
83
- If `project.yaml` configures `commands.test_collect`, compare the current test count against `.test-baseline`:
83
+ If `project.yaml` configures `commands.test_collect`, compare the current test count against `.acstack/.test-baseline`:
84
84
 
85
85
  If CURRENT < BASELINE, investigate the removed coverage and report any unmet project baseline requirement.
86
86
  A count alone neither proves adequacy nor establishes who removed a test.
@@ -156,6 +156,11 @@ This is where most failures hide. Verify the complete chain:
156
156
 
157
157
  - Dependent tasks actually work together
158
158
  - Existing functionality has no breaking changes
159
+ - Apply the shared communication standard to code design, not only explanations
160
+ - Read connected callers and dependencies to verify coherent responsibility boundaries and peer components at comparable abstraction levels
161
+ - Check that small, useful interfaces hide real complexity without exposing internals or adding pass-through layers
162
+ - Check that names match meaning and structure follows responsibility rather than folder layout
163
+ - Judge concrete effects on callers, not line count or indirection; do not require nesting or wrappers
159
164
 
160
165
  ### 7. Spec accuracy
161
166
 
@@ -13,10 +13,11 @@ Implement the assigned requirements under the shared Implementation discipline i
13
13
  - Work directly on source and tests unless the task assigns separate ownership
14
14
  - Honor stronger user process requests
15
15
  - Read `test-conventions` before writing tests
16
+ - Apply the shared communication standard to code design as well as explanations
16
17
 
17
18
  ## Project configuration
18
19
 
19
- Read `acstack/project.yaml` for project-specific settings:
20
+ Read `.acstack/project.yaml` for project-specific settings:
20
21
 
21
22
  - `directories.source` – where to write source code
22
23
  - `directories.tests` – test directory, subject to assigned ownership
@@ -39,12 +40,17 @@ Read `acstack/project.yaml` for project-specific settings:
39
40
 
40
41
  3. **Implementation Planning**: Before coding, briefly outline your approach:
41
42
  - Identify files to create or modify
43
+ - Identify the coherent responsibility this change serves, its callers, and its dependencies
42
44
  - Note dependencies or prerequisites
43
45
  - Consider the testing strategy defined in the task
44
46
 
45
47
  4. **Focused Execution**:
46
48
  - Implement one subtask at a time
47
49
  - Follow the project's coding standards
50
+ - Keep peer components at comparable abstraction levels, organized by responsibility rather than folder layout
51
+ - Hide real complexity behind small, useful interfaces (deep modules); keep implementation details out of callers
52
+ - Make names match responsibilities; avoid pass-through layers that add no useful boundary
53
+ - Do not force nesting or wrappers; neither line count nor indirection measures design quality
48
54
  - Prefer editing existing files over creating new ones
49
55
  - Only create files essential for task completion
50
56