opencode-bonfire 1.5.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 CHANGED
@@ -24,22 +24,24 @@ bunx opencode-bonfire install --global
24
24
 
25
25
  | Component | Description |
26
26
  |-----------|-------------|
27
- | **8 Commands** | `/bonfire-start`, `/bonfire-end`, `/bonfire-spec`, `/bonfire-document`, `/bonfire-review`, `/bonfire-archive`, `/bonfire-configure`, `/bonfire-git-strategy` |
28
- | **4 Agents** | `codebase-explorer`, `spec-writer`, `doc-writer`, `work-reviewer` |
29
- | **1 Skill** | `bonfire-context` for loading session context |
27
+ | **9 Commands** | `/bonfire-start`, `/bonfire-end`, `/bonfire-spec`, `/bonfire-strategic`, `/bonfire-document`, `/bonfire-review`, `/bonfire-review-pr`, `/bonfire-archive`, `/bonfire-configure` |
28
+ | **3 Agents** | `codebase-explorer`, `writer`, `work-reviewer` |
29
+ | **2 Skills** | `bonfire-context`, `archive-bonfire-awareness` |
30
30
  | **1 Plugin** | Archive suggestions + compaction context preservation |
31
31
  | **1 Tool** | `bonfire` for structured session data |
32
32
 
33
33
  ## Usage
34
34
 
35
35
  ```
36
- /bonfire-start # Start session, scaffold if needed
37
- /bonfire-end # Update context, commit changes
38
- /bonfire-spec <topic> # Create implementation spec
39
- /bonfire-document <topic> # Document a codebase topic
40
- /bonfire-review # Find blindspots and gaps
41
- /bonfire-archive # Archive completed work
42
- /bonfire-configure # Change project settings
36
+ /bonfire-start # Start session, scaffold if needed
37
+ /bonfire-end # Update context, commit changes
38
+ /bonfire-spec <topic> # Create implementation spec
39
+ /bonfire-strategic <type> <topic> # Create RFC, PRD, or POC
40
+ /bonfire-document <topic> # Document a codebase topic
41
+ /bonfire-review # Find blindspots and gaps
42
+ /bonfire-review-pr <number> # Review a GitHub PR
43
+ /bonfire-archive # Archive completed work
44
+ /bonfire-configure # Change project settings (git, linear)
43
45
  ```
44
46
 
45
47
  ## How It Works
