@mrciphersmith/keryx 0.2.97 → 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 (210) hide show
  1. package/dist/cli.js +4583 -2702
  2. package/dist/core.js +40 -2
  3. package/package.json +1 -1
  4. package/src/gdskills/bundled/rules/core/api-contracts.mdc +1 -0
  5. package/src/gdskills/bundled/rules/core/cli-interface-design.mdc +237 -0
  6. package/src/gdskills/bundled/rules/core/code-style-patterns.mdc +1 -0
  7. package/src/gdskills/bundled/rules/core/database-patterns.mdc +1 -0
  8. package/src/gdskills/bundled/rules/core/definition-of-done.mdc +116 -0
  9. package/src/gdskills/bundled/rules/core/documentation-management.mdc +33 -38
  10. package/src/gdskills/bundled/rules/core/error-handling.mdc +1 -11
  11. package/src/gdskills/bundled/rules/core/execution-metrics.md +1 -2
  12. package/src/gdskills/bundled/rules/core/frontend-assistant.mdc +1 -0
  13. package/src/gdskills/bundled/rules/core/git-concurrency.mdc +101 -0
  14. package/src/gdskills/bundled/rules/core/implementation-plans.mdc +23 -11
  15. package/src/gdskills/bundled/rules/core/mobx-store-template.mdc +1 -0
  16. package/src/gdskills/bundled/rules/core/nestjs-dto.mdc +1 -0
  17. package/src/gdskills/bundled/rules/core/playwright-testing.mdc +1 -0
  18. package/src/gdskills/bundled/rules/core/requirements-management.mdc +15 -11
  19. package/src/gdskills/bundled/rules/core/rule-management-workflow.mdc +29 -14
  20. package/src/gdskills/bundled/rules/core/shared-definitions.mdc +1 -1
  21. package/src/gdskills/bundled/rules/core/skill-lifecycle.mdc +9 -5
  22. package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +156 -23
  23. package/src/gdskills/bundled/rules/core/storybook-guidelines.mdc +1 -0
  24. package/src/gdskills/bundled/rules/core/subagent-status-protocol.md +9 -2
  25. package/src/gdskills/bundled/skills/core/reviewer-skill-creator/SKILL.md +42 -5
  26. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +67 -74
  27. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +24 -8
  28. package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +2 -2
  29. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.detail.md +12 -22
  30. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +44 -31
  31. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.md +2 -2
  32. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.template.md +1 -1
  33. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/input-contract.schema.json +4 -4
  34. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +2 -2
  35. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +20 -6
  36. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +67 -9
  37. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +6 -6
  38. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +1 -1
  39. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +45 -5
  40. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +88 -32
  41. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +52 -41
  42. package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +32 -1
  43. package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +16 -0
  44. package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +16 -0
  45. package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +16 -0
  46. package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +17 -0
  47. package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +16 -0
  48. package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +16 -0
  49. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +29 -4
  50. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +17 -0
  51. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +17 -0
  52. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +17 -0
  53. package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +32 -2
  54. package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +14 -2
  55. package/src/gdskills/bundled/skills/planning/interview/SKILL.md +30 -8
  56. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +33 -7
  57. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +16 -0
  58. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +16 -0
  59. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +16 -0
  60. package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +17 -0
  61. package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +17 -0
  62. package/src/gdskills/bundled/skills/planning/planner/SKILL.md +17 -0
  63. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +27 -10
  64. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +16 -0
  65. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +16 -0
  66. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +16 -0
  67. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +16 -0
  68. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +16 -0
  69. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +16 -0
  70. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +4 -0
  71. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +4 -0
  72. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +4 -0
  73. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +4 -0
  74. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +4 -0
  75. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +4 -0
  76. package/src/gdskills/bundled/skills/platform/agent-entrypoint-distiller/SKILL.md +31 -4
  77. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +27 -3
  78. package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +29 -4
  79. package/src/gdskills/bundled/skills/quality/api-truth/SKILL.md +226 -0
  80. package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +25 -5
  81. package/src/gdskills/bundled/skills/quality/commit/SKILL.md +26 -5
  82. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +25 -4
  83. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +26 -5
  84. package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +27 -4
  85. package/src/gdskills/bundled/skills/quality/deprecation-path/SKILL.md +268 -0
  86. package/src/gdskills/bundled/skills/quality/fresh-eyes/SKILL.md +190 -0
  87. package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +24 -3
  88. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +30 -9
  89. package/src/gdskills/bundled/skills/quality/pr/SKILL.md +25 -5
  90. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +27 -4
  91. package/src/gdskills/bundled/skills/quality/push/SKILL.md +25 -4
  92. package/src/gdskills/bundled/skills/quality/root-cause/SKILL.md +204 -0
  93. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +25 -4
  94. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +31 -5
  95. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +32 -11
  96. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +42 -7
  97. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +43 -3
  98. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +46 -4
  99. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +46 -6
  100. package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +5 -5
  101. package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +5 -6
  102. package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +6 -6
  103. package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +37 -3
  104. package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +38 -4
  105. package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +4 -6
  106. package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +37 -3
  107. package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +5 -7
  108. package/src/gdskills/bundled/skills/review/review-layout/SKILL.md +24 -3
  109. package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +5 -5
  110. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +49 -64
  111. package/src/gdskills/bundled/skills/review/review-orchestrator/input-contract.schema.json +1 -2
  112. package/src/gdskills/bundled/skills/review/review-orchestrator/review-context.schema.json +1 -5
  113. package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +53 -9
  114. package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +11 -11
  115. package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +9 -8
  116. package/src/gdskills/bundled/skills/review/review-regression/SKILL.md +33 -2
  117. package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +6 -4
  118. package/src/gdskills/bundled/skills/review/review-style/SKILL.md +5 -5
  119. package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +41 -3
  120. package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +2 -2
  121. package/src/gdskills/bundled/rules/core/review-agent-profile.mdc +0 -49
  122. package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +0 -48
  123. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +0 -353
  124. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +0 -353
  125. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +0 -353
  126. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +0 -353
  127. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +0 -655
  128. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +0 -655
  129. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +0 -655
  130. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +0 -655
  131. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +0 -434
  132. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +0 -434
  133. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +0 -434
  134. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +0 -434
  135. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +0 -163
  136. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +0 -163
  137. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +0 -373
  138. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +0 -373
  139. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +0 -373
  140. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +0 -373
  141. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +0 -374
  142. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +0 -374
  143. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +0 -374
  144. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +0 -374
  145. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +0 -2190
  146. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +0 -2190
  147. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +0 -2190
  148. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +0 -2190
  149. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +0 -659
  150. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +0 -659
  151. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +0 -659
  152. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +0 -659
  153. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +0 -90
  154. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +0 -90
  155. package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +0 -187
  156. package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +0 -187
  157. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +0 -105
  158. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +0 -105
  159. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +0 -193
  160. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +0 -193
  161. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +0 -193
  162. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +0 -193
  163. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +0 -87
  164. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +0 -87
  165. package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +0 -100
  166. package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +0 -100
  167. package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +0 -84
  168. package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +0 -84
  169. package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +0 -66
  170. package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +0 -66
  171. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +0 -66
  172. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +0 -66
  173. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +0 -81
  174. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +0 -81
  175. package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +0 -70
  176. package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +0 -70
  177. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +0 -83
  178. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +0 -83
  179. package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +0 -75
  180. package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +0 -75
  181. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +0 -378
  182. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +0 -378
  183. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +0 -378
  184. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +0 -378
  185. package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +0 -52
  186. package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +0 -52
  187. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +0 -108
  188. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +0 -108
  189. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +0 -75
  190. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +0 -75
  191. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +0 -339
  192. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +0 -339
  193. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +0 -339
  194. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +0 -339
  195. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +0 -203
  196. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +0 -203
  197. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +0 -203
  198. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +0 -203
  199. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +0 -243
  200. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +0 -243
  201. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +0 -243
  202. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +0 -243
  203. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +0 -259
  204. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +0 -259
  205. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +0 -259
  206. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +0 -259
  207. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +0 -168
  208. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +0 -168
  209. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +0 -168
  210. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +0 -168
