@fro.bot/systematic 2.25.0 → 2.26.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.
@@ -0,0 +1,29 @@
1
+ # Visual Communication in Requirements Documents
2
+
3
+ Visual aids are conditional on content patterns, not on document depth classification — a Lightweight requirements doc about a complex multi-surface feature may warrant a diagram; a Deep doc about a straightforward change may not.
4
+
5
+ **When to include:**
6
+
7
+ | Requirements describe... | Visual aid | Placement |
8
+ |---|---|---|
9
+ | 4+ requirements with non-linear relationships (dependencies, groupings, fan-in/fan-out) | Mermaid dependency or grouping diagram | Before or after the Requirements heading |
10
+ | 3+ interacting system surfaces or cross-layer effects | Mermaid interaction or component diagram | Within the relevant section |
11
+ | 3+ behavioral modes, states, or variants being compared | Markdown comparison table | Within the relevant section |
12
+ | 3+ alternatives or trade-offs under consideration | Markdown comparison table | Within the relevant section |
13
+
14
+ **When to skip:**
15
+ - The requirements are 3 or fewer items in a straightforward list — prose bullets are sufficient
16
+ - Prose already communicates the relationships clearly
17
+ - The visual would duplicate what surrounding prose already shows
18
+ - The visual describes code-level detail (specific method names, SQL columns, API field lists)
19
+
20
+ **Format selection:**
21
+ - **Mermaid** (default) for dependency graphs and interaction diagrams — 5–15 nodes, no in-box annotations, standard flowchart shapes. Use `TB` (top-to-bottom) direction so diagrams stay narrow in both rendered and source form. Source should be readable as fallback in diff views and terminals.
22
+ - **ASCII/box-drawing diagrams** for annotated flows that need rich in-box content — decision logic branches, multi-column spatial arrangements. More expressive than mermaid when the diagram's value comes from annotations within nodes. Follow 80-column max for code blocks, use vertical stacking.
23
+ - **Markdown tables** for mode/variant comparisons and alternative comparisons.
24
+ - Keep diagrams proportionate to the document. A simple 4-requirement grouping gets a simple diagram. A complex dependency graph with fan-out and fan-in may need 10–15 nodes — that is fine if every node earns its place.
25
+ - Place inline at the point of relevance, not in a separate section.
26
+ - Requirements-structure level only — groupings, surface interactions, mode comparisons. Not implementation architecture, data schemas, or code structure.
27
+ - Prose is authoritative: when a visual aid and its surrounding prose disagree, the prose governs.
28
+
29
+ After generating a visual aid, verify it accurately represents the requirements it illustrates — correct relationships, no missing surfaces, no merged requirements.
@@ -165,6 +165,55 @@ Classify the work into one of these plan depths:
165
165
 
166
166
  If depth is unclear, ask one targeted question and then continue.
167
167
 
