mobius-loop 1.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/.claude/commands/linear/define.md +22 -0
- package/.claude/commands/linear/execute.md +22 -0
- package/.claude/commands/linear/refine.md +22 -0
- package/.claude/commands/linear/verify.md +22 -0
- package/.claude/skills/define-linear-issue/SKILL.md +386 -0
- package/.claude/skills/execute-linear-issue/SKILL.md +629 -0
- package/.claude/skills/refine-linear-issue/SKILL.md +379 -0
- package/.claude/skills/verify-linear-issue/SKILL.md +663 -0
- package/AGENTS.md +70 -0
- package/LICENSE +21 -0
- package/README.md +457 -0
- package/dist/bin/mobius.d.ts +3 -0
- package/dist/bin/mobius.d.ts.map +1 -0
- package/dist/bin/mobius.js +75 -0
- package/dist/bin/mobius.js.map +1 -0
- package/dist/commands/config.d.ts +6 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +88 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +86 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/run.d.ts +10 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +62 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/setup.d.ts +2 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +131 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/lib/checks/cclean.d.ts +3 -0
- package/dist/lib/checks/cclean.d.ts.map +1 -0
- package/dist/lib/checks/cclean.js +23 -0
- package/dist/lib/checks/cclean.js.map +1 -0
- package/dist/lib/checks/claude.d.ts +3 -0
- package/dist/lib/checks/claude.d.ts.map +1 -0
- package/dist/lib/checks/claude.js +38 -0
- package/dist/lib/checks/claude.js.map +1 -0
- package/dist/lib/checks/config.d.ts +4 -0
- package/dist/lib/checks/config.d.ts.map +1 -0
- package/dist/lib/checks/config.js +45 -0
- package/dist/lib/checks/config.js.map +1 -0
- package/dist/lib/checks/docker.d.ts +3 -0
- package/dist/lib/checks/docker.d.ts.map +1 -0
- package/dist/lib/checks/docker.js +46 -0
- package/dist/lib/checks/docker.js.map +1 -0
- package/dist/lib/checks/linear-mcp.d.ts +3 -0
- package/dist/lib/checks/linear-mcp.d.ts.map +1 -0
- package/dist/lib/checks/linear-mcp.js +46 -0
- package/dist/lib/checks/linear-mcp.js.map +1 -0
- package/dist/lib/checks/path.d.ts +5 -0
- package/dist/lib/checks/path.d.ts.map +1 -0
- package/dist/lib/checks/path.js +49 -0
- package/dist/lib/checks/path.js.map +1 -0
- package/dist/lib/config.d.ts +37 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +145 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/paths.d.ts +39 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +117 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/mobius.config.yaml +38 -0
- package/package.json +56 -0
- package/scripts/mobius.sh +394 -0
- package/scripts/render-diagrams.sh +38 -0
- package/scripts/render-terminal.sh +49 -0
|
@@ -0,0 +1,663 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verify-linear-issue
|
|
3
|
+
description: Verify a completed Linear issue by comparing implementation against acceptance criteria, running tests, and critiquing the work. Adds review notes as a comment on the Linear ticket. Use as the final step in the Linear workflow after execute-linear-issue, when the user mentions "verify", "review", or "check" a Linear issue.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<objective>
|
|
7
|
+
Perform a thorough verification of a completed Linear issue implementation. This skill compares what was actually built against the intended goal and acceptance criteria, identifies gaps, runs validation checks, and documents the review on the Linear ticket.
|
|
8
|
+
|
|
9
|
+
This is the fourth and final step in the Linear issue workflow:
|
|
10
|
+
1. **define-linear-issue** - Creates well-defined issues with acceptance criteria
|
|
11
|
+
2. **refine-linear-issue** - Breaks issues into single-file-focused sub-tasks with dependencies
|
|
12
|
+
3. **execute-linear-issue** - Implements sub-tasks one at a time
|
|
13
|
+
4. **verify-linear-issue** (this skill) - Validates implementation against acceptance criteria
|
|
14
|
+
</objective>
|
|
15
|
+
|
|
16
|
+
<context>
|
|
17
|
+
Verification is critical for catching:
|
|
18
|
+
- **Incomplete implementations**: Acceptance criteria not fully addressed
|
|
19
|
+
- **Scope drift**: Changes that don't match the original intent
|
|
20
|
+
- **Technical debt**: Shortcuts or workarounds that need follow-up
|
|
21
|
+
- **Missing tests**: Functionality without proper test coverage
|
|
22
|
+
- **Regressions**: Changes that break existing functionality
|
|
23
|
+
|
|
24
|
+
The review adds a structured comment to the Linear ticket documenting findings, making the verification visible to the team.
|
|
25
|
+
</context>
|
|
26
|
+
|
|
27
|
+
<quick_start>
|
|
28
|
+
<invocation>
|
|
29
|
+
Pass the Linear issue identifier:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
/verify-linear-issue VRZ-123
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Or invoke programmatically:
|
|
36
|
+
```
|
|
37
|
+
Skill: verify-linear-issue
|
|
38
|
+
Args: VRZ-123
|
|
39
|
+
```
|
|
40
|
+
</invocation>
|
|
41
|
+
|
|
42
|
+
<workflow>
|
|
43
|
+
1. **Fetch issue context** - Get title, description, acceptance criteria, comments, sub-tasks
|
|
44
|
+
2. **Analyze implementation** - Review recent commits, changed files, code
|
|
45
|
+
3. **Run verification checks** - Tests, typecheck, lint
|
|
46
|
+
4. **Compare against criteria** - Check each acceptance criterion
|
|
47
|
+
5. **Critique implementation** - Identify issues, improvements, concerns
|
|
48
|
+
6. **Generate review report** - Structured analysis with findings
|
|
49
|
+
7. **Post to Linear** - Add review as comment on the ticket
|
|
50
|
+
8. **Report status** - Summary with pass/fail and recommendations
|
|
51
|
+
</workflow>
|
|
52
|
+
</quick_start>
|
|
53
|
+
|
|
54
|
+
<issue_context_phase>
|
|
55
|
+
<fetch_issue>
|
|
56
|
+
First, retrieve full issue details:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
mcp__plugin_linear_linear__get_issue
|
|
60
|
+
id: "{issue-id}"
|
|
61
|
+
includeRelations: true
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Extract:
|
|
65
|
+
- **Title and description**: What was supposed to be built
|
|
66
|
+
- **Acceptance criteria**: Checklist of requirements (look for checkbox patterns)
|
|
67
|
+
- **Labels**: Bug/Feature/Improvement for context
|
|
68
|
+
- **Priority**: Urgency level
|
|
69
|
+
- **Related issues**: Context from connected work
|
|
70
|
+
</fetch_issue>
|
|
71
|
+
|
|
72
|
+
<fetch_comments>
|
|
73
|
+
Get implementation context from comments:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
mcp__plugin_linear_linear__list_comments
|
|
77
|
+
issueId: "{issue-id}"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Look for:
|
|
81
|
+
- Implementation notes from execute-linear-issue
|
|
82
|
+
- Design decisions or constraints
|
|
83
|
+
- Questions or clarifications
|
|
84
|
+
- Commit references
|
|
85
|
+
</fetch_comments>
|
|
86
|
+
|
|
87
|
+
<fetch_subtasks>
|
|
88
|
+
If issue has sub-tasks, get their status:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
mcp__plugin_linear_linear__list_issues
|
|
92
|
+
parentId: "{issue-id}"
|
|
93
|
+
includeArchived: false
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Verify:
|
|
97
|
+
- All sub-tasks are in "Done" or "In Progress" (ready for review) state
|
|
98
|
+
- No sub-tasks are still blocked or in Backlog
|
|
99
|
+
- Each sub-task has completion comments
|
|
100
|
+
</fetch_subtasks>
|
|
101
|
+
|
|
102
|
+
<context_summary>
|
|
103
|
+
Build verification context:
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
# Verification Context
|
|
107
|
+
|
|
108
|
+
## Issue: {ID} - {Title}
|
|
109
|
+
**Type**: {Bug/Feature/Improvement}
|
|
110
|
+
**Priority**: {level}
|
|
111
|
+
|
|
112
|
+
## Description
|
|
113
|
+
{Full description}
|
|
114
|
+
|
|
115
|
+
## Acceptance Criteria
|
|
116
|
+
- [ ] Criterion 1
|
|
117
|
+
- [ ] Criterion 2
|
|
118
|
+
- [ ] Criterion 3
|
|
119
|
+
|
|
120
|
+
## Sub-tasks
|
|
121
|
+
| ID | Title | Status | Files Modified |
|
|
122
|
+
|----|-------|--------|----------------|
|
|
123
|
+
| ... | ... | ... | ... |
|
|
124
|
+
|
|
125
|
+
## Implementation Notes (from comments)
|
|
126
|
+
{Key decisions, constraints, commit references}
|
|
127
|
+
```
|
|
128
|
+
</context_summary>
|
|
129
|
+
</issue_context_phase>
|
|
130
|
+
|
|
131
|
+
<implementation_analysis_phase>
|
|
132
|
+
<git_analysis>
|
|
133
|
+
Analyze recent commits related to the issue:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Find commits referencing the issue
|
|
137
|
+
git log --oneline --all --grep="{issue-id}" | head -20
|
|
138
|
+
|
|
139
|
+
# Get the branch if working on feature branch
|
|
140
|
+
git branch --contains | head -5
|
|
141
|
+
|
|
142
|
+
# Show files changed in recent commits
|
|
143
|
+
git log --oneline --name-only -10
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Extract:
|
|
147
|
+
- Commit messages and hashes
|
|
148
|
+
- Files created or modified
|
|
149
|
+
- Commit authors and dates
|
|
150
|
+
</git_analysis>
|
|
151
|
+
|
|
152
|
+
<code_review>
|
|
153
|
+
For each modified file, perform code review:
|
|
154
|
+
|
|
155
|
+
1. **Read the file** to understand what was implemented
|
|
156
|
+
2. **Check for patterns**: Does it follow codebase conventions?
|
|
157
|
+
3. **Verify completeness**: Does the code address the acceptance criteria?
|
|
158
|
+
4. **Identify concerns**: Any potential bugs, edge cases, or issues?
|
|
159
|
+
|
|
160
|
+
Focus areas:
|
|
161
|
+
- Error handling
|
|
162
|
+
- Input validation
|
|
163
|
+
- Edge cases
|
|
164
|
+
- Type safety
|
|
165
|
+
- Test coverage
|
|
166
|
+
- Documentation
|
|
167
|
+
</code_review>
|
|
168
|
+
|
|
169
|
+
<test_file_review>
|
|
170
|
+
Review corresponding test files:
|
|
171
|
+
|
|
172
|
+
- Do tests exist for new functionality?
|
|
173
|
+
- Do tests cover edge cases mentioned in acceptance criteria?
|
|
174
|
+
- Are tests meaningful (not just coverage padding)?
|
|
175
|
+
- Do test names describe behavior clearly?
|
|
176
|
+
</test_file_review>
|
|
177
|
+
</implementation_analysis_phase>
|
|
178
|
+
|
|
179
|
+
<verification_checks_phase>
|
|
180
|
+
<run_tests>
|
|
181
|
+
Execute the test suite:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
# Run all tests
|
|
185
|
+
just test
|
|
186
|
+
|
|
187
|
+
# Or run tests for specific files
|
|
188
|
+
just test-file {pattern}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Capture:
|
|
192
|
+
- Pass/fail count
|
|
193
|
+
- Any failures with error messages
|
|
194
|
+
- Coverage information if available
|
|
195
|
+
</run_tests>
|
|
196
|
+
|
|
197
|
+
<run_typecheck>
|
|
198
|
+
Verify type safety:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
just typecheck
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Capture any type errors or warnings.
|
|
205
|
+
</run_typecheck>
|
|
206
|
+
|
|
207
|
+
<run_lint>
|
|
208
|
+
Check code quality:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
just lint
|
|
212
|
+
# or
|
|
213
|
+
bun run lint
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Note any linting issues.
|
|
217
|
+
</run_lint>
|
|
218
|
+
|
|
219
|
+
<check_cicd_status>
|
|
220
|
+
Verify CI/CD pipeline status before approving:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Check if there's an open PR for the current branch
|
|
224
|
+
gh pr view --json number,state,statusCheckRollup 2>/dev/null
|
|
225
|
+
|
|
226
|
+
# If no PR, check the latest workflow runs for the branch
|
|
227
|
+
gh run list --branch $(git branch --show-current) --limit 5
|
|
228
|
+
|
|
229
|
+
# Get detailed status of the most recent run
|
|
230
|
+
gh run view --json status,conclusion,jobs
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**CI/CD Check Logic**:
|
|
234
|
+
|
|
235
|
+
1. **If PR exists**: Use `statusCheckRollup` to get all check statuses
|
|
236
|
+
- All checks PASS: CI status = PASS
|
|
237
|
+
- Any check PENDING: CI status = PENDING (wait or note in review)
|
|
238
|
+
- Any check FAILURE: CI status = FAIL
|
|
239
|
+
|
|
240
|
+
2. **If no PR**: Check latest workflow run on branch
|
|
241
|
+
- `conclusion: success`: CI status = PASS
|
|
242
|
+
- `conclusion: failure`: CI status = FAIL
|
|
243
|
+
- `status: in_progress`: CI status = PENDING
|
|
244
|
+
|
|
245
|
+
3. **If no CI configured**: Note this in review (CI status = N/A)
|
|
246
|
+
|
|
247
|
+
**Important**: A failing CI/CD status should block PASS recommendation. The implementation may be correct, but if CI is failing, it's not ready to merge.
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# Example: Parse PR check status
|
|
251
|
+
gh pr view --json statusCheckRollup --jq '.statusCheckRollup[] | "\(.name): \(.conclusion // .status)"'
|
|
252
|
+
|
|
253
|
+
# Example: Get workflow run conclusion
|
|
254
|
+
gh run list --branch $(git branch --show-current) --limit 1 --json conclusion,status --jq '.[0]'
|
|
255
|
+
```
|
|
256
|
+
</check_cicd_status>
|
|
257
|
+
|
|
258
|
+
<verification_summary>
|
|
259
|
+
Compile verification results:
|
|
260
|
+
|
|
261
|
+
```markdown
|
|
262
|
+
## Verification Checks
|
|
263
|
+
|
|
264
|
+
| Check | Status | Details |
|
|
265
|
+
|-------|--------|---------|
|
|
266
|
+
| Tests | PASS/FAIL | X passed, Y failed |
|
|
267
|
+
| Typecheck | PASS/FAIL | {error count if any} |
|
|
268
|
+
| Lint | PASS/FAIL | {warning count if any} |
|
|
269
|
+
| CI/CD | PASS/FAIL/PENDING/N/A | {workflow status, failed jobs if any} |
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**CI/CD blocking logic**: If CI/CD status is FAIL, the overall verification status cannot be PASS, even if all other checks pass. A failing pipeline indicates the code is not ready for merge.
|
|
273
|
+
</verification_summary>
|
|
274
|
+
</verification_checks_phase>
|
|
275
|
+
|
|
276
|
+
<criteria_comparison_phase>
|
|
277
|
+
<criterion_by_criterion>
|
|
278
|
+
For each acceptance criterion, evaluate:
|
|
279
|
+
|
|
280
|
+
1. **Is it addressed?** - Code exists that implements this requirement
|
|
281
|
+
2. **Is it complete?** - All aspects of the criterion are handled
|
|
282
|
+
3. **Is it testable?** - There are tests verifying this behavior
|
|
283
|
+
4. **Is it correct?** - The implementation matches the intent
|
|
284
|
+
|
|
285
|
+
Mark each criterion:
|
|
286
|
+
- **PASS**: Fully implemented, tested, and working
|
|
287
|
+
- **PARTIAL**: Implemented but incomplete or missing tests
|
|
288
|
+
- **FAIL**: Not implemented or broken
|
|
289
|
+
- **UNCLEAR**: Cannot determine from code review alone
|
|
290
|
+
</criterion_by_criterion>
|
|
291
|
+
|
|
292
|
+
<criteria_matrix>
|
|
293
|
+
Build a criteria evaluation matrix:
|
|
294
|
+
|
|
295
|
+
```markdown
|
|
296
|
+
## Acceptance Criteria Evaluation
|
|
297
|
+
|
|
298
|
+
| # | Criterion | Status | Evidence | Notes |
|
|
299
|
+
|---|-----------|--------|----------|-------|
|
|
300
|
+
| 1 | {criterion text} | PASS | {file:line or test name} | {any notes} |
|
|
301
|
+
| 2 | {criterion text} | PARTIAL | {what's missing} | {recommendations} |
|
|
302
|
+
| 3 | {criterion text} | FAIL | {what's wrong} | {fix needed} |
|
|
303
|
+
```
|
|
304
|
+
</criteria_matrix>
|
|
305
|
+
</criteria_comparison_phase>
|
|
306
|
+
|
|
307
|
+
<critique_phase>
|
|
308
|
+
<thorough_critique>
|
|
309
|
+
Perform a thorough critique covering:
|
|
310
|
+
|
|
311
|
+
**Correctness**:
|
|
312
|
+
- Does the code do what it's supposed to?
|
|
313
|
+
- Are there logic errors or off-by-one bugs?
|
|
314
|
+
- Are edge cases handled?
|
|
315
|
+
|
|
316
|
+
**Completeness**:
|
|
317
|
+
- Are all acceptance criteria addressed?
|
|
318
|
+
- Is there missing functionality?
|
|
319
|
+
- Are error states handled?
|
|
320
|
+
|
|
321
|
+
**Code Quality**:
|
|
322
|
+
- Does it follow codebase patterns?
|
|
323
|
+
- Is it readable and maintainable?
|
|
324
|
+
- Are there code smells or anti-patterns?
|
|
325
|
+
|
|
326
|
+
**Test Quality**:
|
|
327
|
+
- Is there adequate test coverage?
|
|
328
|
+
- Do tests verify behavior, not just run code?
|
|
329
|
+
- Are edge cases tested?
|
|
330
|
+
|
|
331
|
+
**Performance**:
|
|
332
|
+
- Any obvious performance issues?
|
|
333
|
+
- N+1 queries, unnecessary loops, memory leaks?
|
|
334
|
+
|
|
335
|
+
**Security** (if applicable):
|
|
336
|
+
- Input validation?
|
|
337
|
+
- Authorization checks?
|
|
338
|
+
- Sensitive data handling?
|
|
339
|
+
</thorough_critique>
|
|
340
|
+
|
|
341
|
+
<identify_improvements>
|
|
342
|
+
Categorize findings:
|
|
343
|
+
|
|
344
|
+
**Critical Issues** (must fix):
|
|
345
|
+
- Bugs that break functionality
|
|
346
|
+
- Missing critical acceptance criteria
|
|
347
|
+
- Security vulnerabilities
|
|
348
|
+
|
|
349
|
+
**Important Issues** (should fix):
|
|
350
|
+
- Missing edge case handling
|
|
351
|
+
- Incomplete test coverage
|
|
352
|
+
- Code quality concerns
|
|
353
|
+
|
|
354
|
+
**Suggestions** (nice to have):
|
|
355
|
+
- Refactoring opportunities
|
|
356
|
+
- Performance optimizations
|
|
357
|
+
- Documentation improvements
|
|
358
|
+
|
|
359
|
+
**Questions** (need clarification):
|
|
360
|
+
- Ambiguous requirements
|
|
361
|
+
- Design decisions to verify
|
|
362
|
+
- Edge cases not specified
|
|
363
|
+
</identify_improvements>
|
|
364
|
+
</critique_phase>
|
|
365
|
+
|
|
366
|
+
<review_report_phase>
|
|
367
|
+
<report_structure>
|
|
368
|
+
Generate a structured review report:
|
|
369
|
+
|
|
370
|
+
```markdown
|
|
371
|
+
## Verification Report: {Issue ID}
|
|
372
|
+
|
|
373
|
+
### Summary
|
|
374
|
+
**Overall Status**: PASS / PASS_WITH_NOTES / NEEDS_WORK / FAIL
|
|
375
|
+
**Criteria Met**: X of Y
|
|
376
|
+
**Tests**: PASS / FAIL
|
|
377
|
+
**Typecheck**: PASS / FAIL
|
|
378
|
+
|
|
379
|
+
### Acceptance Criteria Evaluation
|
|
380
|
+
| # | Criterion | Status | Notes |
|
|
381
|
+
|---|-----------|--------|-------|
|
|
382
|
+
| 1 | ... | PASS | ... |
|
|
383
|
+
| 2 | ... | PARTIAL | ... |
|
|
384
|
+
|
|
385
|
+
### Verification Checks
|
|
386
|
+
- Tests: X passed, Y failed
|
|
387
|
+
- Typecheck: {status}
|
|
388
|
+
- Lint: {status}
|
|
389
|
+
|
|
390
|
+
### Implementation Review
|
|
391
|
+
|
|
392
|
+
**What was done well**:
|
|
393
|
+
- {positive observation 1}
|
|
394
|
+
- {positive observation 2}
|
|
395
|
+
|
|
396
|
+
**Critical Issues** (must fix before closing):
|
|
397
|
+
- {issue 1}
|
|
398
|
+
- {issue 2}
|
|
399
|
+
|
|
400
|
+
**Important Issues** (should address):
|
|
401
|
+
- {issue 1}
|
|
402
|
+
- {issue 2}
|
|
403
|
+
|
|
404
|
+
**Suggestions** (consider for future):
|
|
405
|
+
- {suggestion 1}
|
|
406
|
+
- {suggestion 2}
|
|
407
|
+
|
|
408
|
+
### Files Reviewed
|
|
409
|
+
- `{file1}` - {summary}
|
|
410
|
+
- `{file2}` - {summary}
|
|
411
|
+
|
|
412
|
+
### Recommendation
|
|
413
|
+
{APPROVE / REQUEST_CHANGES / DISCUSS}
|
|
414
|
+
|
|
415
|
+
{Closing summary with next steps}
|
|
416
|
+
```
|
|
417
|
+
</report_structure>
|
|
418
|
+
|
|
419
|
+
<status_definitions>
|
|
420
|
+
**Overall Status meanings**:
|
|
421
|
+
|
|
422
|
+
| Status | Meaning | Action |
|
|
423
|
+
|--------|---------|--------|
|
|
424
|
+
| PASS | All criteria met, tests pass, no issues | Close issue |
|
|
425
|
+
| PASS_WITH_NOTES | Criteria met with minor suggestions | Close issue, optionally address suggestions |
|
|
426
|
+
| NEEDS_WORK | Some criteria not met or tests fail | Keep open, address issues |
|
|
427
|
+
| FAIL | Critical issues or many criteria not met | Keep open, major rework needed |
|
|
428
|
+
|
|
429
|
+
**Recommendation meanings**:
|
|
430
|
+
|
|
431
|
+
| Recommendation | Meaning |
|
|
432
|
+
|----------------|---------|
|
|
433
|
+
| APPROVE | Ready to close, no blocking issues |
|
|
434
|
+
| REQUEST_CHANGES | Issues need resolution before closing |
|
|
435
|
+
| DISCUSS | Ambiguities need team input |
|
|
436
|
+
</status_definitions>
|
|
437
|
+
</review_report_phase>
|
|
438
|
+
|
|
439
|
+
<linear_update_phase>
|
|
440
|
+
<post_review_comment>
|
|
441
|
+
Add the review as a comment on the Linear issue:
|
|
442
|
+
|
|
443
|
+
```
|
|
444
|
+
mcp__plugin_linear_linear__create_comment
|
|
445
|
+
issueId: "{issue-id}"
|
|
446
|
+
body: |
|
|
447
|
+
## Verification Review
|
|
448
|
+
|
|
449
|
+
**Status**: {PASS/PASS_WITH_NOTES/NEEDS_WORK/FAIL}
|
|
450
|
+
**Recommendation**: {APPROVE/REQUEST_CHANGES/DISCUSS}
|
|
451
|
+
|
|
452
|
+
### Acceptance Criteria
|
|
453
|
+
{criteria evaluation matrix}
|
|
454
|
+
|
|
455
|
+
### Checks
|
|
456
|
+
- Tests: {status}
|
|
457
|
+
- Typecheck: {status}
|
|
458
|
+
|
|
459
|
+
### Findings
|
|
460
|
+
{condensed findings - critical issues and important issues}
|
|
461
|
+
|
|
462
|
+
### Next Steps
|
|
463
|
+
{clear action items}
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
*Automated verification by verify-linear-issue*
|
|
467
|
+
```
|
|
468
|
+
</post_review_comment>
|
|
469
|
+
|
|
470
|
+
<update_issue_status>
|
|
471
|
+
Based on review outcome:
|
|
472
|
+
|
|
473
|
+
**If PASS or PASS_WITH_NOTES**:
|
|
474
|
+
```
|
|
475
|
+
mcp__plugin_linear_linear__update_issue
|
|
476
|
+
id: "{issue-id}"
|
|
477
|
+
state: "Done"
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
**If NEEDS_WORK or FAIL**:
|
|
481
|
+
Leave in current state. The comment documents what needs to be addressed.
|
|
482
|
+
|
|
483
|
+
Optionally add labels:
|
|
484
|
+
```
|
|
485
|
+
mcp__plugin_linear_linear__update_issue
|
|
486
|
+
id: "{issue-id}"
|
|
487
|
+
labels: ["needs-revision"]
|
|
488
|
+
```
|
|
489
|
+
</update_issue_status>
|
|
490
|
+
</linear_update_phase>
|
|
491
|
+
|
|
492
|
+
<completion_report>
|
|
493
|
+
<report_format>
|
|
494
|
+
Output a summary for the user:
|
|
495
|
+
|
|
496
|
+
```markdown
|
|
497
|
+
# Verification Complete
|
|
498
|
+
|
|
499
|
+
## Issue: {ID} - {Title}
|
|
500
|
+
|
|
501
|
+
**Status**: {PASS/PASS_WITH_NOTES/NEEDS_WORK/FAIL}
|
|
502
|
+
**Recommendation**: {APPROVE/REQUEST_CHANGES/DISCUSS}
|
|
503
|
+
|
|
504
|
+
### Summary
|
|
505
|
+
- Acceptance Criteria: {X of Y} met
|
|
506
|
+
- Tests: {status}
|
|
507
|
+
- Typecheck: {status}
|
|
508
|
+
- Lint: {status}
|
|
509
|
+
|
|
510
|
+
### Key Findings
|
|
511
|
+
{Top 3-5 findings}
|
|
512
|
+
|
|
513
|
+
### Actions Taken
|
|
514
|
+
- [x] Review comment posted to Linear
|
|
515
|
+
- [x] Issue status updated (if PASS)
|
|
516
|
+
- [ ] Follow-up issues created (if applicable)
|
|
517
|
+
|
|
518
|
+
### Next Steps
|
|
519
|
+
{Clear recommendations}
|
|
520
|
+
```
|
|
521
|
+
</report_format>
|
|
522
|
+
|
|
523
|
+
<follow_up_issues>
|
|
524
|
+
If critical or important issues are found that won't be fixed immediately:
|
|
525
|
+
|
|
526
|
+
```
|
|
527
|
+
mcp__plugin_linear_linear__create_issue
|
|
528
|
+
team: "{same team}"
|
|
529
|
+
title: "Follow-up: {brief description of issue}"
|
|
530
|
+
description: "Discovered during verification of {parent-id}: {details}"
|
|
531
|
+
labels: ["follow-up"]
|
|
532
|
+
relatedTo: ["{original-issue-id}"]
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
Link follow-up issues in the verification comment.
|
|
536
|
+
</follow_up_issues>
|
|
537
|
+
</completion_report>
|
|
538
|
+
|
|
539
|
+
<examples>
|
|
540
|
+
<pass_example>
|
|
541
|
+
**Input**: `/verify-linear-issue VRZ-100`
|
|
542
|
+
|
|
543
|
+
**Issue**: VRZ-100 - Add dark mode support
|
|
544
|
+
|
|
545
|
+
**Findings**:
|
|
546
|
+
- All 5 acceptance criteria met
|
|
547
|
+
- Tests pass (12 new tests added)
|
|
548
|
+
- Typecheck clean
|
|
549
|
+
- Code follows existing patterns
|
|
550
|
+
|
|
551
|
+
**Output**:
|
|
552
|
+
```markdown
|
|
553
|
+
## Verification Review
|
|
554
|
+
|
|
555
|
+
**Status**: PASS
|
|
556
|
+
**Recommendation**: APPROVE
|
|
557
|
+
|
|
558
|
+
### Acceptance Criteria
|
|
559
|
+
| # | Criterion | Status |
|
|
560
|
+
|---|-----------|--------|
|
|
561
|
+
| 1 | Theme follows system preference by default | PASS |
|
|
562
|
+
| 2 | Settings screen has theme toggle | PASS |
|
|
563
|
+
| 3 | All text maintains 4.5:1 contrast ratio | PASS |
|
|
564
|
+
| 4 | Theme preference persists across restarts | PASS |
|
|
565
|
+
| 5 | No flash of wrong theme on launch | PASS |
|
|
566
|
+
|
|
567
|
+
### Checks
|
|
568
|
+
- Tests: 12 passed, 0 failed
|
|
569
|
+
- Typecheck: PASS
|
|
570
|
+
|
|
571
|
+
### What was done well
|
|
572
|
+
- Clean separation of theme logic into ThemeProvider
|
|
573
|
+
- Comprehensive test coverage for all modes
|
|
574
|
+
- Proper localStorage persistence
|
|
575
|
+
|
|
576
|
+
All criteria met. Ready to close.
|
|
577
|
+
```
|
|
578
|
+
</pass_example>
|
|
579
|
+
|
|
580
|
+
<needs_work_example>
|
|
581
|
+
**Input**: `/verify-linear-issue VRZ-200`
|
|
582
|
+
|
|
583
|
+
**Issue**: VRZ-200 - Fix schedule deactivation error
|
|
584
|
+
|
|
585
|
+
**Findings**:
|
|
586
|
+
- 2 of 3 acceptance criteria met
|
|
587
|
+
- Tests pass but missing edge case coverage
|
|
588
|
+
- Typecheck clean
|
|
589
|
+
- Missing error handling for concurrent deactivation
|
|
590
|
+
|
|
591
|
+
**Output**:
|
|
592
|
+
```markdown
|
|
593
|
+
## Verification Review
|
|
594
|
+
|
|
595
|
+
**Status**: NEEDS_WORK
|
|
596
|
+
**Recommendation**: REQUEST_CHANGES
|
|
597
|
+
|
|
598
|
+
### Acceptance Criteria
|
|
599
|
+
| # | Criterion | Status | Notes |
|
|
600
|
+
|---|-----------|--------|-------|
|
|
601
|
+
| 1 | User can deactivate without error | PASS | Works for single user |
|
|
602
|
+
| 2 | Schedule status updates to inactive | PASS | Verified |
|
|
603
|
+
| 3 | Team members see status change | PARTIAL | No sync test, potential race condition |
|
|
604
|
+
|
|
605
|
+
### Checks
|
|
606
|
+
- Tests: 8 passed, 0 failed
|
|
607
|
+
- Typecheck: PASS
|
|
608
|
+
|
|
609
|
+
### Critical Issues
|
|
610
|
+
- No handling for concurrent deactivation attempts
|
|
611
|
+
- Missing PowerSync conflict resolution
|
|
612
|
+
|
|
613
|
+
### Next Steps
|
|
614
|
+
1. Add optimistic locking or conflict resolution
|
|
615
|
+
2. Add multi-user test for sync scenario
|
|
616
|
+
3. Re-verify after changes
|
|
617
|
+
```
|
|
618
|
+
</needs_work_example>
|
|
619
|
+
</examples>
|
|
620
|
+
|
|
621
|
+
<anti_patterns>
|
|
622
|
+
**Don't skip code review**:
|
|
623
|
+
- BAD: Only run tests without reading the code
|
|
624
|
+
- GOOD: Review implementation against each acceptance criterion
|
|
625
|
+
|
|
626
|
+
**Don't be superficial**:
|
|
627
|
+
- BAD: "Tests pass, looks good"
|
|
628
|
+
- GOOD: Thorough analysis of correctness, completeness, quality
|
|
629
|
+
|
|
630
|
+
**Don't nitpick on style**:
|
|
631
|
+
- BAD: Flag every style preference as an issue
|
|
632
|
+
- GOOD: Focus on correctness, completeness, and maintainability
|
|
633
|
+
|
|
634
|
+
**Don't approve incomplete work**:
|
|
635
|
+
- BAD: "2 of 5 criteria met, but PASS"
|
|
636
|
+
- GOOD: NEEDS_WORK until all criteria are addressed
|
|
637
|
+
|
|
638
|
+
**Don't skip the Linear comment**:
|
|
639
|
+
- BAD: Tell user the results but don't post to Linear
|
|
640
|
+
- GOOD: Always document verification on the ticket
|
|
641
|
+
|
|
642
|
+
**Don't forget to check sub-tasks**:
|
|
643
|
+
- BAD: Only verify parent issue
|
|
644
|
+
- GOOD: Verify all sub-tasks are complete before overall review
|
|
645
|
+
</anti_patterns>
|
|
646
|
+
|
|
647
|
+
<success_criteria>
|
|
648
|
+
A successful verification achieves:
|
|
649
|
+
|
|
650
|
+
- [ ] Full issue context loaded (description, criteria, comments, sub-tasks)
|
|
651
|
+
- [ ] All sub-tasks verified as complete
|
|
652
|
+
- [ ] Recent commits and changed files analyzed
|
|
653
|
+
- [ ] Code reviewed against acceptance criteria
|
|
654
|
+
- [ ] Tests executed and results captured
|
|
655
|
+
- [ ] Typecheck and lint run
|
|
656
|
+
- [ ] Each acceptance criterion evaluated with evidence
|
|
657
|
+
- [ ] Thorough critique with categorized findings
|
|
658
|
+
- [ ] Structured review report generated
|
|
659
|
+
- [ ] Review comment posted to Linear ticket
|
|
660
|
+
- [ ] Issue status updated appropriately
|
|
661
|
+
- [ ] Follow-up issues created if needed
|
|
662
|
+
- [ ] Clear next steps communicated to user
|
|
663
|
+
</success_criteria>
|