opencode-bonfire 1.4.0 → 2.0.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/README.md +12 -10
- package/files/agent/writer.md +127 -0
- package/files/command/bonfire-configure.md +49 -4
- package/files/command/bonfire-document.md +61 -134
- package/files/command/bonfire-review-pr.md +45 -91
- package/files/command/bonfire-spec.md +68 -226
- package/files/command/bonfire-strategic.md +166 -0
- package/files/opencode.json +0 -3
- package/package.json +1 -1
- package/files/agent/doc-writer.md +0 -120
- package/files/agent/spec-writer.md +0 -142
- package/files/command/bonfire-git-strategy.md +0 -91
- package/files/command/bonfire-handoff.md +0 -168
- package/files/command/bonfire-poc.md +0 -332
- package/files/command/bonfire-prd.md +0 -332
- package/files/command/bonfire-rfc.md +0 -267
- package/files/skill/handoff-awareness/SKILL.md +0 -64
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Create a Request for Comments (RFC) document
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Create RFC
|
|
6
|
-
|
|
7
|
-
A hybrid approach using subagents: research in isolated context, interview in main context, write in isolated context.
|
|
8
|
-
|
|
9
|
-
## Step 1: Find Git Root
|
|
10
|
-
|
|
11
|
-
Run `git rev-parse --show-toplevel` to locate the repository root.
|
|
12
|
-
|
|
13
|
-
## Step 2: Check Config
|
|
14
|
-
|
|
15
|
-
Read `<git-root>/.bonfire/config.json` if it exists.
|
|
16
|
-
|
|
17
|
-
**Docs location**: Read `docsLocation` from config. Default to `.bonfire/docs/` if not set.
|
|
18
|
-
|
|
19
|
-
## Step 3: Gather Initial Context
|
|
20
|
-
|
|
21
|
-
Get the topic from $ARGUMENTS or ask if unclear.
|
|
22
|
-
|
|
23
|
-
Check for existing context:
|
|
24
|
-
- Read `<git-root>/.bonfire/index.md` for project state
|
|
25
|
-
- Check for existing RFCs in docs location
|
|
26
|
-
- If issue ID provided, note for filename
|
|
27
|
-
|
|
28
|
-
## Step 4: Research Phase (Subagent)
|
|
29
|
-
|
|
30
|
-
**Progress**: Tell the user "Researching codebase for context and prior art..."
|
|
31
|
-
|
|
32
|
-
Use the task tool to invoke the **codebase-explorer** subagent for research.
|
|
33
|
-
|
|
34
|
-
Provide a research directive with these questions:
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
Research the codebase for RFC context: [TOPIC]
|
|
38
|
-
|
|
39
|
-
Find:
|
|
40
|
-
1. **Prior Art**: Existing implementations, related features, previous approaches
|
|
41
|
-
2. **Architecture**: Current system design, relevant components, integration points
|
|
42
|
-
3. **Constraints**: Technical limitations, dependencies, performance considerations
|
|
43
|
-
4. **Stakeholders**: Teams/systems that would be affected by changes
|
|
44
|
-
|
|
45
|
-
Return structured findings only - no raw file contents.
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Wait for the subagent to return findings** before proceeding.
|
|
49
|
-
|
|
50
|
-
### Research Validation
|
|
51
|
-
|
|
52
|
-
After the subagent returns, validate the response:
|
|
53
|
-
|
|
54
|
-
**Valid response contains at least one of:**
|
|
55
|
-
- `## Prior Art` or `## Patterns Found` with content
|
|
56
|
-
- `## Key Files` with entries
|
|
57
|
-
- `## Architecture` or `## Constraints` with items
|
|
58
|
-
|
|
59
|
-
**On valid response**: Proceed to Step 5.
|
|
60
|
-
|
|
61
|
-
**On invalid/empty response**:
|
|
62
|
-
1. Warn user: "Codebase exploration returned limited results. I'll research directly."
|
|
63
|
-
2. Fall back to in-context research using glob, grep, and read.
|
|
64
|
-
3. Continue to Step 5 with in-context findings.
|
|
65
|
-
|
|
66
|
-
## Step 5: Interview Phase (Main Context)
|
|
67
|
-
|
|
68
|
-
**Progress**: Tell the user "Starting interview (3 rounds: problem, solutions, logistics)..."
|
|
69
|
-
|
|
70
|
-
Using the research findings, interview the user with **informed questions** via the question tool.
|
|
71
|
-
|
|
72
|
-
### Round 1: Problem Definition
|
|
73
|
-
|
|
74
|
-
**Progress**: "Round 1/3: Problem definition..."
|
|
75
|
-
|
|
76
|
-
Ask about the problems being solved:
|
|
77
|
-
|
|
78
|
-
Example questions (adapt based on findings):
|
|
79
|
-
- "What specific problems does this RFC address? I found [existing approach] - what's not working?"
|
|
80
|
-
- "Who experiences these problems? End users, developers, ops?"
|
|
81
|
-
- "How do we know these are real problems? (metrics, incidents, feedback)"
|
|
82
|
-
- "I see [related system]. Is this problem isolated or connected to that?"
|
|
83
|
-
|
|
84
|
-
### Round 2: Proposed Solutions
|
|
85
|
-
|
|
86
|
-
**Progress**: "Round 2/3: Proposed solutions..."
|
|
87
|
-
|
|
88
|
-
Based on Round 1 answers and research, ask about solutions:
|
|
89
|
-
|
|
90
|
-
Example questions:
|
|
91
|
-
- "What's your primary proposed solution?"
|
|
92
|
-
- "I found [existing pattern]. Should the solution extend this or take a different approach?"
|
|
93
|
-
- "What alternatives did you consider? Why not [alternative approach]?"
|
|
94
|
-
- "What are the main tradeoffs of your proposed solution?"
|
|
95
|
-
|
|
96
|
-
### Round 3: Logistics & Scope (Required)
|
|
97
|
-
|
|
98
|
-
**Progress**: "Round 3/3: Logistics and scope (final round)..."
|
|
99
|
-
|
|
100
|
-
Always ask about logistics:
|
|
101
|
-
|
|
102
|
-
**Reviewers** (must ask):
|
|
103
|
-
- "Who should review this RFC? Which teams need to sign off?"
|
|
104
|
-
|
|
105
|
-
**Scope** (must ask):
|
|
106
|
-
- "What's explicitly out of scope for this RFC?"
|
|
107
|
-
|
|
108
|
-
**Timeline** (optional):
|
|
109
|
-
- "Any timeline constraints or dependencies?"
|
|
110
|
-
|
|
111
|
-
## Step 6: Write the RFC (Subagent)
|
|
112
|
-
|
|
113
|
-
**Progress**: Tell the user "Writing RFC document..."
|
|
114
|
-
|
|
115
|
-
Use the task tool to invoke the **doc-writer** subagent.
|
|
116
|
-
|
|
117
|
-
Provide the prompt in this exact format:
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
## Document Type
|
|
121
|
-
|
|
122
|
-
RFC (Request for Comments)
|
|
123
|
-
|
|
124
|
-
## Research Findings
|
|
125
|
-
|
|
126
|
-
<paste structured findings from Step 4>
|
|
127
|
-
|
|
128
|
-
## Interview Q&A
|
|
129
|
-
|
|
130
|
-
### Problem Definition
|
|
131
|
-
**Q**: <question from Round 1>
|
|
132
|
-
**A**: <user's answer>
|
|
133
|
-
|
|
134
|
-
### Proposed Solutions
|
|
135
|
-
**Q**: <question from Round 2>
|
|
136
|
-
**A**: <user's answer>
|
|
137
|
-
|
|
138
|
-
### Logistics & Scope
|
|
139
|
-
**Q**: <question from Round 3>
|
|
140
|
-
**A**: <user's answer>
|
|
141
|
-
|
|
142
|
-
## Document Metadata
|
|
143
|
-
|
|
144
|
-
- **Topic**: <topic name>
|
|
145
|
-
- **Author**: <from git config or ask>
|
|
146
|
-
- **Issue**: <issue ID or N/A>
|
|
147
|
-
- **Output Path**: <git-root>/<docsLocation>/rfc-<topic>.md
|
|
148
|
-
- **Date**: <YYYY-MM-DD>
|
|
149
|
-
|
|
150
|
-
## Template
|
|
151
|
-
|
|
152
|
-
Use this structure:
|
|
153
|
-
|
|
154
|
-
# RFC: <Title>
|
|
155
|
-
|
|
156
|
-
**Author(s):** <name>
|
|
157
|
-
**Reviewers:** <names/teams from interview>
|
|
158
|
-
**Status:** Draft
|
|
159
|
-
**Date:** <YYYY-MM-DD>
|
|
160
|
-
|
|
161
|
-
## Abstract
|
|
162
|
-
|
|
163
|
-
<!-- 1-3 sentences summarizing proposal and why -->
|
|
164
|
-
|
|
165
|
-
## Background
|
|
166
|
-
|
|
167
|
-
<!-- Context, history, prior work, relevant links -->
|
|
168
|
-
|
|
169
|
-
## Problems We Need To Solve
|
|
170
|
-
|
|
171
|
-
<!-- Bullet out concrete problems with evidence -->
|
|
172
|
-
|
|
173
|
-
- Problem 1...
|
|
174
|
-
- Problem 2...
|
|
175
|
-
|
|
176
|
-
## Proposed Solution
|
|
177
|
-
|
|
178
|
-
### Overview
|
|
179
|
-
|
|
180
|
-
### Architecture / Implementation
|
|
181
|
-
|
|
182
|
-
### Pros
|
|
183
|
-
|
|
184
|
-
- ...
|
|
185
|
-
|
|
186
|
-
### Cons / Tradeoffs
|
|
187
|
-
|
|
188
|
-
- ...
|
|
189
|
-
|
|
190
|
-
## Alternatives Considered
|
|
191
|
-
|
|
192
|
-
### Alternative A
|
|
193
|
-
|
|
194
|
-
- Summary
|
|
195
|
-
- Pros
|
|
196
|
-
- Cons
|
|
197
|
-
|
|
198
|
-
## Open Questions
|
|
199
|
-
|
|
200
|
-
<!-- Unresolved items needing feedback -->
|
|
201
|
-
|
|
202
|
-
- Question 1...
|
|
203
|
-
|
|
204
|
-
## Appendix
|
|
205
|
-
|
|
206
|
-
<!-- Links to issues, docs, prior RFCs -->
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
The subagent will write the RFC file directly to the Output Path.
|
|
210
|
-
|
|
211
|
-
**Naming convention**: `rfc-<topic>.md` or `rfc-<issue-id>-<topic>.md`
|
|
212
|
-
|
|
213
|
-
### Document Verification
|
|
214
|
-
|
|
215
|
-
After the doc-writer subagent returns, verify the RFC is complete.
|
|
216
|
-
|
|
217
|
-
**Key sections to check** (lenient - only these 4):
|
|
218
|
-
- `## Abstract`
|
|
219
|
-
- `## Problems We Need To Solve`
|
|
220
|
-
- `## Proposed Solution`
|
|
221
|
-
- `## Alternatives Considered`
|
|
222
|
-
|
|
223
|
-
**Verification steps:**
|
|
224
|
-
|
|
225
|
-
1. **Read the RFC file** at the output path
|
|
226
|
-
|
|
227
|
-
2. **If file missing or empty**:
|
|
228
|
-
- Warn user: "RFC file wasn't written. Writing directly..."
|
|
229
|
-
- Write the RFC yourself using the write tool
|
|
230
|
-
|
|
231
|
-
3. **If file exists, check for key sections**:
|
|
232
|
-
- Scan content for the 4 section headers above
|
|
233
|
-
- Track which sections are present/missing
|
|
234
|
-
|
|
235
|
-
4. **If all 4 sections present**:
|
|
236
|
-
- Tell user: "RFC written and verified (4/4 key sections present)."
|
|
237
|
-
- Proceed to Step 7.
|
|
238
|
-
|
|
239
|
-
5. **If sections missing**:
|
|
240
|
-
- Warn user: "RFC appears incomplete. Missing sections: [list]"
|
|
241
|
-
- Ask: "Proceed with partial RFC, retry write, or abort?"
|
|
242
|
-
|
|
243
|
-
## Step 7: Link to Session Context
|
|
244
|
-
|
|
245
|
-
Add a reference to the RFC in `<git-root>/.bonfire/index.md` under Current State.
|
|
246
|
-
|
|
247
|
-
## Step 8: Confirm
|
|
248
|
-
|
|
249
|
-
Read the generated RFC and present a summary. Ask if user wants to:
|
|
250
|
-
- Share with reviewers
|
|
251
|
-
- Refine specific sections
|
|
252
|
-
- Add more alternatives
|
|
253
|
-
- Save for later
|
|
254
|
-
|
|
255
|
-
## RFC Lifecycle
|
|
256
|
-
|
|
257
|
-
RFCs progress through states:
|
|
258
|
-
|
|
259
|
-
1. **Draft** - Initial creation, gathering feedback
|
|
260
|
-
2. **In Review** - Shared with reviewers, collecting comments
|
|
261
|
-
3. **Approved** - Accepted, ready for implementation
|
|
262
|
-
4. **Rejected** - Not moving forward (document why)
|
|
263
|
-
|
|
264
|
-
**When an RFC is approved**:
|
|
265
|
-
- Create implementation specs from it
|
|
266
|
-
- Link RFC in related issues/PRs
|
|
267
|
-
- Keep RFC as historical record
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Handoff Awareness
|
|
3
|
-
model: anthropic/claude-haiku-4-20250514
|
|
4
|
-
mode: task
|
|
5
|
-
hidden: true
|
|
6
|
-
tools:
|
|
7
|
-
- bash
|
|
8
|
-
- read
|
|
9
|
-
- glob
|
|
10
|
-
permission:
|
|
11
|
-
task:
|
|
12
|
-
"*": deny
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Handoff Awareness
|
|
16
|
-
|
|
17
|
-
This skill detects when a session handoff may be beneficial and suggests the appropriate action.
|
|
18
|
-
|
|
19
|
-
## When to Trigger
|
|
20
|
-
|
|
21
|
-
Activate when user mentions:
|
|
22
|
-
- Context concerns: "running out of context", "context limit", "context window"
|
|
23
|
-
- Length concerns: "conversation is getting long", "too much context", "large conversation"
|
|
24
|
-
- Fresh start: "should we start fresh?", "new session?", "hand off?", "start over?"
|
|
25
|
-
- Degraded quality: "you're losing context", "you forgot", "we already discussed this"
|
|
26
|
-
- Explicit ask: "can you hand off?", "transfer to new session"
|
|
27
|
-
|
|
28
|
-
## Instructions
|
|
29
|
-
|
|
30
|
-
1. **Check for .bonfire/ directory**:
|
|
31
|
-
```bash
|
|
32
|
-
git rev-parse --show-toplevel
|
|
33
|
-
```
|
|
34
|
-
Then check if `.bonfire/index.md` exists.
|
|
35
|
-
|
|
36
|
-
2. **If .bonfire/ exists**, suggest handoff:
|
|
37
|
-
|
|
38
|
-
> "I can hand off this session to a fresh Claude instance while preserving your work.
|
|
39
|
-
>
|
|
40
|
-
> Run `/bonfire-handoff` to:
|
|
41
|
-
> 1. Save current progress to `.bonfire/index.md`
|
|
42
|
-
> 2. Generate minimal handoff context
|
|
43
|
-
> 3. Spawn a new Claude session in an adjacent tmux pane
|
|
44
|
-
>
|
|
45
|
-
> The new session will have access to your full session history via `/bonfire-start`."
|
|
46
|
-
|
|
47
|
-
3. **If .bonfire/ doesn't exist**, suggest initialization:
|
|
48
|
-
|
|
49
|
-
> "To enable session handoff, first run `/bonfire-start` to initialize session tracking.
|
|
50
|
-
> This creates a `.bonfire/` directory that preserves context across sessions."
|
|
51
|
-
|
|
52
|
-
4. **If not in tmux**, mention the limitation:
|
|
53
|
-
|
|
54
|
-
> "Note: Automatic session spawning requires tmux. If you're not in tmux, you can still
|
|
55
|
-
> run `/bonfire-handoff` to generate the handoff context, then manually start a new
|
|
56
|
-
> session and paste the context."
|
|
57
|
-
|
|
58
|
-
## Important
|
|
59
|
-
|
|
60
|
-
- This skill **suggests** handoff, it does NOT trigger it automatically
|
|
61
|
-
- User must explicitly run `/bonfire-handoff` to perform the handoff
|
|
62
|
-
- Don't suggest handoff for short conversations or early in a session
|
|
63
|
-
- If user is mid-task, suggest completing the current atomic unit first
|
|
64
|
-
- Handoff is specifically for context limit concerns, not for switching topics
|