168
+ #### 0.7 Solo-Mode Scoping Synthesis
169
+
170
+ Surface call-outs to the user — the specific forks in scope or approach where user input materially changes the plan — so scope can be corrected **before Phase 1 research is spent**. Sub-agent dispatch (systematic:research:repo-research-analyst, systematic:research:learnings-researcher, etc.) is the expensive next step this phase guards against wasted effort on.
171
+
172
+ Fires **only in solo invocation** — when Phase 0.2 found no upstream brainstorm doc AND Phase 0.4 stayed in ce:plan (did not route to ce:debug, ce:work, or universal-planning) AND Phase 0.5 cleared (no unresolved blockers) AND not on Phase 0.1 fast paths (resume normal, deepen-intent). Each guard is an explicit conditional. Skip Phase 0.7 entirely when any guard fails — brainstorm-sourced invocations defer to Phase 5.1.5 instead.
173
+
174
+ **Read `references/synthesis-summary.md` before composing the scoping synthesis.** It carries the affirmability test, keep-test criteria, detail test, summary shape budgets, granularity rules, anti-patterns, revision-vs-confirmation discipline, doc-shape routing, soft-cut behavior, self-redirect support, the worked PII compression example, and full headless-mode routing — all required for a well-shaped synthesis.
175
+
176
+ **Required gate output — do not skip; silent proceeding is not allowed.** Compose an internal three-bucket scope draft (Stated / Inferred / Out of scope — internal thinking that feeds plan-body routing at Phase 5.2, not the chat output below). Derive call-outs (specific forks where user input materially changes the plan), then emit one of the two literal templates below in chat before continuing to Phase 1.
177
+
178
+ **Synthesis is pre-plan-write.** The agent does NOT yet know how plan-write will sequence the work. Do not claim PR count ("one PR"), commit/branch shape, effort or time estimates, Implementation Unit boundaries, or exact file paths in the synthesis. The synthesis surfaces decisions knowable at THIS point — for the solo variant, that's the user's request plus the Phase 0.4 bootstrap dialogue plus the agent's own internal three-bucket draft. Phase 1 research has not happened yet and there is no upstream brainstorm; do not claim grounding from either. Plan-write produces the rest. This rule holds even when the agent has formed plan-write opinions earlier in the session — those stay internal until plan-write.
179
+
180
+ **Summary shape:** the summary is a **scope claim** — what the plan will target, what it will not — at affirm-or-redirect level. NOT an enumeration of Implementation Units. Form is prose, bullets, or mix; tier budgets are **ceilings, not targets** (Lightweight 1-3 lines; Standard up to 3-5 lines or 2-4 bullets; Deep up to 4-6 lines or 3-6 bullets). 1-2 lines per bullet, conversational not documentary. Less is correct when there isn't more to say. See `references/synthesis-summary.md` for keep test, detail test, and source-vocabulary discipline.
181
+
182
+ **Do NOT enumerate the touch surface.** Sentences like "The touch surface is...", "This plan touches...", "The implementation reaches into..." are plan-pitch leaks. File paths, module names, directory introductions, and per-file change descriptions belong in the plan body (Implementation Units at Phase 5.2), not the synthesis. The synthesis names *what* the plan targets, not *where* the code lives.
183
+
184
+ **Pre-emit scans.** Before emitting the synthesis, scan the output:
185
+ - Bare ID references (`AE\d+`, `R\d+`, `F\d+`, `A\d+`, `U\d+`) → replace with plain names.
186
+ - File paths (`path/like.md`, `path/like.py`, etc.) → cut unless the path IS the topic of an explicit fork in the call-outs.
187
+
188
+ **Tier guard on auto-proceed:** the auto-proceed path (announce without waiting for confirmation) fires only when plan depth is **Lightweight AND zero call-outs survive**. Standard and Deep plans always fire the confirmation gate, even with zero call-outs — substance earns the checkpoint, not interaction history.
189
+
190
+ **Confirmation template (Standard/Deep regardless of call-out count, or any tier with one or more call-outs surviving):**
191
+
192
+ ````text
193
+ Based on your request and our brief discussion, here's the scope I'm proposing to plan against:
194
+
195
+ [scope claim — what the plan will target, what it will not; affirm-or-redirect level; NOT an enumeration of Implementation Units]
196
+
197
+ **Call outs:** (omit this header when zero forks survived the keep test)
198
+ - [decision-level fork in 1-2 lines: name the choice and optional one-clause trade-off in parens. NO multi-sentence rationale, NO "my default is X" pitch]
199
+
200
+ Confirm and I'll proceed to research, drawing on this scope. (You can also redirect to ce:brainstorm if this is bigger than you initially thought — I'll stop here and load it for you.)
201
+ ````
202
+
203
+ Wait for user confirmation before continuing to Phase 1.
204
+
205
+ **Auto-proceed template (Lightweight with zero call-outs only):**
206
+
207
+ ````text
208
+ Planning: [1-3 line scope claim]
209
+
210
+ No open decisions to weigh in on — proceeding to research. Interrupt if I have the scope wrong.
211
+ ````
212
+
213
+ Then continue to Phase 1 without a blocking question.
214
+
215
+ **Headless mode**: internal draft is composed but stage 2 (chat-time call-outs) is skipped — no synchronous user to confirm to. Continue to Phase 1 research as normal. At plan-write time (Phase 5.2), Inferred bets from the internal draft route to a `## Assumptions` section in the plan instead of Key Technical Decisions. See `references/synthesis-summary.md` Headless mode for the full routing.
216
+
168
217
  ### Phase 1: Gather Context
169
218
 
170
219
  #### 1.1 Local Research (Always Runs)
@@ -406,6 +455,12 @@ Examples:
406
455
  - Runtime behavior that depends on seeing actual test failures
407
456
  - Refactors that may become unnecessary once implementation starts
408
457
 
458
+ #### 3.7 Anti-Expansion: Tangential Cleanup and Scope Creep Go to Deferred
459
+
460
+ Distinct from 3.6 (which is about *unknowns* at plan time): 3.7 is about *known but tangential* work that the agent notices while planning but that falls outside the user's confirmed scope. When research surfaces an adjacent refactor, a "while we're here" cleanup, or a scope-adjacent nice-to-have ("we could also add rate limiting"), route it to the existing `### Deferred to Separate Tasks` subsection in Scope Boundaries (see Core Plan Template), not into active Implementation Units.
461
+
462
+ This reinforces the synthesis discipline established at Phase 0.7 / Phase 5.1.5 — the user's confirmed scope is what the active plan executes; everything else is deferred. Does NOT impose architectural bias on extend-vs-invent decisions within confirmed scope — that judgment stays with the agent (and is surfaced via the Phase 5.1.5 synthesis when material). The user's explicit ask overrides this default — if the user explicitly requested a refactor, it's in-scope, not deferred.
463
+
409
464
  ### Phase 4: Write the Plan