@@ -1,15 +1,16 @@
1
1
  ---
2
2
  name: code-learned-review
3
- description: "Reviews the current branch against conventions this project learned from its own pull-request comments, recorded in a local project skill. Ships with an empty checklist: the content comes from `keryx review learn`, never from the tool. Use when: a project has a learned review skill and wants its own accumulated conventions applied."
3
+ description: "Use when a project has a learned review skill — built by `keryx review learn` from its own pull-request comments — and wants those accumulated conventions applied to the current branch. Ships with an empty checklist: the content comes from the project, never from the tool. NOT for: a project with no learned skill, or a review request that names no profile (review-orchestrator)."
4
4
  triggers:
5
5
  - "learned review"
6
+ - "code-learned-review"
6
7
  - "review with our conventions"
7
8
  - "review using what we learned"
8
9
  metadata:
9
10
  author: "keryx"
10
11
  version: "2.0.0"
11
12
  category: "review"
12
- compatible_harnesses: "cursor,codex,zed,opencode"
13
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
13
14
  license: "MIT"
14
15
  ---
15
16
 
@@ -87,7 +88,7 @@ that is a supported state rather than an error.
87
88
 
88
89
  ## Scope Detection
89
90
 
90
- See shared script: `skills/shared/git-merge-base.md`
91
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
91
92
 
