opencodekit 0.9.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/template/.opencode/AGENTS.md +116 -47
  3. package/dist/template/.opencode/agent/build.md +16 -48
  4. package/dist/template/.opencode/agent/explore.md +13 -34
  5. package/dist/template/.opencode/agent/planner.md +41 -11
  6. package/dist/template/.opencode/agent/review.md +2 -23
  7. package/dist/template/.opencode/agent/rush.md +24 -65
  8. package/dist/template/.opencode/agent/scout.md +5 -21
  9. package/dist/template/.opencode/agent/vision.md +0 -14
  10. package/dist/template/.opencode/command/accessibility-check.md +293 -30
  11. package/dist/template/.opencode/command/analyze-mockup.md +406 -20
  12. package/dist/template/.opencode/command/analyze-project.md +439 -30
  13. package/dist/template/.opencode/command/brainstorm.md +288 -5
  14. package/dist/template/.opencode/command/commit.md +226 -17
  15. package/dist/template/.opencode/command/create.md +138 -35
  16. package/dist/template/.opencode/command/design-audit.md +477 -29
  17. package/dist/template/.opencode/command/design.md +609 -6
  18. package/dist/template/.opencode/command/edit-image.md +223 -20
  19. package/dist/template/.opencode/command/finish.md +162 -71
  20. package/dist/template/.opencode/command/fix-ci.md +296 -24
  21. package/dist/template/.opencode/command/fix-types.md +345 -13
  22. package/dist/template/.opencode/command/fix-ui.md +293 -13
  23. package/dist/template/.opencode/command/fix.md +256 -9
  24. package/dist/template/.opencode/command/generate-diagram.md +327 -26
  25. package/dist/template/.opencode/command/generate-icon.md +266 -22
  26. package/dist/template/.opencode/command/generate-image.md +232 -12
  27. package/dist/template/.opencode/command/generate-pattern.md +234 -20
  28. package/dist/template/.opencode/command/generate-storyboard.md +231 -21
  29. package/dist/template/.opencode/command/handoff.md +202 -30
  30. package/dist/template/.opencode/command/implement.md +162 -50
  31. package/dist/template/.opencode/command/import-plan.md +247 -51
  32. package/dist/template/.opencode/command/init.md +154 -35
  33. package/dist/template/.opencode/command/integration-test.md +405 -24
  34. package/dist/template/.opencode/command/issue.md +171 -21
  35. package/dist/template/.opencode/command/new-feature.md +382 -54
  36. package/dist/template/.opencode/command/plan.md +144 -118
  37. package/dist/template/.opencode/command/pr.md +229 -28
  38. package/dist/template/.opencode/command/quick-build.md +234 -5
  39. package/dist/template/.opencode/command/research-and-implement.md +436 -12
  40. package/dist/template/.opencode/command/research-ui.md +444 -34
  41. package/dist/template/.opencode/command/research.md +173 -45
  42. package/dist/template/.opencode/command/restore-image.md +416 -22
  43. package/dist/template/.opencode/command/resume.md +439 -63
  44. package/dist/template/.opencode/command/revert-feature.md +341 -64
  45. package/dist/template/.opencode/command/review-codebase.md +193 -4
  46. package/dist/template/.opencode/command/skill-create.md +506 -14
  47. package/dist/template/.opencode/command/skill-optimize.md +487 -16
  48. package/dist/template/.opencode/command/status.md +320 -60
  49. package/dist/template/.opencode/command/summarize.md +374 -33
  50. package/dist/template/.opencode/command/triage.md +355 -0
  51. package/dist/template/.opencode/command/ui-review.md +292 -25
  52. package/dist/template/.opencode/plugin/README.md +110 -98
  53. package/dist/template/.opencode/plugin/compactor.ts +95 -171
  54. package/dist/template/.opencode/plugin/enforcer.ts +177 -127
  55. package/dist/template/.opencode/plugin/injector.ts +150 -0
  56. package/dist/template/.opencode/plugin/lib/notify.ts +86 -0
  57. package/dist/template/.opencode/plugin/notification.ts +57 -123
  58. package/dist/template/.opencode/plugin/truncator.ts +60 -166
  59. package/dist/template/.opencode/skill/mqdh/SKILL.md +161 -0
  60. package/dist/template/.opencode/skill/playwriter/SKILL.md +148 -0
  61. package/dist/template/.opencode/skill/v0/SKILL.md +154 -0
  62. package/package.json +1 -1
