forge-workflow 0.0.2 → 0.0.4
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/commands/dev.md +26 -0
- package/.claude/commands/plan.md +141 -9
- package/.claude/commands/premerge.md +0 -3
- package/.claude/commands/rollback.md +4 -4
- package/.claude/commands/ship.md +71 -41
- package/.claude/commands/status.md +9 -38
- package/.claude/commands/validate.md +47 -2
- package/.cline/workflows/dev.md +337 -0
- package/.cline/workflows/plan.md +518 -0
- package/.cline/workflows/premerge.md +173 -0
- package/.cline/workflows/research.md +39 -0
- package/.cline/workflows/review.md +439 -0
- package/.cline/workflows/rollback.md +718 -0
- package/.cline/workflows/ship.md +161 -0
- package/.cline/workflows/sonarcloud.md +146 -0
- package/.cline/workflows/status.md +45 -0
- package/.cline/workflows/validate.md +279 -0
- package/.cline/workflows/verify.md +218 -0
- package/.codex/config.toml +11 -0
- package/.codex/skills/dev/SKILL.md +340 -0
- package/.codex/skills/plan/SKILL.md +521 -0
- package/.codex/skills/premerge/SKILL.md +176 -0
- package/.codex/skills/research/SKILL.md +42 -0
- package/.codex/skills/review/SKILL.md +442 -0
- package/.codex/skills/rollback/SKILL.md +721 -0
- package/.codex/skills/ship/SKILL.md +164 -0
- package/.codex/skills/sonarcloud/SKILL.md +149 -0
- package/.codex/skills/status/SKILL.md +48 -0
- package/.codex/skills/validate/SKILL.md +282 -0
- package/.codex/skills/verify/SKILL.md +221 -0
- package/.cursor/commands/dev.md +337 -0
- package/.cursor/commands/plan.md +518 -0
- package/.cursor/commands/premerge.md +173 -0
- package/.cursor/commands/research.md +39 -0
- package/.cursor/commands/review.md +439 -0
- package/.cursor/commands/rollback.md +718 -0
- package/.cursor/commands/ship.md +161 -0
- package/.cursor/commands/sonarcloud.md +146 -0
- package/.cursor/commands/status.md +45 -0
- package/.cursor/commands/validate.md +279 -0
- package/.cursor/commands/verify.md +218 -0
- package/.cursor/hooks/state/continual-learning-index.json +19 -0
- package/.cursor/hooks/state/continual-learning.json +8 -0
- package/.cursor/rules/permissions-guidance.mdc +37 -0
- package/.github/prompts/dev.prompt.md +342 -0
- package/.github/prompts/plan.prompt.md +523 -0
- package/.github/prompts/premerge.prompt.md +178 -0
- package/.github/prompts/research.prompt.md +44 -0
- package/.github/prompts/review.prompt.md +444 -0
- package/.github/prompts/rollback.prompt.md +723 -0
- package/.github/prompts/ship.prompt.md +166 -0
- package/.github/prompts/sonarcloud.prompt.md +151 -0
- package/.github/prompts/status.prompt.md +50 -0
- package/.github/prompts/validate.prompt.md +284 -0
- package/.github/prompts/verify.prompt.md +223 -0
- package/.kilocode/workflows/dev.md +341 -0
- package/.kilocode/workflows/plan.md +522 -0
- package/.kilocode/workflows/premerge.md +177 -0
- package/.kilocode/workflows/research.md +43 -0
- package/.kilocode/workflows/review.md +443 -0
- package/.kilocode/workflows/rollback.md +722 -0
- package/.kilocode/workflows/ship.md +165 -0
- package/.kilocode/workflows/sonarcloud.md +150 -0
- package/.kilocode/workflows/status.md +49 -0
- package/.kilocode/workflows/validate.md +283 -0
- package/.kilocode/workflows/verify.md +222 -0
- package/.opencode/commands/dev.md +340 -0
- package/.opencode/commands/plan.md +521 -0
- package/.opencode/commands/premerge.md +176 -0
- package/.opencode/commands/research.md +42 -0
- package/.opencode/commands/review.md +442 -0
- package/.opencode/commands/rollback.md +721 -0
- package/.opencode/commands/ship.md +164 -0
- package/.opencode/commands/sonarcloud.md +149 -0
- package/.opencode/commands/status.md +48 -0
- package/.opencode/commands/validate.md +282 -0
- package/.opencode/commands/verify.md +221 -0
- package/.roo/commands/dev.md +341 -0
- package/.roo/commands/plan.md +522 -0
- package/.roo/commands/premerge.md +177 -0
- package/.roo/commands/research.md +43 -0
- package/.roo/commands/review.md +443 -0
- package/.roo/commands/rollback.md +722 -0
- package/.roo/commands/ship.md +165 -0
- package/.roo/commands/sonarcloud.md +150 -0
- package/.roo/commands/status.md +49 -0
- package/.roo/commands/validate.md +283 -0
- package/.roo/commands/verify.md +222 -0
- package/AGENTS.md +7 -1
- package/CLAUDE.md +5 -4
- package/README.md +21 -19
- package/bin/{forge-validate.js → forge-preflight.js} +21 -15
- package/bin/forge.js +209 -138
- package/docs/AGENT_INSTALL_PROMPT.md +1 -1
- package/docs/BEADS_GITHUB_SYNC.md +251 -0
- package/docs/ENHANCED_ONBOARDING.md +8 -8
- package/docs/EXAMPLES.md +4 -4
- package/docs/GREPTILE_SETUP.md +1 -1
- package/docs/MANUAL_REVIEW_GUIDE.md +1 -1
- package/docs/ROADMAP.md +6 -6
- package/docs/SETUP.md +1 -2
- package/docs/TOOLCHAIN.md +15 -234
- package/docs/VALIDATION.md +11 -11
- package/install.sh +33 -39
- package/lib/agents-config.js +3 -3
- package/lib/commands/plan.js +11 -15
- package/lib/commands/recommend.js +2 -2
- package/lib/dep-guard/analyzer.js +294 -0
- package/lib/dep-guard/behavior-detector.js +98 -0
- package/lib/dep-guard/contract-detector.js +162 -0
- package/lib/dep-guard/import-detector.js +498 -0
- package/lib/dep-guard/path-utils.js +13 -0
- package/lib/dep-guard/rubric.js +120 -0
- package/lib/dep-guard/task-parser.js +318 -0
- package/lib/detect-agent.js +191 -0
- package/lib/detect-worktree.js +47 -0
- package/lib/file-hash.js +26 -0
- package/lib/plugin-catalog.js +18 -28
- package/lib/setup-action-log.js +139 -0
- package/lib/setup-summary-renderer.js +106 -0
- package/lib/setup.js +75 -1
- package/lib/workflow-profiles.js +5 -11
- package/package.json +17 -7
- package/skills/parallel-deep-research/SKILL.md +108 -0
- package/skills/parallel-deep-research/evals/README.md +27 -0
- package/skills/parallel-deep-research/evals/evals.json +62 -0
- package/skills/sonarcloud-analysis/SKILL.md +171 -0
- package/skills/sonarcloud-analysis/evals/README.md +27 -0
- package/skills/sonarcloud-analysis/evals/evals.json +50 -0
- package/skills/sonarcloud-analysis/references/api-reference.md +466 -0
- package/docs/WORKFLOW.md +0 -400
- package/docs/planning/PROGRESS.md +0 -396
- package/docs/plans/.gitkeep +0 -0
- package/docs/plans/2026-02-27-forge-test-suite-v2-decisions.md +0 -21
- package/docs/plans/2026-02-27-forge-test-suite-v2-design.md +0 -362
- package/docs/plans/2026-02-27-forge-test-suite-v2-tasks.md +0 -343
- package/docs/plans/2026-03-02-superpowers-gaps-decisions.md +0 -26
- package/docs/plans/2026-03-02-superpowers-gaps-design.md +0 -239
- package/docs/plans/2026-03-02-superpowers-gaps-tasks.md +0 -260
- package/docs/plans/2026-03-04-agent-command-parity-design.md +0 -163
- package/docs/plans/2026-03-04-verify-worktree-cleanup-decisions.md +0 -7
- package/docs/plans/2026-03-04-verify-worktree-cleanup-design.md +0 -165
- package/docs/plans/2026-03-05-forge-uto-decisions.md +0 -6
- package/docs/plans/2026-03-05-forge-uto-design.md +0 -116
- package/docs/plans/2026-03-05-forge-uto-tasks.md +0 -244
- package/docs/plans/2026-03-10-command-creator-and-eval-decisions.md +0 -52
- package/docs/plans/2026-03-10-command-creator-and-eval-design.md +0 -350
- package/docs/plans/2026-03-10-command-creator-and-eval-tasks.md +0 -426
- package/docs/plans/2026-03-10-stale-workflow-refs-decisions.md +0 -8
- package/docs/plans/2026-03-10-stale-workflow-refs-design.md +0 -80
- package/docs/plans/2026-03-10-stale-workflow-refs-tasks.md +0 -90
- package/docs/plans/2026-03-14-beads-plan-context-decisions.md +0 -9
- package/docs/plans/2026-03-14-beads-plan-context-design.md +0 -171
- package/docs/plans/2026-03-14-beads-plan-context-tasks.md +0 -160
- package/docs/plans/2026-03-14-skill-eval-loop-decisions.md +0 -33
- package/docs/plans/2026-03-14-skill-eval-loop-design.md +0 -118
- package/docs/plans/2026-03-14-skill-eval-loop-results.md +0 -78
- package/docs/plans/2026-03-14-skill-eval-loop-tasks.md +0 -160
- package/docs/plans/2026-03-15-agent-command-parity-v2-decisions.md +0 -11
- package/docs/plans/2026-03-15-agent-command-parity-v2-design.md +0 -145
- package/docs/plans/2026-03-15-agent-command-parity-v2-tasks.md +0 -211
- package/docs/research/TEMPLATE.md +0 -292
- package/docs/research/advanced-testing.md +0 -297
- package/docs/research/agent-permissions.md +0 -167
- package/docs/research/dependency-chain.md +0 -328
- package/docs/research/forge-workflow-v2.md +0 -550
- package/docs/research/plugin-architecture.md +0 -772
- package/docs/research/pr4-cli-automation.md +0 -326
- package/docs/research/premerge-verify-restructure.md +0 -205
- package/docs/research/skills-restructure.md +0 -508
- package/docs/research/sonarcloud-perfection-plan.md +0 -166
- package/docs/research/sonarcloud-quality-gate.md +0 -184
- package/docs/research/superpowers-integration.md +0 -403
- package/docs/research/superpowers.md +0 -319
- package/docs/research/test-environment.md +0 -519
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Design intent → research → branch + worktree + task list
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Plan a feature from scratch: brainstorm design intent, research technical approach, then set up branch, worktree, and a complete task list ready for /dev.
|
|
6
|
+
|
|
7
|
+
# Plan
|
|
8
|
+
|
|
9
|
+
This command runs in **3 phases**. Each phase ends with a HARD-GATE. Do not skip phases.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
<HARD-GATE: /plan entry — worktree isolation>
|
|
15
|
+
Before ANY planning work begins:
|
|
16
|
+
|
|
17
|
+
1. Run: git branch --show-current
|
|
18
|
+
2. If the current branch is NOT master/main:
|
|
19
|
+
- STOP. Do not begin Phase 1.
|
|
20
|
+
- Tell the user: "You are on '<branch>'. Planning must start from a clean worktree on master.
|
|
21
|
+
Run: git checkout master — then re-run /plan."
|
|
22
|
+
3. If on master, create the worktree NOW before asking any questions:
|
|
23
|
+
a. bd worktree create .worktrees/<slug> --branch feat/<slug>
|
|
24
|
+
b. cd .worktrees/<slug>
|
|
25
|
+
4. Confirm: "Working in isolated worktree: .worktrees/<slug> (branch: feat/<slug>)"
|
|
26
|
+
5. Create the epic issue and record the stage transition:
|
|
27
|
+
```bash
|
|
28
|
+
bd create --title="<feature-name>" --type=epic
|
|
29
|
+
bd update <id> --status=in_progress
|
|
30
|
+
bash scripts/beads-context.sh stage-transition <id> none plan
|
|
31
|
+
```
|
|
32
|
+
6. ONLY THEN begin Phase 1.
|
|
33
|
+
|
|
34
|
+
Rationale: Planning commits (design docs, task lists) belong only to this feature's branch.
|
|
35
|
+
If planning runs in the main directory on a non-master branch, those commits contaminate
|
|
36
|
+
whatever branch is currently checked out. The worktree ensures zero cross-contamination
|
|
37
|
+
between parallel features or sessions.
|
|
38
|
+
</HARD-GATE>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
/plan <feature-slug>
|
|
47
|
+
/plan <feature-slug> --strategic # Major architecture change: creates design doc PR before Phase 2
|
|
48
|
+
/plan <feature-slug> --continue # After --strategic PR is merged: run Phase 2 + 3
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### Multi-developer conflict check (soft block)
|
|
55
|
+
|
|
56
|
+
Before proceeding to Phase 1, check for cross-developer conflicts:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Auto-sync to get latest team state
|
|
60
|
+
bash scripts/sync-utils.sh auto-sync
|
|
61
|
+
|
|
62
|
+
# Check for conflicts with this issue's planned work area
|
|
63
|
+
bash scripts/conflict-detect.sh --issue <beads-id>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
If exit code 2 (validation error): show error message, abort — do not show conflict prompt.
|
|
67
|
+
|
|
68
|
+
If exit code 1 (conflicts found):
|
|
69
|
+
- Display the conflict output to the developer
|
|
70
|
+
- Ask: "Other developers are working in overlapping areas. Proceed anyway? (y/n)"
|
|
71
|
+
- If `n`: exit cleanly, no side effects
|
|
72
|
+
- If `y`: log override via `bd comments add <id> "Conflict override: proceeding despite overlap with <conflicting-issues>"`, then continue to Phase 1
|
|
73
|
+
- Audit: record conflict override per OWASP A09
|
|
74
|
+
|
|
75
|
+
If exit code 0: proceed silently to Phase 1.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Phase 1: Design Intent (Brainstorming)
|
|
80
|
+
|
|
81
|
+
**Goal**: Capture WHAT to build — purpose, constraints, success criteria, edge cases, approach.
|
|
82
|
+
|
|
83
|
+
### Step 0: Dependency ripple check (advisory)
|
|
84
|
+
|
|
85
|
+
Before exploring context or asking questions, check for potential conflicts with in-flight work:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# If a Beads issue ID is known (e.g., from /status or bd ready):
|
|
89
|
+
bash scripts/dep-guard.sh check-ripple <beads-issue-id>
|
|
90
|
+
|
|
91
|
+
# If no issue exists yet (first-time plan):
|
|
92
|
+
bd list --status=open,in_progress
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Review the output. If overlaps are detected:
|
|
96
|
+
- Consider whether the overlapping issue should be a dependency
|
|
97
|
+
- Note any shared areas for the design Q&A
|
|
98
|
+
- This check is **advisory only** — always proceed to Step 1 regardless of findings
|
|
99
|
+
|
|
100
|
+
#### Ripple Analyst Agent (spawned when contract overlaps found)
|
|
101
|
+
|
|
102
|
+
When `check-ripple` detects overlapping issues AND contract metadata is available, spawn a Ripple Analyst subagent with this prompt:
|
|
103
|
+
|
|
104
|
+
**Input to agent**:
|
|
105
|
+
- Current issue's contract changes (from `extract-contracts` output)
|
|
106
|
+
- Consumer code snippets (from `find-consumers` output for each changed contract)
|
|
107
|
+
- Overlapping issue's title, description, and contract metadata
|
|
108
|
+
|
|
109
|
+
**Agent instructions**:
|
|
110
|
+
1. For each overlapping contract, imagine 2-3 concrete break scenarios:
|
|
111
|
+
- "If [contract X] changes [specific behavior], then [consumer Y] will [specific failure]"
|
|
112
|
+
2. Rate overall impact as one of:
|
|
113
|
+
- **NONE**: No real conflict despite keyword overlap
|
|
114
|
+
- **LOW**: Consumers need trivial adjustment (add parameter, rename call)
|
|
115
|
+
- **HIGH**: Consumer needs significant rework (parsing logic, data handling changes)
|
|
116
|
+
- **CRITICAL**: Consumer is in an active in_progress issue's task list
|
|
117
|
+
3. **When uncertain, default to HIGH** — conservative over permissive
|
|
118
|
+
4. Recommend one action:
|
|
119
|
+
- Add dependency (`bd dep add <source> <target>`)
|
|
120
|
+
- Coordinate with other issue's developer
|
|
121
|
+
- Scope down current feature to avoid overlap
|
|
122
|
+
- Proceed as-is (no real conflict)
|
|
123
|
+
|
|
124
|
+
**Output format**:
|
|
125
|
+
```
|
|
126
|
+
Impact: [NONE|LOW|HIGH|CRITICAL]
|
|
127
|
+
Confidence: [high|medium|low]
|
|
128
|
+
|
|
129
|
+
Break scenarios:
|
|
130
|
+
1. [scenario description]
|
|
131
|
+
2. [scenario description]
|
|
132
|
+
|
|
133
|
+
Recommendation: [action]
|
|
134
|
+
Reason: [why this action]
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
This agent is advisory only. The developer always makes the final decision.
|
|
138
|
+
|
|
139
|
+
### Step 1: Explore project context
|
|
140
|
+
|
|
141
|
+
Before asking any questions, read relevant files:
|
|
142
|
+
- Recent commits related to this area
|
|
143
|
+
- Existing code in affected modules
|
|
144
|
+
- Any related docs, tests, or prior research
|
|
145
|
+
|
|
146
|
+
### Step 2: Ask clarifying questions — one at a time
|
|
147
|
+
|
|
148
|
+
Ask each question in sequence. Wait for user response. Use multiple choice where possible.
|
|
149
|
+
|
|
150
|
+
Questions to cover (adapt to feature, don't ask mechanical copies):
|
|
151
|
+
1. **Purpose** — What problem does this solve? Who benefits?
|
|
152
|
+
2. **Constraints** — What must this NOT do? What are the hard limits?
|
|
153
|
+
3. **Success criteria** — How will we know it's done? What is the minimum viable result?
|
|
154
|
+
4. **Edge cases** — What happens when [key dependency] fails / [input] is missing / [state] is ambiguous?
|
|
155
|
+
5. **Technical preferences** — Library A or B? Pattern X or Y? (when real options exist)
|
|
156
|
+
6. **Ambiguity policy** — If a spec gap is found mid-dev, should the agent: (a) make a reasonable choice and document it, or (b) pause and wait for input?
|
|
157
|
+
|
|
158
|
+
### Step 3: Propose approaches
|
|
159
|
+
|
|
160
|
+
Propose 2-3 concrete approaches with:
|
|
161
|
+
- Trade-offs (speed vs safety, complexity vs flexibility)
|
|
162
|
+
- A clear recommendation with reasoning
|
|
163
|
+
- Get user approval on the chosen approach
|
|
164
|
+
|
|
165
|
+
### Step 4: Write design doc
|
|
166
|
+
|
|
167
|
+
Save to `docs/plans/YYYY-MM-DD-<slug>-design.md` with these sections:
|
|
168
|
+
- **Feature**: slug, date, status
|
|
169
|
+
- **Purpose**: what problem it solves
|
|
170
|
+
- **Success criteria**: measurable, specific
|
|
171
|
+
- **Out of scope**: explicit boundaries
|
|
172
|
+
- **Approach selected**: which option and why
|
|
173
|
+
- **Constraints**: hard limits
|
|
174
|
+
- **Edge cases**: decisions made during Q&A
|
|
175
|
+
- **Ambiguity policy**: agent's fallback when spec gaps arise mid-dev
|
|
176
|
+
|
|
177
|
+
Commit the design doc:
|
|
178
|
+
```bash
|
|
179
|
+
git add docs/plans/YYYY-MM-DD-<slug>-design.md
|
|
180
|
+
git commit -m "docs: add design doc for <slug>"
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
**--strategic flag** (for major architecture changes):
|
|
186
|
+
|
|
187
|
+
After committing the design doc, push to a proposal branch and open PR:
|
|
188
|
+
```bash
|
|
189
|
+
git checkout -b feat/<slug>-proposal
|
|
190
|
+
git push -u origin feat/<slug>-proposal
|
|
191
|
+
gh pr create --title "Design: <feature-name>" \
|
|
192
|
+
--body "Design doc for review. See docs/plans/YYYY-MM-DD-<slug>-design.md"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**STOP here.** Present the PR URL. Wait for the user to merge the proposal PR.
|
|
196
|
+
After merge, run `/plan <slug> --continue` to proceed to Phase 2 + 3.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
<HARD-GATE: Phase 1 exit>
|
|
202
|
+
Do NOT begin Phase 2 (web research) until:
|
|
203
|
+
1. User has approved the design in this session
|
|
204
|
+
2. Design doc exists at docs/plans/YYYY-MM-DD-<slug>-design.md
|
|
205
|
+
3. Design doc includes: success criteria, edge cases, out-of-scope, ambiguity policy
|
|
206
|
+
4. Design doc is committed to git
|
|
207
|
+
</HARD-GATE>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Phase 2: Technical Research
|
|
213
|
+
|
|
214
|
+
**Goal**: Find HOW to build it — best practices, known issues, security risks, TDD scenarios.
|
|
215
|
+
|
|
216
|
+
Record the phase transition before starting research:
|
|
217
|
+
```bash
|
|
218
|
+
bash scripts/beads-context.sh stage-transition <id> plan research
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Run these in parallel:
|
|
222
|
+
|
|
223
|
+
### Web research (parallel-deep-research skill)
|
|
224
|
+
```
|
|
225
|
+
Skill("parallel-deep-research")
|
|
226
|
+
```
|
|
227
|
+
Search for:
|
|
228
|
+
- "[tech stack] [feature] best practices [year]"
|
|
229
|
+
- "[library/framework] [feature] implementation patterns"
|
|
230
|
+
- "Known issues / gotchas with [approach selected]"
|
|
231
|
+
|
|
232
|
+
### OWASP Top 10 analysis
|
|
233
|
+
|
|
234
|
+
For this feature's risk surface, document each relevant OWASP category:
|
|
235
|
+
- What the risk is
|
|
236
|
+
- Whether it applies to this feature
|
|
237
|
+
- What mitigation will be implemented
|
|
238
|
+
|
|
239
|
+
### Codebase exploration (Explore agent)
|
|
240
|
+
- Similar existing patterns to reuse
|
|
241
|
+
- Files this feature will affect
|
|
242
|
+
- Existing test infrastructure to leverage
|
|
243
|
+
|
|
244
|
+
### DRY check (mandatory — use actual search tools)
|
|
245
|
+
|
|
246
|
+
Before finalizing the approach, run Grep/Glob/Read searches for existing implementations of the planned function or pattern. Do not rely on memory or assumptions — execute the searches.
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
Grep(searchTerm) # e.g., the function or concept name
|
|
250
|
+
Glob("**/*.js") # narrow to affected file types if needed
|
|
251
|
+
Read(matchedFile) # inspect any match in context
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
If a match is found:
|
|
255
|
+
- Update the design doc's "Approach selected" section to say "extend existing [file/function]" — not "create new".
|
|
256
|
+
- Note the existing file path and line number in the design doc.
|
|
257
|
+
|
|
258
|
+
If no match is found: proceed. The DRY gate is cleared.
|
|
259
|
+
|
|
260
|
+
### Blast-radius search (mandatory for remove/rename/replace features)
|
|
261
|
+
|
|
262
|
+
If this feature involves **removing**, **renaming**, or **replacing** a concept, tool, or dependency:
|
|
263
|
+
|
|
264
|
+
1. Grep the ENTIRE codebase for the thing being removed/renamed:
|
|
265
|
+
```
|
|
266
|
+
Grep("<thing-being-removed>") # exact name
|
|
267
|
+
Grep("<thing-being-removed>", -i) # case-insensitive variant
|
|
268
|
+
Glob("**/*<thing>*") # files named after it
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
2. For EVERY match found:
|
|
272
|
+
- Note the file path and line number in the design doc
|
|
273
|
+
- Add a cleanup task to the task list (Phase 3)
|
|
274
|
+
- Flag matches in unexpected packages or config files explicitly
|
|
275
|
+
|
|
276
|
+
3. Common hiding spots to check:
|
|
277
|
+
- `package.json` (scripts, dependencies, description)
|
|
278
|
+
- `install.sh` / setup scripts
|
|
279
|
+
- CI/CD workflows (`.github/workflows/`)
|
|
280
|
+
- Agent config files (`lib/agents/`, `.cursorrules`, etc.)
|
|
281
|
+
- Documentation (`docs/`, `README.md`, `AGENTS.md`)
|
|
282
|
+
- Import statements and require() calls
|
|
283
|
+
|
|
284
|
+
If no removal/rename is involved, this section is skipped.
|
|
285
|
+
|
|
286
|
+
### TDD test scenarios
|
|
287
|
+
|
|
288
|
+
Identify at minimum 3 test scenarios:
|
|
289
|
+
- Happy path
|
|
290
|
+
- Error / failure path
|
|
291
|
+
- Edge case from Phase 1
|
|
292
|
+
|
|
293
|
+
Append all research findings to the design doc under a `## Technical Research` section (not a separate file).
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
<HARD-GATE: Phase 2 exit>
|
|
299
|
+
Do NOT begin Phase 3 (setup) until:
|
|
300
|
+
1. OWASP analysis is documented in design doc
|
|
301
|
+
2. At least 3 TDD test scenarios are identified
|
|
302
|
+
3. Approach selection is confirmed (which library/pattern to use)
|
|
303
|
+
4. If feature involves removal/rename: blast-radius search completed, all references added to task list
|
|
304
|
+
</HARD-GATE>
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Phase 3: Setup + Task List
|
|
310
|
+
|
|
311
|
+
**Goal**: Create branch, worktree, and a complete task list ready for /dev.
|
|
312
|
+
|
|
313
|
+
Record the phase transition before starting setup:
|
|
314
|
+
```bash
|
|
315
|
+
bash scripts/beads-context.sh stage-transition <id> research setup
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Step 1: Link child issues to the epic
|
|
319
|
+
|
|
320
|
+
The epic was created in the Entry HARD-GATE (Phase 1 entry). If this feature requires child issues (sub-tasks tracked separately), create them now and link to the epic:
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
bd create --title="<sub-task-name>" --type=feature --parent=<epic-id>
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### Step 2: Branch + worktree
|
|
327
|
+
|
|
328
|
+
**ALWAYS branch from master, never from the current branch.** If the working directory is on any branch other than master, the new feature branch would inherit all unmerged changes from that branch — contaminating the new feature's history.
|
|
329
|
+
|
|
330
|
+
**Note**: If the Entry HARD-GATE already created the branch and worktree (and you are already inside `.worktrees/<slug>`), skip Steps 2b–2d — they are already done.
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
# Step 2a: Check if branch and worktree were already created by Entry HARD-GATE
|
|
334
|
+
CURRENT=$(git branch --show-current)
|
|
335
|
+
if [ "$CURRENT" = "feat/<slug>" ]; then
|
|
336
|
+
echo "✓ Branch feat/<slug> already exists (Entry HARD-GATE created it) — skipping 2b–2d"
|
|
337
|
+
else
|
|
338
|
+
# Step 2b: Verify .worktrees/ is gitignored — add if missing
|
|
339
|
+
git check-ignore -v .worktrees/ || echo ".worktrees/" >> .gitignore
|
|
340
|
+
|
|
341
|
+
# Step 2c: Create a Beads-aware worktree rooted on master
|
|
342
|
+
git checkout master
|
|
343
|
+
bd worktree create .worktrees/<slug> --branch feat/<slug>
|
|
344
|
+
cd .worktrees/<slug>
|
|
345
|
+
fi
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**Why this matters**: Multiple parallel features or sessions each get their own isolated worktree. Changes to one feature never bleed into another. The main working directory can stay on any branch without affecting new feature branches.
|
|
349
|
+
|
|
350
|
+
### Step 3: Project setup in worktree
|
|
351
|
+
|
|
352
|
+
Auto-detect and run install:
|
|
353
|
+
```bash
|
|
354
|
+
# e.g., bun install / npm install / pip install -r requirements.txt
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Step 4: Baseline test run
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
# Run full test suite in worktree
|
|
361
|
+
bun test # or project test command
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
If tests fail: report which tests are failing and ask user whether to investigate or proceed anyway. Do not silently proceed past failing baseline tests.
|
|
365
|
+
|
|
366
|
+
### Step 5: Task list creation
|
|
367
|
+
|
|
368
|
+
Read the design doc. Break implementation into granular tasks.
|
|
369
|
+
|
|
370
|
+
**Task format** (each task MUST have ALL of these):
|
|
371
|
+
```
|
|
372
|
+
Task N: <descriptive title>
|
|
373
|
+
File(s): <exact file paths>
|
|
374
|
+
What to implement: <complete description — not "add feature X", but what specifically>
|
|
375
|
+
TDD steps:
|
|
376
|
+
1. Write test: <test file path, what assertion, what input/output>
|
|
377
|
+
2. Run test: confirm it fails with [specific expected error message]
|
|
378
|
+
3. Implement: <exact function/class/component to write>
|
|
379
|
+
4. Run test: confirm it passes
|
|
380
|
+
5. Commit: `<type>: <message>`
|
|
381
|
+
Expected output: <what running the test/code produces when done>
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
**Ordering rules**:
|
|
385
|
+
- Foundational/shared modules FIRST (types, utils, constants)
|
|
386
|
+
- Feature logic SECOND
|
|
387
|
+
- Integration/wiring THIRD
|
|
388
|
+
- Uncertain/ambiguous tasks LAST (so they can be deferred if blocked)
|
|
389
|
+
|
|
390
|
+
**YAGNI filter** (after initial task draft, before saving):
|
|
391
|
+
|
|
392
|
+
For each task, confirm it maps to a specific requirement, success criterion, or edge case in the design doc. Run `applyYAGNIFilter({ task, designDoc })` for each task.
|
|
393
|
+
|
|
394
|
+
- Tasks that match → keep as-is.
|
|
395
|
+
- Tasks with no anchor → flagged as "potential scope creep". Present flagged tasks to the user: "These tasks have no anchor in the design doc. Keep (specify which requirement it serves) or remove?"
|
|
396
|
+
- If ALL tasks are flagged → return `allFlagged: true` and tell the user: "Design doc doesn't cover all tasks — needs amendment." Do not save the task list until the design doc is updated or tasks are removed.
|
|
397
|
+
|
|
398
|
+
**Before finalizing**: flag any tasks that touch areas not fully specified in the design doc. Present flagged tasks to user for quick clarification before saving.
|
|
399
|
+
|
|
400
|
+
Save to `docs/plans/YYYY-MM-DD-<slug>-tasks.md`.
|
|
401
|
+
|
|
402
|
+
### Step 5b: Beads context
|
|
403
|
+
|
|
404
|
+
After saving the task list, attach design context and acceptance criteria to the Beads issue so downstream stages (`/dev`, `/validate`, `/review`) can retrieve it without re-reading the design doc.
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
# Link design metadata (task count + task file path) to the Beads issue
|
|
408
|
+
bash scripts/beads-context.sh set-design <id> <task-count> docs/plans/YYYY-MM-DD-<slug>-tasks.md
|
|
409
|
+
|
|
410
|
+
# Record the success criteria from the design doc on the issue
|
|
411
|
+
bash scripts/beads-context.sh set-acceptance <id> "<success-criteria from design doc>"
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
Both commands must exit with code 0. If either fails, investigate (wrong issue ID? missing script?) before continuing.
|
|
415
|
+
|
|
416
|
+
### Step 5c: Contract extraction and logic-level dependency review
|
|
417
|
+
|
|
418
|
+
After saving the task list and Beads context, extract and store contract metadata, then run the logic-level Phase 3 dependency review:
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# Extract contracts — only call store-contracts if extract succeeds (exit 0)
|
|
422
|
+
if bash scripts/dep-guard.sh extract-contracts docs/plans/YYYY-MM-DD-<slug>-tasks.md > /tmp/contracts.txt; then
|
|
423
|
+
bash scripts/dep-guard.sh store-contracts <id> "$(cat /tmp/contracts.txt)"
|
|
424
|
+
else
|
|
425
|
+
echo "No contracts found — skipping store-contracts"
|
|
426
|
+
fi
|
|
427
|
+
|
|
428
|
+
# Re-run ripple check using Beads JSON + logic-level analysis
|
|
429
|
+
bash scripts/dep-guard.sh check-ripple <id>
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
`extract-contracts` exits 1 when no contracts are found (not an error — just nothing to store). `store-contracts` must exit 0 if called.
|
|
433
|
+
|
|
434
|
+
`check-ripple` is now advisory but logic-aware. It should:
|
|
435
|
+
- read Beads issue data via JSON
|
|
436
|
+
- analyze import/call-chain, contract, and behavioral dependency signals
|
|
437
|
+
- show rubric score, confidence, issue pairs, and proposed dependency updates with pros/cons
|
|
438
|
+
- stop for user approval whenever a dependency mutation is proposed
|
|
439
|
+
|
|
440
|
+
If the user approves a dependency mutation, apply it explicitly:
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
bash scripts/dep-guard.sh apply-decision <id> <dependent-id> <depends-on-id> "<approval rationale>"
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
That approval step must validate with `bd dep cycles`, show `bd graph`, summarize `bd ready`, and persist the decision via `bd set-state` plus `bd comments`. Beads remains the canonical machine-readable decision record; the plan docs hold only the concise summary.
|
|
447
|
+
|
|
448
|
+
### Step 6: User review
|
|
449
|
+
|
|
450
|
+
Present the full task list. Allow the user to reorder, split, or remove tasks.
|
|
451
|
+
|
|
452
|
+
---
|
|
453
|
+
|
|
454
|
+
```
|
|
455
|
+
<HARD-GATE: /plan exit>
|
|
456
|
+
Do NOT proceed to /dev until ALL are confirmed:
|
|
457
|
+
1. git branch --show-current output shows feat/<slug>
|
|
458
|
+
2. git worktree list shows .worktrees/<slug>
|
|
459
|
+
3. Baseline tests ran — either passing OR user confirmed to proceed past failures
|
|
460
|
+
4. Beads issue is created with status=in_progress
|
|
461
|
+
5. Task list exists at docs/plans/YYYY-MM-DD-<slug>-tasks.md
|
|
462
|
+
6. User has confirmed task list is correct
|
|
463
|
+
7. `beads-context.sh set-design` ran successfully (exit code 0)
|
|
464
|
+
8. `beads-context.sh set-acceptance` ran successfully (exit code 0)
|
|
465
|
+
9. `dep-guard.sh store-contracts` ran successfully (exit code 0) — or skipped if no contracts found
|
|
466
|
+
10. `dep-guard.sh check-ripple` ran successfully and any proposed dependency mutation was reviewed with the user before calling `apply-decision`
|
|
467
|
+
</HARD-GATE>
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
After all HARD-GATE items pass, record the stage transition on the Beads issue:
|
|
471
|
+
|
|
472
|
+
```bash
|
|
473
|
+
bash scripts/beads-context.sh stage-transition <id> plan dev
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
## Example Output (Phase 3 complete)
|
|
479
|
+
|
|
480
|
+
```
|
|
481
|
+
✓ Phase 1: Design intent captured
|
|
482
|
+
- Design doc: docs/plans/2026-02-26-stripe-billing-design.md
|
|
483
|
+
- Approach: Stripe SDK v4 (selected over v3)
|
|
484
|
+
- Ambiguity policy: Make conservative choice + document in decisions log
|
|
485
|
+
|
|
486
|
+
✓ Phase 2: Technical research complete
|
|
487
|
+
- OWASP Top 10: 3 risks identified, 3 mitigations planned
|
|
488
|
+
- TDD scenarios: 5 identified
|
|
489
|
+
- Sources: 8 references
|
|
490
|
+
|
|
491
|
+
✓ Phase 3: Setup complete
|
|
492
|
+
- Beads: forge-xyz (in_progress)
|
|
493
|
+
- Branch: feat/stripe-billing
|
|
494
|
+
- Worktree: .worktrees/stripe-billing (baseline: 24/24 tests passing)
|
|
495
|
+
- Task list: docs/plans/2026-02-26-stripe-billing-tasks.md (8 tasks)
|
|
496
|
+
|
|
497
|
+
⏸️ Task list ready for review. Confirm to proceed.
|
|
498
|
+
|
|
499
|
+
After confirming, run: /dev
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
## Integration with Workflow
|
|
503
|
+
|
|
504
|
+
```
|
|
505
|
+
Utility: /status → Understand current context before starting
|
|
506
|
+
Stage 1: /plan → Design intent → research → branch + worktree + task list (you are here)
|
|
507
|
+
Stage 2: /dev → Implement each task with subagent-driven TDD
|
|
508
|
+
Stage 3: /validate → Type check, lint, tests, security — all fresh output
|
|
509
|
+
Stage 4: /ship → Push + create PR
|
|
510
|
+
Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
|
|
511
|
+
Stage 6: /premerge → Update docs, hand off PR to user
|
|
512
|
+
Stage 7: /verify → Post-merge CI check on main
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
## Tips
|
|
516
|
+
|
|
517
|
+
- **Phase 1 quality = /dev autonomy**: Every ambiguity resolved in Phase 1 is a decision gate that won't fire during /dev
|
|
518
|
+
- **One question at a time**: Don't dump all questions at once — dialogue produces better design decisions than a questionnaire
|
|
519
|
+
- **Task granularity**: Target 2-5 minutes per task. If a task takes longer, split it
|
|
520
|
+
- **Uncertain tasks go last**: Anything ambiguous at the end of the task list can be deferred if blocked without stopping other work
|
|
521
|
+
- **Baseline failures matter**: Pre-existing test failures hide regressions. Fix or explicitly document them before /dev starts
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Complete all doc updates on feature branch, then hand off PR to user for merge
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Prepare the pull request for merge by completing ALL documentation updates on the feature branch, then hand off to the user.
|
|
6
|
+
|
|
7
|
+
# Premerge
|
|
8
|
+
|
|
9
|
+
**The actual merge is always done by the user in the GitHub UI — never by this command.**
|
|
10
|
+
|
|
11
|
+
This command makes the PR 100% complete: code + tests + docs in one unit. After this, the user merges once and there are no follow-up doc PRs needed.
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
/premerge <pr-number>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## What This Command Does
|
|
20
|
+
|
|
21
|
+
### Step 1: Verify All CI Checks Pass
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
gh pr checks <pr-number>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
All checks must be green before proceeding. If any fail, run `/review <pr-number>` first.
|
|
28
|
+
|
|
29
|
+
### Step 2: Warn If Branch Is Behind Master
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
gh pr view <pr-number> --json baseRefName,headRefName
|
|
33
|
+
git fetch origin master
|
|
34
|
+
git status
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If the feature branch is behind `master`, tell the user to rebase first:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
⚠️ Branch is behind master — rebase before updating docs to avoid conflicts:
|
|
41
|
+
git rebase origin/master
|
|
42
|
+
git push --force-with-lease
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Step 3: Update ALL Relevant Documentation (on feature branch)
|
|
46
|
+
|
|
47
|
+
Check each of the following and update if the feature affects it. Be selective — only update what genuinely changed.
|
|
48
|
+
|
|
49
|
+
**A. `CHANGELOG.md`** (always):
|
|
50
|
+
- Add entry under `## [Unreleased]` heading (create heading if not present)
|
|
51
|
+
- Use [Keep a Changelog](https://keepachangelog.com/) categories:
|
|
52
|
+
- **Added**: New features
|
|
53
|
+
- **Changed**: Changes to existing functionality
|
|
54
|
+
- **Fixed**: Bug fixes
|
|
55
|
+
- **Removed**: Removed features
|
|
56
|
+
- Include: feature name, PR number, Beads ID
|
|
57
|
+
- Example:
|
|
58
|
+
```markdown
|
|
59
|
+
## [Unreleased]
|
|
60
|
+
|
|
61
|
+
### Added
|
|
62
|
+
- Authentication refresh tokens (PR #89, forge-a3f8)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**B. `README.md`** (if user-facing changes):
|
|
66
|
+
- Features list, configuration options, usage examples
|
|
67
|
+
|
|
68
|
+
**C. `docs/reference/API_REFERENCE.md`** (if API changes):
|
|
69
|
+
- New endpoints, request/response schemas, authentication
|
|
70
|
+
|
|
71
|
+
**D. Architecture docs** (if structural changes):
|
|
72
|
+
- `docs/architecture/` diagrams, decision records (ADRs)
|
|
73
|
+
|
|
74
|
+
**E. `CLAUDE.md` — USER section only** (if project conventions changed):
|
|
75
|
+
```
|
|
76
|
+
<!-- USER:START - Add project-specific learnings here as you work -->
|
|
77
|
+
...update only between these markers...
|
|
78
|
+
<!-- USER:END -->
|
|
79
|
+
```
|
|
80
|
+
⚠️ NEVER touch other managed blocks (e.g., `<!-- AGENT:START/END -->`).
|
|
81
|
+
|
|
82
|
+
**F. `AGENTS.md`** (if agent config, skills, or cross-agent workflow changed):
|
|
83
|
+
- Update relevant sections describing agent capabilities or workflow
|
|
84
|
+
|
|
85
|
+
**Commit doc updates to feature branch**:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
git add CHANGELOG.md README.md docs/ AGENTS.md CLAUDE.md
|
|
89
|
+
git commit -m "docs: update documentation for <feature-name>
|
|
90
|
+
|
|
91
|
+
- Updated: [list files changed]
|
|
92
|
+
- Reason: [brief explanation]"
|
|
93
|
+
|
|
94
|
+
git push
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
⚠️ **After pushing**: CI will re-trigger (Greptile, SonarCloud, etc.). Wait for checks to pass. If new Greptile comments appear on the doc changes, run `/review <pr-number>` again.
|
|
98
|
+
|
|
99
|
+
### Step 4: Sync Beads
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
bd sync
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Step 5: Hand Off — STOP HERE
|
|
106
|
+
|
|
107
|
+
**DO NOT run `gh pr merge`.** Present the PR and wait for the user to merge.
|
|
108
|
+
|
|
109
|
+
Output:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
✅ PR #<number> is ready to merge
|
|
113
|
+
|
|
114
|
+
All checks: ✓ passing
|
|
115
|
+
Documentation: ✓ updated on feature branch
|
|
116
|
+
Beads: ✓ synced
|
|
117
|
+
|
|
118
|
+
👉 Please merge in the GitHub UI:
|
|
119
|
+
https://github.com/<owner>/<repo>/pull/<number>
|
|
120
|
+
|
|
121
|
+
Recommended: Squash and merge (keeps main history clean)
|
|
122
|
+
|
|
123
|
+
After you merge, run /verify to confirm everything landed correctly.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
<HARD-GATE: /premerge exit>
|
|
128
|
+
Do NOT run gh pr merge.
|
|
129
|
+
Do NOT suggest merging.
|
|
130
|
+
/premerge ends here. Output the PR URL and status. Wait for user.
|
|
131
|
+
|
|
132
|
+
"After you merge, run /verify to confirm everything landed correctly."
|
|
133
|
+
</HARD-GATE>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Example Output
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
✓ CI checks: All passing
|
|
140
|
+
✓ Branch: Up to date with master
|
|
141
|
+
✓ Documentation updated:
|
|
142
|
+
- CHANGELOG.md: Entry added under [Unreleased]
|
|
143
|
+
- README.md: Features list updated
|
|
144
|
+
- CLAUDE.md: USER section updated with new pattern
|
|
145
|
+
- Committed: docs: update documentation for auth-refresh
|
|
146
|
+
✓ CI re-triggered after doc push — all checks still passing
|
|
147
|
+
✓ Beads synced
|
|
148
|
+
|
|
149
|
+
✅ PR #89 is ready to merge
|
|
150
|
+
|
|
151
|
+
👉 Please merge in the GitHub UI:
|
|
152
|
+
https://github.com/harshanandak/forge/pull/89
|
|
153
|
+
|
|
154
|
+
After you merge, run /verify
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Rules
|
|
158
|
+
|
|
159
|
+
- **NEVER run `gh pr merge`** — blocked by PreToolUse hook in `.claude/settings.json`
|
|
160
|
+
- **CLAUDE.md USER section only** — never touch other managed blocks
|
|
161
|
+
- **Warn if branch is behind** — tell user to rebase before doc updates
|
|
162
|
+
- **Re-check CI after doc push** — doc commits re-trigger full CI pipeline
|
|
163
|
+
- **One PR, complete** — code + tests + docs merged together, no follow-up doc PRs
|
|
164
|
+
|
|
165
|
+
## Integration with Workflow
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
Utility: /status → Understand current context before starting
|
|
169
|
+
Stage 1: /plan → Design intent → research → branch + worktree + task list
|
|
170
|
+
Stage 2: /dev → Implement each task with subagent-driven TDD
|
|
171
|
+
Stage 3: /validate → Type check, lint, tests, security — all fresh output
|
|
172
|
+
Stage 4: /ship → Push + create PR
|
|
173
|
+
Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
|
|
174
|
+
Stage 6: /premerge → Update docs, hand off PR to user (you are here)
|
|
175
|
+
Stage 7: /verify → Post-merge CI check on main
|
|
176
|
+
```
|