92
93
  Run the script from that file to determine MERGE_BASE and SCOPE before
93
94
  proceeding with the review.
@@ -241,3 +242,42 @@ review. Use it to:
241
242
 
242
243
  If the file does not exist or is not provided, proceed normally — context is
243
244
  optional and non-blocking.
245
+
246
+ ---
247
+
248
+ ## Red Flags
249
+
250
+ This profile is a mechanism with an empty checklist, and it predates the finding
251
+ contract the rest of the review domain now shares. Both facts produce their own
252
+ failure modes, and they are the rows below.
253
+
254
+ | Rationalization | Why it is wrong |
255
+ |----------------|-----------------|
256
+ | "This project has no learned skill, but I can review against sensible conventions." | An empty learned review is not a generic review. Say the project has no learned skill and stop; `review-orchestrator` is what a generic request wants. Inventing conventions here ships one model's taste as the team's agreed standard. |
257
+ | "This lesson is about a slightly different case, but the spirit applies." | Do not generalise a lesson past its text. A lesson about one shape of function is about that shape; widening it into a rule about a layer or a language invents a convention the project never agreed to. |
258
+ | "The lesson came from a named reviewer, so I will report it as what they would want." | Do not attribute. The record says a comment was left, nothing more. Reporting a finding as a person's preference turns the checklist back into the persona this skill exists to remove. |
259
+ | "This pull-request comment is good even though the config does not name its author." | An author the config does not name contributes nothing — not to a proposal, not to a `SKILL.md`, and not to this review. Changing who counts is a config change, made deliberately, not a judgement call mid-review. |
260
+ | "A lesson exists for this, so the finding stands." | A lesson is evidence, not authority. If the diff has a reason the original objection does not apply here, the reason wins and the finding is not raised. |
261
+ | "The report has a Severity field, so it is a review result." | It is not. This profile predates `reviewer-finding.schema.json` and emits free prose with no machine-readable finding, so nothing downstream can screen, verify or deduplicate it. Hand it to a person, never to `keryx review ingest`. |
262
+ | "The lessons I checked that matched nothing are not worth mentioning." | They are the only way anyone learns a lesson has gone stale. Record the count of lessons checked and the count that matched, either way. |
263
+
264
+ ---
265
+
266
+ ## Verification
267
+
268
+ Report done only once all of these hold:
269
+
270
+ - `.metaproject/review-learning.config.json` was read and the project skill it
271
+ names was opened. If that skill carries no lessons, the reply says so and stops
272
+ rather than reviewing generically.
273
+ - The report states the project skill and version, the number of lessons checked
274
+ and the number that matched.
275
+ - Every finding cites the line in the project skill it rests on. Findings with no
276
+ learned lesson behind them are listed in their own section and routed to the
277
+ reviewer that owns them.
278
+ - No finding names a person, quotes a personal catchphrase, or reports a lesson as
279
+ somebody's preference.
280
+ - The scope block carries the real branch, parent ref, merge-base and scope mode,
281
+ and every finding is anchored to a line the branch slice changed.
282
+ - The report is free prose by design, so it is delivered to a person and is not
283
+ fed into the managed-review pipeline.
@@ -1,15 +1,17 @@
1
1
  ---
