opencodekit 0.12.4 → 0.12.6
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/dist/index.js +17 -5
- package/dist/template/.opencode/agent/build.md +25 -11
- package/dist/template/.opencode/agent/rush.md +6 -4
- package/dist/template/.opencode/command/accessibility-check.md +7 -10
- package/dist/template/.opencode/command/analyze-mockup.md +3 -16
- package/dist/template/.opencode/command/analyze-project.md +57 -69
- package/dist/template/.opencode/command/brainstorm.md +3 -11
- package/dist/template/.opencode/command/commit.md +10 -18
- package/dist/template/.opencode/command/create.md +4 -8
- package/dist/template/.opencode/command/design-audit.md +24 -51
- package/dist/template/.opencode/command/design.md +10 -17
- package/dist/template/.opencode/command/finish.md +9 -9
- package/dist/template/.opencode/command/fix-ci.md +7 -28
- package/dist/template/.opencode/command/fix-types.md +3 -7
- package/dist/template/.opencode/command/fix-ui.md +5 -11
- package/dist/template/.opencode/command/fix.md +4 -10
- package/dist/template/.opencode/command/handoff.md +8 -14
- package/dist/template/.opencode/command/implement.md +13 -16
- package/dist/template/.opencode/command/import-plan.md +20 -38
- package/dist/template/.opencode/command/init.md +9 -13
- package/dist/template/.opencode/command/integration-test.md +11 -13
- package/dist/template/.opencode/command/issue.md +4 -8
- package/dist/template/.opencode/command/new-feature.md +20 -40
- package/dist/template/.opencode/command/plan.md +8 -12
- package/dist/template/.opencode/command/pr.md +29 -38
- package/dist/template/.opencode/command/quick-build.md +3 -7
- package/dist/template/.opencode/command/research-and-implement.md +4 -6
- package/dist/template/.opencode/command/research.md +10 -7
- package/dist/template/.opencode/command/resume.md +12 -24
- package/dist/template/.opencode/command/revert-feature.md +21 -56
- package/dist/template/.opencode/command/review-codebase.md +21 -23
- package/dist/template/.opencode/command/skill-create.md +1 -5
- package/dist/template/.opencode/command/skill-optimize.md +3 -10
- package/dist/template/.opencode/command/status.md +28 -25
- package/dist/template/.opencode/command/triage.md +19 -31
- package/dist/template/.opencode/command/ui-review.md +6 -13
- package/dist/template/.opencode/command.backup/analyze-project.md +465 -0
- package/dist/template/.opencode/command.backup/finish.md +167 -0
- package/dist/template/.opencode/command.backup/implement.md +143 -0
- package/dist/template/.opencode/command.backup/pr.md +252 -0
- package/dist/template/.opencode/command.backup/status.md +376 -0
- package/dist/template/.opencode/memory/project/SHELL_OUTPUT_MIGRATION_PLAN.md +551 -0
- package/dist/template/.opencode/memory/project/gotchas.md +33 -28
- package/dist/template/.opencode/opencode.json +24 -84
- package/dist/template/.opencode/package.json +1 -3
- package/dist/template/.opencode/plugin/compaction.ts +51 -129
- package/dist/template/.opencode/plugin/handoff.ts +18 -163
- package/dist/template/.opencode/plugin/notification.ts +1 -1
- package/dist/template/.opencode/plugin/package.json +7 -0
- package/dist/template/.opencode/plugin/sessions.ts +185 -651
- package/dist/template/.opencode/plugin/skill-mcp.ts +2 -1
- package/dist/template/.opencode/plugin/truncator.ts +19 -41
- package/dist/template/.opencode/plugin/tsconfig.json +14 -13
- package/dist/template/.opencode/tool/bd-inbox.ts +109 -0
- package/dist/template/.opencode/tool/bd-msg.ts +62 -0
- package/dist/template/.opencode/tool/bd-release.ts +71 -0
- package/dist/template/.opencode/tool/bd-reserve.ts +120 -0
- package/package.json +17 -5
- package/dist/template/.opencode/plugin/beads.ts +0 -1419
- package/dist/template/.opencode/plugin/compactor.ts +0 -107
- package/dist/template/.opencode/plugin/enforcer.ts +0 -190
- package/dist/template/.opencode/plugin/injector.ts +0 -150
|
@@ -31,19 +31,16 @@ This skill provides Epic → Task → Subtask hierarchy for complex features.
|
|
|
31
31
|
|
|
32
32
|
## Phase 1: Context Gathering
|
|
33
33
|
|
|
34
|
-
Before creating anything, understand
|
|
34
|
+
Before creating anything, understand of landscape:
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
# Check for related existing work
|
|
38
|
-
bd_ls({ status: "all", limit: 20, offset: 0 })
|
|
36
|
+
!`bd list --status all --limit 20`
|
|
39
37
|
|
|
40
38
|
# Analyze codebase structure
|
|
41
|
-
|
|
39
|
+
|
|
40
|
+
glob pattern="src/\*_/_.{ts,tsx,py}"
|
|
42
41
|
lsp_lsp_workspace_symbols({ query: "[relevant-terms]" })
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
git log --oneline -10 -- src/[relevant-path]/
|
|
46
|
-
```
|
|
43
|
+
!`git log --oneline -10 -- src/[relevant-path]/`
|
|
47
44
|
|
|
48
45
|
**Report:**
|
|
49
46
|
|
|
@@ -113,14 +110,8 @@ Proceed with spec? (yes/modify/explore-more)
|
|
|
113
110
|
|
|
114
111
|
## Phase 3: Create Epic Bead
|
|
115
112
|
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
title: "[Feature Name]",
|
|
119
|
-
type: "epic",
|
|
120
|
-
pri: [priority],
|
|
121
|
-
desc: "[Brief description from brainstorming]",
|
|
122
|
-
tags: ["feature", ...inferred_tags],
|
|
123
|
-
});
|
|
113
|
+
```bash
|
|
114
|
+
bd create "[Feature Name]" -t epic -p [priority]
|
|
124
115
|
```
|
|
125
116
|
|
|
126
117
|
Capture the bead ID for artifact creation.
|
|
@@ -363,28 +354,17 @@ If issues detected:
|
|
|
363
354
|
|
|
364
355
|
Break phases into individual trackable beads:
|
|
365
356
|
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
// Phase 2 tasks (with dependency)
|
|
378
|
-
bd_add({
|
|
379
|
-
title: "Implement [core feature]",
|
|
380
|
-
type: "task",
|
|
381
|
-
pri: 2,
|
|
382
|
-
parent: "<epic-id>",
|
|
383
|
-
deps: ["<phase-1-bead-id>"],
|
|
384
|
-
tags: ["backend"],
|
|
385
|
-
});
|
|
386
|
-
|
|
387
|
-
// Continue for all phases...
|
|
357
|
+
```bash
|
|
358
|
+
# Phase 1 tasks
|
|
359
|
+
bd create "Set up database schema for [feature]" -t task -p 2
|
|
360
|
+
bd dep add <task-id> <epic-id>
|
|
361
|
+
|
|
362
|
+
# Phase 2 tasks (with dependency)
|
|
363
|
+
bd create "Implement [core feature]" -t task -p 2
|
|
364
|
+
bd dep add <task-id> <epic-id>
|
|
365
|
+
bd dep add <task-id> <phase-1-bead-id>
|
|
366
|
+
|
|
367
|
+
# Continue for all phases...
|
|
388
368
|
```
|
|
389
369
|
|
|
390
370
|
---
|
|
@@ -424,9 +404,9 @@ Sub-tasks created:
|
|
|
424
404
|
Branch: feature/[feature-name] (if --branch)
|
|
425
405
|
|
|
426
406
|
Next Steps:
|
|
427
|
-
├── View feature:
|
|
407
|
+
├── View feature: bd show [bead-id]
|
|
428
408
|
├── Start first task: /implement [task-id-1]
|
|
429
|
-
└── View ready work:
|
|
409
|
+
└── View ready work: bd list --status ready
|
|
430
410
|
```
|
|
431
411
|
|
|
432
412
|
---
|
|
@@ -10,11 +10,9 @@ You're creating an implementation plan. Design first, then execute.
|
|
|
10
10
|
|
|
11
11
|
## Load Context
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
cat .beads/artifacts/$ARGUMENTS/
|
|
16
|
-
cat .beads/artifacts/$ARGUMENTS/research.md 2>/dev/null
|
|
17
|
-
```
|
|
13
|
+
!`bd show $ARGUMENTS`
|
|
14
|
+
!`cat .beads/artifacts/$ARGUMENTS/spec.md`
|
|
15
|
+
!`cat .beads/artifacts/$ARGUMENTS/research.md 2>/dev/null`
|
|
18
16
|
|
|
19
17
|
If spec.md missing: "Run `/create $ARGUMENTS` first."
|
|
20
18
|
If complexity > M and no research: "Consider `/research $ARGUMENTS` first."
|
|
@@ -118,7 +116,7 @@ Verify: `npm test -- bar.test.ts`
|
|
|
118
116
|
|
|
119
117
|
With `--create-beads` flag or user approval:
|
|
120
118
|
|
|
121
|
-
|
|
119
|
+
````bash
|
|
122
120
|
# Task 1 (no blockers)
|
|
123
121
|
bd create "[task 1 title]" -t task -p 2
|
|
124
122
|
|
|
@@ -126,17 +124,15 @@ bd create "[task 1 title]" -t task -p 2
|
|
|
126
124
|
bd create "[task 2 title]" -t task -p 2
|
|
127
125
|
bd dep add bd-[task2] bd-[task1] --type blocks
|
|
128
126
|
|
|
129
|
-
|
|
130
|
-
bd dep tree $ARGUMENTS
|
|
131
|
-
```
|
|
127
|
+
!`bd dep tree $ARGUMENTS`
|
|
132
128
|
|
|
133
129
|
Update plan.md with bead IDs.
|
|
134
130
|
|
|
135
131
|
## Sync
|
|
136
132
|
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
|
|
133
|
+
```bash
|
|
134
|
+
bd sync
|
|
135
|
+
````
|
|
140
136
|
|
|
141
137
|
## Output
|
|
142
138
|
|
|
@@ -22,18 +22,18 @@ skill({ name: "verification-before-completion" });
|
|
|
22
22
|
|
|
23
23
|
Before creating PR, run verification gates:
|
|
24
24
|
|
|
25
|
-
```
|
|
26
|
-
git status --porcelain # Check for uncommitted changes
|
|
25
|
+
```
|
|
26
|
+
!`git status --porcelain` # Check for uncommitted changes
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
If uncommitted changes exist, ask: "Commit these changes first?"
|
|
30
30
|
|
|
31
31
|
Run project gates:
|
|
32
32
|
|
|
33
|
-
```
|
|
34
|
-
npm run build 2>&1 | tail -5
|
|
35
|
-
npm test 2>&1 | tail -10
|
|
36
|
-
npm run lint 2>&1 | tail -5
|
|
33
|
+
```
|
|
34
|
+
!`npm run build 2>&1 | tail -5`
|
|
35
|
+
!`npm test 2>&1 | tail -10`
|
|
36
|
+
!`npm run lint 2>&1 | tail -5`
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
```
|
|
@@ -55,16 +55,16 @@ Fix errors first, then run /pr again.
|
|
|
55
55
|
|
|
56
56
|
## Phase 2: Check for Conflicts
|
|
57
57
|
|
|
58
|
-
```
|
|
59
|
-
git fetch origin main
|
|
60
|
-
git merge-base --is-ancestor origin/main HEAD || git diff origin/main...HEAD --name-only
|
|
58
|
+
```
|
|
59
|
+
!`git fetch origin main`
|
|
60
|
+
!`git merge-base --is-ancestor origin/main HEAD || git diff origin/main...HEAD --name-only`
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
Check for merge conflicts:
|
|
64
64
|
|
|
65
|
-
```
|
|
66
|
-
git merge --no-commit --no-ff origin/main 2>&1 || true
|
|
67
|
-
git merge --abort 2>/dev/null || true
|
|
65
|
+
```
|
|
66
|
+
!`git merge --no-commit --no-ff origin/main 2>&1 || true`
|
|
67
|
+
!`git merge --abort 2>/dev/null || true`
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
If conflicts detected:
|
|
@@ -84,24 +84,24 @@ Resolve conflicts before creating PR:
|
|
|
84
84
|
|
|
85
85
|
**Current state:**
|
|
86
86
|
|
|
87
|
-
```
|
|
88
|
-
git branch --show-current
|
|
89
|
-
git diff main...HEAD --stat
|
|
90
|
-
git log main...HEAD --oneline
|
|
87
|
+
```
|
|
88
|
+
!`git branch --show-current`
|
|
89
|
+
!`git diff main...HEAD --stat`
|
|
90
|
+
!`git log main...HEAD --oneline`
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
**Load bead context (if provided):**
|
|
94
94
|
|
|
95
|
-
```
|
|
96
|
-
|
|
95
|
+
```
|
|
96
|
+
!`bd show $ARGUMENTS`
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
**Load artifacts:**
|
|
100
100
|
|
|
101
|
-
```
|
|
102
|
-
ls .beads/artifacts/<bead-id>/ 2>/dev/null
|
|
103
|
-
cat .beads/artifacts/<bead-id>/spec.md 2>/dev/null | head -30
|
|
104
|
-
cat .beads/artifacts/<bead-id>/review.md 2>/dev/null | head -30
|
|
101
|
+
```
|
|
102
|
+
!`ls .beads/artifacts/<bead-id>/ 2>/dev/null`
|
|
103
|
+
!`cat .beads/artifacts/<bead-id>/spec.md 2>/dev/null | head -30`
|
|
104
|
+
!`cat .beads/artifacts/<bead-id>/review.md 2>/dev/null | head -30`
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
Extract from artifacts:
|
|
@@ -122,7 +122,7 @@ git push -u origin $(git branch --show-current)
|
|
|
122
122
|
Generate PR content from context:
|
|
123
123
|
|
|
124
124
|
```bash
|
|
125
|
-
gh pr create --title "<title>" --body "$(cat <<'EOF'
|
|
125
|
+
gh pr create --title "<title>" --body "$(cat <<'EOF' # Keep as instructional (multi-line)
|
|
126
126
|
## Summary
|
|
127
127
|
|
|
128
128
|
[1-2 sentence description of what this PR does and why]
|
|
@@ -179,13 +179,13 @@ EOF
|
|
|
179
179
|
**For draft PRs (--draft):**
|
|
180
180
|
|
|
181
181
|
```bash
|
|
182
|
-
gh pr create --draft --title "<title>" --body "..."
|
|
182
|
+
gh pr create --draft --title "<title>" --body "..." # Keep as-is (instructional)
|
|
183
183
|
```
|
|
184
184
|
|
|
185
185
|
## Phase 6: Wait for CI (if --wait)
|
|
186
186
|
|
|
187
|
-
```
|
|
188
|
-
gh pr checks --watch
|
|
187
|
+
```
|
|
188
|
+
!`gh pr checks --watch`
|
|
189
189
|
```
|
|
190
190
|
|
|
191
191
|
Report CI status:
|
|
@@ -204,18 +204,9 @@ CI Status:
|
|
|
204
204
|
|
|
205
205
|
## Phase 7: Update Bead & Sync
|
|
206
206
|
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
body: "PR: <pr-url>\nStatus: [ready/draft]\nCI: [passing/pending]",
|
|
211
|
-
to: "all",
|
|
212
|
-
importance: "normal",
|
|
213
|
-
global: true,
|
|
214
|
-
});
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
```typescript
|
|
218
|
-
bd_sync({ reason: "Sync PR creation" });
|
|
207
|
+
```bash
|
|
208
|
+
bd-msg --subj "PR created" --body "PR: <pr-url>\nStatus: [ready/draft]\nCI: [passing/pending]" --to "all" --importance normal
|
|
209
|
+
bd sync
|
|
219
210
|
```
|
|
220
211
|
|
|
221
212
|
## Output
|
|
@@ -56,10 +56,7 @@ Fast path for trivial tasks. Skip ceremony, keep safety.
|
|
|
56
56
|
|
|
57
57
|
### Step 1: Verify Scope (30 seconds)
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
# Check what files might be involved
|
|
61
|
-
grep -r "[search-term]" src/ --include="*.{ts,tsx}" -l | head -5
|
|
62
|
-
```
|
|
59
|
+
!`grep -r "[search-term]" src/ --include="*.{ts,tsx}" -l | head -5`
|
|
63
60
|
|
|
64
61
|
If more than 1 file: **STOP** → Use `/create $ARGUMENTS` instead.
|
|
65
62
|
|
|
@@ -68,11 +65,10 @@ If more than 1 file: **STOP** → Use `/create $ARGUMENTS` instead.
|
|
|
68
65
|
```bash
|
|
69
66
|
# Stash any existing changes
|
|
70
67
|
git stash push -m "pre-quickbuild-$(date +%s)" 2>/dev/null || true
|
|
71
|
-
|
|
72
|
-
# Note current commit
|
|
73
|
-
git rev-parse HEAD
|
|
74
68
|
```
|
|
75
69
|
|
|
70
|
+
!`git rev-parse HEAD`
|
|
71
|
+
|
|
76
72
|
### Step 3: Make the Change
|
|
77
73
|
|
|
78
74
|
```bash
|
|
@@ -12,10 +12,8 @@ Use this for features with unknowns. For simple changes, use `/fix` or `/impleme
|
|
|
12
12
|
|
|
13
13
|
## Phase 1: Context
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
cat .beads/artifacts/$ARGUMENTS/spec.md
|
|
18
|
-
```
|
|
15
|
+
!`bd show $ARGUMENTS`
|
|
16
|
+
!`cat .beads/artifacts/$ARGUMENTS/spec.md`
|
|
19
17
|
|
|
20
18
|
If no spec exists: "Run `/create $ARGUMENTS` first."
|
|
21
19
|
|
|
@@ -123,8 +121,8 @@ git add -A
|
|
|
123
121
|
git commit -m "$ARGUMENTS: [summary]"
|
|
124
122
|
```
|
|
125
123
|
|
|
126
|
-
```
|
|
127
|
-
|
|
124
|
+
```bash
|
|
125
|
+
bd sync
|
|
128
126
|
```
|
|
129
127
|
|
|
130
128
|
```
|
|
@@ -16,10 +16,15 @@ You're gathering information before implementation. Find answers, document findi
|
|
|
16
16
|
|
|
17
17
|
## Load Context
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
!`bd show $ARGUMENTS`
|
|
20
|
+
!`cat .beads/artifacts/$ARGUMENTS/spec.md`
|
|
21
|
+
|
|
22
|
+
Extract questions that need answering from spec.
|
|
23
|
+
|
|
24
|
+
## Check For Previous Research
|
|
25
|
+
|
|
26
|
+
!`search_session({ query: "[topic keywords]" })`
|
|
27
|
+
!`list_sessions({ project: "current", since: "this week", limit: 5 })`
|
|
23
28
|
|
|
24
29
|
Extract the questions that need answering from the spec.
|
|
25
30
|
|
|
@@ -138,9 +143,7 @@ Write `.beads/artifacts/$ARGUMENTS/research.md`:
|
|
|
138
143
|
|
|
139
144
|
## Sync
|
|
140
145
|
|
|
141
|
-
|
|
142
|
-
bd_sync({ reason: "Sync research findings" });
|
|
143
|
-
```
|
|
146
|
+
!`bd sync`
|
|
144
147
|
|
|
145
148
|
## Output
|
|
146
149
|
|
|
@@ -16,19 +16,15 @@ skill({ name: "beads" });
|
|
|
16
16
|
|
|
17
17
|
## Verify The Task Exists
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
bd show $ARGUMENTS
|
|
21
|
-
```
|
|
19
|
+
!`bd show $ARGUMENTS`
|
|
22
20
|
|
|
23
21
|
If not found, check `bd list --status=all`. Maybe it was closed, or you have the wrong ID.
|
|
24
22
|
|
|
25
23
|
## Check Git State
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
git
|
|
29
|
-
git
|
|
30
|
-
git status --porcelain
|
|
31
|
-
```
|
|
25
|
+
!`git branch --show-current`
|
|
26
|
+
!`git rev-parse --short HEAD`
|
|
27
|
+
!`git status --porcelain`
|
|
32
28
|
|
|
33
29
|
If you're not on the right branch:
|
|
34
30
|
|
|
@@ -40,15 +36,11 @@ If there are uncommitted changes, decide: stash, commit, or discard.
|
|
|
40
36
|
|
|
41
37
|
## Find The Handoff
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
ls -t .beads/artifacts/$ARGUMENTS/handoffs/ 2>/dev/null | head -1
|
|
45
|
-
```
|
|
39
|
+
!`ls -t .beads/artifacts/$ARGUMENTS/handoffs/ 2>/dev/null | head -1`
|
|
46
40
|
|
|
47
41
|
If a handoff exists, read it:
|
|
48
42
|
|
|
49
|
-
|
|
50
|
-
cat .beads/artifacts/$ARGUMENTS/handoffs/[latest].md
|
|
51
|
-
```
|
|
43
|
+
!`cat .beads/artifacts/$ARGUMENTS/handoffs/[latest].md`
|
|
52
44
|
|
|
53
45
|
The handoff tells you:
|
|
54
46
|
|
|
@@ -83,20 +75,16 @@ Extract from session:
|
|
|
83
75
|
|
|
84
76
|
Read all available context:
|
|
85
77
|
|
|
86
|
-
|
|
87
|
-
cat .beads/artifacts/$ARGUMENTS/
|
|
88
|
-
cat .beads/artifacts/$ARGUMENTS/
|
|
89
|
-
cat .beads/artifacts/$ARGUMENTS/research.md 2>/dev/null
|
|
90
|
-
```
|
|
78
|
+
!`cat .beads/artifacts/$ARGUMENTS/spec.md 2>/dev/null`
|
|
79
|
+
!`cat .beads/artifacts/$ARGUMENTS/plan.md 2>/dev/null`
|
|
80
|
+
!`cat .beads/artifacts/$ARGUMENTS/research.md 2>/dev/null`
|
|
91
81
|
|
|
92
82
|
## Check For Stale Context
|
|
93
83
|
|
|
94
|
-
If
|
|
84
|
+
If handoff is more than 3 days old, things may have changed:
|
|
95
85
|
|
|
96
|
-
|
|
97
|
-
git
|
|
98
|
-
git diff [handoff-commit]..HEAD --stat # What files changed?
|
|
99
|
-
```
|
|
86
|
+
!`git log --oneline -10` # What happened since?
|
|
87
|
+
!`git diff [handoff-commit]..HEAD --stat` # What files changed?
|
|
100
88
|
|
|
101
89
|
If significant changes occurred on main, consider rebasing:
|
|
102
90
|
|
|
@@ -34,16 +34,9 @@ Intelligently revert changes for a bead with comprehensive safety checks.
|
|
|
34
34
|
|
|
35
35
|
Before any action, verify:
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
git
|
|
40
|
-
|
|
41
|
-
# Check CI status
|
|
42
|
-
gh run list --limit 1
|
|
43
|
-
|
|
44
|
-
# Check if on correct branch
|
|
45
|
-
git branch --show-current
|
|
46
|
-
```
|
|
37
|
+
!`git status --short`
|
|
38
|
+
!`gh run list --limit 1`
|
|
39
|
+
!`git branch --show-current`
|
|
47
40
|
|
|
48
41
|
### Safety Gates
|
|
49
42
|
|
|
@@ -52,26 +45,17 @@ git branch --show-current
|
|
|
52
45
|
| Clean working tree | No uncommitted changes | Stash or commit first |
|
|
53
46
|
| CI passing | Latest run succeeded | Warn, confirm continue |
|
|
54
47
|
| Not on main/master | On feature branch | Require `--force` for main |
|
|
55
|
-
| Bead exists | `
|
|
48
|
+
| Bead exists | `bd show` returns data | Abort with error |
|
|
56
49
|
|
|
57
50
|
---
|
|
58
51
|
|
|
59
52
|
## Phase 2: Analyze Bead History
|
|
60
53
|
|
|
61
|
-
|
|
62
|
-
bd_show({ id: "[bead-id]" });
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
# Find all commits for this bead
|
|
67
|
-
git log --oneline --all --grep="[bead-id]"
|
|
68
|
-
|
|
69
|
-
# Show affected files
|
|
70
|
-
git log --name-only --grep="[bead-id]" --pretty=format:""
|
|
54
|
+
!`bd show [bead-id]`
|
|
71
55
|
|
|
72
|
-
|
|
73
|
-
git log --
|
|
74
|
-
|
|
56
|
+
!`git log --oneline --all --grep="[bead-id]"`
|
|
57
|
+
!`git log --name-only --grep="[bead-id]" --pretty=format:""`
|
|
58
|
+
!`git log --shortstat --grep="[bead-id]"`
|
|
75
59
|
|
|
76
60
|
### Impact Report
|
|
77
61
|
|
|
@@ -106,19 +90,12 @@ Lines: +456 / -23
|
|
|
106
90
|
|
|
107
91
|
Before reverting, check what depends on this:
|
|
108
92
|
|
|
109
|
-
|
|
110
|
-
// Check for dependent beads
|
|
111
|
-
bd_ls({ status: "all", limit: 50, offset: 0 });
|
|
112
|
-
// Filter for beads that depend on this one
|
|
113
|
-
```
|
|
93
|
+
!`bd list --status all --limit 50`
|
|
114
94
|
|
|
115
|
-
|
|
116
|
-
# Check for imports of new files
|
|
117
|
-
grep -r "from './auth/" src/ --include="*.ts"
|
|
95
|
+
# Filter for beads that depend on this one
|
|
118
96
|
|
|
119
|
-
|
|
120
|
-
git log --oneline --all -- src/auth/ | grep -v "[bead-id]"
|
|
121
|
-
```
|
|
97
|
+
!`grep -r "from './auth/" src/ --include="*.ts"`
|
|
98
|
+
!`git log --oneline --all -- src/auth/ | grep -v "[bead-id]"`
|
|
122
99
|
|
|
123
100
|
### Downstream Report
|
|
124
101
|
|
|
@@ -204,10 +181,7 @@ To undo this revert later:
|
|
|
204
181
|
|
|
205
182
|
If `--include-migrations` or migrations detected:
|
|
206
183
|
|
|
207
|
-
|
|
208
|
-
# Check for migration files in commits
|
|
209
|
-
git log --name-only --grep="[bead-id]" -- "**/migrations/**"
|
|
210
|
-
```
|
|
184
|
+
!`git log --name-only --grep="[bead-id]" -- "**/migrations/**"`
|
|
211
185
|
|
|
212
186
|
### Migration Revert Strategy
|
|
213
187
|
|
|
@@ -338,17 +312,8 @@ git checkout --ours [file] # Use reverted
|
|
|
338
312
|
|
|
339
313
|
## Phase 10: Update Bead Status
|
|
340
314
|
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
subj: "Reverted: [bead-id]",
|
|
344
|
-
body: "Feature reverted at [timestamp]\nReason: [reason]\nBackup: backup/[bead-id]-pre-revert",
|
|
345
|
-
to: "all",
|
|
346
|
-
importance: "normal",
|
|
347
|
-
global: false,
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
// Optionally close or re-open bead
|
|
351
|
-
bd_reopen({ id: "[bead-id]" });
|
|
315
|
+
```bash
|
|
316
|
+
bd-msg --subj "Reverted: [bead-id]" --body "Feature reverted at [timestamp]\nReason: [reason]\nBackup: backup/[bead-id]-pre-revert" --to "all" --importance normal
|
|
352
317
|
```
|
|
353
318
|
|
|
354
319
|
---
|
|
@@ -401,9 +366,9 @@ git commit -m "restore: [bead-id] from backup"
|
|
|
401
366
|
|
|
402
367
|
## Related Commands
|
|
403
368
|
|
|
404
|
-
| Need | Command
|
|
405
|
-
| -------------------- |
|
|
406
|
-
| View bead history | `
|
|
407
|
-
| Re-implement feature | `/implement [bead-id]`
|
|
408
|
-
| Check status | `/status [bead-id]`
|
|
409
|
-
| Create new feature | `/new-feature`
|
|
369
|
+
| Need | Command |
|
|
370
|
+
| -------------------- | ---------------------- |
|
|
371
|
+
| View bead history | `bd show [bead-id]` |
|
|
372
|
+
| Re-implement feature | `/implement [bead-id]` |
|
|
373
|
+
| Check status | `/status [bead-id]` |
|
|
374
|
+
| Create new feature | `/new-feature` |
|
|
@@ -19,7 +19,7 @@ Parse `$ARGUMENTS` to determine what to review:
|
|
|
19
19
|
| Input | Scope | How to Get Code |
|
|
20
20
|
| ------------------------ | ---------------------- | ------------------------------------------- |
|
|
21
21
|
| File/directory path | That path only | `read` or `glob` + `read` |
|
|
22
|
-
| Bead ID (e.g., `bd-123`) | Implementation vs spec | `
|
|
22
|
+
| Bead ID (e.g., `bd-123`) | Implementation vs spec | `bd show` then `git diff` from spec |
|
|
23
23
|
| PR number (e.g., `#45`) | PR changes | `gh pr diff 45` |
|
|
24
24
|
| `all` or empty | Recent changes | `git diff main...HEAD` or `git diff HEAD~5` |
|
|
25
25
|
|
|
@@ -29,27 +29,31 @@ If bead exists, load spec from `.beads/artifacts/$ID/spec.md` and review against
|
|
|
29
29
|
|
|
30
30
|
Run these checks first (batch for speed):
|
|
31
31
|
|
|
32
|
+
```typescript
|
|
33
|
+
// Type/lint errors
|
|
34
|
+
lsp_lsp_diagnostics(); // for each changed file
|
|
32
35
|
```
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
npm run
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
ast-grep pattern
|
|
40
|
-
ast-grep pattern
|
|
41
|
-
|
|
42
|
-
ast-grep pattern
|
|
43
|
-
|
|
44
|
-
# Test status
|
|
45
|
-
npm test || pytest || cargo test
|
|
36
|
+
|
|
37
|
+
!`npm run type-check || tsc --noEmit`
|
|
38
|
+
!`npm run lint || true`
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
// Anti-pattern detection with ast-grep
|
|
42
|
+
ast - grep({ pattern: "console.log($$$)" }); // Debug statements
|
|
43
|
+
ast - grep({ pattern: "any" }); // TypeScript any
|
|
44
|
+
grep({ pattern: "TODO|FIXME|HACK|XXX" });
|
|
45
|
+
ast - grep({ pattern: 'password = "$$$"' }); // Hardcoded secrets
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
!`npm test || pytest || cargo test`
|
|
49
|
+
|
|
48
50
|
Collect all automated findings before manual review.
|
|
49
51
|
|
|
50
52
|
## Phase 3: Manual Review Categories
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
```typescript
|
|
55
|
+
skill({ name: "requesting-code-review" });
|
|
56
|
+
```
|
|
53
57
|
|
|
54
58
|
Review each category with specific focus:
|
|
55
59
|
|
|
@@ -102,14 +106,8 @@ Review each category with specific focus:
|
|
|
102
106
|
|
|
103
107
|
For each Critical or Important finding:
|
|
104
108
|
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
title: "[Review] <brief issue description>",
|
|
108
|
-
desc: "File: <path>:<line>\nIssue: <what's wrong>\nFix: <how to fix>",
|
|
109
|
-
type: "bug",
|
|
110
|
-
pri: 1, # Critical=0, Important=1, Minor=2
|
|
111
|
-
tags: ["review", "security|perf|maintainability"]
|
|
112
|
-
})
|
|
109
|
+
```bash
|
|
110
|
+
bd create "[Review] <brief issue description>" -t bug -p 1
|
|
113
111
|
```
|
|
114
112
|
|
|
115
113
|
Skip creating beads for Minor issues (just report them).
|
|
@@ -405,9 +405,7 @@ Run test scenarios again until skill guides behavior correctly.
|
|
|
405
405
|
|
|
406
406
|
### File Structure Check
|
|
407
407
|
|
|
408
|
-
|
|
409
|
-
ls -la .opencode/skill/$ARGUMENTS/
|
|
410
|
-
```
|
|
408
|
+
!`ls -la .opencode/skill/$ARGUMENTS/`
|
|
411
409
|
|
|
412
410
|
Expected:
|
|
413
411
|
|
|
@@ -474,8 +472,6 @@ If creating from an existing observation:
|
|
|
474
472
|
/skill-create my-skill --from-observation
|
|
475
473
|
```
|
|
476
474
|
|
|
477
|
-
This will:
|
|
478
|
-
|
|
479
475
|
1. Search observations for patterns
|
|
480
476
|
2. Extract relevant learnings
|
|
481
477
|
3. Pre-populate skill with discovered knowledge
|
|
@@ -20,16 +20,9 @@ skill({ name: "writing-skills" });
|
|
|
20
20
|
|
|
21
21
|
### Find Skill Location
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
ls -la
|
|
26
|
-
|
|
27
|
-
# Check superpowers (shared skills)
|
|
28
|
-
ls -la .opencode/superpowers/skills/$ARGUMENTS/ 2>/dev/null
|
|
29
|
-
|
|
30
|
-
# Check installed skills
|
|
31
|
-
ls -la ~/.opencode/skills/$ARGUMENTS/ 2>/dev/null
|
|
32
|
-
```
|
|
23
|
+
!`ls -la .opencode/skill/$ARGUMENTS/ 2>/dev/null`
|
|
24
|
+
!`ls -la .opencode/superpowers/skills/$ARGUMENTS/ 2>/dev/null`
|
|
25
|
+
!`ls -la ~/.opencode/skills/$ARGUMENTS/ 2>/dev/null`
|
|
33
26
|
|
|
34
27
|
### Load Current Content
|
|
35
28
|
|