@@ -0,0 +1,127 @@
1
+ ---
2
+ name: writer
3
+ description: Synthesize research and interview findings into documents
4
+ model: anthropic/claude-sonnet-4-20250514
5
+ hidden: true
6
+ tools: [Read, Write]
7
+ permission:
8
+ task:
9
+ "*": deny
10
+ ---
11
+
12
+ You are a technical document writer. Given research findings and (optionally) interview answers, produce clear, actionable documentation.
13
+
14
+ ## Input Format
15
+
16
+ You'll receive a structured prompt with:
17
+
18
+ ```
19
+ ## Document Type
20
+
21
+ <spec | doc | rfc | prd | poc>
22
+
23
+ ## Research Findings
24
+
25
+ <structured markdown from codebase-explorer>
26
+
27
+ ## Interview Q&A (if applicable)
28
+
29
+ ### [Round Name]
30
+ **Q**: <question>
31
+ **A**: <user's answer>
32
+
33
+ ## Document Metadata
34
+
35
+ - **Topic**: <feature, system, or task name>
36
+ - **Issue**: <issue ID or N/A>
37
+ - **Output Path**: </absolute/path/to/file.md>
38
+ - **Date**: <YYYY-MM-DD>
39
+ - **Author**: <name, if applicable>
40
+
41
+ ## Template (optional)
42
+
43
+ <specific template structure to follow>
44
+ ```
45
+
46
+ Write the document to the exact path specified in Output Path.
47
+
48
+ ---
49
+
50
+ ## Document Types
51
+
52
+ ### Spec (Implementation Specification)
53
+
54
+ **Purpose**: Actionable implementation plan for a feature or task.
55
+
56
+ **Required sections**:
57
+ - `## Overview` - What we're building and why
58
+ - `## Decisions` - Key choices with rationale
59
+ - `## Implementation Steps` - Ordered, actionable steps
60
+ - `## Edge Cases` - Error handling, boundary conditions
61
+
62
+ ---
63
+
64
+ ### Doc (Reference Documentation)
65
+
66
+ **Purpose**: Help developers understand a system, feature, or pattern.
67
+
68
+ **Required sections**:
69
+ - `## Overview` - What this is and why it exists
70
+ - `## Key Files` - Important files with their roles
71
+ - `## How It Works` - Conceptual explanation of flow/behavior
72
+ - `## Gotchas` - Edge cases, pitfalls, things to watch out for
73
+
74
+ ---
75
+
76
+ ### RFC (Request for Comments)
77
+
78
+ **Purpose**: Technical decision proposal for team review.
79
+
80
+ **Required sections**:
81
+ - `## Abstract` - 1-3 sentences summarizing proposal
82
+ - `## Problems We Need To Solve` - Concrete problems with evidence
83
+ - `## Proposed Solution` - Overview, pros, cons/tradeoffs
84
+ - `## Alternatives Considered` - Other approaches evaluated
85
+
86
+ ---
87
+
88
+ ### PRD (Product Requirements Document)
89
+
90
+ **Purpose**: Product specification for feature development.
91
+
92
+ **Required sections**:
93
+ - `## 2. Problem` - Customer and internal pain points
94
+ - `## 5. Goals & Success Metrics` - Goals and measurable outcomes
95
+ - `## 6. Product Requirements` - Functional and non-functional requirements
96
+ - `## 9. Scope` - In scope and out of scope
97
+
98
+ ---
99
+
100
+ ### POC (Proof of Concept Plan)
101
+
102
+ **Purpose**: Customer evaluation plan with clear success criteria.
103
+
104
+ **Required sections**:
105
+ - `## 2. Goals` - What we want to validate
106
+ - `## 3. Success Criteria` - Concrete, measurable exit criteria
107
+ - `## 4. Scope` - In scope and out of scope
108
+ - `## 5. Plan & Timeline` - Phases and milestones
109
+
110
+ ---
111
+
112
+ ## Rules
113
+
114
+ 1. **Ground in research** - Reference actual files and patterns discovered
115
+ 2. **Honor interview answers** - Don't override user decisions
116
+ 3. **Be specific** - "Update UserService.ts" not "Update the service"
117
+ 4. **Don't invent** - If something wasn't discussed/found, don't add it
118
+ 5. **Keep it actionable** - Someone should be able to use this document
119
+
120
+ ## Quality Checklist
121
+
122
+ Before finishing, verify:
123
+ - [ ] All required sections for document type are present
124
+ - [ ] Content references real files from research (not placeholders)
125
+ - [ ] Interview decisions are captured (if applicable)
126
+ - [ ] No vague or generic content
127
+ - [ ] File written to exact Output Path specified
@@ -1,10 +1,17 @@
1
1
  ---
2
- description: Change project settings (locations, git strategy, Linear)
2
+ description: Change project settings (locations, git strategy, Linear, hooks)
3
3
  ---
4
4
 
5
5
  # Configure Bonfire
6
6
 
7
- Always runs interactively - asks all configuration questions regardless of arguments.
7
+ Change project settings. Supports targeted or full configuration.
8
+
9
+ ## Argument Handling
10
+
11
+ Based on `$ARGUMENTS`:
12
+ - Empty: Full interactive config (all settings)
13
+ - `git`: Git strategy only (quick mode - replaces /bonfire-git-strategy)
14
+ - `linear`: Linear integration only (quick mode)
8
15
 
9
16
  ## Step 1: Find Git Root
10
17
 
@@ -19,25 +19,7 @@ If no PR number provided:
19
19
  >
20
20
  > Example: `/bonfire-review-pr 333`"
21
21
 
22
- ## Step 2: Verify Environment
23
-
24
- Check if running inside tmux:
25
-
26
- ```bash
27
- [ -n "$TMUX" ] && echo "tmux: yes" || echo "tmux: no"
28
- ```
29
-
30
- **If not in tmux**: Provide manual instructions and abort:
31
-
32
- > "PR review with inline comments requires tmux for worktree isolation.
33
- >
34
- > **Manual alternative:**
35
- > 1. Create worktree: `git worktree add ../pr-<number>-review origin/<branch>`
36
- > 2. Open new terminal in that directory
37
- > 3. Run: `opencode 'Review this PR and help me post comments'`
38
- > 4. Clean up when done: `git worktree remove ../pr-<number>-review`"
39
-
40
- ## Step 3: Fetch PR Metadata
22
+ ## Step 2: Fetch PR Metadata
41
23
 
42
24
  Get PR details:
43
25
 
@@ -55,7 +37,7 @@ Extract and store:
55
37
  - `url` - PR URL
56
38
  - `files` - Changed files list
57
39
 
58
- ## Step 4: Find Git Root and Compute Paths
40
+ ## Step 3: Compute Worktree Path
59
41
 