2
2
  name: code-mobx-store-review
3
- description: "Targeted MobX store and state logic review. Checks store/actions/computed/reactions, async runInAction, state typing, View↔Store boundaries. Use when: reviewing MobX changes, state management validation."
3
+ description: "Use when MobX store changes need a focused review — actions, computed values, reactions, async runInAction, state typing, and View↔Store boundaries. NOT for: a general frontend review (review-frontend) or a review request that names no domain (review-orchestrator)."
4
4
  triggers:
5
+ - "mobx review"
6
+ - "store review"
7
+ - "code-mobx-store-review"
5
8
  - "Review MobX store"
6
9
  - "Check store changes"
7
- - "MobX review"
8
10
  metadata:
9
11
  author: "MrCipherSmith"
10
12
  version: "1.1.0"
11
13
  category: "review"
12
- compatible_harnesses: "cursor,codex,zed,opencode"
14
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
13
15
  stack_requires: "mobx"
14
16
  license: "MIT"
15
17
  ---
@@ -31,7 +33,7 @@ license: "MIT"
31
33
 
32
34
  ## Scope Detection
33
35
 
34
- See shared script: `skills/shared/git-merge-base.md`
36
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
35
37
 
36
38
  Run the script from that file to determine MERGE_BASE and SCOPE before proceeding with the review.
37
39
 
@@ -257,3 +259,43 @@ If provided and the file exists, read the context document before starting the r
257
259
  - Avoid flagging intentional architectural decisions as issues
258
260
 
259
261
  If the file does not exist or is not provided, proceed normally — context is optional and non-blocking.
262
+
263
+ ---
264
+
265
+ ## Red Flags
266
+
267
+ This profile is a thin legacy wrapper around `mobx-store-template.mdc`. It
268
+ predates the shared finding contract, it does not use the review domain's
269
+ severity vocabulary at all, and half of it is written in Russian — each of those
270
+ is a way it misfires, and they are the rows below.
271
+
272
+ | Rationalization | Why it is wrong |
273
+ |----------------|-----------------|
274
+ | "The checklist prints severities, so this report is a review result." | It is not. `Critical` / `Warnings` / `Suggestions` are section headings in a Markdown document, not a severity field: this profile predates `reviewer-finding.schema.json` and emits free prose with no machine-readable finding. Hand it to a person, never to `keryx review ingest`. |
275
+ | "Half the instructions are in Russian, so the report should be." | The mixed language is an artefact of when this file was written. Write the report in the language the requester used. |
276
+ | "The two stores sync both ways and I have not seen an infinite loop." | A bounce needs one ordering to appear, and reading the code is not running it. The checklist rates a bidirectional sync with no equality guard as **critical** for exactly that reason: the absence of the guard is the finding, not the absence of a reproduction. |
277
+ | "`if (value && value !== other)` is the safer guard." | It is the guard that silently refuses to clear. `undefined`, `null`, `0` and `""` are legitimate values to propagate, and a truthy check strands the stale one instead. |
278
+ | "The component's `useEffect` calls `store.init()` — that is ordinary React." | Not under this architecture. The parent store orchestrates its children's lifecycle, and moving that into a component is how `dispose()` stops being called and stale async writes start landing. |
279
+ | "The method is only called by another store, so `@action.bound` is harmless." | The decorator publishes it. Inter-store callbacks and internal handlers are `private` here; the naming patterns the checklist lists are the tell, and the decision question is whether a React component calls it. |
280
+ | "While I was in the store I also noticed naming and component problems." | The Scope Boundaries table routes those to `code-style-review` and `code-ai-review`. A finding filed under the wrong profile arrives without the checks that lane would have applied. |
281
+
282
+ ---
283
+
284
+ ## Verification
285
+
286
+ Report done only once all of these hold:
287
+
288
+ - The requester asked for this profile by name, or through
289
+ `review --legacy-profiles`. A general frontend or store review with no profile
290
+ named belongs to `review-orchestrator`.
291
+ - The scope block carries the real branch, parent ref, merge-base and scope mode —
292
+ not the template placeholders.
293
+ - Every entry carries Rule, Why, Where (path plus the lines from the diff) and
294
+ Fix, with a minimal unified diff where the fix is a line or two.
295
+ - Every entry is anchored to a line the branch slice actually changed; legacy
296
+ store code outside that slice is not discussed.
297
+ - Entries are sorted into this document's own Critical / Warnings / Suggestions
298
+ sections, and are not presented as a severity any other reviewer or tool
299
+ consumes.
300
+ - The report is free prose by design, so it is delivered to a person and is not
301
+ fed into the managed-review pipeline.
@@ -1,15 +1,14 @@
1
1
  ---
