@mrciphersmith/keryx 0.2.98 → 0.2.99

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 (182) hide show
  1. package/dist/cli.js +4057 -2510
  2. package/dist/core.js +39 -1
  3. package/package.json +1 -1
  4. package/src/gdskills/bundled/rules/core/cli-interface-design.mdc +237 -0
  5. package/src/gdskills/bundled/rules/core/definition-of-done.mdc +116 -0
  6. package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +101 -11
  7. package/src/gdskills/bundled/rules/core/subagent-status-protocol.md +9 -2
  8. package/src/gdskills/bundled/skills/core/reviewer-skill-creator/SKILL.md +42 -5
  9. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +19 -3
  10. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +20 -4
  11. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +32 -9
  12. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +18 -4
  13. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +21 -5
  14. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +4 -4
  15. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +1 -1
  16. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +42 -2
  17. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +23 -9
  18. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +33 -31
  19. package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +32 -1
  20. package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +16 -0
  21. package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +16 -0
  22. package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +16 -0
  23. package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +17 -0
  24. package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +16 -0
  25. package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +16 -0
  26. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +28 -3
  27. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +17 -0
  28. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +17 -0
  29. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +17 -0
  30. package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +32 -2
  31. package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +14 -2
  32. package/src/gdskills/bundled/skills/planning/interview/SKILL.md +29 -7
  33. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +32 -6
  34. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +16 -0
  35. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +16 -0
  36. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +16 -0
  37. package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +17 -0
  38. package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +17 -0
  39. package/src/gdskills/bundled/skills/planning/planner/SKILL.md +17 -0
  40. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +20 -3
  41. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +16 -0
  42. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +16 -0
  43. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +16 -0
  44. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +16 -0
  45. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +16 -0
  46. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +16 -0
  47. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +4 -0
  48. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +4 -0
  49. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +4 -0
  50. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +4 -0
  51. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +4 -0
  52. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +4 -0
  53. package/src/gdskills/bundled/skills/platform/agent-entrypoint-distiller/SKILL.md +31 -4
  54. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +26 -2
  55. package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +28 -3
  56. package/src/gdskills/bundled/skills/quality/api-truth/SKILL.md +226 -0
  57. package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +24 -4
  58. package/src/gdskills/bundled/skills/quality/commit/SKILL.md +24 -3
  59. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +24 -3
  60. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +25 -4
  61. package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +26 -3
  62. package/src/gdskills/bundled/skills/quality/deprecation-path/SKILL.md +268 -0
  63. package/src/gdskills/bundled/skills/quality/fresh-eyes/SKILL.md +190 -0
  64. package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +24 -3
  65. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +29 -8
  66. package/src/gdskills/bundled/skills/quality/pr/SKILL.md +24 -4
  67. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +25 -2
  68. package/src/gdskills/bundled/skills/quality/push/SKILL.md +24 -3
  69. package/src/gdskills/bundled/skills/quality/root-cause/SKILL.md +204 -0
  70. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +25 -4
  71. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +24 -3
  72. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +17 -2
  73. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +40 -5
  74. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +41 -1
  75. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +44 -2
  76. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +44 -4
  77. package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +3 -3
  78. package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +2 -3
  79. package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +4 -4
  80. package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +36 -2
  81. package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +37 -3
  82. package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +2 -4
  83. package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +36 -2
  84. package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +3 -5
  85. package/src/gdskills/bundled/skills/review/review-layout/SKILL.md +23 -2
  86. package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +3 -3
  87. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +9 -29
  88. package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +9 -9
  89. package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +3 -2
  90. package/src/gdskills/bundled/skills/review/review-regression/SKILL.md +33 -2
  91. package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +4 -2
  92. package/src/gdskills/bundled/skills/review/review-style/SKILL.md +2 -2
  93. package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +40 -2
  94. package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +1 -1
  95. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +0 -330
  96. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +0 -330
  97. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +0 -330
  98. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +0 -330
  99. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +0 -655
  100. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +0 -655
  101. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +0 -655
  102. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +0 -655
  103. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +0 -424
  104. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +0 -424
  105. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +0 -424
  106. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +0 -424
  107. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +0 -163
  108. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +0 -163
  109. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +0 -373
  110. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +0 -373
  111. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +0 -373
  112. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +0 -373
  113. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +0 -374
  114. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +0 -374
  115. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +0 -374
  116. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +0 -374
  117. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +0 -2232
  118. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +0 -2232
  119. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +0 -2232
  120. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +0 -2232
  121. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +0 -668
  122. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +0 -668
  123. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +0 -668
  124. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +0 -668
  125. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +0 -90
  126. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +0 -90
  127. package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +0 -187
  128. package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +0 -187
  129. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +0 -105
  130. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +0 -105
  131. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +0 -193
  132. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +0 -193
  133. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +0 -193
  134. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +0 -193
  135. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +0 -87
  136. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +0 -87
  137. package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +0 -100
  138. package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +0 -100
  139. package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +0 -84
  140. package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +0 -84
  141. package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +0 -66
  142. package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +0 -66
  143. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +0 -66
  144. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +0 -66
  145. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +0 -81
  146. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +0 -81
  147. package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +0 -70
  148. package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +0 -70
  149. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +0 -83
  150. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +0 -83
  151. package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +0 -75
  152. package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +0 -75
  153. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +0 -378
  154. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +0 -378
  155. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +0 -378
  156. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +0 -378
  157. package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +0 -52
  158. package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +0 -52
  159. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +0 -108
  160. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +0 -108
  161. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +0 -80
  162. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +0 -80
  163. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +0 -345
  164. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +0 -345
  165. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +0 -345
  166. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +0 -345
  167. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +0 -203
  168. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +0 -203
  169. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +0 -203
  170. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +0 -203
  171. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +0 -243
  172. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +0 -243
  173. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +0 -243
  174. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +0 -243
  175. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +0 -259
  176. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +0 -259
  177. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +0 -259
  178. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +0 -259
  179. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +0 -168
  180. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +0 -168
  181. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +0 -168
  182. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +0 -168
