@mrciphersmith/keryx 0.2.69 → 0.2.71

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 (183) hide show
  1. package/dist/cli.js +11136 -4863
  2. package/docs/README.md +54 -0
  3. package/docs/requirements/shared-agent-context/README.md +104 -0
  4. package/package.json +3 -2
  5. package/src/gdgraph/build-lang.test.ts +10 -3
  6. package/src/gdgraph/build.ts +54 -9
  7. package/src/gdgraph/import-kind.test.ts +205 -0
  8. package/src/gdgraph/query.ts +6 -1
  9. package/src/gdgraph/types.ts +34 -0
  10. package/src/gdskills/bundled/rules/core/model-selection.mdc +184 -31
  11. package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +36 -0
  12. package/src/gdskills/bundled/rules/core/subagent-status-protocol.md +27 -1
  13. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +1 -1
  14. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +1 -1
  15. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +2 -1
  16. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +1 -1
  17. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +1 -1
  18. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +1 -1
  19. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +1 -1
  20. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +1 -1
  21. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +1 -1
  22. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +1 -1
  23. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +1 -1
  24. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +1 -1
  25. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +1 -1
  26. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +1 -1
  27. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +1 -1
  28. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +1 -1
  29. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +1 -1
  30. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +1 -1
  31. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +159 -20
  32. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +1 -1
  33. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +1 -1
  34. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +1 -1
  35. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +1 -1
  36. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +1 -1
  37. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +1 -1
  38. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +1 -1
  39. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +2 -1
  40. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +1 -1
  41. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +1 -1
  42. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +28 -3
  43. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +28 -3
  44. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +28 -3
  45. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +28 -3
  46. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +28 -3
  47. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +20 -2
  48. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +20 -2
  49. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +22 -3
  50. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +20 -2
  51. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +20 -2
  52. package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +2 -1
  53. package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +3 -1
  54. package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +2 -1
  55. package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +2 -1
  56. package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +2 -1
  57. package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +2 -1
  58. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +1 -1
  59. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +1 -1
  60. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +1 -1
  61. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +1 -1
  62. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +1 -1
  63. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +2 -1
  64. package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +1 -1
  65. package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +1 -1
  66. package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +1 -1
  67. package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +1 -1
  68. package/src/gdskills/bundled/skills/planning/interview/SKILL.md +1 -1
  69. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +1 -1
  70. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +1 -1
  71. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +1 -1
  72. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +1 -1
  73. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +1 -1
  74. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +2 -1
  75. package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +1 -1
  76. package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +1 -1
  77. package/src/gdskills/bundled/skills/planning/planner/SKILL.md +2 -1
  78. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +1 -1
  79. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +1 -1
  80. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +1 -1
  81. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +1 -1
  82. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +1 -1
  83. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +1 -1
  84. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +1 -1
  85. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +2 -1
  86. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +1 -1
  87. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +1 -1
  88. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +2 -1
  89. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +1 -1
  90. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +1 -1
  91. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +2 -1
  92. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +1 -1
  93. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +1 -1
  94. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +2 -1
  95. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +1 -1
  96. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +1 -1
  97. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +1 -1
  98. package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +1 -1
  99. package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +1 -1
  100. package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +1 -1
  101. package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +1 -1
  102. package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +1 -1
  103. package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +1 -1
  104. package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +1 -1
  105. package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +1 -1
  106. package/src/gdskills/bundled/skills/quality/commit/SKILL.md +1 -1
  107. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +1 -1
  108. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +1 -1
  109. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +1 -1
  110. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +1 -1
  111. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +1 -1
  112. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +1 -1
  113. package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +1 -1
  114. package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +1 -1
  115. package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +1 -1
  116. package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +1 -1
  117. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +1 -1
  118. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +1 -1
  119. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +1 -1
  120. package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +1 -1
  121. package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +1 -1
  122. package/src/gdskills/bundled/skills/quality/pr/SKILL.md +1 -1
  123. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +1 -1
  124. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +1 -1
  125. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +1 -1
  126. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +1 -1
  127. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +1 -1
  128. package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +1 -1
  129. package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +1 -1
  130. package/src/gdskills/bundled/skills/quality/push/SKILL.md +1 -1
  131. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +1 -1
  132. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +1 -1
  133. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +1 -1
  134. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +1 -1
  135. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +1 -1
  136. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +1 -1
  137. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +1 -1
  138. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +1 -1
  139. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +1 -1
  140. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +1 -1
  141. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +1 -1
  142. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +1 -1
  143. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +1 -1
  144. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +1 -1
  145. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +1 -1
  146. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +1 -1
  147. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.codex.md +1 -1
  148. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.cursor.md +1 -1
  149. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.md +1 -1
  150. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.opencode.md +1 -1
  151. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.zed.md +1 -1
  152. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +1 -1
  153. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +1 -1
  154. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +2 -1
  155. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +1 -1
  156. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +1 -1
  157. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +1 -1
  158. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +1 -1
  159. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +1 -1
  160. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +1 -1
  161. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +1 -1
  162. package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +37 -10
  163. package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +48 -14
  164. package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +49 -12
  165. package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +34 -2
  166. package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +33 -2
  167. package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +70 -29
  168. package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +34 -3
  169. package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +49 -15
  170. package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +39 -11
  171. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +659 -64
  172. package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-finding.schema.json +7 -0
  173. package/src/gdskills/bundled/skills/review/review-orchestrator/verification-claim.schema.json +78 -0
  174. package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +43 -13
  175. package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +8 -2
  176. package/src/gdskills/bundled/skills/review/review-regression/SKILL.md +185 -0
  177. package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +44 -13
  178. package/src/gdskills/bundled/skills/review/review-style/SKILL.md +26 -6
  179. package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +35 -3
  180. package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +276 -0
  181. package/src/gdskills/contracts/review-finding.schema.json +119 -1
  182. package/src/gdskills/contracts/subagent-dispatch.schema.json +59 -3
  183. package/src/gdskills/bundled/skills/review/review-strict/SKILL.md +0 -328