@@ -26,11 +26,24 @@ If spec.md missing: "Run `/create <bead-id>` first."
26
26
  If research.md missing: "Run `/research <bead-id>` first."
27
27
  If design.md exists: Resume from saved design options.
28
28
 
29
+ Reserve files while planning:
30
+
31
+ ```typescript
32
+ bd_reserve({
33
+ paths: [
34
+ ".beads/artifacts/<bead-id>/design.md",
35
+ ".beads/artifacts/<bead-id>/plan.md",
36
+ ],
37
+ reason: "Planning $ARGUMENTS",
38
+ ttl: 1200,
39
+ });
40
+ ```
41
+
29
42
  ## Phase 2: Generate Design Options
30
43
 
31
- Present 2-3 approaches:
44
+ Present 2-3 approaches with this format:
32
45
 
33
- ```
46
+ ```markdown
34
47
  ## Design Options
35
48
 
36
49
  ### Option A: [Name]
@@ -38,191 +51,200 @@ Present 2-3 approaches:
38
51
  **Approach:** [1-2 sentence description]
39
52
 
40
53
  **Changes:**
54
+
41
55
  - `src/foo.ts` - [what changes]
42
56
  - `src/bar.ts` - [what changes]
43
57
 
44
- **Pros:**
45
- - [pro 1]
46
- - [pro 2]
58
+ **Pros:** [bullet list]
59
+ **Cons:** [bullet list]
47
60
 
48
- **Cons:**
49
- - [con 1]
61
+ **Estimation:**
50
62
 
51
- **Effort:** [S/M/L]
63
+ - Tool calls: ~[N] (S=5-20, M=20-50, L=50-100, XL=needs decomposition)
64
+ - Files touched: [N]
65
+ - Risk: [low/medium/high]
52
66
 
53
67
  ---
54
68
 
55
69
  ### Option B: [Name]
56
70
 
57
- **Approach:** [1-2 sentence description]
71
+ [Same format]
58
72
 
59
- **Changes:**
60
- - `src/baz.ts` - [what changes]
73
+ ---
61
74
 
62
- **Pros:**
63
- - [pro 1]
75
+ **Recommendation:** Option [A/B] because [reason].
76
+ ```
64
77
 
65
- **Cons:**
66
- - [con 1]
67
- - [con 2]
78
+ Save to `.beads/artifacts/<bead-id>/design.md` with status `Pending Approval`.
68
79
 
69
- **Effort:** [S/M/L]
80
+ ## Phase 3: Get Approval
70
81
 
71
- ---
82
+ **STOP and wait for human response.**
72
83
 
73
- **Recommendation:** Option [A/B] because [reason].
84
+ ```
85
+ Pick an option (A/B/C), modify, or "none" to propose alternatives.
74
86
  ```
75
87
 
76
- ## Phase 3: Save Design Document
88
+ Do not proceed until user confirms.
77
89
 
78
- Save design options to `.beads/artifacts/<bead-id>/design.md`:
90
+ ## Phase 4: Create Plan with Task Contracts
91
+
92
+ After approval, write `.beads/artifacts/<bead-id>/plan.md`:
79
93
 
80
94
  ```markdown
81
- # Design Options: [Title]
95
+ # Implementation Plan: [Title]
82
96
 
83
97
  **Bead:** <bead-id>
84
98
  **Date:** <date>