@@ -6,10 +6,14 @@ description: |
6
6
  direction, feature-boundary leakage, abstraction stability, composition,
7
7
  and blast-radius risks. Dispatched by review-orchestrator for
8
8
  --core-boundaries, --project-conventions, --all, or src/core/** changes.
9
+ NOT for: logic correctness in code that happens to live in core (review-logic),
10
+ naming and readability (review-style), or SOLID and layering inside a feature
11
+ module (review-architecture).
9
12
  triggers:
13
+ - "core review"
14
+ - "shared boundary"
15
+ - "public surface"
10
16
  - "review core boundaries"
11
- - "review --core-boundaries"
12
- - dispatched by review-orchestrator
13
17
  metadata:
14
18
  author: "MrCipherSmith"
15
19
  version: "1.0.0"
@@ -127,3 +131,33 @@ conditions land under that rubric.
127
131
 
128
132
  "Broad blast radius" is not by itself a `blocker`. Name the consumer that breaks.
129
133
 
134
+ ---
135
+
136
+ ## Red Flags
137
+
138
+ | Rationalization | Why it is wrong |
139
+ |----------------|-----------------|
140
+ | "It is generic enough to live in core." | Generic enough is not shared. Name the second consumer that needs it today; one feature's helper parked in core is exactly the leak this lane exists to catch, whatever the file is called. |
141
+ | "Core has broad blast radius, so this is a `blocker`." | Blast radius is a property of the module, not of the change. Name the consumer that breaks and what breaks in it, or it is `info` under shared law 1. |
142
+ | "It is only a type import, so core does not really depend on the feature." | The import is in the source and in the build graph. Delete the feature module and core stops compiling — direction is decided by what core names, not by what survives type erasure. |
143
+ | "The new export has one consumer today, so the surface is still stable." | A public core export is a contract with every module that installs it. One consumer is the argument for keeping the helper internal, not for exporting it. |
144
+ | "I cannot enumerate every consumer of a core symbol, so I will anchor the finding at the file the diff touched." | Consumers of a core export are precisely what a search enumerates. A `class_scope` with no `enumeration_method` is the one-site fix that leaves the siblings for the next round. |
145
+ | "The move into core is temporary — it gets extracted properly later." | Nothing downstream records that intent, and a core import is load-bearing the moment it ships. Rate the code in the diff, not the plan described beside it. |
146
+
147
+ ---
148
+
149
+ ## Verification
150
+
151
+ Report done only once all of these hold:
152
+
153
+ - Every finding names `file:line` and the evidence that settles it — the import,
154
+ the export, or the consumer — quoted from the tree rather than described.
155
+ - Every `blocker` and `major` carries `class_scope` with `sites` and an
156
+ `enumeration_method` naming the search that produced them.
157
+ - No finding invents a severity: each lands under **Severity (canonical)** in
158
+ `review-orchestrator/SKILL.md`.
159
+ - Every blast-radius claim names the consumer that breaks. Unnamed ones are
160
+ `info`, and say what would settle them.
161
+ - The reply is the `REVIEW_RESULT` the Orchestrated Review Contract asks for, or
162
+ `NEEDS_CONTEXT` naming the context that was missing — never a guess in its place.
163
+
@@ -7,10 +7,13 @@ description: |
7
7
  boundaries, selection lifecycle, and large-graph performance. Dispatched by
8
8
  review-orchestrator for --flow-graph, --project-conventions, --all, or
9
9
  src/core/flow/** / graph abstraction changes.
10
+ NOT for: React and MobX component structure outside the graph surface
11
+ (review-frontend), render cost elsewhere in the app (review-performance), or
12
+ the domain rules a graph happens to display (review-logic).
10
13
  triggers:
11
- - "review flow graph"
12
- - "review --flow-graph"
13
- - dispatched by review-orchestrator
14
+ - "flow graph review"
15
+ - "graph ui review"
16
+ - "reactflow review"
14
17
  metadata:
15
18
  author: "MrCipherSmith"
16
19
  version: "1.0.0"
@@ -152,3 +155,34 @@ conditions land under that rubric.
152
155
  | Internal helper reaching across a boundary with no observable consequence | `minor` | Correct today; the cost is to the next editor |
153
156
  | Surface concern with no named caller | `info` | Shared law 1 |
154
157
 
158
+ ---
159
+
160
+ ## Red Flags
161
+
162
+ | Rationalization | Why it is wrong |
163
+ |----------------|-----------------|
164
+ | "The domain module imports the internal shell directly, but it renders fine." | Rendering is not the contract. The public graph surface is what the next refactor of the shell is allowed to change; a consumer reaching past it is the break waiting to happen, and it is reportable today. |
165
+ | "Only one consumer needs this helper, so exporting it from the graph surface is harmless." | An export is a promise to every future consumer. The rule in the checklist is two consumers, and one is the argument for leaving the helper internal. |
166
+ | "This graph felt slow when I read the code." | A performance claim here is a claim about a node and edge count. Name the count at which it degrades, or the finding is `info` under shared law 1. |
167
+ | "Deep observation on the nodes array is fine — the library is fast." | The cost is proxying every node on every write, and it scales with the array, not with the library. If you are rating it, state the array size the diff can produce. |
168
+ | "The subclass sets up its own reactivity first; base initialisation order is an implementation detail." | The base store's state is what the base selection, click and reset behaviour reads. Initialising after it is the documented lifecycle, not a style preference. |
169
+ | "The layout ran, so the lifecycle is intact." | Selection, expand/collapse and reset each have their own lifecycle. A layout that completes says nothing about whether a domain side effect swallowed the base selection reset. |
170
+
171
+ ---
172
+
173
+ ## Verification
174
+
175
+ Report done only once all of these hold:
176
+
177
+ - Every finding names `file:line` and the evidence that settles it — the import,
178
+ the export, the subclass member, or the measured count.
179
+ - Every `blocker` and `major` carries `class_scope` with `sites` and an
180
+ `enumeration_method` naming the search that produced them — for a surface
181
+ finding, every consumer of the symbol, not only the one in the diff.
182
+ - Every performance finding states the node/edge count at which the cost applies;
183
+ without one it is `info`.
184
+ - No finding invents a severity: each lands under **Severity (canonical)** in
185
+ `review-orchestrator/SKILL.md`.
186
+ - The reply is the `REVIEW_RESULT` the Orchestrated Review Contract asks for, or
187
+ `NEEDS_CONTEXT` naming the context that was missing — never a guess in its place.
188
+
@@ -3,13 +3,11 @@ name: review-frontend
3
3
  model_tier: standard
4
4
  description: "Use when a frontend review is requested, checking React component patterns, MobX state management (observer, actions, computed, reactions, lifecycle), View-Store boundaries, and TypeScript safety in changed frontend code. NOT for backend patterns, security vulnerabilities, performance bottlenecks, or cross-layer architecture."
5
5
  triggers:
6
- - "review frontend"
7
6
  - "frontend review"
7
+ - "component review"
8
+ - "ui review"
8
9
  - "review React"
9
- - "review MobX"
10
- - "review store"
11
10
  - "review components"
12
- - dispatched by review-orchestrator
13
11
  metadata:
14
12
  author: "MrCipherSmith"
15
13
  version: "1.1.0"
@@ -8,10 +8,14 @@ description: |
8
8
  styling tokens, Storybook expectations, and local tooling rules. Dispatched
9
9
  by review-orchestrator for --frontend-conventions, --project-conventions,
10
10
  --all, or frontend src/**/*.ts(x) changes when local convention docs exist.