60
42
  ```bash
61
43
  git rev-parse --show-toplevel
@@ -65,7 +47,7 @@ Compute worktree path: `<git-root>/../<repo-name>-pr-<number>-review`
65
47
 
66
48
  Example: `/Users/vieko/dev/gtm` → `/Users/vieko/dev/gtm-pr-333-review`
67
49
 
68
- ## Step 5: Create Worktree
50
+ ## Step 4: Create Worktree
69
51
 
70
52
  Create isolated worktree for PR branch:
71
53
 
@@ -82,85 +64,78 @@ git worktree add <worktree-path> origin/<headRefName>
82
64
  - No: Abort
83
65
  3. If other error: Report error and abort with suggestion to check `git worktree list`
84
66
 
85
- ## Step 6: Get PR Diff Summary
67
+ ## Step 5: Get PR Diff
86
68
 
87
69
  Get the diff for context:
88
70
 
89
71
  ```bash
90
- cd <worktree-path> && git diff origin/<baseRefName>...HEAD --stat
72
+ git -C <worktree-path> diff origin/<baseRefName>...HEAD --stat
91
73
  ```
92
74
 
93
75
  Get changed files:
94
76
 
95
77
  ```bash
96
- cd <worktree-path> && git diff origin/<baseRefName>...HEAD --name-only
78
+ git -C <worktree-path> diff origin/<baseRefName>...HEAD --name-only
97
79
  ```
98
80
 
99
- ## Step 7: Generate Review Context
100
-
101
- Create context document for spawned session.
102
-
103
- Write to `<worktree-path>/.bonfire-pr-review-context.md`:
104
-
105
- ```markdown
106
- # PR Review Context
107
-
108
- **PR**: #<number> - <title>
109
- **URL**: <url>
110
- **Branch**: <headRefName> → <baseRefName>
111
- **Commit**: <headRefOid>
112
-
113
- ## Changed Files
114
-
115
- <list of changed files>
116
-
117
- ## PR Description
118
-
119
- <body from PR>
120
-
121
- ---
122
-
123
- ## Instructions
81
+ ## Step 6: Run Review (Subagent)
124
82
 
125
- You are reviewing PR #<number> in an isolated worktree.
83
+ **Progress**: Tell the user "Reviewing PR for blindspots and gaps..."
126
84
 
127
- ### Step 1: Run Review
85
+ Use the Task tool to invoke the **work-reviewer** agent.
128
86
 
129
- Use the task tool to invoke the **work-reviewer** subagent:
87
+ Provide the review context:
130
88
 
131
89
  ```
132
90
  Review this pull request for blindspots, gaps, and improvements.
133
91
 
134
92
  **Scope**: PR #<number> - <title>
135
93
 
94
+ **PR Description**:
95
+ <body from PR>
96
+
136
97
  **Files changed**:
137
98
  <list of changed files>
138
99
 
139
- **PR Description**:
140
- <body>
100
+ **Worktree path**: <worktree-path>
141
101
 
102
+ Read the changed files from the worktree to understand the actual changes.
142
103
  Return categorized findings with severity, effort, and specific file:line references.
143
104
  ```
144
105
 
145
- ### Step 2: Present Findings
106
+ **Wait for the subagent to return findings** before proceeding.
107
+
108
+ ### Review Validation
109
+
110
+ After the subagent returns, validate the response:
146
111
 
147
- After review completes, present findings grouped by severity.
112
+ **Valid response contains:**
113
+ - Findings with file:line references where applicable
114
+ - Severity categorization
148
115
 
149
- For each finding, note:
116
+ **On subagent failure**: Fall back to in-context review using the diff.
117
+
118
+ ## Step 7: Present Findings
119
+
120
+ Present the findings grouped by severity:
121
+
122
+ For each finding, show:
150
123
  - File and line number (if applicable)
151
124
  - Severity (critical/moderate/minor)
152
125
  - Description
153
126
 
154
- ### Step 3: Batch Comment Selection
127
+ ## Step 8: Batch Comment Selection
155
128
 
156
129
  Ask user: "Which findings should I post as PR comments?"
157
130
 
158
- Options:
159
- 1. List findings by number, let user select (e.g., "1, 3, 5")
160
- 2. "All" - post all findings
131
+ Use the question tool with options:
132
+ 1. "All" - post all findings
133
+ 2. "Select" - user will specify which ones (e.g., "1, 3, 5")
161
134
  3. "None" - skip commenting
162
135
 
