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.
Files changed (72) hide show
  1. package/.claude/commands/linear/define.md +22 -0
  2. package/.claude/commands/linear/execute.md +22 -0
  3. package/.claude/commands/linear/refine.md +22 -0
  4. package/.claude/commands/linear/verify.md +22 -0
  5. package/.claude/skills/define-linear-issue/SKILL.md +386 -0
  6. package/.claude/skills/execute-linear-issue/SKILL.md +629 -0
  7. package/.claude/skills/refine-linear-issue/SKILL.md +379 -0
  8. package/.claude/skills/verify-linear-issue/SKILL.md +663 -0
  9. package/AGENTS.md +70 -0
  10. package/LICENSE +21 -0
  11. package/README.md +457 -0
  12. package/dist/bin/mobius.d.ts +3 -0
  13. package/dist/bin/mobius.d.ts.map +1 -0
  14. package/dist/bin/mobius.js +75 -0
  15. package/dist/bin/mobius.js.map +1 -0
  16. package/dist/commands/config.d.ts +6 -0
  17. package/dist/commands/config.d.ts.map +1 -0
  18. package/dist/commands/config.js +88 -0
  19. package/dist/commands/config.js.map +1 -0
  20. package/dist/commands/doctor.d.ts +2 -0
  21. package/dist/commands/doctor.d.ts.map +1 -0
  22. package/dist/commands/doctor.js +86 -0
  23. package/dist/commands/doctor.js.map +1 -0
  24. package/dist/commands/run.d.ts +10 -0
  25. package/dist/commands/run.d.ts.map +1 -0
  26. package/dist/commands/run.js +62 -0
  27. package/dist/commands/run.js.map +1 -0
  28. package/dist/commands/setup.d.ts +2 -0
  29. package/dist/commands/setup.d.ts.map +1 -0
  30. package/dist/commands/setup.js +131 -0
  31. package/dist/commands/setup.js.map +1 -0
  32. package/dist/lib/checks/cclean.d.ts +3 -0
  33. package/dist/lib/checks/cclean.d.ts.map +1 -0
  34. package/dist/lib/checks/cclean.js +23 -0
  35. package/dist/lib/checks/cclean.js.map +1 -0
  36. package/dist/lib/checks/claude.d.ts +3 -0
  37. package/dist/lib/checks/claude.d.ts.map +1 -0
  38. package/dist/lib/checks/claude.js +38 -0
  39. package/dist/lib/checks/claude.js.map +1 -0
  40. package/dist/lib/checks/config.d.ts +4 -0
  41. package/dist/lib/checks/config.d.ts.map +1 -0
  42. package/dist/lib/checks/config.js +45 -0
  43. package/dist/lib/checks/config.js.map +1 -0
  44. package/dist/lib/checks/docker.d.ts +3 -0
  45. package/dist/lib/checks/docker.d.ts.map +1 -0
  46. package/dist/lib/checks/docker.js +46 -0
  47. package/dist/lib/checks/docker.js.map +1 -0
  48. package/dist/lib/checks/linear-mcp.d.ts +3 -0
  49. package/dist/lib/checks/linear-mcp.d.ts.map +1 -0
  50. package/dist/lib/checks/linear-mcp.js +46 -0
  51. package/dist/lib/checks/linear-mcp.js.map +1 -0
  52. package/dist/lib/checks/path.d.ts +5 -0
  53. package/dist/lib/checks/path.d.ts.map +1 -0
  54. package/dist/lib/checks/path.js +49 -0
  55. package/dist/lib/checks/path.js.map +1 -0
  56. package/dist/lib/config.d.ts +37 -0
  57. package/dist/lib/config.d.ts.map +1 -0
  58. package/dist/lib/config.js +145 -0
  59. package/dist/lib/config.js.map +1 -0
  60. package/dist/lib/paths.d.ts +39 -0
  61. package/dist/lib/paths.d.ts.map +1 -0
  62. package/dist/lib/paths.js +117 -0
  63. package/dist/lib/paths.js.map +1 -0
  64. package/dist/types.d.ts +39 -0
  65. package/dist/types.d.ts.map +1 -0
  66. package/dist/types.js +19 -0
  67. package/dist/types.js.map +1 -0
  68. package/mobius.config.yaml +38 -0
  69. package/package.json +56 -0
  70. package/scripts/mobius.sh +394 -0
  71. package/scripts/render-diagrams.sh +38 -0
  72. 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>