11
+ NOT for: generic React and MobX correctness with no local rule behind it
12
+ (review-frontend), what the CSS actually renders (review-layout), or naming and
13
+ readability as a matter of taste (review-style).
11
14
  triggers:
15
+ - "frontend conventions"
16
+ - "local frontend rules"
17
+ - "CLAUDE frontend"
12
18
  - "review frontend conventions"
13
- - "review --frontend-conventions"
14
- - dispatched by review-orchestrator
15
19
  metadata:
16
20
  author: "MrCipherSmith"
17
21
  version: "1.0.0"
@@ -177,3 +181,33 @@ conditions land under that rubric.
177
181
  | Naming, story coverage, file placement | `minor` | Correct today; the cost is to the next editor |
178
182
  | A convention preference with no named consequence | `info` | Shared laws 1 and 2 |
179
183
 
184
+ ---
185
+
186
+ ## Red Flags
187
+
188
+ | Rationalization | Why it is wrong |
189
+ |----------------|-----------------|
190
+ | "There is no project guide here, but I know what good React looks like." | Then you are running the neutral baseline, and you must say so in the report. A preference with no local rule and no named consequence is `info`, not a convention violation — this lane's authority comes from the project's own documents. |
191
+ | "The guide says one thing but the newer files all do another, so that is the convention." | A pattern repeated in code is a candidate convention, not a decision. Cite the guide and name the divergence; let the team choose which one moves. |
192
+ | "The linter already fails on this, so it is at least `major`." | The machine catches it before merge. A reviewer restating a lint error spends a merge gate on something no human can ship past, which is why the rubric above puts it at `minor`. |
193
+ | "It is one direct `localStorage` call — the wrapper is overkill here." | The wrapper exists because the raw API throws on quota and is absent in some environments. One unguarded call is the class; enumerate the others before deciding it is small. |
194
+ | "This component does not read observables, so it does not need the reactive wrapper." | Check what it reads through props and through the store getters it calls. Lost reactivity is silent, which is why it is rated the same here as in `review-frontend`. |
195
+ | "The inline `style` is dynamic, so the token rule does not reach it." | Only the computed part is dynamic. Colours and spacing inside it still come from the local tokens, and mixing the two is how a theme change stops applying to one surface. |
196
+
197
+ ---
198
+
199
+ ## Verification
200
+
201
+ Report done only once all of these hold:
202
+
203
+ - The report names which local convention documents were found and read, or
204
+ states plainly that none exist and only the neutral baseline ran.
205
+ - Every finding cites the local rule it rests on — the guide, the lint config, or
206
+ the baseline section above — and names `file:line`.
207
+ - Every `blocker` and `major` carries `class_scope` with `sites` and an
208
+ `enumeration_method` naming the search that produced them.
209
+ - No finding invents a severity: each lands under **Severity (canonical)** in
210
+ `review-orchestrator/SKILL.md`.
211
+ - The reply is the `REVIEW_RESULT` the Orchestrated Review Contract asks for, or
212
+ `NEEDS_CONTEXT` naming the context that was missing — never a guess in its place.
213
+
@@ -11,13 +11,11 @@ description: |
11
11
  (review-performance), clean code style (review-clean-code), or NestJS module structure
