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