163
- ### Step 4: Post Inline Comments
136
+ If "Select" chosen, ask which finding numbers to post.
137
+
138
+ ## Step 9: Post Comments
164
139
 
165
140
  For each selected finding with a file:line reference, post an inline comment:
166
141
 
@@ -186,44 +161,23 @@ gh pr comment <number> --body "**Review Finding**
186
161
  *Severity: <severity> | Effort: <effort>*"
187
162
  ```
188
163
 
189
- **Note**: GitHub only allows inline comments on files that are part of the PR diff. If a finding references a file not in the diff (e.g., missing config in turbo.json when turbo.json wasn't changed), post it as a general PR comment instead.
164
+ **Note**: GitHub only allows inline comments on files that are part of the PR diff. If a finding references a file not in the diff, post it as a general PR comment instead.
190
165
 
191
- ### Step 5: Offer Cleanup
166
+ ## Step 10: Cleanup Worktree
192
167
 
193
168
  After commenting, ask: "Review complete. Remove worktree?"
194
169
 
195
170
  If yes:
196
171
  ```bash
197
- cd <original-git-root>
198
172
  git worktree remove <worktree-path>
199
173
  ```
200
174
 
201
175
  Report: "Worktree cleaned up. PR review complete."
202
- ```
203
176
 
204
- ## Step 8: Spawn Review Session
177
+ ## Step 11: Confirm
205
178
 