12
12
  (review-architecture).
13
13
  triggers:
14
- - "review highload"
15
- - "review scalability"
16
14
  - "highload review"
17
- - "review concurrency"
15
+ - "concurrency review"
16
+ - "race condition"
17
+ - "review scalability"
18
18
  - "review distributed"
19
- - "review --highload"
20
- - dispatched by review-orchestrator
21
19
  metadata:
22
20
  author: "MrCipherSmith"
23
21
  version: "1.0.0"
@@ -12,10 +12,9 @@ description: |
12
12
  naming and readability (review-style), re-render cost (review-performance), React or
13
13
  MobX structure (review-frontend).
14
14
  triggers:
15
- - "review layout"
16
15
  - "layout review"
16
+ - "review layout"
17
17
  - "does this render correctly"
18
- - "dispatched by review-orchestrator"
19
18
  metadata:
20
19
  author: "MrCipherSmith"
21
20
  version: "1.0.0"
@@ -215,3 +214,25 @@ a claim that the class has exactly one member — make it deliberately.
215
214
  | "The class names look fine." | This lane does not review class names. That is `review-frontend-conventions`. |
216
215
  | "I could not run the visual tier, so I reasoned it out." | Then it is `info`, marked unverified. Reasoning does not become measurement by being careful. |
217
216
  | "RTL is handled, the component uses logical properties." | Check the gradients, shadows and transforms too. Those are the ones that do not flip. |