2
2
  name: code-style-review
3
- description: "Detailed code style and architecture review using code-style-patterns.mdc. Reviews current branch changes. Checks naming, organization, patterns, TypeScript usage. Use when: style validation needed, architecture review."
3
+ description: "Use when the legacy code style and architecture review profile (code-style-patterns.mdc) is asked for by name — naming, organization, patterns, and TypeScript usage on the current branch. NOT for: a general style review (review-style) or an architecture review (review-architecture)."
4
4
  triggers:
5
- - "Style review"
6
- - "Check code style"
7
- - "Architecture review"
5
+ - "code-style-review"
6
+ - "architecture style"
8
7
  metadata:
9
8
  author: "MrCipherSmith"
10
9
  version: "1.0.0"
11
10
  category: "review"
12
- compatible_harnesses: "cursor,codex,zed,opencode"
11
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
13
12
  license: "MIT"
14
13
  ---
15
14
 
@@ -30,7 +29,7 @@ license: "MIT"
30
29
 
31
30
  ## Scope Detection
32
31
 
33
- See shared script: `skills/shared/git-merge-base.md`
32
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
34
33
 
35
34
  Run the script from that file to determine MERGE_BASE and SCOPE before proceeding with the review.
36
35
 
@@ -166,3 +165,44 @@ If provided and the file exists, read the context document before starting the r
166
165
  - Provide more accurate findings by understanding the project's architectural decisions
167
166
 
168
167
  If the file does not exist or is not provided, proceed normally — context is optional and non-blocking.