85
- **Status:** Pending Approval
86
-
87
- ## Problem Statement
88
-
89
- [What we're solving - from spec.md]
90
-
91
- ## Options Considered
99
+ **Approach:** [selected option name]
100
+ **Estimation:** ~[N] tool calls, [N] files
92
101
 
93
- ### Option A: [Name]
102
+ ## Dependency Graph
103
+ ```
94
104
 
95
- **Approach:** [1-2 sentence description]
105
+ [Step 1] ──┬──> [Step 2a] ──┬──> [Step 4]
106
+ │ │
107
+ └──> [Step 2b] ──┘
108
+
109
+ └──> [Step 3] (can run parallel)
96
110
 
97
- **Changes:**
111
+ ````
98
112
 
99
- - `src/foo.ts` - [what changes]
100
- - `src/bar.ts` - [what changes]
113
+ **Parallel Tracks:**
114
+ - Track A: Steps 1 → 2a → 4
115
+ - Track B: Steps 1 → 2b → 3 (independent after Step 1)
101
116
 
102
- **Pros:**
117
+ ## Tasks
103
118
 
104
- - [pro 1]
105
- - [pro 2]
119
+ ### Task 1: [Title]
106
120
 
107
- **Cons:**
121
+ | Field | Value |
122
+ | ------------- | ---------------------------------- |
123
+ | **Files** | `src/foo.ts` |
124
+ | **Input** | [What this task receives/needs] |
125
+ | **Output** | [What this task produces] |
126
+ | **Success** | [Concrete verification criteria] |
127
+ | **Rollback** | [How to undo if this fails] |
128
+ | **Depends** | None |
129
+ | **Effort** | S (~10 tool calls) |
108
130
 
109
- - [con 1]
131
+ **Changes:**
132
+ - [ ] [Specific change 1]
133
+ - [ ] [Specific change 2]
110
134
 
111
- **Effort:** [S/M/L]
135
+ **Verification:**
136
+ ```bash
137
+ [Actual command to verify success]
138
+ ````
112
139
 
113
140
  ---
114
141
 
115
- ### Option B: [Name]
142
+ ### Task 2a: [Title]
116
143
 
117
- **Approach:** [1-2 sentence description]
144
+ | Field | Value |
145
+ | ------------ | -------------------------------- |
146
+ | **Files** | `src/bar.ts` |
147
+ | **Input** | Output from Task 1 |
148
+ | **Output** | [What this produces] |
149
+ | **Success** | [Test passes, type checks, etc.] |
150
+ | **Rollback** | `git checkout src/bar.ts` |
151
+ | **Depends** | Task 1 |
152
+ | **Effort** | M (~30 tool calls) |
118
153
 
119
154
  **Changes:**
120
155
 
121
- - `src/baz.ts` - [what changes]
122
-
123
- **Pros:**
124
-
125
- - [pro 1]
126
-
127
- **Cons:**
156
+ - [ ] [Specific change]
128
157
 
129
- - [con 1]
130
- - [con 2]
158
+ **Verification:**
131
159
 
132
- **Effort:** [S/M/L]
160
+ ```bash
161
+ npm run test -- src/bar.test.ts
162
+ ```
133
163
 
134
164
  ---
135
165
 
136
- ## Recommendation
137
-
138
- Option [A/B] because [reason].
139
-
140
- ## Decision
166
+ [Continue for all tasks...]
141
167
 
142
- **Chosen:** [To be filled after approval]
143
- **Rationale:** [To be filled after approval]
144
- ```
168
+ ## Escape Hatches
145
169
 
146
- ## Phase 4: Get Approval
170
+ - **Max iterations per task:** 3 attempts before human intervention
171
+ - **Checkpoint after:** Tasks 2a, 3 (high-risk points)
172
+ - **Abort if:** [Condition that means we should stop]
147
173
 
148
- **STOP and wait for human response.**
149
-
150
- ```
151
- Pick an option (A/B/C), modify, or "none" to propose alternatives.
152
- ```
174
+ ## Final Verification
153
175
 
154
- Do not proceed until user confirms.
176
+ - [ ] All task verifications pass
177
+ - [ ] `npm run type-check` passes
178
+ - [ ] `npm run test` passes
179
+ - [ ] Manual smoke test: [specific action]
155
180
 
156
- ## Phase 5: Update Design Decision
181
+ ## Risks
157
182
 
158
- After approval, update `.beads/artifacts/<bead-id>/design.md`:
183
+ | Risk | Likelihood | Impact | Mitigation |
184
+ | -------- | ---------- | ------ | --------------- |
185
+ | [Risk 1] | Medium | High | [How to handle] |
186
+ | [Risk 2] | Low | Medium | [How to handle] |
159
187
 
160
- - Change **Status:** to `Approved`
161
- - Fill in **Chosen:** with selected option
162
- - Fill in **Rationale:** with user's reasoning
188
+ ````
163
189
 
164
- ## Phase 6: Create Plan
190
+ ## Phase 5: Generate ADR & Sync
165
191
 
166
- After approval, write `.beads/artifacts/<bead-id>/plan.md`:
192
+ Create `.beads/artifacts/<bead-id>/adr.md`:
167
193
 
168
194
  ```markdown
169
- # Implementation Plan: [Title]
195
+ # ADR: [Decision Title]
170
196
 
171
- **Bead:** <bead-id>
197
+ **Status:** Accepted
172
198
  **Date:** <date>
173
- **Approach:** [selected option name]
174
-
175
- ## Overview
176
-
177
- [1-2 paragraph description of approach]
178
-
179
- ## Steps
180
-
181
- ### Step 1: [Title]
182
-
183
- **Files:** `src/foo.ts`
184
-
185
- **Changes:**
186
-
187
- - [ ] [Specific change 1]
188
- - [ ] [Specific change 2]
189
-
190
- **Tests:** [What to verify]
199
+ **Bead:** <bead-id>
191
200
 
192
- ---
201
+ ## Context
193
202
 
194
- ### Step 2: [Title]
203
+ [Problem statement from spec.md - why we needed to decide]
195
204
 
196
- **Files:** `src/bar.ts`, `src/baz.ts`
205
+ ## Decision
197
206
 
198
- **Changes:**
207
+ We chose **[Option Name]** because:
208
+ - [Reason 1]
209
+ - [Reason 2]
199
210
 
200
- - [ ] [Specific change]
211
+ ## Alternatives Considered
201
212
 
202
- **Tests:** [What to verify]
213
+ - **[Option B]:** Rejected because [reason]
214
+ - **[Option C]:** Rejected because [reason]
203
215
 
204
- ---
216
+ ## Consequences
205
217
 
206
- ### Step 3: [Title]
218
+ **Positive:**
219
+ - [Benefit 1]
220
+ - [Benefit 2]
207
221
 
208
- ...
222
+ **Negative:**
223
+ - [Tradeoff 1]
224
+ - [Tradeoff 2]
209
225
 
210
- ## Verification
226
+ ## Confirmation
211
227
 
212
- - [ ] Unit tests pass
213
- - [ ] Integration tests pass
214
- - [ ] Type check passes
215
- - [ ] [Custom verification from spec]
228
+ This decision is confirmed when:
229
+ - [ ] Implementation complete per plan.md
230
+ - [ ] All verification steps pass
231
+ ````
216
232
 
217
- ## Risks
233
+ Update bead and sync:
218
234
 
219
- - [Risk 1] - [mitigation]
235
+ ```typescript
236
+ bd_msg({
237
+ subj: "Plan approved",
238
+ body: "Approach: [selected option]\nTasks: [count]\nEstimate: ~[N] tool calls",
239
+ to: "all",
240
+ importance: "normal",
241
+ global: true,
242
+ });
243
+
244
+ bd_release({ _: true });
245
+ bd_sync({ reason: "Plan approved for $ARGUMENTS" });
220
246
  ```
221
247
 
222
- ## Phase 7: Update Bead
223
-
224
- Add a note about plan approval via `bd_msg` or update the spec with the approved approach.
225
-
226
248
  ## Output
227
249
 
228
250
  ```
@@ -230,10 +252,14 @@ Plan Approved: <bead-id>
230
252
  ━━━━━━━━━━━━━━━━━━━━━━━━
231
253
 
232
254
  Approach: [selected option]
233
- Steps: [count]
234
- Effort: [S/M/L]
235
-
236
- Plan saved: .beads/artifacts/<bead-id>/plan.md
255
+ Tasks: [count]
256
+ Parallel tracks: [count]
257
+ Estimate: ~[N] tool calls
258
+
259
+ Artifacts:
260
+ - .beads/artifacts/<bead-id>/design.md (approved)
261
+ - .beads/artifacts/<bead-id>/plan.md
262
+ - .beads/artifacts/<bead-id>/adr.md
237
263
 
238
264
  Next: /implement <bead-id>
239
265
  ```
@@ -1,53 +1,254 @@
1
1
  ---
2
2
  description: Create and submit pull request with bead traceability
3
- argument-hint: "[bead-id]"
3
+ argument-hint: "<bead-id> [--draft] [--wait]"
4
+ agent: build
4
5
  ---
5
6
 
7
+ # Pull Request
8
+
6
9
  **Load skill:** `skill({ name: "verification-before-completion" })`
7
10
 
8
- ## Create Pull Request
11
+ ## Options
12
+
13
+ - `--draft`: Create as draft PR (for WIP or early feedback)
14
+ - `--wait`: Wait for CI checks to pass after creation
15
+
16
+ ## Phase 1: Pre-PR Verification
17
+
18
+ Before creating PR, run verification gates:
19
+
20
+ ```bash
21
+ git status --porcelain # Check for uncommitted changes
22
+ ```
23
+
24
+ If uncommitted changes exist, ask: "Commit these changes first?"
25
+
26
+ Run project gates:
27
+
28
+ ```bash
29
+ npm run build 2>&1 | tail -5
30
+ npm test 2>&1 | tail -10
31
+ npm run lint 2>&1 | tail -5
32
+ ```
33
+
34
+ ```
35
+ Pre-PR Gates:
36
+ ━━━━━━━━━━━━━
37
+
38
+ Build: [✓/✗]
39
+ Tests: [✓/✗]
40
+ Lint: [✓/✗]
41
+ ```
42
+
43
+ **If any gate fails: STOP.**
44
+
45
+ ```
46
+ Cannot create PR: [gate] failed.
47
+
48
+ Fix errors first, then run /pr again.
49
+ ```
50
+
51
+ ## Phase 2: Check for Conflicts
52
+
53
+ ```bash
54
+ git fetch origin main
55
+ git merge-base --is-ancestor origin/main HEAD || git diff origin/main...HEAD --name-only
56
+ ```
9
57
 
10
- **Current Branch:** `!git branch --show-current`
11
- **Changes Summary:** `!git diff main...HEAD --stat`
12
- **Commits:** `!git log main...HEAD --oneline`
58
+ Check for merge conflicts:
13
59
 
14
- Create a pull request following these steps:
60
+ ```bash
61
+ git merge --no-commit --no-ff origin/main 2>&1 || true
62
+ git merge --abort 2>/dev/null || true
63
+ ```
15
64
 
16
- 1. **Format code** (if formatters available): `!command -v prettier > /dev/null && npm run format || echo "No formatter configured"`
65
+ If conflicts detected:
17
66
 
18
- 2. **Push branch**: `!git push -u origin $(git branch --show-current)`
67
+ ```
68
+ ⚠️ Merge conflicts detected with main:
69
+ - [file1]
70
+ - [file2]
71
+
72
+ Resolve conflicts before creating PR:
73
+ git fetch origin main
74
+ git rebase origin/main
75
+ # Fix conflicts, then /pr again
76
+ ```
19
77
 
20
- 3. **Check for bead context:**
21
- - If `$ARGUMENTS` contains a bead ID, fetch bead details: `bd_show({ id: "$ARGUMENTS" })`
22
- - Use bead title and spec to inform PR content
23
- - Reference the bead in the PR body for traceability
78
+ ## Phase 3: Gather Context
24
79
 
25
- 4. **Generate PR content:**
26
- - Title: Clear, descriptive (under 60 chars)
27
- - Summary: What and why this change matters
28
- - Testing: How to verify the changes
29
- - Breaking changes: Note any API/behavior changes
80
+ **Current state:**
30
81
 
31
- 5. **Create PR**: `!gh pr create --title "Generated Title" --body "Generated Description"`
82
+ ```bash
83
+ git branch --show-current
84
+ git diff main...HEAD --stat
85
+ git log main...HEAD --oneline
86
+ ```
32
87
 
33
- **Template format:**
88
+ **Load bead context (if provided):**
34
89
 
90
+ ```typescript
91
+ bd_show({ id: "$ARGUMENTS" });
35
92
  ```
93
+
94
+ **Load artifacts:**
95
+
96
+ ```bash
97
+ ls .beads/artifacts/<bead-id>/ 2>/dev/null
98
+ cat .beads/artifacts/<bead-id>/spec.md 2>/dev/null | head -30
99
+ cat .beads/artifacts/<bead-id>/review.md 2>/dev/null | head -30
100
+ ```
101
+
102
+ Extract from artifacts:
103
+
104
+ - **Goal** from spec.md
105
+ - **Changes Made** from review.md
106
+ - **Estimation Accuracy** from review.md
107
+ - **Success Criteria** verification
108
+
109
+ ## Phase 4: Push Branch
110
+
111
+ ```bash
112
+ git push -u origin $(git branch --show-current)
113
+ ```
114
+
115
+ ## Phase 5: Create PR
116
+
117
+ Generate PR content from context:
118
+
119
+ ```bash
120
+ gh pr create --title "<title>" --body "$(cat <<'EOF'
36
121
  ## Summary
37
- - Brief description of changes
38
122
 
39
- ## Bead Reference
40
- Closes: bd-XXXXX (if applicable)
123
+ [1-2 sentence description of what this PR does and why]
124
+
125
+ ## Changes
126
+
127
+ | File | Change |
128
+ | ---- | ------ |
129
+ | `src/foo.ts` | [description] |
130
+ | `src/bar.ts` | [description] |
41
131
 
42
132
  ## Testing
43
- - How to test these changes
44
133
 
45
- ## Breaking Changes
46
- - None / List any breaking changes
134
+ **Automated:**
135
+ - All tests pass
136
+ - Lint passes ✓
137
+ - Type check passes ✓
138
+
139
+ **Manual verification:**
140
+ - [ ] [How to test manually]
141
+
142
+ ## Screenshots
143
+
144
+ [If UI changes, include before/after screenshots]
145
+
146
+ ## Estimation
147
+
148
+ | Metric | Value |
149
+ | ------ | ----- |
150
+ | Estimated | [S/M/L] (~N calls) |
151
+ | Actual | N calls |
152
+ | Accuracy | [+/-N%] |
153
+
154
+ ## Checklist
155
+
156
+ - [x] Tests added/updated
157
+ - [x] All gates pass
158
+ - [ ] Docs updated (if applicable)
159
+ - [ ] Breaking changes documented (if any)
160
+
161
+ ## Artifacts
162
+
163
+ - [spec.md](.beads/artifacts/<bead-id>/spec.md)
164
+ - [review.md](.beads/artifacts/<bead-id>/review.md)
165
+ [- research.md, plan.md, adr.md if they exist]
166
+
167
+ ## Bead Reference
168
+
169
+ Closes: <bead-id>
170
+ EOF
171
+ )"
47
172
  ```
48
173
 
49
- ## After PR Created
174
+ **For draft PRs (--draft):**
175
+
176
+ ```bash
177
+ gh pr create --draft --title "<title>" --body "..."
178
+ ```
179
+
180
+ ## Phase 6: Wait for CI (if --wait)
181
+
182
+ ```bash
183
+ gh pr checks --watch
184
+ ```
185
+
186
+ Report CI status:
187
+
188
+ ```
189
+ CI Status:
190
+ ━━━━━━━━━━
191
+
192
+ - build: [✓/✗/pending]
193
+ - test: [✓/✗/pending]
194
+ - lint: [✓/✗/pending]
195
+
196
+ [If all pass] CI passed ✓
197
+ [If any fail] CI failed: [which check]
198
+ ```
50
199
 
51
- If a bead ID was provided, update the bead with PR link:
200
+ ## Phase 7: Update Bead & Sync
52
201
 
53
- Update the bead with a note about the PR using the beads messaging or note system.
202
+ ```typescript
203
+ bd_msg({
204
+ subj: "PR created",
205
+ body: "PR: <pr-url>\nStatus: [ready/draft]\nCI: [passing/pending]",
206
+ to: "all",
207
+ importance: "normal",
208
+ global: true,
209
+ });
210
+
211
+ bd_sync({ reason: "PR created for $ARGUMENTS" });
212
+ ```
213
+
214
+ ## Output
215
+
216
+ ```
217
+ PR Created: <bead-id>
218
+ ━━━━━━━━━━━━━━━━━━━━
219
+
220
+ URL: <pr-url>
221
+ Status: [Ready for Review / Draft]
222
+ Branch: <branch> → main
223
+
224
+ Pre-PR Gates: All passed ✓
225
+ Conflicts: None ✓
226
+ [CI: Passed ✓ (if --wait)]
227
+
228
+ Artifacts linked:
229
+ - spec.md ✓
230
+ - review.md ✓
231
+ [- research.md, plan.md, adr.md]
232
+ ```
233
+
234
+ **Next steps:**
235
+
236
+ ```
237
+ ━━━━━━━━━━━━━━━━━━━━
238
+
239
+ Request review:
240
+ gh pr edit <pr-number> --add-reviewer <username>
241
+
242
+ Check CI:
243
+ gh pr checks
244
+
245
+ Merge when approved:
246
+ gh pr merge --squash
247
+ ```
248
+
249
+ **If draft PR:**
250
+
251
+ ```
252
+ Draft PR created. When ready:
253
+ gh pr ready
254
+ ```