217
+
218
+ ---
219
+
220
+ ## Verification
221
+
222
+ Report done only once all of these hold:
223
+
224
+ - Every finding carries a **measurement**: the host width, the element width or
225
+ the offset in pixels, and the command or probe that produced it. An unmeasured
226
+ observation is filed as `info`, marked unverified, and says what would settle it.
227
+ - The measurement was taken at the worst real case — the longest translation in
228
+ the catalog, the narrowest supported host, the state where the sibling is
229
+ absent — not at the convenient one.
230
+ - Every finding names `file:line` on the component that renders the box.
231
+ - Every `blocker` and `major` carries `class_scope` with `sites` and an
232
+ `enumeration_method` naming the search that derived the set of elements sharing
233
+ the sizing shape.
234
+ - No finding invents a severity: each lands under **Severity (canonical)** in
235
+ `review-orchestrator/SKILL.md`.
236
+ - The reply is the `REVIEW_RESULT` the Orchestrated Review Contract asks for, with
237
+ finding ids prefixed `LY-`, or `NEEDS_CONTEXT` naming the context that was
238
+ missing — never a guess in its place.
@@ -9,12 +9,12 @@ description: |
9
9
  NOT for: security vulnerabilities, performance profiling, style/naming preferences,
10
10
  or architectural pattern concerns — those belong in their respective specialized reviewers.
11
11
  triggers:
12
- - "review logic"
12
+ - "logic review"
13
+ - "bug review"
14
+ - "correctness"
13
15
  - "check correctness"
14
16
  - "are there any bugs"
15
17
  - "check this for bugs"
16
- - "logic review"
17
- - "dispatched by review-orchestrator"
18
18
  metadata:
19
19
  author: "MrCipherSmith"
20
20
  version: "1.0.0"
@@ -1,36 +1,16 @@
1
1
  ---
2
2
  name: review-orchestrator
3
- description: |
4
- Use when: a code review is requested and the user does not explicitly name a specialized reviewer.
5
- Handles "review", "code review", "review PR", "review --frontend", "review --backend",
6
- "review --architecture", "review --security", "review --performance", "review --style",
7
- "review --verify", "review --project-conventions", "review --legacy-profiles", "review --all". Routes to specialized reviewers in parallel and
8
- consolidates findings into one unified report.
9
- NOT for: running a single specialized reviewer — invoke it directly by name instead.
3
+ description: 'Use when: a code review is requested and the user does not name a specialized reviewer — "review", "code review", "review this PR", "review --all". Dispatches the relevant specialized reviewers in parallel and consolidates their findings into one unified report, and owns the fan-out flags "--all", "--project-conventions" and "--legacy-profiles". NOT for: running a single specialized reviewer — invoke it directly by name instead, which is also how a flag that names one domain reaches its reviewer.'
10
4
  triggers:
11
5
  - "review"
12
- - "code review"
6
+ - "ревью"
7
+ - "review code"
8
+ - "full review"
9
+ - "review changes"
13
10
  - "review PR"
14
- - "review --frontend"
15
- - "review --backend"
16
- - "review --architecture"
17
- - "review --security"
18
- - "review --performance"
19
- - "review --style"
20
- - "review --verify"
21
11
  - "review --all"
22
- - "review --clean-code"
23
- - "review --highload"
24
12
  - "review --project-conventions"
25
- - "review --frontend-conventions"
26
- - "review --testing-practices"
27
- - "review --core-boundaries"
28
- - "review --flow-graph"
29
13
  - "review --legacy-profiles"
30
- - "review --code-ai"
31
- - "review --learned"
32
- - "review --code-style"
33
- - "review --mobx-store"
34
14
  metadata:
35
15
  author: "MrCipherSmith"
36
16
  version: "1.9.0"
@@ -1163,10 +1143,10 @@ Skipped reviewers:
1163
1143
  | `--verify` | `review-verifier`, AFTER all others; checks the consolidated findings by running something. Delete-only. |
1164
1144
  | (auto) | detected from diff file extensions — see Auto-detection table |
1165
1145
 