168
+
169
+ ---
170
+
171
+ ## Red Flags
172
+
173
+ This profile is a thin legacy wrapper around `code-style-patterns.mdc`. It
174
+ predates the shared finding contract, it does not use the review domain's
175
+ severity vocabulary at all, and it is written mostly in Russian — each of those
176
+ is a way it misfires, and they are the rows below.
177
+
178
+ | Rationalization | Why it is wrong |
179
+ |----------------|-----------------|
180
+ | "A style review was asked for, so I will run this profile." | It is a legacy opt-in profile pinned to one rules file, reached by name or through `review --legacy-profiles`. A general style request belongs to `review-style`, and an architecture request to `review-architecture`; running this instead answers a narrower question than the one that was asked. |
181
+ | "The report has a Critical section, so downstream can consume it." | It cannot. `Critical` / `Warnings` / `Suggestions` are headings in a Markdown document, not a severity field: this profile predates `reviewer-finding.schema.json` and emits free prose with no machine-readable finding. Hand it to a person, never to `keryx review ingest`. |
182
+ | "The instructions are in Russian, so the report should be." | The language is an artefact of when this file was written. Write the report in the language the requester used. |
183
+ | "`public` reads more clearly than leaving the modifier off." | The project's ESLint configuration forbids the keyword outright, at error level. That is a build failure, not a matter of taste, and a reviewer arguing the taste is arguing with a gate that already decided. |
184
+ | "This component does not look like it reads observables, so the wrapper is optional." | Check what it reads through props and through the store getters it calls. Missing `observer` is rated critical in the checklist above because the failure is silent: the component simply stops updating. |
185
+ | "The `any` is temporary — the author will type it properly later." | Nothing records that intent and nothing revisits it. Rate the code in the diff, and propose `unknown` plus a type guard as the concrete fix. |
186
+ | "While reading for style I found a real bug, so I will report it here." | This report has nowhere to carry it and the requester is not reading it for that. Route it to `code-ai-review` (or `review-logic`) and say in one line that you did. |
187
+
188
+ ---
189
+
190
+ ## Verification
191
+
192
+ Report done only once all of these hold:
193
+
194
+ - The requester asked for this profile by name, or through
195
+ `review --legacy-profiles`. A style or architecture request that names no
196
+ profile belongs to `review-style` or `review-architecture`.
197
+ - The scope block carries the real branch, parent ref, merge-base and scope mode —
198
+ not the template placeholders.
199
+ - Every entry carries Rule (the section of `code-style-patterns.mdc` it rests on),
200
+ Why, Where (path plus the lines from the diff) and Fix, with a minimal unified
201
+ diff rather than an edit applied to the tree.
202
+ - Every entry is anchored to a line the branch slice actually changed; legacy code
203
+ outside that slice is not discussed.
204
+ - Entries are sorted into this document's own Critical / Warnings / Suggestions
205
+ sections, and are not presented as a severity any other reviewer or tool
206
+ consumes.
207
+ - The report is free prose by design, so it is delivered to a person and is not
208
+ fed into the managed-review pipeline.
@@ -8,12 +8,12 @@ description: |
8
8
  Dispatched by review-orchestrator with --architecture or --backend.
9
9
  NOT for: style/naming preferences, logic correctness bugs, or security vulnerabilities.
10
10
  triggers:
11
- - "review architecture"
11
+ - "architecture review"
12
+ - "boundary review"
13
+ - "layering"
12
14
  - "check architecture"
13
15
  - "architectural review"
14
- - "architecture review"
15
16
  - "check layers"
16
- - "dispatched by review-orchestrator"
17
17
  metadata:
18
18
  author: "MrCipherSmith"
19
19
  version: "1.0.0"
@@ -61,7 +61,7 @@ Architecture Review Progress:
61
61
 
62
62
  ## Scope Detection
63
63
 
64
- See shared script: `skills/shared/git-merge-base.md`
64
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
65
65
 
66
66
  Run the script to determine `BASE_SHA`, then collect the diff:
67
67
 
@@ -210,7 +210,7 @@ Focus on **SRP** and **DIP** — the two most commonly violated in practice.
210
210
 
211
211
  ## Orchestrated Review Contract
212
212
 
213
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/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.
213
+ 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.
214
214
 
215
215
  ---
216
216
 
@@ -9,11 +9,10 @@ description: |
9
9
  (use review-security-code for XSS/injection/auth-bypass), or performance profiling
10
10
  (use review-performance).
11
11
  triggers:
12
- - "review backend"
13
12
  - "backend review"
14
- - "review API"
13
+ - "api review"
14
+ - "service review"
15
15
  - "review NestJS"
16
- - "review --backend"
17
16
  metadata:
18
17
  author: "MrCipherSmith"
19
18
  version: "1.0.0"
@@ -36,7 +35,7 @@ performance checks — those belong to `review-security-code` and `review-perfor
36
35
  ```
37
36
  review-backend Progress:
38
37
  - [ ] Step 1: Read Job Context (if CONTEXT_PATH provided)
39
- - [ ] Step 2: Determine git scope (merge-base) — see skills/shared/git-merge-base.md
38
+ - [ ] Step 2: Determine git scope (merge-base) — see .metaproject/skills/gdskills/shared/git-merge-base.md
40
39
  - [ ] Step 3: Collect diff and changed file list
41
40
  - [ ] Step 4: NestJS patterns check
42
41
  - [ ] Step 5: API design check
@@ -60,7 +59,7 @@ review-backend Progress:
60
59
 
61
60
  ## Scope Detection
62
61
 
63
- See shared script: `skills/shared/git-merge-base.md`
62
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
64
63
 
