opencodekit 0.6.7 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +654 -651
- package/dist/template/.opencode/AGENTS.md +97 -13
- package/dist/template/.opencode/README.md +18 -16
- package/dist/template/.opencode/command/accessibility-check.md +1 -1
- package/dist/template/.opencode/command/analyze-mockup.md +1 -1
- package/dist/template/.opencode/command/analyze-project.md +11 -9
- package/dist/template/.opencode/command/brainstorm.md +1 -1
- package/dist/template/.opencode/command/commit.md +1 -1
- package/dist/template/.opencode/command/create.md +16 -2
- package/dist/template/.opencode/command/design-audit.md +1 -1
- package/dist/template/.opencode/command/design.md +1 -1
- package/dist/template/.opencode/command/finish.md +20 -8
- package/dist/template/.opencode/command/fix-ci.md +14 -9
- package/dist/template/.opencode/command/fix-types.md +6 -11
- package/dist/template/.opencode/command/fix-ui.md +1 -1
- package/dist/template/.opencode/command/fix.md +1 -1
- package/dist/template/.opencode/command/handoff.md +8 -6
- package/dist/template/.opencode/command/implement.md +33 -3
- package/dist/template/.opencode/command/import-plan.md +27 -14
- package/dist/template/.opencode/command/integration-test.md +7 -3
- package/dist/template/.opencode/command/issue.md +10 -9
- package/dist/template/.opencode/command/new-feature.md +6 -6
- package/dist/template/.opencode/command/plan.md +5 -5
- package/dist/template/.opencode/command/pr.md +4 -4
- package/dist/template/.opencode/command/research-and-implement.md +2 -2
- package/dist/template/.opencode/command/research-ui.md +1 -1
- package/dist/template/.opencode/command/research.md +3 -5
- package/dist/template/.opencode/command/resume.md +4 -2
- package/dist/template/.opencode/command/revert-feature.md +7 -7
- package/dist/template/.opencode/command/review-codebase.md +1 -1
- package/dist/template/.opencode/command/skill-create.md +4 -4
- package/dist/template/.opencode/command/skill-optimize.md +4 -4
- package/dist/template/.opencode/command/status.md +4 -4
- package/dist/template/.opencode/command/ui-review.md +2 -2
- package/dist/template/.opencode/dcp.jsonc +20 -2
- package/dist/template/.opencode/opencode.json +496 -491
- package/dist/template/.opencode/package.json +20 -20
- package/dist/template/.opencode/plugin/beads.ts +667 -0
- package/dist/template/.opencode/plugin/compaction.ts +80 -0
- package/dist/template/.opencode/skill/beads/SKILL.md +419 -0
- package/dist/template/.opencode/skill/beads/references/BOUNDARIES.md +218 -0
- package/dist/template/.opencode/skill/beads/references/DEPENDENCIES.md +130 -0
- package/dist/template/.opencode/skill/beads/references/RESUMABILITY.md +180 -0
- package/dist/template/.opencode/skill/beads/references/WORKFLOWS.md +222 -0
- package/dist/template/.opencode/skill/brainstorming/SKILL.md +2 -2
- package/dist/template/.opencode/skill/executing-plans/SKILL.md +1 -1
- package/dist/template/.opencode/skill/sharing-skills/SKILL.md +13 -4
- package/dist/template/.opencode/skill/subagent-driven-development/SKILL.md +1 -1
- package/dist/template/.opencode/skill/systematic-debugging/SKILL.md +2 -2
- package/dist/template/.opencode/skill/using-git-worktrees/SKILL.md +27 -18
- package/dist/template/.opencode/skill/{using-superpowers → using-skills}/SKILL.md +6 -3
- package/dist/template/.opencode/skill/writing-plans/SKILL.md +3 -3
- package/dist/template/.opencode/skill/writing-skills/SKILL.md +2 -2
- package/package.json +2 -1
- package/dist/template/.opencode/memory/handoffs/2025-12-27T103000Z.md +0 -76
- package/dist/template/.opencode/plugin/skill.ts +0 -275
- package/dist/template/.opencode/skill/systematic-debugging/CREATION-LOG.md +0 -119
- package/dist/template/.opencode/skill/systematic-debugging/test-academic.md +0 -14
- package/dist/template/.opencode/skill/systematic-debugging/test-pressure-1.md +0 -58
- package/dist/template/.opencode/skill/systematic-debugging/test-pressure-2.md +0 -68
- package/dist/template/.opencode/skill/systematic-debugging/test-pressure-3.md +0 -69
- package/dist/template/.opencode/skill/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md +0 -189
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Dependency Types Guide
|
|
2
|
+
|
|
3
|
+
Beads supports task dependencies for ordering work.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Dependencies affect what work is "ready" - tasks with unmet dependencies won't appear in `bd_claim()` or `bd_priority()`.
|
|
8
|
+
|
|
9
|
+
## Creating Dependencies
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
bd_add({
|
|
13
|
+
title: "Implement API endpoint",
|
|
14
|
+
deps: ["task:setup-db"], // depends on setup-db task
|
|
15
|
+
});
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Dependency Patterns
|
|
19
|
+
|
|
20
|
+
### Sequential Work
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
setup-db → implement-api → add-tests → deploy
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Each task depends on the previous. `bd_claim()` shows only the current step.
|
|
27
|
+
|
|
28
|
+
### Parallel Then Merge
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
research-a ─┐
|
|
32
|
+
research-b ─┼→ decision
|
|
33
|
+
research-c ─┘
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Multiple parallel tasks, then one that needs all of them.
|
|
37
|
+
|
|
38
|
+
### Foundation First
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
setup ─┬→ feature-a
|
|
42
|
+
├→ feature-b
|
|
43
|
+
└→ feature-c
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
One foundational task blocks multiple features.
|
|
47
|
+
|
|
48
|
+
## Epic with Children
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
// Create epic
|
|
52
|
+
bd_add({ title: "OAuth Integration", type: "epic" });
|
|
53
|
+
// Returns: { id: "oauth-abc" }
|
|
54
|
+
|
|
55
|
+
// Create children with parent
|
|
56
|
+
bd_add({ title: "Setup credentials", parent: "oauth-abc" });
|
|
57
|
+
bd_add({
|
|
58
|
+
title: "Implement flow",
|
|
59
|
+
parent: "oauth-abc",
|
|
60
|
+
deps: ["task:credentials"],
|
|
61
|
+
});
|
|
62
|
+
bd_add({ title: "Add UI", parent: "oauth-abc", deps: ["task:flow"] });
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Automatic Unblocking
|
|
66
|
+
|
|
67
|
+
When you close a task that's blocking others:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
1. bd_done({ id: "setup-db" })
|
|
71
|
+
2. Beads automatically updates: implement-api is now ready
|
|
72
|
+
3. bd_claim() returns implement-api
|
|
73
|
+
4. No manual unblocking needed
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Common Mistakes
|
|
77
|
+
|
|
78
|
+
### Using Dependencies for Preferences
|
|
79
|
+
|
|
80
|
+
**Wrong:**
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
docs depends on feature // "prefer to update docs after"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Problem:** Documentation doesn't actually need feature complete.
|
|
87
|
+
|
|
88
|
+
**Right:** Only use dependencies for actual blockers.
|
|
89
|
+
|
|
90
|
+
### Wrong Direction
|
|
91
|
+
|
|
92
|
+
**Wrong:**
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
bd_add({ title: "API", deps: ["task:tests"] }) // API depends on tests?
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Problem:** Usually tests depend on API, not the other way.
|
|
99
|
+
|
|
100
|
+
**Right:** Think "X needs Y complete first" → X depends on Y.
|
|
101
|
+
|
|
102
|
+
### Over-Using Dependencies
|
|
103
|
+
|
|
104
|
+
**Problem:** Everything depends on everything. No parallel work possible.
|
|
105
|
+
|
|
106
|
+
**Right:** Only add dependencies for actual technical blockers.
|
|
107
|
+
|
|
108
|
+
## Decision Guide
|
|
109
|
+
|
|
110
|
+
**Add dependency when:**
|
|
111
|
+
|
|
112
|
+
- Task literally cannot start without other task complete
|
|
113
|
+
- Code won't compile/run without prerequisite
|
|
114
|
+
- Data/schema must exist first
|
|
115
|
+
|
|
116
|
+
**Skip dependency when:**
|
|
117
|
+
|
|
118
|
+
- Just a preference for order
|
|
119
|
+
- Both can proceed independently
|
|
120
|
+
- Just want to note relationship
|
|
121
|
+
|
|
122
|
+
## Viewing Dependencies
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
bd_show({ id: "task-abc" });
|
|
126
|
+
// Shows what blocks this task and what this task blocks
|
|
127
|
+
|
|
128
|
+
bd_insights();
|
|
129
|
+
// Shows bottlenecks and blocked work across project
|
|
130
|
+
```
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Making Tasks Resumable Across Sessions
|
|
2
|
+
|
|
3
|
+
## When Resumability Matters
|
|
4
|
+
|
|
5
|
+
**Use enhanced notes for:**
|
|
6
|
+
|
|
7
|
+
- Multi-session features with API integration
|
|
8
|
+
- Complex algorithms requiring code examples
|
|
9
|
+
- Features with specific output format requirements
|
|
10
|
+
- Work with undocumented APIs
|
|
11
|
+
|
|
12
|
+
**Skip for:**
|
|
13
|
+
|
|
14
|
+
- Simple bug fixes with clear scope
|
|
15
|
+
- Well-understood patterns (CRUD, etc.)
|
|
16
|
+
- Single-session tasks
|
|
17
|
+
- Work with obvious criteria
|
|
18
|
+
|
|
19
|
+
**The test:** Would a fresh agent (or you after 2 weeks) struggle to resume from the notes alone? If yes, add detail.
|
|
20
|
+
|
|
21
|
+
## Anatomy of Resumable Notes
|
|
22
|
+
|
|
23
|
+
### Minimal (Always Include)
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
COMPLETED: What's done
|
|
27
|
+
IN PROGRESS: Current state
|
|
28
|
+
NEXT: Concrete next step
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Enhanced (Complex Work)
|
|
32
|
+
|
|
33
|
+
````
|
|
34
|
+
COMPLETED: Specific deliverables
|
|
35
|
+
IN PROGRESS: Current state + what's working
|
|
36
|
+
NEXT: Concrete next step (not "continue")
|
|
37
|
+
BLOCKERS: What's preventing progress
|
|
38
|
+
KEY DECISIONS: Important context with rationale
|
|
39
|
+
|
|
40
|
+
WORKING CODE:
|
|
41
|
+
```python
|
|
42
|
+
# Tested code that works
|
|
43
|
+
result = api.query(fields='importFormats')
|
|
44
|
+
# Returns: {'text/markdown': ['application/vnd.google-apps.document']}
|
|
45
|
+
````
|
|
46
|
+
|
|
47
|
+
DESIRED OUTPUT:
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
# Example of what output should look like
|
|
51
|
+
|
|
52
|
+
Actual structure, not just "return markdown"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Example: Before vs After
|
|
58
|
+
|
|
59
|
+
### Not Resumable
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Title: Add dynamic capabilities
|
|
64
|
+
Notes: Working on it. Made some progress.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Problem:** Future agent doesn't know:
|
|
69
|
+
- Which API endpoints to call
|
|
70
|
+
- What responses look like
|
|
71
|
+
- What format to return
|
|
72
|
+
|
|
73
|
+
### Resumable
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Title: Add dynamic capabilities resources
|
|
78
|
+
|
|
79
|
+
Notes:
|
|
80
|
+
COMPLETED: API connection verified. Query working.
|
|
81
|
+
IN PROGRESS: Formatting response as markdown.
|
|
82
|
+
NEXT: Add caching for API responses.
|
|
83
|
+
|
|
84
|
+
WORKING CODE:
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
service = build('drive', 'v3', credentials=creds)
|
|
88
|
+
about = service.about().get(fields='importFormats').execute()
|
|
89
|
+
# Returns dict with 49 entries
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
DESIRED OUTPUT:
|
|
93
|
+
|
|
94
|
+
```markdown
|
|
95
|
+
# Drive Import Formats
|
|
96
|
+
|
|
97
|
+
- **text/markdown** → Google Docs
|
|
98
|
+
- text/plain → Google Docs
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
KEY DECISION: Using live API query because text/markdown support (July 2024) not in static docs.
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Result:** Fresh agent can:
|
|
106
|
+
1. See working API code
|
|
107
|
+
2. Understand response structure
|
|
108
|
+
3. Know desired output format
|
|
109
|
+
4. Implement with context
|
|
110
|
+
|
|
111
|
+
## When to Add Detail
|
|
112
|
+
|
|
113
|
+
**During task creation:**
|
|
114
|
+
- Already have working code? Include it.
|
|
115
|
+
- Clear output format? Show example.
|
|
116
|
+
|
|
117
|
+
**During work:**
|
|
118
|
+
- Got API working? Add to notes.
|
|
119
|
+
- Discovered important context? Document it.
|
|
120
|
+
- Made key decision? Explain rationale.
|
|
121
|
+
|
|
122
|
+
**Session end:**
|
|
123
|
+
- If resuming will be hard, add implementation guide.
|
|
124
|
+
- If obvious, skip it.
|
|
125
|
+
|
|
126
|
+
## Anti-Patterns
|
|
127
|
+
|
|
128
|
+
### Over-Documenting Simple Work
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Title: Fix typo in README
|
|
133
|
+
Notes: IMPLEMENTATION GUIDE
|
|
134
|
+
WORKING CODE: Open README.md, change "teh" to "the"...
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Problem:** Wastes tokens on obvious work.
|
|
139
|
+
|
|
140
|
+
### Vague Progress
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Notes: Made progress. Will continue later.
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Problem:** No context for resumption.
|
|
149
|
+
|
|
150
|
+
### Raw Data Dumps
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
API RESPONSE:
|
|
155
|
+
{giant unformatted JSON blob spanning 100 lines}
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Problem:** Hard to read. Extract relevant parts.
|
|
160
|
+
|
|
161
|
+
### Right Balance
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
API returns dict with 49 entries. Examples:
|
|
166
|
+
|
|
167
|
+
- 'text/markdown': ['application/vnd.google-apps.document']
|
|
168
|
+
- 'text/plain': ['application/vnd.google-apps.document']
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## The Principle
|
|
173
|
+
|
|
174
|
+
Help your future self (or next agent) resume without rediscovering everything.
|
|
175
|
+
|
|
176
|
+
Write notes as if explaining to someone with:
|
|
177
|
+
- Zero conversation context
|
|
178
|
+
- No memory of previous sessions
|
|
179
|
+
- Only the task description and notes
|
|
180
|
+
```
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# Workflows and Checklists
|
|
2
|
+
|
|
3
|
+
Detailed step-by-step workflows for common beads usage patterns.
|
|
4
|
+
|
|
5
|
+
## Session Start Workflow
|
|
6
|
+
|
|
7
|
+
**Every session when beads is available:**
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Session Start:
|
|
11
|
+
- [ ] bd_init({ team: "project", role: "fe" })
|
|
12
|
+
- [ ] bd_claim() to get ready work
|
|
13
|
+
- [ ] If none ready, bd_ls({ status: "open" })
|
|
14
|
+
- [ ] bd_show({ id }) for full context
|
|
15
|
+
- [ ] bd_reserve({ paths }) before editing
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Compaction Survival
|
|
19
|
+
|
|
20
|
+
**Critical**: After compaction, conversation history is deleted but beads state persists.
|
|
21
|
+
|
|
22
|
+
**Post-compaction recovery:**
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
After Compaction:
|
|
26
|
+
- [ ] bd_ls({ status: "in_progress" }) to see active work
|
|
27
|
+
- [ ] bd_show({ id }) for each in_progress task
|
|
28
|
+
- [ ] Read notes: COMPLETED, IN PROGRESS, BLOCKERS, KEY DECISIONS
|
|
29
|
+
- [ ] Reconstruct TodoWrite from notes if needed
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Writing notes for compaction survival:**
|
|
33
|
+
|
|
34
|
+
**Good note (enables recovery):**
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
COMPLETED: User auth - JWT tokens with 1hr expiry, refresh endpoint.
|
|
38
|
+
IN PROGRESS: Password reset flow. Email service working.
|
|
39
|
+
NEXT: Add rate limiting to reset endpoint.
|
|
40
|
+
KEY DECISION: Using bcrypt 12 rounds per OWASP.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Bad note:**
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Working on auth. Made some progress.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Discovery Workflow
|
|
50
|
+
|
|
51
|
+
**When encountering new work during implementation:**
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Discovery:
|
|
55
|
+
- [ ] Notice bug, improvement, or follow-up
|
|
56
|
+
- [ ] Assess: blocker or deferrable?
|
|
57
|
+
- [ ] bd_add({ title, desc, pri })
|
|
58
|
+
- [ ] If blocker: pause and switch
|
|
59
|
+
- [ ] If deferrable: continue current work
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Epic Planning
|
|
63
|
+
|
|
64
|
+
**For complex multi-step features, think in Ready Fronts.**
|
|
65
|
+
|
|
66
|
+
A **Ready Front** is the set of tasks with all dependencies satisfied.
|
|
67
|
+
|
|
68
|
+
**Walk backward from goal:**
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
"What's the final deliverable?"
|
|
72
|
+
↓
|
|
73
|
+
"Integration tests passing" → task-integration
|
|
74
|
+
↓
|
|
75
|
+
"What does that need?"
|
|
76
|
+
↓
|
|
77
|
+
"Streaming support" → task-streaming
|
|
78
|
+
"Header display" → task-header
|
|
79
|
+
↓
|
|
80
|
+
"What do those need?"
|
|
81
|
+
↓
|
|
82
|
+
"Message rendering" → task-messages
|
|
83
|
+
↓
|
|
84
|
+
"Buffer layout" → task-buffer (foundation)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Example: OAuth Integration**
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// Create epic
|
|
91
|
+
bd_add({ title: "OAuth integration", type: "epic" });
|
|
92
|
+
|
|
93
|
+
// Walk backward: What does OAuth need?
|
|
94
|
+
bd_add({ title: "Login/logout endpoints", parent: "oauth-abc" });
|
|
95
|
+
bd_add({ title: "Token storage and refresh", parent: "oauth-abc" });
|
|
96
|
+
bd_add({ title: "Authorization code flow", parent: "oauth-abc" });
|
|
97
|
+
bd_add({ title: "OAuth client credentials", parent: "oauth-abc" }); // foundation
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Side Quest Handling
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Side Quest:
|
|
104
|
+
- [ ] During main work, discover problem
|
|
105
|
+
- [ ] bd_add() for side quest
|
|
106
|
+
- [ ] Assess: blocker or deferrable?
|
|
107
|
+
- [ ] If blocker: bd_release(), switch to side quest
|
|
108
|
+
- [ ] If deferrable: note it, continue main work
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Session Handoff
|
|
112
|
+
|
|
113
|
+
**At Session End:**
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Session End:
|
|
117
|
+
- [ ] Work reaching stopping point
|
|
118
|
+
- [ ] Update notes with COMPLETED/IN PROGRESS/NEXT
|
|
119
|
+
- [ ] bd_done() if task complete
|
|
120
|
+
- [ ] Otherwise leave in_progress with notes
|
|
121
|
+
- [ ] RESTART SESSION
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**At Session Start:**
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Session Start with in_progress:
|
|
128
|
+
- [ ] bd_ls({ status: "in_progress" })
|
|
129
|
+
- [ ] bd_show({ id }) for each
|
|
130
|
+
- [ ] Read notes field
|
|
131
|
+
- [ ] Continue from notes context
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Unblocking Work
|
|
135
|
+
|
|
136
|
+
**When ready list is empty:**
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
Unblocking:
|
|
140
|
+
- [ ] bd_ls({ status: "open" }) to see all tasks
|
|
141
|
+
- [ ] bd_insights() to find bottlenecks
|
|
142
|
+
- [ ] Identify blocker tasks
|
|
143
|
+
- [ ] Work on blockers first
|
|
144
|
+
- [ ] Closing blocker unblocks dependent work
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Integration with TodoWrite
|
|
148
|
+
|
|
149
|
+
**Using both tools:**
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Hybrid:
|
|
153
|
+
- [ ] bd_claim() for high-level task
|
|
154
|
+
- [ ] Create TodoWrite from acceptance criteria
|
|
155
|
+
- [ ] Work through TodoWrite items
|
|
156
|
+
- [ ] Update bd notes as you learn
|
|
157
|
+
- [ ] When TodoWrite complete, bd_done()
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Why hybrid**: bd provides persistent structure, TodoWrite provides visible progress.
|
|
161
|
+
|
|
162
|
+
## Common Patterns
|
|
163
|
+
|
|
164
|
+
### Systematic Exploration
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
1. Create research task
|
|
168
|
+
2. Update notes with findings
|
|
169
|
+
3. bd_add() for discoveries
|
|
170
|
+
4. Close research with conclusion
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Bug Investigation
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
1. Create bug task
|
|
177
|
+
2. Reproduce: note steps
|
|
178
|
+
3. Investigate: track hypotheses in notes
|
|
179
|
+
4. Fix: implement solution
|
|
180
|
+
5. Close with root cause explanation
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Refactoring with Dependencies
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
1. Create tasks for each step
|
|
187
|
+
2. Work through in dependency order
|
|
188
|
+
3. bd_claim() shows next step
|
|
189
|
+
4. Each completion unblocks next
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Checklist Templates
|
|
193
|
+
|
|
194
|
+
### Starting Any Session
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
- [ ] bd_init()
|
|
198
|
+
- [ ] bd_claim() or bd_ls()
|
|
199
|
+
- [ ] bd_show() for context
|
|
200
|
+
- [ ] bd_reserve() files
|
|
201
|
+
- [ ] Begin work
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Creating Tasks During Work
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
- [ ] Notice new work needed
|
|
208
|
+
- [ ] bd_add() with clear title
|
|
209
|
+
- [ ] Add context in desc
|
|
210
|
+
- [ ] Assess blocker vs deferrable
|
|
211
|
+
- [ ] Update statuses
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Completing Work
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
- [ ] Implementation done
|
|
218
|
+
- [ ] Tests passing
|
|
219
|
+
- [ ] bd_done() with summary
|
|
220
|
+
- [ ] bd_claim() for next work
|
|
221
|
+
- [ ] RESTART SESSION
|
|
222
|
+
```
|
|
@@ -46,8 +46,8 @@ Start by understanding the current project context, then ask questions one at a
|
|
|
46
46
|
**Implementation (if continuing):**
|
|
47
47
|
|
|
48
48
|
- Ask: "Ready to set up for implementation?"
|
|
49
|
-
- Use
|
|
50
|
-
- Use
|
|
49
|
+
- Use skill({ name: "using-git-worktrees" }) to create isolated workspace
|
|
50
|
+
- Use skill({ name: "writing-plans" }) to create detailed implementation plan
|
|
51
51
|
|
|
52
52
|
## Key Principles
|
|
53
53
|
|
|
@@ -54,7 +54,7 @@ Based on feedback:
|
|
|
54
54
|
After all tasks complete and verified:
|
|
55
55
|
|
|
56
56
|
- Announce: "I'm using finishing-a-development-branch skill to complete this work."
|
|
57
|
-
- **REQUIRED SUB-SKILL:** Use
|
|
57
|
+
- **REQUIRED SUB-SKILL:** Use skill({ name: "finishing-a-development-branch" })
|
|
58
58
|
- Follow that skill to verify tests, present options, execute choice
|
|
59
59
|
|
|
60
60
|
## When to Stop and Ask for Help
|
|
@@ -14,12 +14,14 @@ Contribute skills from your local branch back to the upstream repository.
|
|
|
14
14
|
## When to Share
|
|
15
15
|
|
|
16
16
|
**Share when:**
|
|
17
|
+
|
|
17
18
|
- Skill applies broadly (not project-specific)
|
|
18
19
|
- Pattern/technique others would benefit from
|
|
19
20
|
- Well-tested and documented
|
|
20
21
|
- Follows writing-skills guidelines
|
|
21
22
|
|
|
22
23
|
**Keep personal when:**
|
|
24
|
+
|
|
23
25
|
- Project-specific or organization-specific
|
|
24
26
|
- Experimental or unstable
|
|
25
27
|
- Contains sensitive information
|
|
@@ -28,7 +30,7 @@ Contribute skills from your local branch back to the upstream repository.
|
|
|
28
30
|
## Prerequisites
|
|
29
31
|
|
|
30
32
|
- `gh` CLI installed and authenticated
|
|
31
|
-
- Working directory is
|
|
33
|
+
- Working directory is `.opencode/skill/` (your project skills)
|
|
32
34
|
- **REQUIRED:** Skill has been tested using writing-skills TDD process
|
|
33
35
|
|
|
34
36
|
## Sharing Workflow
|
|
@@ -36,7 +38,7 @@ Contribute skills from your local branch back to the upstream repository.
|
|
|
36
38
|
### 1. Ensure You're on Main and Synced
|
|
37
39
|
|
|
38
40
|
```bash
|
|
39
|
-
cd
|
|
41
|
+
cd .opencode/skill/
|
|
40
42
|
git checkout main
|
|
41
43
|
git pull upstream main
|
|
42
44
|
git push origin main # Push to your fork
|
|
@@ -105,7 +107,7 @@ Here's a complete example of sharing a skill called "async-patterns":
|
|
|
105
107
|
|
|
106
108
|
```bash
|
|
107
109
|
# 1. Sync with upstream
|
|
108
|
-
cd
|
|
110
|
+
cd .opencode/skill/
|
|
109
111
|
git checkout main
|
|
110
112
|
git pull upstream main
|
|
111
113
|
git push origin main
|
|
@@ -146,14 +148,16 @@ Addresses common async pitfalls like race conditions, improper error handling, a
|
|
|
146
148
|
Once your PR is merged:
|
|
147
149
|
|
|
148
150
|
1. Sync your local main branch:
|
|
151
|
+
|
|
149
152
|
```bash
|
|
150
|
-
cd
|
|
153
|
+
cd .opencode/skill/
|
|
151
154
|
git checkout main
|
|
152
155
|
git pull upstream main
|
|
153
156
|
git push origin main
|
|
154
157
|
```
|
|
155
158
|
|
|
156
159
|
2. Delete the feature branch:
|
|
160
|
+
|
|
157
161
|
```bash
|
|
158
162
|
git branch -d "add-${skill_name}-skill"
|
|
159
163
|
git push origin --delete "add-${skill_name}-skill"
|
|
@@ -162,18 +166,22 @@ git push origin --delete "add-${skill_name}-skill"
|
|
|
162
166
|
## Troubleshooting
|
|
163
167
|
|
|
164
168
|
**"gh: command not found"**
|
|
169
|
+
|
|
165
170
|
- Install GitHub CLI: https://cli.github.com/
|
|
166
171
|
- Authenticate: `gh auth login`
|
|
167
172
|
|
|
168
173
|
**"Permission denied (publickey)"**
|
|
174
|
+
|
|
169
175
|
- Check SSH keys: `gh auth status`
|
|
170
176
|
- Set up SSH: https://docs.github.com/en/authentication
|
|
171
177
|
|
|
172
178
|
**"Skill already exists"**
|
|
179
|
+
|
|
173
180
|
- You're creating a modified version
|
|
174
181
|
- Consider different skill name or coordinate with the skill's maintainer
|
|
175
182
|
|
|
176
183
|
**PR merge conflicts**
|
|
184
|
+
|
|
177
185
|
- Rebase on latest upstream: `git fetch upstream && git rebase upstream/main`
|
|
178
186
|
- Resolve conflicts
|
|
179
187
|
- Force push: `git push -f origin your-branch`
|
|
@@ -183,6 +191,7 @@ git push origin --delete "add-${skill_name}-skill"
|
|
|
183
191
|
**Do NOT batch multiple skills in one PR.**
|
|
184
192
|
|
|
185
193
|
Each skill should:
|
|
194
|
+
|
|
186
195
|
- Have its own feature branch
|
|
187
196
|
- Have its own PR
|
|
188
197
|
- Be independently reviewable
|
|
@@ -113,7 +113,7 @@ After all tasks complete, dispatch final review:
|
|
|
113
113
|
After final review passes:
|
|
114
114
|
|
|
115
115
|
- Announce: "I'm using finishing-a-development-branch skill to complete this work."
|
|
116
|
-
- **REQUIRED SUB-SKILL:** Use
|
|
116
|
+
- **REQUIRED SUB-SKILL:** Use skill({ name: "finishing-a-development-branch" })
|
|
117
117
|
- Follow that skill to verify tests, present options, execute choice
|
|
118
118
|
|
|
119
119
|
## Example Workflow
|
|
@@ -116,7 +116,7 @@ You MUST complete each phase before proceeding to the next.
|
|
|
116
116
|
|
|
117
117
|
**WHEN error is deep in call stack:**
|
|
118
118
|
|
|
119
|
-
**REQUIRED SUB-SKILL:** Use
|
|
119
|
+
**REQUIRED SUB-SKILL:** Use skill({ name: "root-cause-tracing" }) for backward tracing technique
|
|
120
120
|
|
|
121
121
|
**Quick version:**
|
|
122
122
|
- Where does bad value originate?
|
|
@@ -181,7 +181,7 @@ You MUST complete each phase before proceeding to the next.
|
|
|
181
181
|
- Automated test if possible
|
|
182
182
|
- One-off test script if no framework
|
|
183
183
|
- MUST have before fixing
|
|
184
|
-
- **REQUIRED SUB-SKILL:** Use
|
|
184
|
+
- **REQUIRED SUB-SKILL:** Use skill({ name: "test-driven-development" }) for writing proper failing tests
|
|
185
185
|
|
|
186
186
|
2. **Implement Single Fix**
|
|
187
187
|
- Address the root cause identified
|