1166
- Multiple flags may be combined. Example: `review --backend --security` dispatches
1167
- `review-logic` + `review-backend` + `review-architecture` + `review-security-code`.
1168
- Example: `review --frontend --frontend-conventions` dispatches the generic frontend set plus the
1169
- local frontend conventions reviewer.
1146
+ Multiple flags may be combined: `review --backend --security` dispatches `review-logic` + `review-backend` + `review-architecture` + `review-security-code`; `review --frontend --frontend-conventions` dispatches the generic frontend set plus the local frontend conventions reviewer.
1147
+
1148
+ This table applies once this skill is running; reaching it is a separate question. The router strips `--`, so `review --style` is the same phrase as `review-style`'s own `style review` trigger and goes straight there — the same destination this table names, and likewise for `--architecture`, `--security` and `--performance`. Only `--all`, `--project-conventions` and `--legacy-profiles` name this orchestrator, which is why they are its triggers.
1149
+ `--frontend` and `--backend` are the exception: this table fans each out to three reviewers, but a bare `review --frontend` reaches `review-frontend` alone, because `review frontend` and `frontend review` are one phrase to the router and that phrase is the specialist's — two skills may not share a trigger token set (`src/gdskills/catalog-single-source.test.ts`). Ask by name, or use `review --all`, when you want the three-reviewer fan-out; `docs/skills/rejected-skill-changes.md` records the alternatives that were measured and rejected.
1170
1150
 
1171
1151
  ---
1172
1152
 
@@ -3,12 +3,12 @@ name: review-performance
3
3
  model_tier: standard
4
4
  description: "Use when a performance review is requested, checking for N+1 queries, unnecessary re-renders, memory leaks, missing indexes, large bundle imports, and synchronous blocking in changed code. NOT for security, logic correctness, style, or architecture."
5
5
  triggers:
6
- - "review performance"
7
6
  - "performance review"
7
+ - "perf check"
8
+ - "slow"
8
9
  - "check for perf issues"
9
10
  - "perf review"
10
11
  - "check N+1"
11
- - dispatched by review-orchestrator
12
12
  metadata:
13
13
  author: "MrCipherSmith"
14
14
  version: "1.0.0"
@@ -235,6 +235,12 @@ boundary is the trigger-and-outcome test.
235
235
  frequency *is* the trigger shared law 1 asks for.
236
236
  2. **Do not flag patterns outside the diff.** Review only changed code. Legacy
237
237
  issues outside the diff are `info` at most, with a note to track separately.
238
+ 3. **An optimisation with no before/after is an unmeasured claim, and a neutral
239
+ one is a finding.** Ask what was measured and on what workload. No pair at all
240
+ is `minor` — unjustified, not wrong. A neutral pair is `major`, and the fix it
241
+ suggests is a revert: what counts as neutral under noise, and what the attempt
242
+ owes the journal, are `perf-check`'s Rules, not restated here. Writing that
243
+ entry is the author's job, not yours; a revert with no entry is its own `minor`.
238
244
 
239
245
  ---
240
246
 
@@ -340,11 +346,9 @@ Stop and re-read these rules if you are thinking:
340
346
  | Rationalization | Why it's wrong |
341
347
  |---|---|
342
348
  | "This loop iterates over user data, so N+1 is obviously a problem" | State the expected N and query cost; "user data" is not self-evidently large |
343
- | "I'll flag this as major because it looks slow" | Looking slow is not a hot path; cite the execution context |
344
349
  | "Missing useMemo here is a performance issue" | useMemo has overhead; only flag when the computation is measurably expensive or the component re-renders at high frequency |
345
- | "I'll add a minor finding for every lodash default import" | Correct — but only flag if the library is large and the import is demonstrably not tree-shaken |
346
350
  | "The dataset could grow large, so I'll call it a blocker" | "Could grow" = minor or info; known to be large = major or blocker |
347
- | "Skipping the hot-path citation to keep the finding concise" | Performance law 1: the hot path is mandatory for blocker/major; omitting it means downgrading to `info` |
351
+ | "The optimisation measures neutral, but it does no harm — no reason to hold the diff" | The complexity it bought with no measured gain *is* the harm, and it passes review precisely because nothing in it is wrong. Neutral is `revert`, per performance law 3 |
348
352
 
349
353
  ---
350
354
 
@@ -365,10 +369,6 @@ If provided and the file exists, read the context document before starting the r
365
369
 
366
370
  If the file does not exist or is not provided, proceed normally — context is optional and non-blocking.
367
371
 
368
-
369
372
  ## Orchestrated Review Contract
370
373
 