410
465
 
411
466
  Use one planning philosophy across all depths. Change the amount of detail, not the boundary between planning and execution.
@@ -636,6 +691,19 @@ For larger `Deep` plans, extend the core template only when useful with sections
636
691
  - Do not expand implementation units into micro-step `RED/GREEN/REFACTOR` instructions
637
692
  - Do not pretend an execution-time question is settled just to make the plan look complete
638
693
 
694
+ #### 4.3b Section Contract and Rendering
695
+
696
+ Compose the plan using two paired references:
697
+
698
+ - `references/plan-sections.md` — the section contract. Describes what the plan contains: the outcome the plan must enable for downstream consumers, the hard floor (Summary, Problem Frame, Requirements, KTDs, Implementation Units), the include-when-material catalog (HTD, Scope Boundaries, Open Questions, System-Wide Impact, Risks & Dependencies, Acceptance Examples, Documentation/Operational Notes, Sources & Research), the agency-driven escape hatch (introduce new sections when content warrants), and the ID/content rules.
699
+ - `references/markdown-rendering.md` — how to present the sections in markdown (table-vs-prose by content shape, ID prefix format, diagram rendering, etc.).
700
+
701
+ The section catalog is the same regardless of plan depth. Format-specific principles live in the rendering reference. The Core Plan Template above (Section 4.2) is the canonical content authority — `plan-sections.md` is a rendering/ordering layer that describes how sections present, not which sections exist.
702
+
703
+ Omit "include when material" sections that don't carry information for this specific plan. Filling a section with placeholder prose is worse than omitting it.
704
+
705
+ **Write tight.** A section being material is not license to pad it. Hold every kept section to the prose-economy discipline in `references/plan-sections.md`: one idea per sentence, a requirement or unit is intent plus at most one qualifier, defer forks to Open Questions rather than specifying both arms, resolve superseded text in place rather than stacking strata. Before declaring the plan written, run the named test there — could the implementer find a contradiction in each section in one pass?
706
+
639
707
  #### 4.4 Visual Communication in Plan Documents
640
708
 
641
709
  When the plan contains 4+ implementation units with non-linear dependencies, 3+ interacting surfaces in System-Wide Impact, 3+ behavioral modes/variants in Overview or Problem Frame, or 3+ interacting decisions in Key Technical Decisions or alternatives in Alternative Approaches, read `references/visual-communication.md` for diagram and table guidance. This covers plan-structure visuals (dependency graphs, interaction diagrams, comparison tables) — not solution-design diagrams, which are covered in Section 3.4.
@@ -666,6 +734,58 @@ If the plan originated from a requirements document, re-read that document and v
666
734
  - Blocking questions were either resolved, explicitly assumed, or sent back to `ce:brainstorm`
667
735
  - Every section of the origin document is addressed in the plan — scan each section to confirm nothing was silently dropped
668
736
 
