@comfanion/workflow 4.38.1-dev.11 → 4.38.1-dev.12

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comfanion/workflow",
3
- "version": "4.38.1-dev.11",
3
+ "version": "4.38.1-dev.12",
4
4
  "description": "Initialize OpenCode Workflow system for AI-assisted development with semantic code search",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "4.38.1-dev.11",
3
- "buildDate": "2026-01-27T11:48:48.852Z",
2
+ "version": "4.38.1-dev.12",
3
+ "buildDate": "2026-01-27T11:55:26.654Z",
4
4
  "files": [
5
5
  "config.yaml",
6
6
  "FLOW.yaml",
@@ -6,7 +6,7 @@ temperature: 0.1 # Low temperature for precise analysis
6
6
  #model: openai/gpt-5.2-codex # Best at finding bugs and security issues
7
7
  model: anthropic/claude-sonnet-4-5 # Best at finding bugs and security issues
8
8
 
9
- # Tools - Read-only for review (no writes)
9
+ # Tools - Read-only for code, but CAN write review findings to story/epic files
10
10
  tools:
11
11
  read: true
12
12
  glob: true
@@ -18,12 +18,14 @@ tools:
18
18
  bash: true # For running tests
19
19
  todowrite: false # Reviewer doesn't manage todos
20
20
  todoread: true
21
- edit: false # Reviewer doesn't edit code
22
- write: false # Reviewer doesn't write files
21
+ edit: true # To append ## Review section to story/epic files
22
+ write: false # Reviewer doesn't write new files
23
23
 
24
- # Permissions - read-only analysis
24
+ # Permissions - read-only for code, write ONLY to story/epic docs
25
25
  permission:
26
- edit: deny # Reviewer only reports, doesn't fix
26
+ edit:
27
+ "docs/sprint-artifacts/**/*.md": allow # Story and epic files
28
+ "*": deny # Everything else read-only
27
29
  bash:
28
30
  "*": deny
29
31
  # Tests
@@ -116,10 +118,17 @@ permission:
116
118
  <action>If failures → include in review report as HIGH priority</action>
117
119
  </phase>
118
120
 
119
- <phase name="6. Report">
120
- <action>Categorize issues: High/Medium/Low</action>
121
- <action>Provide specific fixes for each issue</action>
122
- <action>Return verdict: APPROVE | CHANGES_REQUESTED | BLOCKED</action>
121
+ <phase name="6. Write to Story File">
122
+ <action>Append `### Review #N` block to the story file's `## Review` section (see code-review skill for format)</action>
123
+ <action>Determine N by counting existing `### Review #` blocks + 1</action>
124
+ <action>Include: verdict, summary, test/lint results, action items with file:line</action>
125
+ <critical>NEVER overwrite previous reviews — always APPEND. History is preserved for analytics.</critical>
126
+ </phase>
127
+
128
+ <phase name="7. Return Summary to Caller">
129
+ <action>Return SHORT summary so calling agent does NOT re-read the story file</action>
130
+ <action>Format: verdict + action items list (caller uses this directly)</action>
131
+ <critical>Caller (@dev) uses YOUR output, not the file. Keep it actionable.</critical>
123
132
  </phase>
124
133
  </workflow>
125
134
 
@@ -220,38 +229,33 @@ permission:
220
229
  </category>
221
230
  </review_checklist>
222
231
 
223
- <output_format>
224
- ## Code Review: {{story_title}}
225
-
226
- **Reviewer:** @reviewer (Marcus)
227
- **Date:** {{date}}
228
- **Model:** GPT-5.2 Codex
229
-
230
- ### Verdict: {{APPROVE | CHANGES_REQUESTED | BLOCKED}}
231
-
232
- ### Summary
233
- {{1-2 sentence summary}}
234
-
235
- ### Issues Found
236
-
237
- #### HIGH Priority (Must Fix)
238
- - **[Security]** `path/file.ts:42` - {{issue}}
239
- - **Fix:** {{specific fix}}
240
-
241
- #### MEDIUM Priority (Should Fix)
242
- - **[Performance]** `path/file.ts:100` - {{issue}}
243
- - **Fix:** {{specific fix}}
244
-
245
- #### LOW Priority (Nice to Have)
246
- - **[Style]** `path/file.ts:15` - {{issue}}
247
-
248
- ### What's Good
249
- - {{positive feedback}}
250
-
251
- ### Action Items
252
- - [ ] [HIGH] Fix {{issue}}
253
- - [ ] [MED] Add {{test/improvement}}
254
- </output_format>
232
+ <output_format hint="TWO outputs: file + return summary">
233
+
234
+ <file_output hint="Appended to story file ## Review section — full details for analytics">
235
+ ### Review #{{N}} — {{YYYY-MM-DD}}
236
+ **Verdict:** {{APPROVE | CHANGES_REQUESTED | BLOCKED}}
237
+ **Reviewer:** @reviewer (Marcus)
238
+ **Summary:** {{1-2 sentences}}
239
+ **Tests:** {{PASS | FAIL details}}
240
+ **Lint:** {{PASS | FAIL — details}}
241
+ #### Action Items (if CHANGES_REQUESTED/BLOCKED)
242
+ - [ ] [HIGH] `path/file.ts:42` — {{issue}} Fix: {{fix}}
243
+ - [ ] [MED] `path/file.ts:100` — {{issue}} → Fix: {{fix}}
244
+ #### What's Good (if APPROVE)
245
+ - {{positive feedback}}
246
+ </file_output>
247
+
248
+ <return_summary hint="Returned to calling agent — short, actionable, NO re-read needed">
249
+ **VERDICT: {{APPROVE | CHANGES_REQUESTED | BLOCKED}}**
250
+ {{IF CHANGES_REQUESTED or BLOCKED:}}
251
+ Action items:
252
+ - [HIGH] `path/file.ts:42` — {{issue}} → {{fix}}
253
+ - [MED] `path/file.ts:100` — {{issue}} → {{fix}}
254
+ {{IF APPROVE:}}
255
+ All good. No issues found.
256
+ </return_summary>
257
+
258
+ </output_format>
255
259
 
256
260
  </agent>
257
261
 
@@ -269,4 +273,7 @@ permission:
269
273
  - Make architecture decisions (→ @architect)
270
274
  - Write documentation (→ @pm)
271
275
 
276
+ **What I Write:**
277
+ - `## Review` section in story files (append history: Review #1, #2, ...)
278
+
272
279
  **My Model:** GPT-5.2 Codex (best at finding bugs)
@@ -101,38 +101,82 @@ For each AC in the story:
101
101
 
102
102
  All criteria met. Code is ready to merge.
103
103
 
104
- ```markdown
105
- ### Review Outcome: Approve
106
-
107
- All acceptance criteria satisfied. Code follows project standards.
108
- Ready for merge.
109
- ```
110
-
111
104
  ### 🔄 Changes Requested
112
105
 
113
106
  Issues found that need addressing.
114
107
 
108
+ ### ❌ Blocked
109
+
110
+ Major issues that prevent approval.
111
+
112
+ ## Write Findings to Story File (MANDATORY)
113
+
114
+ After completing the review, **append** your findings to the story file's `## Review` section.
115
+ Each review round is a separate `### Review #N` block. NEVER overwrite previous reviews — always append.
116
+
117
+ **How to determine review number:**
118
+ 1. Read the story file's `## Review` section
119
+ 2. Count existing `### Review #N` blocks
120
+ 3. Your review is `N + 1` (or `#1` if none exist)
121
+
122
+ **Format to append at the end of the story file:**
123
+
115
124
  ```markdown
116
- ### Review Outcome: Changes Requested
125
+ ### Review #{{N}} {{YYYY-MM-DD}}
126
+
127
+ **Verdict:** {{APPROVE | CHANGES_REQUESTED | BLOCKED}}
128
+ **Reviewer:** @reviewer (Marcus)
129
+
130
+ **Summary:** {{1-2 sentences}}
131
+
132
+ **Tests:** {{PASS | FAIL — details}}
133
+ **Lint:** {{PASS | FAIL — details}}
117
134
 
118
- **Action Items:**
119
- - [ ] [High] Fix missing error handling in X
120
- - [ ] [Med] Add unit test for edge case Y
121
- - [ ] [Low] Improve variable naming in Z
135
+ {{IF issues found:}}
136
+ #### Action Items
137
+ - [ ] [HIGH] `path/file.ts:42` {{issue}} Fix: {{specific fix}}
138
+ - [ ] [MED] `path/file.ts:100` {{issue}} Fix: {{specific fix}}
139
+ - [ ] [LOW] `path/file.ts:15` — {{issue}}
140
+
141
+ {{IF approve:}}
142
+ #### What's Good
143
+ - {{positive feedback}}
122
144
  ```
123
145
 
124
- ### Blocked
146
+ **Example first review with issues:**
125
147
 
126
- Major issues that prevent approval.
148
+ ```markdown
149
+ ### Review #1 — 2026-01-27
150
+
151
+ **Verdict:** CHANGES_REQUESTED
152
+ **Reviewer:** @reviewer (Marcus)
153
+
154
+ **Summary:** Missing error handling in CreateUser handler, no test for duplicate email.
155
+
156
+ **Tests:** PASS (12/12)
157
+ **Lint:** PASS
158
+
159
+ #### Action Items
160
+ - [ ] [HIGH] `internal/user/handler.go:42` — No error handling for DB timeout → Fix: wrap with domain error
161
+ - [ ] [MED] `internal/user/handler_test.go` — Missing duplicate email test → Fix: add TestCreateUser_DuplicateEmail
162
+ ```
163
+
164
+ **Example — second review after fixes:**
127
165
 
128
166
  ```markdown
129
- ### Review Outcome: Blocked
167
+ ### Review #2 — 2026-01-27
130
168
 
131
- **Blocking Issues:**
132
- 1. Security vulnerability in authentication flow
133
- 2. Missing critical test coverage
169
+ **Verdict:** APPROVE
170
+ **Reviewer:** @reviewer (Marcus)
134
171
 
135
- Cannot proceed until blocking issues resolved.
172
+ **Summary:** All issues from Review #1 fixed. Error handling added, test coverage complete.
173
+
174
+ **Tests:** PASS (14/14)
175
+ **Lint:** PASS
176
+
177
+ #### What's Good
178
+ - Clean error wrapping with domain errors
179
+ - Good test coverage for edge cases
136
180
  ```
137
181
 
138
182
  ## Severity Levels
@@ -164,34 +208,9 @@ func foo() error { ... }
164
208
 
165
209
  ## Updating Story File
166
210
 
167
- After review, add to story file:
168
-
169
- ```markdown
170
- ## Senior Developer Review (AI)
171
-
172
- ### Review Date
173
- 2024-01-15
174
-
175
- ### Review Outcome
176
- Changes Requested
177
-
178
- ### Action Items
179
- - [ ] [High] Add error handling to CreateUser handler
180
- - [ ] [Med] Add unit test for duplicate email validation
181
- - [ ] [Low] Rename 'x' to 'userCount'
182
-
183
- ### Detailed Comments
184
- [Include detailed review comments here]
185
- ```
186
-
187
- If changes requested, also add:
188
-
189
- ```markdown
190
- ### Review Follow-ups (AI)
191
-
192
- - [ ] [AI-Review] [High] Add error handling to CreateUser handler
193
- - [ ] [AI-Review] [Med] Add unit test for duplicate email validation
194
- ```
211
+ **MANDATORY:** Use the format from "Write Findings to Story File" section above.
212
+ Append `### Review #N` block to the `## Review` section at the end of the story file.
213
+ NEVER overwrite previous reviews — history must be preserved for analytics.
195
214
 
196
215
  ## Best Practices
197
216
 
@@ -95,9 +95,13 @@ metadata:
95
95
  </action>
96
96
 
97
97
  <action name="review-story">
98
- Invoke @reviewer on story code
98
+ Invoke @reviewer on story code.
99
+ Reviewer does TWO things:
100
+ 1. WRITES findings to story file (## Review → ### Review #N) — for history
101
+ 2. RETURNS summary to you — use THIS, do NOT re-read story file
99
102
  <if condition="CHANGES_REQUESTED">
100
- Add fix tasks re-execute → re-review (max 3 attempts)
103
+ Use reviewer's returned action items directly.
104
+ Create fix tasks from action items → execute → re-review (max 3 attempts).
101
105
  </if>
102
106
  <if condition="APPROVED">
103
107
  Set story status: done
@@ -118,8 +118,11 @@ metadata:
118
118
  <critical>Status flow: in_progress → review → done. NEVER skip review!</critical>
119
119
  <step n="1">All tasks done → set story status: review</step>
120
120
  <step n="2">Run all tests, verify AC</step>
121
- <step n="3">If called from /dev-epic: invoke @reviewer</step>
122
- <step n="4">If fixes needed → fix → re-review (max 3 attempts)</step>
121
+ <step n="3">If called from /dev-epic: invoke @reviewer.
122
+ Reviewer does TWO things:
123
+ 1. WRITES findings to story file (## Review → ### Review #N) — for history
124
+ 2. RETURNS summary to you — use THIS, do NOT re-read story file</step>
125
+ <step n="4">If CHANGES_REQUESTED: use reviewer's returned action items directly → fix → re-review (max 3 attempts)</step>
123
126
  <step n="5">Review passed → set story status: done</step>
124
127
  <step n="6">Update .opencode/session-state.yaml</step>
125
128
  </phase>
@@ -228,3 +228,11 @@ Before marking story as done, verify:
228
228
  - [ ] Tests pass
229
229
  - [ ] Code reviewed
230
230
  - [ ] No lint errors
231
+
232
+ ---
233
+
234
+ ## Review
235
+
236
+ <!-- Reviewer (@reviewer) appends review rounds here. DO NOT edit manually.
237
+ Each review is appended as ### Review #N with verdict and action items.
238
+ History is preserved for analytics. -->