371
374
  When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `.metaproject/skills/gdskills/review/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.
372
-
373
- ---
374
-
@@ -9,13 +9,14 @@ description: |
9
9
  NOT for: reviewing code directly — this skill reads human or bot PR feedback and
10
10
  makes it actionable. To review code, use the domain review skills.
11
11
  triggers:
12
- - "analyze PR comments"
13
12
  - "review PR feedback"
13
+ - "analyze PR comments"
14
+ - "review comments"
15
+ - "fix PR comments"
14
16
  - "what did reviewers say"
15
17
  - "parse PR #N"
16
18
  - "explain PR comments"
17
19
  - "PR feedback"
18
- - "fix PR comments"
19
20
  - "review-pr-feedback --fix"
20
21
  metadata:
21
22
  author: "MrCipherSmith"
@@ -10,8 +10,7 @@ description: |
10
10
  triggers:
11
11
  - "review regression"
12
12
  - "does this change break anything"
13
- - "blast radius review"
14
- - "dispatched by review-orchestrator"
13
+ - "blast radius"
15
14
  metadata:
16
15
  author: "MrCipherSmith"
17
16
  version: "1.0.0"
@@ -183,3 +182,35 @@ Severity levels are defined once, in `review-orchestrator/SKILL.md` →
183
182
  **Severity (canonical)**. This reviewer does not restate them: `blocker` is the
184
183
  four merge-blocking shapes named there and nothing else, and the `major`/`minor`
185
184
  boundary is the trigger-and-outcome test.
185
+
186
+ ---
187
+
188
+ ## Red Flags
189
+
190
+ | Rationalization | Why it is wrong |
191
+ |----------------|-----------------|
192
+ | "This code in the blast radius is badly written, so I will say so." | Scope B asks one question, and it is not that one. The screen rejects it as `outside-set` or as `non-regression-severity`, and the round is spent on a finding nobody reads. |
193
+ | "The caller might break." | Might is not a regression. Name the argument that is no longer passed, the type that narrowed, the branch that went away — or file nothing. Below `major` the screen rejects it by construction. |
194
+ | "I will anchor the finding at the changed line, since that is the cause." | Scope A already reviewed that line. Anchor where the damage lands: the caller a human has to open is the one that breaks. |
195
+ | "The blast radius came back empty, so the change breaks nothing." | An empty radius for a non-code change is recorded as unresolved, not clean. Say the radius could not answer the question — silence that reads as "nothing found" is the failure this lane was built to stop. |
196
+ | "It is a `major` about a dependent and the anchor names the file, so the link to the change is obvious." | `no-link-to-change` is a substring match over your prose, and only a `blocker` is exempt from it. Name the changed file, module or symbol in the finding text or it is dropped before it reaches `findings.json`. |
197
+ | "The set was capped, but I covered the important ones." | The cap is recorded. If files were dropped, say so in the summary; a report that implies a complete sweep over a truncated set is a false claim about coverage. |
198
+ | "The change is only reached through a spawned process / a string-keyed lookup, so the graph must have missed it — I will report it anyway." | Report it, and say the graph could not see the edge. What you must not do is present a runtime path as if the computed set produced it. |
199
+
200
+ ---
201
+
202
+ ## Verification
203
+
204
+ Report done only once all of these hold:
205
+
206
+ - Every finding is anchored inside the computed set or the changed set, at the
207
+ code that **breaks** rather than the code that changed.
208
+ - Every finding is `major` or above, and every `major` names the changed file,
209
+ module or symbol whose behaviour moved — the anchor alone does not carry it.
210
+ - Every finding carries `class_scope` whose `sites` are the callers that break and
211
+ whose `enumeration_method` is the walk over the blast-radius set that produced
212
+ them.
213
+ - The summary states whether the cap dropped files, and whether the radius could
214
+ answer the question at all for the shape of this change.
215
+ - Nothing that is merely an observation about pre-existing code is filed here; it
216
+ is either raised under scope A or not at all.
@@ -3,12 +3,14 @@ name: review-security-code
3
3
  model_tier: standard
4
4
  description: "Use when a code-level security review is requested, checking for injection vulnerabilities, auth gaps, insecure cryptography, secrets, and OWASP Top 10 patterns in changed code. NOT for infrastructure, deployment, or dependency audits."
5
5
  triggers:
6
- - "review security"
7
6
  - "security review"
7
+ - "проверь безопасность"
8
+ - "безопасность кода"
9
+ - "secure code"
10
+ - "vulnerability"
8
11
  - "check for vulnerabilities"
9
12
  - "security check"
10
13
  - "OWASP review"
11
- - dispatched by review-orchestrator
12
14
  metadata:
13
15
  author: "MrCipherSmith"
14
16
  version: "1.0.0"
@@ -8,11 +8,11 @@ description: |
8
8
  NOT for: logic bugs, architectural violations, security vulnerabilities, performance
9
9
  anti-patterns, or any finding that could cause a functional regression.
10
10
  triggers:
11
- - "review style"
12
11
  - "style review"
12
+ - "readability"
13
+ - "clean up"
13
14
  - "check naming"
14
15
  - "check readability"
15
- - "review --style"
16
16
  metadata:
17
17
  author: "MrCipherSmith"
18
18
  version: "1.0.0"
@@ -10,11 +10,15 @@ description: |
10
10
  cannot fail is found by executing it rather than by reading it.
11
11
  Dispatched by review-orchestrator for --testing-practices,
12
12
  --project-conventions, --all, or changed test/e2e/story files.
13
+ NOT for: the correctness of the production code a suite covers (review-logic),
14
+ or naming and readability inside a test with no effect on what it pins
15
+ (review-style).
13
16
  triggers:
17
+ - "test review"
18
+ - "testing practices"
19
+ - "coverage quality"
14
20
  - "review tests"
15
21
  - "review testing practices"
16
- - "review --testing-practices"
17
- - dispatched by review-orchestrator
18
22
  metadata:
19
23
  author: "MrCipherSmith"
20
24
  version: "1.1.0"
@@ -279,3 +283,37 @@ the unpinned code do the wrong thing**, that is a separate finding at the severi
279
283
  its own outcome earns — usually `major`. The coverage gap and the defect are two
280
284
  findings, not one, and conflating them loses whichever the adjudicator disbelieves.
281
285
 
286
+ ---
287
+
288
+ ## Red Flags
289
+
290
+ | Rationalization | Why it is wrong |
291
+ |----------------|-----------------|
292
+ | "The suite is green, so the tests pin the behaviour." | Green is the state before the mutation pass, not its result. Delete the gate, run the nearest suite, and report what happened — that is the one question this reviewer exists to answer. |
293
+ | "I could not run the suite, so I worked out what the mutation would do." | A predicted mutation is `info` at best and this lane has no use for one. Say which command you ran, what stopped it, and skip the pass — do not report a result you did not observe. |
294
+ | "I only published the mutations that survived; the rest were noise." | The reds are what makes the greens mean something. A table of survivors alone reads as cherry-picking and will be discounted whole. |
295
+ | "The fixture is named `drift-only`, so it covers the drift case." | The name is the claim under review. Open the producer and compare every field, not only the one the test pins; a fixture that carries another scenario's shape is coverage that lies. |
296
+ | "Mocking the API module is simpler than standing up the network boundary." | It also deletes the layer where the bug lives — serialisation, status handling, the error path. Simpler is the reason the convention exists to overrule. |
297
+ | "This test is flaky, that is a `blocker`." | Flake wastes time; it does not ship a defect. `major`. The one `blocker` in this lane is a test that cannot fail while the behaviour it names is broken. |
298
+ | "I mutated more gates than my budget allowed, but I got through most of them." | Say how many you did not reach. A stated cap is a result; silence reads as a complete sweep and the next round inherits the gap without knowing it. |
299
+
300
+ ---
301
+
302
+ ## Verification
303
+
304
+ Report done only once all of these hold:
305
+
306
+ - The mutation table is published in full, survivors and casualties both, or the
307
+ report says which command failed and that the pass was skipped.
308
+ - The report states the cap: how many added or previously-requested gates were
309
+ mutated and how many were not reached.
310
+ - Every finding names `file:line` and the evidence that settles it — the mutation
311
+ and its result, the producer line, or the selector that names the branch.
312
+ - Every `blocker` and `major` carries `class_scope` with `sites` and an
313
+ `enumeration_method` naming the search that produced them.
314
+ - No finding invents a severity: each lands under **Severity (canonical)** in
315
+ `review-orchestrator/SKILL.md`, and a coverage gap is filed separately from any
316
+ defect it exposes.
317
+ - The reply is the `REVIEW_RESULT` the Orchestrated Review Contract asks for, or
318
+ `NEEDS_CONTEXT` naming the context that was missing — never a guess in its place.
319
+
@@ -12,8 +12,8 @@ description: |
12
12
  triggers:
13
13
  - "verify findings"
14
14
  - "review --verify"
15
- - "check these findings"
16
15
  - "verification pass"
16
+ - "check these findings"
17
17
  metadata:
18
18
  author: "MrCipherSmith"
19
19
  version: "1.1.0"