737
+ #### 5.1.5 Brainstorm-Sourced Scoping Synthesis
738
+
739
+ Surface plan-time call-outs to the user before Phase 5.2 commits the plan to disk — the latest cheap moment to catch plan-time scope errors. The brainstorm already validated WHAT to build; this phase surfaces HOW the plan will execute on the forks that matter.
740
+
741
+ Fires **only when the plan was sourced from an upstream brainstorm doc** (Phase 0.2 found a `*-requirements.md` match) AND not on Phase 0.1 fast paths (resume normal, deepen-intent). Skip Phase 5.1.5 in solo invocation — solo plans handled their synthesis in Phase 0.7.
742
+
743
+ **Read `references/synthesis-summary.md` before composing the scoping synthesis.** It carries the affirmability test, keep-test criteria, detail test, summary shape budgets, granularity rules, anti-patterns, revision-vs-confirmation discipline, doc-body reading rules, doc-shape routing, soft-cut behavior, self-redirect support, the worked PII compression example, and full headless-mode routing — all required for a well-shaped synthesis.
744
+
745
+ **Required gate output — do not skip; silent proceeding is not allowed.** Compose an internal three-bucket scope draft (Stated / Inferred / Out of scope — internal thinking that feeds plan-body routing at Phase 5.2, not the chat output below). Derive call-outs (specific forks where user input materially changes the plan), then emit one of the two literal templates below in chat before continuing to Phase 5.2.
746
+
747
+ **Synthesis is pre-plan-write.** The agent does NOT yet know how plan-write will sequence the work. Do not claim PR count ("one PR"), commit/branch shape, effort or time estimates, Implementation Unit boundaries, or exact file paths in the synthesis. The synthesis surfaces decisions knowable at THIS point (brainstorm + research + agent posture); plan-write produces the rest. This rule holds even when the agent has formed plan-write opinions earlier in the session — those stay internal until plan-write.
748
+
749
+ **Summary shape: two paragraphs.**
750
+
751
+ 1. **Brainstorm-scope restatement** (1-2 sentences, prose). Restates the brainstorm's scope as orientation, in the brainstorm's own vocabulary. NOT an enumeration of Implementation Units, restated constraints, or listed acceptance examples — the user wrote those.
752
+ 2. **Plan-specific scoping decisions** (prose, or bullets when multi-faceted). Scope-level commitments the agent made that the brainstorm did not: full brainstorm coverage vs. narrowed subset; adjacent refactors pulled in vs. held out; test scope at scenario level. Each item must be affirmable by the user without reading code. Form follows substance; tier budgets are **ceilings, not targets** (Lightweight 1-3 lines; Standard up to 3-5 lines or 2-4 bullets; Deep up to 4-6 lines or 3-6 bullets). 1-2 lines per bullet. Less is correct when there isn't more to say. See `references/synthesis-summary.md` for keep test, detail test, and source-vocabulary discipline.
753
+
754
+ **Do NOT enumerate the touch surface.** Sentences like "The touch surface is...", "This plan touches...", "The implementation reaches into...", "Files modified include..." are plan-pitch leaks. File paths, module names, directory introductions, and per-file change descriptions belong in the plan body (Implementation Units at Phase 5.2), not the synthesis. The synthesis names *what* the plan targets, not *where* the code lives.
755
+
756
+ **Pre-emit scans.** Before emitting the synthesis, scan the output:
757
+ - Bare ID references (`AE\d+`, `R\d+`, `F\d+`, `A\d+`, `U\d+`) → replace with plain names.
758
+ - File paths (`path/like.md`, `path/like.py`, etc.) → cut unless the path IS the topic of an explicit fork in the call-outs.
759
+
760
+ **Tier guard on auto-proceed:** the auto-proceed path (announce without waiting for confirmation) fires only when plan depth is **Lightweight AND zero call-outs survive**. Standard and Deep plans always fire the confirmation gate, even with zero call-outs — substance earns the checkpoint, not interaction history.
761
+
762
+ **Confirmation template (Standard/Deep regardless of call-out count, or any tier with one or more call-outs surviving):**
763
+
764
+ ````text
765
+ The brainstorm scopes [1-2 sentence restatement in the brainstorm's vocabulary as orientation; NOT an enumeration of Implementation Units, constraints, or acceptance examples].
766
+
767
+ This plan [plan-specific scoping decisions: full-brainstorm coverage vs. narrowed subset; adjacent refactors in or out; test scope at scenario level. NOT PR count, sequencing, IU lists, or file paths].
768
+
769
+ **Call outs:** (omit this header when zero forks survived the keep test)
770
+ - [plan-time fork in 1-2 lines: name the choice and optional one-clause trade-off in parens. NO multi-sentence rationale, NO "my default is X" pitch]
771
+
772
+ Confirm and I'll write the plan next, drawing on the brainstorm, research, and this synthesis.
773
+ ````
774
+
775
+ Wait for user confirmation before continuing to Phase 5.2.
776
+
777
+ **Auto-proceed template (Lightweight with zero call-outs only):**
778
+
779
+ ````text
780
+ Planning [brief brainstorm-scope restatement] — [plan-specific shape in one clause].
781
+
782
+ No open decisions to weigh in on — proceeding to plan-write. Interrupt if I have the scope wrong.
783
+ ````
784
+
785
+ Then continue to Phase 5.2 without a blocking question.
786
+
787
+ **Headless mode**: internal draft is composed but stage 2 (chat-time call-outs) is skipped — no synchronous user to confirm to. Proceed to Phase 5.2 plan-write. Inferred bets from the internal draft route to a `## Assumptions` section in the plan instead of Key Technical Decisions. See `references/synthesis-summary.md` Headless mode for the full routing.
788
+
669
789
  #### 5.2 Write Plan File
670
790
 
671
791
  **REQUIRED: Write the plan file to disk before presenting any options.**
@@ -0,0 +1,203 @@
1
+ # Markdown Rendering
2
+
3
+ This is a format-rendering reference — it describes how to render any
4
+ artifact in markdown, independent of which skill is producing it.
5
+
6
+ It is paired with a section contract (`references/plan-sections.md`)
7
+ that describes *what* the artifact contains. This reference describes
8
+ *how* markdown specifically presents it. The same content rendered by
9
+ different skills shares the same markdown principles.
10
+
11
+ ## Hard invariants
12
+
13
+ These hold regardless of which skill produced the artifact.
14
+
15
+ - **YAML frontmatter at the top of the file.** Standard `---` delimited block
16
+ containing the artifact's stable metadata (title, status, date, type, etc.
17
+ — exact fields are per-skill, defined in the section contract). Editable
18
+ in place; tools and agents that do status flips (`active → completed`)
19
+ update the YAML directly.
20
+ - **ASCII identifiers in anchors.** Markdown headings auto-generate anchors
21
+ from the heading text. Keep headings ASCII so anchors are predictable
22
+ (`#implementation-units`, not `#implementación-units`).
23
+ - **Repo-relative paths for file references.** Always. Never absolute paths
24
+ — they break portability across machines, worktrees, teammates.
25
+ - **No HTML mixed in.** Keep the markdown pure. No `<div>`, no `<details>`,
26
+ no inline `<style>`. Markdown stays markdown.
27
+
28
+ ## Format principles
29
+
30
+ These shape what "good" markdown looks like; the agent applies them per
31
+ artifact based on content shape.
32
+
33
+ ### ID prefix format
34
+
35
+ Stable IDs (R, U, A, F, AE, KTD) appear as plain prefixes at the start of
36
+ the bullet or heading — do NOT bold the prefix. The prefix is visually
37
+ distinctive on its own; bolding it inflates visual noise.
38
+
39
+ ```markdown
40
+ - R1. The plan returns paginated sessions. ← right
41
+ - **R1.** The plan returns paginated sessions. ← wrong (bolded prefix)
42
+ ```
43
+
44
+ Same applies to unit headings: `### U1. Cloak detection in preflight contract`.
45
+
46
+ ### Content shape: prose vs bullets vs tables
47
+
48
+ The same content can be rendered three ways; the agent picks per content
49
+ shape, not by template default.
50
+
51
+ - **Prose** when the content has narrative flow (motivation, decision
52
+ rationale, problem framing). Bullets fragment narrative into
53
+ disconnected pieces.
54
+ - **Bullets** when items share a parallel shape but each carries enough
55
+ prose to not fit a table cell.
56
+ - **Tables** when 5+ items share uniform structure (`ID + body`,
57
+ `name + value`, `decision + rationale`, `risk + mitigation`). Tables
58
+ scan faster at that scale and unlock additional columns (status,
59
+ traceability, severity) that bullets can't accommodate cleanly.
60
+
61
+ The test: which shape would a reader scan fastest for this content? If
62
+ items have parallel structure and 5+ instances, table. If items are 3-5
63
+ and each has a few lines of prose, bullets. If the content is a single
64
+ narrative thought, prose.
65
+
66
+ ### Bold leader labels within bullets
67
+
68
+ When a bullet has substructure that benefits from named fields (Key Flows
69
+ with Trigger / Actors / Steps / Outcome, Acceptance Examples with Covers
70
+ / Given / When / Then), use bold leader labels at the start of nested
71
+ bullets — not deeper heading levels.
72
+
73
+ ```markdown
74
+ - F1. Anonymous capture
75
+ - **Trigger:** Agent enters Step 2a with no session.
76
+ - **Actors:** A1, A2
77
+ - **Steps:** Preflight detects cloak; agent launches; capture proceeds.
78
+ - **Covered by:** R1, R2, R5
79
+ ```
80
+
81
+ This gives the bullet structure without needing H4/H5 headings that would
82
+ clutter the doc and break TOC generation.
83
+
84
+ ### Section separators
85
+
86
+ For substantial artifacts, use horizontal rules (`---`) between top-level
87
+ H2 sections. Omit for short docs where separators would dominate.
88
+
89
+ ### Tables for genuinely comparative info only
90
+
91
+ Use tables for the uniform-shape case in "Content shape" above. Don't use
92
+ tables to render content lists that are really bullets — markdown tables
93
+ are noisier in raw form and worse for diffs.
94
+
95
+ ## Section anatomy
96
+
97
+ How section types commonly render in markdown. These are patterns, not
98
+ contracts — the agent picks the shape that fits the content.
99
+
100
+ - **Summary / Problem Frame** — prose paragraphs.
101
+ - **Requirements** — bullets with `R<N>.` prefix. When requirements span
102
+ more than one concern, grouping under bold inline headers is the default
103
+ shape, not optional polish (group by capability, not by discussion order);
104
+ render a flat list only when every requirement is about the same thing.
105
+ When requirements have status, traceability, or severity that warrant
106
+ additional columns, escalate to a table.
107
+ - **Implementation Units** — H3 heading per unit with `U<N>.` prefix.
108
+ Fields (Goal, Files, Patterns, Test Scenarios, Verification) render as
109
+ bullets with bold leader labels, or as sub-headings if the field has
110
+ multi-paragraph content.
111
+ - **Key Technical Decisions** — bullets with bold decision name + prose
112
+ rationale, or numbered KTD-N pattern when traceability matters.
113
+ - **Key Flows / Acceptance Examples** — bullets with bold leader labels
114
+ (Trigger / Actors / Steps / Outcome / Covers / Given-When-Then).
115
+ - **Scope Boundaries** — bullets, optionally split into "Deferred to
116
+ Separate Tasks" / "Outside this product's identity" sub-headings when
117
+ the positioning distinction matters.
118
+
119
+ The agent picks more elaborate or simpler shapes based on what each
120
+ specific artifact's content needs.
121
+
122
+ ## Diagrams
123
+
124
+ When the section contract calls for a diagram (architecture, sequence,
125
+ flowchart, state machine, swim lane, data-flow), markdown renders it as
126
+ a fenced mermaid block:
127
+
128
+ ```markdown
129
+ ` ``mermaid
130
+ flowchart TB
131
+ A[Start] --> B{Decision}
132
+ B -->|yes| C[Action]
133
+ B -->|no| D[Other action]
134
+ ` ``
135
+ ```
136
+
137
+ (`TB` direction default — keeps diagrams narrow in source view and in
138
+ narrow rendered viewports.)
139
+
140
+ For quantitative comparisons (bar charts, scatter plots) markdown has no
141
+ native equivalent — use a table with the data and let prose or caption
142
+ carry the interpretation.
143
+
144
+ ## Inline code and code blocks
145
+
146
+ - **Inline code** for identifiers (variable names, function names,
147
+ flag names, file paths, IDs that aren't section anchors).
148
+ - **Fenced code blocks** with language tag for code, shell commands,
149
+ API request/response samples. Always specify the language for syntax
150
+ highlighting and accessibility.
151
+
152
+ ```markdown
153
+ The flag `--cdp-url` accepts a URL.
154
+
155
+ ` ``bash
156
+ browser-use --cdp-url http://localhost:9222
157
+ ` ``
158
+ ```
159
+
160
+ ## No process exhaust
161
+
162
+ Engineering process metadata stays out of the artifact:
163
+
164
+ - No "captured at Phase X" notes
165
+ - No `## Next Steps` pointing to the next skill
166
+ - No italic provenance lines ("*Brainstorm completed 2026-05-13*")
167
+ - No engineering-flow shepherding ("Now read this file:", "Next, run that
168
+ command:")
169
+
170
+ This information belongs in commit messages, tool output, and agent
171
+ transcripts — not in the artifact a reader returns to weeks later.
172
+
173
+ ## Frontmatter shape
174
+
175
+ Per-skill frontmatter fields are defined in the section contract
176
+ (`plan-sections.md` lists plan frontmatter). Common rules:
177
+
178
+ - YAML at the top of the file, delimited by `---` on its own line above
179
+ and below.
180
+ - Field names in lowercase snake_case (`status`, `created_at`, not
181
+ `Status`, `CreatedAt`).
182
+ - **Status lifecycle is per-contract.** When the section contract
183
+ defines a `status` field with a lifecycle (plans use
184
+ `active → completed`, flipped by `ce:work` at shipping time via direct
185
+ YAML edit), it is editable in place. When the section contract does
186
+ not define a status lifecycle (brainstorms, for example, have no
187
+ `active → completed` flip — they are upstream of plans and
188
+ referenced via the plan's `origin:`), do not introduce one.
189
+ - Stable across artifact revisions — never rename or repurpose a field.
190
+
191
+ ## Post-write audit
192
+
193
+ Before declaring the markdown file written, scan it for these common
194
+ slips:
195
+
196
+ - All stable IDs are plain-prefix format, not bolded.
197
+ - No HTML elements mixed in.
198
+ - All file paths are repo-relative.
199
+ - Horizontal rule separators between H2s (for Standard / Deep artifacts).
200
+ - No process exhaust (Phase X notes, Next Steps pointers, provenance
201
+ lines).
202
+ - Tables only where 5+ uniform-shape items justify them.
203
+ - Frontmatter has all the per-skill required fields with reasonable values.
@@ -38,7 +38,7 @@ After document-review completes, present the options using the platform's blocki
38
38
  **Question:** "Plan ready at `<absolute path to plan>`. What would you like to do next?"
39
39
 
40
40
  **Options:**
41
- 1. **Start `/ce-work`** (recommended) - Begin implementing this plan in the current session
41
+ 1. **Start `ce:work`** (recommended) - Begin implementing this plan in the current session
42
42
  2. **Create Issue** - Create a tracked issue from this plan in your configured issue tracker (GitHub or Linear)
43
43
  3. **Open in Proof (web app) — review and comment to iterate with the agent** - Open the doc in Every's Proof editor, iterate with the agent via comments, or copy a link to share with others
44
44
  4. **Done for now** - Pause; the plan file is saved and can be resumed later
@@ -46,19 +46,19 @@ After document-review completes, present the options using the platform's blocki
46
46
  **Surface additional document review contextually, not as a menu fixture:** When the prior document-review pass surfaced residual P0/P1 findings that the user has not addressed, mention them adjacent to the menu and offer another review pass in prose (e.g., "Document review flagged 2 P1 findings you may want to address — want me to run another pass before you pick?"). Do not add it to the option list.
47
47
 
48
48
  Based on selection:
49
- - **Start `/ce-work`** -> Call `/ce-work` with the plan path
49
+ - **Start `ce:work`** -> Call `ce:work` with the plan path
50
50
  - **Create Issue** -> Follow the Issue Creation section below
51
51
  - **Open in Proof (web app) — review and comment to iterate with the agent** -> Load the `ce-proof` skill in HITL-review mode with:
52
52
  - source file: `docs/plans/<plan_filename>.md`
53
53
  - doc title: `Plan: <plan title from frontmatter>`
54
54
  - identity: `ai:systematic` / `Systematic`
55
- - recommended next step: `/ce-work` (shown in the ce-proof skill's final terminal output)
55
+ - recommended next step: `ce:work` (shown in the ce-proof skill's final terminal output)
56
56
 
57
57
  Follow `references/hitl-review.md` in the ce-proof skill. It uploads the plan, prompts the user for review in Proof's web UI, ingests each thread by reading it fresh and replying in-thread, applies agreed edits as tracked suggestions, and syncs the final markdown back to the plan file atomically on proceed.
58
58
 
59
59
  When the ce-proof skill returns:
60
60
  - `status: proceeded` with `localSynced: true` -> the plan on disk now reflects the review. Re-run `ce-doc-review` on the updated plan before re-rendering the menu — HITL can materially rewrite the plan body, so the prior ce-doc-review pass no longer covers the current file and section 5.3.8 requires a review before any handoff option is offered. Then return to the post-generation options with the refreshed residual findings.
61
- - `status: proceeded` with `localSynced: false` -> the reviewed version lives in Proof at `docUrl` but the local copy is stale. Offer to pull the Proof doc to `localPath` using the ce-proof skill's Pull workflow. If the pull happened, re-run `ce-doc-review` on the pulled file before re-rendering the options (same 5.3.8 rationale — the local plan was materially updated by the pull). If the pull was declined, include a one-line note above the menu that `<localPath>` is stale vs. Proof — otherwise `Start /ce-work` or `Create Issue` will silently use the pre-review copy.
61
+ - `status: proceeded` with `localSynced: false` -> the reviewed version lives in Proof at `docUrl` but the local copy is stale. Offer to pull the Proof doc to `localPath` using the ce-proof skill's Pull workflow. If the pull happened, re-run `ce-doc-review` on the pulled file before re-rendering the options (same 5.3.8 rationale — the local plan was materially updated by the pull). If the pull was declined, include a one-line note above the menu that `<localPath>` is stale vs. Proof — otherwise `Start ce:work` or `Create Issue` will silently use the pre-review copy.
62
62
  - `status: done_for_now` -> the plan on disk may be stale if the user edited in Proof before leaving. Offer to pull the Proof doc to `localPath` so the local plan file stays in sync. If the pull happened, re-run `ce-doc-review` on the pulled file before re-rendering the options (same 5.3.8 rationale). If the pull was declined, include the stale-local note above the menu. `done_for_now` means the user stopped the HITL loop — it does not mean they ended the whole plan session; they may still want to start work or create an issue.
63
63
  - `status: aborted` -> fall back to the options without changes.
64
64
 
@@ -93,4 +93,4 @@ When the user selects "Create Issue", detect their project tracker:
93
93
 
94
94
  After issue creation:
95
95
  - Display the issue URL
96
- - Ask whether to proceed to `/ce-work` using the platform's blocking question tool
96
+ - Ask whether to proceed to `ce:work` using the platform's blocking question tool
@@ -0,0 +1,117 @@
1
+ # Plan Sections
2
+
3
+ This reference describes what makes a great implementation plan. It does NOT
4
+ prescribe how the plan looks on the page — rendering is handled by
5
+ `references/markdown-rendering.md`.
6
+
7
+ ## The outcome
8
+
9
+ A great plan enables three audiences to act:
10
+
11
+ - **The implementing agent** (`ce:work` or a human) starts from an informed
12
+ baseline — load-bearing decisions are named, research breadcrumbs orient
13
+ their own investigation, unit boundaries are clear. The plan gives the
14
+ implementer a starting point, not a substitute for their own investigation.
15
+ - **The reviewer** identifies the load-bearing decisions and the boundaries
16
+ of what's being changed in one pass.
17
+ - **The future reader** (anyone returning months later) traces why the work
18
+ was done, what shaped it, and where the artifacts live.
19
+
20
+ Sections earn their place by serving one of these audiences. Omit padding.
21
+
22
+ ## Decide whether a plan doc is warranted at all
23
+
24
+ Not every invocation of `ce:plan` should produce a plan document. For
25
+ genuinely atomic work, the doc is ceremony — the implementer (whether
26
+ `ce:work` or a human) can act directly without IDed units, KTDs, or
27
+ Requirements as a checklist.
28
+
29
+ **Bias toward producing a plan.** The risk asymmetry favors writing one:
30
+ a thin plan doc for small work is mild ceremony, but skipping a plan when
31
+ one was warranted costs the implementer real time (reinvented decisions,
32
+ lost unit boundaries, no IDed requirements to verify against). When unsure,
33
+ write the plan.
34
+
35
+ **Skip plan creation only when ALL of these hold:**
36
+
37
+ - The work is **atomic** — fits in one commit, no meaningful unit boundaries
38
+ to break out independently.
39
+ - There are **no design choices that constrain implementation** — no
40
+ Key Technical Decisions worth recording. If the work needs the implementer
41
+ to make a choice between two approaches, those approaches are KTDs and
42
+ a plan is warranted.
43
+ - There are **no scope boundaries worth pinning** in writing — the work
44
+ scope is self-evident from the user's request.
45
+ - **No upstream artifact** (a brainstorm with R-IDs, an incident report,
46
+ a deferred-follow-up item from a prior plan) needs traceability through
47
+ this plan.
48
+
49
+ **Stress test the "looks atomic" case.** Many requests look atomic at first
50
+ glance but hide design decisions:
51
+
52
+ - *"Add caching to this endpoint"* — sounds atomic, but TTL, invalidation,
53
+ cache key shape, and backend selection are all KTDs. Write the plan.
54
+ - *"Migrate from package A to package B"* — sounds mechanical, but
55
+ semantic differences between the packages create migration KTDs. Write
56
+ the plan.
57
+ - *"Add rate limiting"* — sounds small, but algorithm, scope, and
58
+ configurability are all KTDs. Write the plan.
59
+
60
+ vs. genuine skip cases:
61
+
62
+ - *"Fix typo in README line 47"* — atomic, no KTDs, skip the plan.
63
+ - *"Rename `oldFn` to `newFn` across the repo"* — mechanical, no design
64
+ choices, skip the plan.
65
+ - *"Bump dependency X to v2.3.1"* — mechanical, skip the plan (unless the
66
+ bump introduces breaking changes that warrant unit-by-unit migration).
67
+
68
+ When skipping the plan doc, the work proceeds directly to `ce:work` or to
69
+ implementation, and any decisions made along the way land in the commit
70
+ message or `docs/solutions/` if they're worth carrying forward.
71
+
72
+ > **Section inventory and meaning are owned by the Core Plan Template in `ce-plan/SKILL.md`; this file covers only how sections render and order.**
73
+
74
+ ## Plan metadata fields
75
+
76
+ Every plan carries a small set of stable metadata fields that downstream
77
+ tooling depends on. In markdown these fields appear as YAML frontmatter at
78
+ the top of the file. Field names and semantics are stable across plan
79
+ revisions — never rename or repurpose a field.
80
+
81
+ ### Required
82
+
83
+ - **`title`** — verbatim plan title. Matches the H1 heading so file metadata
84
+ and visible heading don't drift.
85
+ - **`type`** — conventional-commit-prefix-aligned classification (`feat`,
86
+ `fix`, `refactor`, `chore`, `docs`, `perf`, `test`, etc.). Carries the
87
+ intent the eventual commit message should reflect.
88
+ - **`status`** — `active` on creation; `ce:work` flips to `completed` on
89
+ ship. `ce:plan`'s Phase 0.1 resume fast path keys on `active`.
90
+ - **`date`** — creation date in ISO 8601 (`YYYY-MM-DD`), ASCII digits only.
91
+
92
+ ### Optional but well-known
93
+
94
+ These fields are not required, but when set they have fixed names and
95
+ semantics so downstream tooling can rely on them:
96
+
97
+ - **`origin`** — repo-relative path to an upstream brainstorm requirements
98
+ doc (e.g., `docs/brainstorms/2026-05-12-pagination-requirements.md`).
99
+ Set when planning from an upstream brainstorm; carried for traceability
100
+ and re-resolved when `ce:plan` re-deepens.
101
+ - **`deepened`** — ISO 8601 date marking the first time the confidence
102
+ check substantively strengthened the plan. Presence affects Phase 0.1
103
+ resume fast-path logic (see `references/deepening-workflow.md`).
104
+
105
+ Field names are stable across plan revisions — never rename a field or
106
+ repurpose its semantics. Agents composing new plans MUST use these exact
107
+ names; adding new fields is fine, but renaming `status` to `state` or
108
+ `origin` to `source` breaks the downstream consumers above.
109
+
110
+ ## Rendering
111
+
112
+ The format-specific reference describes how to render plan sections:
113
+
114
+ - **Markdown rendering:** `references/markdown-rendering.md`
115
+
116
+ This reference (`plan-sections.md`) covers metadata format and rendering conventions;
117
+ section inventory and content rules live in the Core Plan Template in `ce-plan/SKILL.md`.