65
64
  Run that script to determine `BASE_SHA` before collecting the diff.
66
65
 
@@ -230,7 +229,7 @@ is, and a condition that cannot name one is not a `blocker`.
230
229
 
231
230
  ## Orchestrated Review Contract
232
231
 
233
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/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.
232
+ 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.
234
233
 
235
234
  ---
236
235
 
@@ -10,12 +10,12 @@ description: |
10
10
  NOT for: architectural layer violations (review-architecture), naming convention formatting
11
11
  (review-style), logic correctness bugs (review-logic), or security (review-security-code).
12
12
  triggers:
13
- - "review clean code"
13
+ - "clean code review"
14
+ - "functions do too much"
15
+ - "solid review"
16
+ - "maintainability"
14
17
  - "check clean code"
15
18
  - "Uncle Bob review"
16
- - "SOLID review"
17
- - "review --clean-code"
18
- - dispatched by review-orchestrator
19
19
  metadata:
20
20
  author: "MrCipherSmith"
21
21
  version: "1.0.0"
@@ -65,7 +65,7 @@ Clean Code Review Progress:
65
65
 
66
66
  ## Scope Detection
67
67
 
68
- See shared script: `skills/shared/git-merge-base.md`
68
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
69
69
 
70
70
  Run the script to determine `BASE_SHA`, then collect the diff:
71
71
 
@@ -398,7 +398,7 @@ Flags:
398
398
 
399
399
  ## Orchestrated Review Contract
400
400
 
401
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/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.
401
+ 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.
402
402
 
403
403
  ---
404
404
 
@@ -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"
@@ -73,7 +77,7 @@ boundary is the trigger-and-outcome test.
73
77
 
74
78
  ## Orchestrated Review Contract
75
79
 
76
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/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.
80
+ 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.
77
81
 
78
82
  ---
79
83
 
@@ -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"
@@ -99,7 +102,7 @@ boundary is the trigger-and-outcome test.
99
102
 
100
103
  ## Orchestrated Review Contract
101
104
 
102
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/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.
105
+ 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.
103
106
 
104
107
  ---
105
108
 
@@ -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"
@@ -100,7 +98,7 @@ not a second opinion.
100
98
 
101
99
  ## Scope Detection
102
100
 
103
- See shared script: `skills/shared/git-merge-base.md`
101
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
104
102
 
105
103
  Run the script from that file to determine `MERGE_BASE` (`BASE_SHA`) and `SCOPE` before proceeding.
106
104
 
@@ -630,7 +628,7 @@ If the file does not exist or is not provided, proceed normally — context is o
630
628
 
631
629
  ## Orchestrated Review Contract
632
630
 
633
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/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.
631
+ 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.
634
632
 
635
633
  ---
636
634
 
@@ -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"
@@ -124,7 +128,7 @@ boundary is the trigger-and-outcome test.
124
128
 
125
129
  ## Orchestrated Review Contract
126
130
 
127
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/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.
131
+ 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.
128
132
 
129
133
  ---
130
134
 
@@ -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"
@@ -68,7 +66,7 @@ High-Load Review Progress:
68
66
 
69
67
  ## Scope Detection
70
68
 
71
- See shared script: `skills/shared/git-merge-base.md`
69
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
72
70
 
73
71
  Run the script to determine `BASE_SHA`, then collect the diff:
74
72
 
@@ -405,7 +403,7 @@ Flags:
405
403
 
406
404
  ## Orchestrated Review Contract
407
405
 
408
- When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/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.
406
+ 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.
409
407
 
410
408
  ---
411
409
 
@@ -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"
@@ -175,7 +174,7 @@ where its recurring conditions land under that one.
175
174
 
176
175
  When dispatched by `review-orchestrator`, follow the provided
177
176
  `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible
178
- with `skills/review/review-orchestrator/reviewer-finding.schema.json`, then a
177
+ with `.metaproject/skills/gdskills/review/review-orchestrator/reviewer-finding.schema.json`, then a
179
178
  concise markdown summary. Prefix finding ids `LY-`.
180
179
 
181
180
  ### Class scope — required for `blocker` and `major`
@@ -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.