@@ -1,328 +0,0 @@
1
- ---
2
- name: review-strict
3
- description: |
4
- Use when: a strict engineering pass is needed — either as a meta-reviewer reading consolidated
5
- findings from other reviewers and elevating weak findings, or standalone on a git diff.
6
- Covers "strict review", "review --strict", "boss review", "review as boss", or dispatched
7
- by review-orchestrator as an optional post-pass after other reviewers complete.
8
- NOT for: first-pass review (run domain reviewers first); large refactors outside the diff
9
- scope (file separately).
10
- version: "1.0.0"
11
- triggers:
12
- - "strict review"
13
- - "review --strict"
14
- - "boss review"
15
- - "review as boss"
16
- metadata:
17
- author: "MrCipherSmith"
18
- version: "1.0.0"
19
- category: "review"
20
- license: "MIT"
21
- compatibility: "cursor,codex,zed,opencode,claude"
22
- ---
23
-
24
- # Review — Strict (Meta-Reviewer)
25
-
26
- Strict engineering review pass. This is a **meta-reviewer**: it reads findings from other
27
- reviewers (or the raw diff when run standalone) and applies strict engineering judgment.
28
- It elevates understated findings, adds architectural commentary, and catches issues that
29
- domain reviewers may have let through. Style: direct, no-fluff, engineering-focused.
30
-
31
- ---
32
-
33
- ## Workflow
34
-
35
- ```
36
- review-strict Progress:
37
- - [ ] Step 1: Read Job Context (if CONTEXT_PATH provided)
38
- - [ ] Step 2: Determine input mode (meta or standalone)
39
- - [ ] Step 3: If standalone — determine git scope and collect diff
40
- - [ ] Step 4: If meta — ingest findings from other reviewers
41
- - [ ] Step 5: Apply strict principles to findings or diff
42
- - [ ] Step 6: Elevate understated findings
43
- - [ ] Step 7: Add new findings not caught by other reviewers
44
- - [ ] Step 8: Check single source of truth violations
45
- - [ ] Step 9: Emit enhanced findings + strict commentary
46
- ```
47
-
48
- ---
49
-
50
- ## Input Contract
51
-
52
- | Field | Type | Required | Description |
53
- |-------|------|----------|-------------|
54
- | `findings` | string | no | Consolidated findings from other reviewers (markdown). When present, operate in meta mode. |
55
- | `branch` | string | no | Branch to review. Defaults to current branch. Required in standalone mode. |
56
- | `commit_range` | string | no | Explicit range (e.g., `abc123..HEAD`). Overrides merge-base in standalone mode. |
57
- | `context_doc` | string | no | Path to job context document (e.g., `<JOBS_ROOT>/<job>/ai/context.md`). |
58
-
59
- ---
60
-
61
- ## Mode Detection
62
-
63
- **Meta mode** (preferred when dispatched by review-orchestrator `--strict`):
64
- - Input includes pre-existing findings from domain reviewers
65
- - Read those findings, then read the diff for context
66
- - Operate on both: elevate weak findings, add new ones
67
-
68
- **Standalone mode** (when invoked directly without pre-existing findings):
69
- - No findings provided
70
- - Determine git scope via `skills/shared/git-merge-base.md`
71
- - Collect diff and apply full strict checklist independently
72
-
73
- ---
74
-
75
- ## Scope Detection (standalone mode)
76
-
77
- See shared script: `skills/shared/git-merge-base.md`
78
-
79
- ```bash
80
- # Default mode — all changes from merge-base to working tree
81
- git diff --name-only "${BASE_SHA}"
82
- git diff "${BASE_SHA}"
83
-
84
- # Explicit range mode
85
- git diff --name-only <FROM_SHA>..<TO_SHA>
86
- git diff <FROM_SHA>..<TO_SHA>
87
- ```
88
-
89
- ---
90
-
91
- ## Strict Principles
92
-
93
- ### Elevation Rules (meta mode)
94
-
95
- When reading findings from other reviewers, elevate severity when:
96
-
97
- | Condition | Elevate to |
98
- |-----------|-----------|
99
- | Finding labeled `minor` but could cause a bug under specific conditions | `major` |
100
- | Finding labeled `major` but blocks correctness or data integrity in any realistic scenario | `blocker` |
101
- | Finding labeled `info` but represents a design flaw (not just a suggestion) | `minor` or `major` |
102
- | Finding is vague ("consider refactoring X") without a concrete fix | Downgrade to `info` or rewrite with concrete fix |
103
-
104
- Every elevation must cite the line or code evidence that justifies the change. No elevation without evidence.
105
-
106
- ---
107
-
108
- ### Core Strict Checks
109
-
110
- **No ducktape fixes**
111
- - A fix that masks a symptom rather than addressing the root cause — flag as `major`
112
- - Example: `setTimeout(fn, 0)` to defer a race condition instead of fixing the race — flag as `major`; demand root cause fix
113
- - Example: `|| []` to avoid a null check instead of ensuring the upstream always returns an array — flag as `minor` if trivial, `major` if the null case indicates a real upstream bug
114
-
115
- **No magic timeouts**
116
- - `setTimeout(fn, 0)`, `setTimeout(fn, 100)`, `setTimeout(fn, 500)` without a comment explaining exactly why — always flag as `major`
117
- - Comment must explain: what is being deferred, why, and what the correct fix would be if time allowed
118
- - `setInterval` without a cleanup mechanism — `major`
119
-
120
- **No `any` and no unsafe casts**
121
- - `any` in new code — `major`
122
- - `as any` — `major`
123
- - `as unknown as T` without an explanatory comment — `major`
124
- - `@ts-ignore` without an explanatory comment — `major`
125
-
126
- **TODO comments in merged code**
127
- - `// TODO` / `// FIXME` / `// HACK` present in the diff — flag as `minor` with a note: "file a ticket or resolve before merge"
128
- - `// TODO: remove before deploy` in production-bound code — **blocker**
129
-
130
- **No architectural shortcuts**
131
- - Logic in the wrong layer: UI layer calling APIs directly, controller containing business rules, view accessing store internals — `major`
132
- - Challenge with: "why is this in this layer?" — must have a concrete answer
133
- - Cross-cutting concerns scattered in multiple places instead of one — `major` (single source of truth violation)
134
-
135
- **Single source of truth**
136
- - Same rule or check duplicated in two or more places — flag as `major`
137
- - Example: input validation logic in both the controller and the service — pick one authoritative location
138
- - Example: same constant defined in two files — centralize
139
-
140
- **MobX conventions (when MobX is in the diff)**
141
- - Inter-store callbacks (`onChangeX`, `handleX`, `syncX`, `onFireX`) that are `public` — flag as `major` ("should be `private`; public only if called from JSX")
142
- - `useCallback` or `useMemo` added without a demonstrable need (no expensive computation, no stable reference requirement) — flag as `minor`
143
- - MobX `autorun` or `reaction` without a disposal mechanism — flag as `major` (memory leak)
144
-
145
- **Conventions**
146
- - `currentState` naming: observable state fields named with `current` prefix when they represent present value — flag inconsistency as `minor`
147
- - Interface names without `I` prefix (`UserService` as an interface instead of `IUserService`) — flag as `minor`
148
-
149
- **No scope expansion**
150
- - Large refactors outside the diff scope: note them as `info` with "out of scope — file separately"
151
- - Never propose a rewrite of unrelated code in the same response
152
-
153
- ---
154
-
155
- ## Architectural Commentary
156
-
157
- After findings, add a brief "Not Today" section for:
158
- - Architectural shortcuts visible in the diff that are not bugs but will hurt maintainability
159
- - Technical debt introduced intentionally or unintentionally
160
- - Patterns that contradict the project's stated architecture
161
-
162
- Use the phrase "not today" sparingly — only when a shortcut was taken that needs to be acknowledged.
163
- Format: `> **Not today:** [what was shortcutted and why it matters long-term]`
164
-
165
- This section is non-blocking (info-level). It is opinion, not a finding. Keep it to ≤3 items.
166
-
167
- ---
168
-
169
- ## Iron Laws
170
-
171
- | Rule | Rationale |
172
- |------|-----------|
173
- | Every finding must cite code evidence (file:line or diff hunk) | "Strictly speaking" without evidence = `info` only |
174
- | No elevation without a concrete reason stated | Elevation is a claim; claims need backing |
175
- | No scope expansion — large refactors outside the diff = "out of scope, file separately" | Scope creep in reviews is as harmful as in implementation |
176
- | Severity of a finding is per-finding, never averaged or influenced by other findings | Each finding stands on its own |
177
- | `setTimeout(0)` — always flag, no exceptions | There is always a better solution |
178
- | `any` in new code — always flag, no exceptions | Type safety is non-negotiable |
179
-
180
- ---
181
-
182
- ## Orchestrated Review Contract
183
-
184
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/review-orchestrator/reviewer-finding.schema.json`, then a concise markdown summary. Keep findings evidence-based, include concrete `suggested_fix` for every blocker/major, and return `NEEDS_CONTEXT` instead of guessing when required context is missing.
185
-
186
- ---
187
-
188
- ## Finding Format
189
-
190
- ### Class scope — required for `blocker` and `major`
191
-
192
- Every `blocker` and `major` finding must carry `class_scope`: **every** site that
193
- holds the shape you found, and **how you enumerated them** — the grep or query
194
- you ran, or the guard that derives the set.
195
-
196
- A finding anchored to one `file:line` is a claim about one site. The recorded
197
- history of this repository is that a fix then repairs that site and leaves its
198
- siblings: one writer of five, one operator instruction of four, six readers of
199
- eight. Each was found by the *next* review round, which is why reviews here have
200
- run to seven and four rounds instead of one.
201
-
202
- ```yaml
203
- class_scope:
204
- sites: ["src/lib/shell-config.ts:60", "src/session/store.ts:133"]
205
- enumeration_method: "grep for the config-path resolvers; 7 writers, 2 unguarded"
206
- ```
207
-
208
- "I checked the others" is not an enumeration method. A single-entry `sites` list
209
- is a claim that the class has exactly one member — make it deliberately, because
210
- `review-finding.schema.json` accepts it and the next round tests it.
211
-
212
- `minor` and `info` may omit it: enumerating the class for every low-severity
213
- observation is theatre, not rigour.
214
-
215
- ```markdown
216
- ### [F-001] Title
217
-
218
- - **Severity**: blocker | major | minor | info
219
- - **File**: path/to/file.ts:line
220
- - **Problem**: what is wrong
221
- - **Why it matters**: correctness / testability / conventions / maintainability
222
- - **Fix**: concrete suggestion
223
- - **Elevated from**: minor → major (or: new finding) <!-- only in meta mode -->
224
- - **Patch** (optional):
225
- ```diff
226
- - old line
227
- + new line
228
- ```
229
- ```
230
-
231
- ---
232
-
233
- ## Output Contract
234
-
235
- ```
236
- STATUS: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
237
- ```
238
-
239
- - `DONE` — no blockers or majors after strict pass
240
- - `DONE_WITH_CONCERNS` — one or more blocker or major findings
241
- - `NEEDS_CONTEXT` — cannot assess intent without context doc; state what is missing
242
- - `BLOCKED` — cannot access diff or findings input; state reason
243
-
244
- ```markdown
245
- # Strict Review Report
246
-
247
- ## Verdict: APPROVE | APPROVE_WITH_SUGGESTIONS | REQUEST_CHANGES
248
-
249
- ## Summary
250
- <2-4 sentences: overall engineering quality, key concerns, whether findings from other
251
- reviewers were understated.>
252
-
253
- ## Review Scope
254
- - Branch: `<BRANCH>`
255
- - Parent ref: `<PARENT>`
256
- - Merge-base: `<BASE_SHA>`
257
- - Mode: `<meta | standalone>`
258
- - Scope mode: `<default-with-uncommitted | explicit-hash-range>`
259
- - Input findings ingested: <N> (meta mode only)
260
-
261
- ## Stats
262
- - blocker: N (N elevated)
263
- - major: N (N elevated, N new)
264
- - minor: N
265
- - info: N
266
-
267
- ## Blockers (must fix before merge)
268
- <[F-NNN] findings>
269
-
270
- ## Major Issues
271
- <[F-NNN] findings — mark elevated ones clearly>
272
-
273
- ## Minor & Info
274
- <[F-NNN] findings>
275
-
276
- ## Not Today
277
- > **Not today:** [architectural shortcut 1]
278
- > **Not today:** [architectural shortcut 2]
279
-
280
- ## Positive Notes
281
- <Optional. What held up to strict scrutiny.>
282
- ```
283
-
284
- ---
285
-
286
- ## Scope Boundaries
287
-
288
- | Concern | This skill | Use instead |
289
- |---------|------------|-------------|
290
- | Elevating/validating findings from domain reviewers | YES | — |
291
- | Strict engineering commentary on diff | YES | — |
292
- | `setTimeout`, `any`, ducktape, SSOT violations | YES | — |
293
- | MobX conventions (inter-store access, disposal) | YES | — |
294
- | First-pass logic review | NO | `review-logic` |
295
- | First-pass frontend patterns | NO | `review-frontend` |
296
- | First-pass backend patterns | NO | `review-backend` |
297
- | Large out-of-scope refactors | NO | file separately |
298
-
299
- ---
300
-
301
- ## Job Context Awareness
302
-
303
- When dispatched by `job-orchestrator` or called with an explicit context path, the prompt MAY include:
304
-
305
- ```
306
- JOB_NAME: <job-name>
307
- CONTEXT_PATH: <JOBS_ROOT>/<job-name>/ai/context.md
308
- ```
309
-
310
- If provided and the file exists, read the context document **before** applying strict principles.
311
- Use it to understand:
312
- - Intentional architectural decisions (do not flag agreed-upon patterns as shortcuts)
313
- - Which libraries, patterns, and conventions were explicitly chosen
314
- - Acceptance criteria (to detect spec gaps if running standalone)
315
-
316
- If absent, proceed normally — context is optional and non-blocking.
317
-
318
- ---
319
-
320
- ## Red Flags
321
-
322
- | Rationalization | Why it is wrong |
323
- |----------------|-----------------|
324
- | "The other reviewer already caught it, I don't need to address it" | Meta mode means you own the final assessment; weak findings stay weak unless you act |
325
- | "setTimeout(0) is a common pattern" | Common patterns can still be wrong; demand the root cause fix |
326
- | "I'll add a 'Not Today' for everything I disagree with" | Not Today is for real shortcuts, not personal preference; ≤3 items |
327
- | "Elevating to blocker feels harsh" | Harsh is blocking a production incident; elevate when the evidence supports it |
328
- | "The `any` is in a test file" | Type safety in tests matters; typed mocks prevent false-green tests |