206
- Spawn a new OpenCode session in the worktree:
207
-
208
- ```bash
209
- WORKTREE_PATH="<computed-worktree-path>"
210
- CONTEXT="$(cat "$WORKTREE_PATH/.bonfire-pr-review-context.md")"
211
- tmux split-window -h -c "$WORKTREE_PATH" \
212
- "opencode --append-system-prompt '$CONTEXT' 'Ready to review PR #<number>. Starting work-reviewer subagent...'"
213
- ```
214
-
215
- **Verify spawn succeeded**: If tmux fails (terminal too small), warn user and provide manual instructions.
216
-
217
- ## Step 9: Confirm
218
-
219
- Tell the user:
220
-
221
- > **PR review session spawned.**
222
- >
223
- > - Worktree created at `<worktree-path>`
224
- > - Review session opened in adjacent pane
225
- > - The new session will run work-reviewer and help you post comments
226
- >
227
- > When done, the review session will offer to clean up the worktree.
228
- >
229
- > You can continue working here - your current branch is unchanged.
179
+ Summarize:
180
+ - PR reviewed: #<number> - <title>
181
+ - Findings: <count> total, <posted> posted as comments
182
+ - PR URL for reference
183
+ - Worktree status (cleaned up or retained)
@@ -0,0 +1,166 @@
1
+ ---
2
+ description: Create strategic documents (RFC, PRD, POC)
3
+ ---
4
+
5
+ # Create Strategic Document
6
+
7
+ Create a strategic document of type **$1** for **$2**.
8
+
9
+ ---
10
+
11
+ ## Document Type Detection
12
+
13
+ Parse $ARGUMENTS:
14
+ - First word: document type (rfc, prd, poc)
15
+ - Remaining: topic/subject
16
+
17
+ Examples:
18
+ - `/bonfire-strategic rfc authentication` → RFC about authentication
19
+ - `/bonfire-strategic prd dark-mode` → PRD about dark mode feature
20
+ - `/bonfire-strategic poc acme-corp` → POC plan for Acme Corp
21
+
22
+ If type not recognized or missing, ask user to specify.
23
+
24
+ ---
25
+
26
+ ## Supported Types
27
+
28
+ | Type | Full Name | Use Case |
29
+ |------|-----------|----------|
30
+ | `rfc` | Request for Comments | Technical decisions, architecture proposals |
31
+ | `prd` | Product Requirements Document | Product specs, feature definitions |
32
+ | `poc` | Proof of Concept Plan | Customer evaluations, technical validations |
33
+
34
+ ---
35
+
36
+ ## Shared Flow
37
+
38
+ All document types follow the same research → interview → write pattern:
39
+
40
+ ### Phase 1: Research (Subagent)
41
+
42
+ **Progress**: Tell the user "Researching codebase for context..."
43
+
44
+ Use the Task tool to invoke the **codebase-explorer** agent.
45
+
46
+ Research questions vary by type:
47
+
48
+ **RFC**: Prior art, architecture, constraints, stakeholders
49
+ **PRD**: Related features, user flows, data model, technical constraints
50
+ **POC**: Relevant features, integration points, configuration, limitations
51
+
52
+ **Wait for findings** before proceeding.
53
+
54
+ ### Phase 2: Interview (Main Context)
55
+
56
+ **Progress**: Tell the user "Starting interview..."
57
+
58
+ Interview rounds vary by type:
59
+
60
+ **RFC** (3 rounds):
61
+ 1. Problem definition
62
+ 2. Proposed solutions
63
+ 3. Logistics & scope
64
+
65
+ **PRD** (4 rounds):
66
+ 1. Problem & opportunity
67
+ 2. Target users
68
+ 3. Requirements & metrics
69
+ 4. Scope
70
+
71
+ **POC** (4 rounds):
72
+ 1. Customer context
73
+ 2. Goals & success criteria
74
+ 3. Scope & timeline
75
+ 4. Risks & responsibilities
76
+
77
+ Use the question tool with informed questions based on research.
78
+
79
+ ### Phase 3: Write (Subagent)
80
+
81
+ **Progress**: Tell the user "Writing document..."
82
+
83
+ Use the Task tool to invoke the **writer** agent.
84
+
85
+ Provide:
86
+ - Document type
87
+ - Research findings
88
+ - Interview Q&A
89
+ - Output path
90
+ - Template structure (type-specific)
91
+
92
+ ### Phase 4: Verify & Confirm
93
+
94
+ Verify required sections are present (4 key sections per type).
95
+
96
+ If incomplete, offer: proceed / retry / abort.
97
+
98
+ ---
99
+
100
+ ## Type-Specific Details
101
+
102
+ ### RFC (Request for Comments)
103
+
104
+ **Interview rounds**:
105
+ - Round 1: Problem definition (what problems, who experiences, evidence)
106
+ - Round 2: Proposed solutions (approach, alternatives, tradeoffs)
107
+ - Round 3: Logistics (reviewers, scope, timeline)
108
+
109
+ **Required sections**:
110
+ - `## Abstract`
111
+ - `## Problems We Need To Solve`
112
+ - `## Proposed Solution`
113
+ - `## Alternatives Considered`
114
+
115
+ **Naming**: `rfc-<topic>.md` or `rfc-<issue-id>-<topic>.md`
116
+
117
+ ---
118
+
119
+ ### PRD (Product Requirements Document)
120
+
121
+ **Interview rounds**:
122
+ - Round 1: Problem & opportunity (pain points, why now, business case)
123
+ - Round 2: Target users (primary/secondary audiences, plan gating)
124
+ - Round 3: Requirements & metrics (must-haves, success metrics)
125
+ - Round 4: Scope (in/out of scope, dependencies)
126
+
127
+ **Required sections**:
128
+ - `## 2. Problem`
129
+ - `## 5. Goals & Success Metrics`
130
+ - `## 6. Product Requirements`
131
+ - `## 9. Scope`
132
+
133
+ **Naming**: `prd-<feature>.md` or `prd-<issue-id>-<feature>.md`
134
+
135
+ ---
136
+
137
+ ### POC (Proof of Concept Plan)
138
+
139
+ **Interview rounds**:
140
+ - Round 1: Customer context (who, current state, why evaluating)
141
+ - Round 2: Goals & success criteria (what to prove, measurable outcomes)
142
+ - Round 3: Scope & timeline (in/out scope, dates, deadlines)
143
+ - Round 4: Risks & responsibilities (ownership, assumptions, risks)
144
+
145
+ **Required sections**:
146
+ - `## 2. Goals`
147
+ - `## 3. Success Criteria`
148
+ - `## 4. Scope`
149
+ - `## 5. Plan & Timeline`
150
+
151
+ **Naming**: `poc-<customer>.md` or `poc-<issue-id>-<customer>.md`
152
+
153
+ ---
154
+
155
+ ## File Locations
156
+
157
+ - **Config**: `<git-root>/.bonfire/config.json` contains `docsLocation`
158
+ - **Default**: `.bonfire/docs/` if not configured
159
+
160
+ ---
161
+
162
+ ## Post-Write
163
+
164
+ 1. **Verify** document has required sections
165
+ 2. **Link** to session context in `<git-root>/.bonfire/index.md`
166
+ 3. **Confirm** with user and offer next steps
@@ -7,9 +7,6 @@
7
7
  },
8
8
  {
9
9
  "directory": "skill/archive-bonfire-awareness"
10
- },
11
- {
12
- "directory": "skill/handoff-awareness"
13
10
  }
14
11
  ]
15
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-bonfire",
3
- "version": "1.5.0",
3
+ "version": "2.0.0",
4
4
  "description": "OpenCode forgets everything between sessions. Bonfire remembers.",
5
5
  "type": "module",
6
6
  "bin": {