@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
@@ -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"
@@ -64,7 +64,7 @@ Logic Review Progress:
64
64
 
65
65
  ## Scope Detection
66
66
 
67
- See shared script: `skills/shared/git-merge-base.md`
67
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
68
68
 
69
69
  Run the script to determine `BASE_SHA`, then collect the diff:
70
70
 
@@ -200,7 +200,7 @@ earlier review round, because there the finding is recorded as closed and is not
200
200
 
201
201
  ## Orchestrated Review Contract
202
202
 
203
- 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.
203
+ 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.
204
204
 
205
205
  ---
206
206
 
@@ -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"
@@ -87,10 +67,11 @@ code — and it is the step that was documented as running for a whole release
87
67
  while nothing called it.
88
68
 
89
69
  The command names no model. It ranks whatever your provider reports at runtime
90
- and places the tiers relative to your own model; when it cannot rank anything it
91
- prints `inherit: true` and exits 0, which means the dispatch runs on the session
92
- model. That is a correct answer, not a failure — never "fix" it by writing a
93
- model id into a dispatch.
70
+ and places the tiers relative to your own model; when ranking fails it still
71
+ names the session's own provider and model as a fallback. Only when the session
72
+ itself has no provider/model to name does it print `inherit: true` and exit 0,
73
+ which means the dispatch runs on the session model. That is a correct answer,
74
+ not a failure — never "fix" it by writing a model id into a dispatch.
94
75
 
95
76
  ---
96
77
 
@@ -160,7 +141,7 @@ which of its inputs were recovered and which were never written down.
160
141
  | `context_doc` | string | no | Path to job context document (e.g., `.metaproject/jobs/<job>/ai/context.md`). |
161
142
  | `context_mode` | string | no | `none`, `light`, or `full`. Default: `light` for PR review, `none` for small path reviews. `full` may call `context-collector` before dispatch. |
162
143
  | `token_budget` | object | no | Optional budget controls: `{total, per_reviewer, diff_max_chars, file_max_chars}`. |
163
- | `model_strategy` | string | no | `current`, `ask`, or `adaptive`. Default: `current`; do not switch models unless user or automation allows it. |
144
+ | `model_strategy` | string | no | `ask` or `adaptive`. Default: `adaptive`; the model per dispatch is computed by `keryx review tier`, never chosen by hand (see Step 6). |
164
145
  | `managed_review` | object | no | Optional managed review mode: `{mode, target, target_ref, flow_id, reviewers}` where mode is `lightweight`, `attach-review`, `review-flow`, or `ingest`. |
165
146
  | `verification_mode` | string | no | `off`, `annotate`, or `filter`. Default `annotate` — verdicts are recorded and nothing is removed. See Wave C. |
166
147
  | `pr_comments` | object | no | `{enabled, max_replies_total, max_sentences_per_reply}`. Defaults: enabled when a PR exists, `30`, `2`. Collect every round, reply once at the end. See External PR comments. |
@@ -454,7 +435,7 @@ not ask for our reasoning and is reading between other tasks.
454
435
 
455
436
  ## Review Context Pack
456
437
 
457
- Before routing reviewers, build a compact `review_context` object. This is the shared source of truth for all sub-agents and must follow `skills/review/review-orchestrator/review-context.schema.json`.
438
+ Before routing reviewers, build a compact `review_context` object. This is the shared source of truth for all sub-agents and must follow `.metaproject/skills/gdskills/review/review-orchestrator/review-context.schema.json`.
458
439
 
459
440
  Required content:
460
441
  - Request: raw user request, flags, review mode, explicit paths or commit range.
@@ -646,27 +627,31 @@ Default budget guidance:
646
627
  | small | <= 5 files and <= 300 changed lines | `light` | full relevant diff to selected reviewers |
647
628
  | medium | <= 20 files or <= 2,000 changed lines | `light` | per-domain filtered diff |
648
629
  | large | > 20 files or > 2,000 changed lines | ask `full` | staged waves by domain |
649
- | high-risk | auth/API/core/security/data migrations | ask `full` | include strict synthesis |
630
+ | high-risk | auth/API/core/security/data migrations | ask `full` | staged waves, verifier included |
650
631
 
651
632
  ---
652
633
 
653
634
  ## Model Strategy
654
635
 
655
- Default: keep the current model for all reviewers.
636
+ The model for each dispatch is computed, not chosen — see Step 6. Before every
637
+ reviewer dispatch, run `keryx review tier` with the signals you hold and paste
638
+ the `model` block it prints into that dispatch. Do not assign a model class by
639
+ reading a table or by hand; that mechanical step is exactly what the command
640
+ replaced (see Step 6 above and `job-orchestrator` Step 5, which pins the same
641
+ rule: `model_strategy: "current"` is gone).
656
642
 
657
- If the platform supports assigning models to sub-agents and the user/automation allows it, the orchestrator may use `model_strategy: adaptive`:
643
+ `model_strategy` now governs only how the *computed* model is surfaced, not
644
+ whether it is computed:
658
645
 
659
- | Complexity | Suggested model class | Reviewers |
660
- |---|---|---|
661
- | simple | cheaper/faster coding model | `review-style`, `review-clean-code`, docs-only convention checks, legacy/profile checks |
662
- | normal | current/default model | `review-frontend`, `review-backend`, `review-testing-practices`, convention reviewers |
663
- | complex | strongest available coding/reasoning model | `review-logic`, `review-architecture`, `review-security-code`, `review-highload`, strict synthesis |
646
+ | `model_strategy` | Behavior |
647
+ |---|---|
648
+ | `ask` | Present the `keryx review tier` model plan once before dispatch. |
649
+ | `adaptive` (default) | Dispatch on the computed model directly; record the chosen model per reviewer in the final report metadata. |
664
650
 
665
651
  Rules:
666
- - Do not silently change model class when `model_strategy` is `current`.
667
- - With `model_strategy: ask`, present the model plan once before dispatch.
668
- - With `model_strategy: adaptive`, record chosen model class per reviewer in the final report metadata.
669
- - If model assignment is unsupported, record `model_strategy: current-session`.
652
+ - Never write a model id into a dispatch by hand — paste the `model` block `keryx review tier` printed.
653
+ - When the session has no provider/model to name it prints `inherit: true` and exits 0; that means the dispatch runs on the session model. Record that as `model_assignment: unsupported`, not as a failure.
654
+ - With `model_strategy: ask`, present the model plan once before dispatch, then proceed with the computed model.
670
655
 
671
656
  ---
672
657
 
@@ -782,7 +767,7 @@ Before anything else, determine whether the request is **diff mode** or **path m
782
767
 
783
768
  ### Diff Mode
784
769
 
785
- See shared script: `skills/shared/git-merge-base.md`
770
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
786
771
 
787
772
  Run the script to determine `BASE_SHA`, then let the pre-filter build the scope:
788
773
 
@@ -1158,10 +1143,10 @@ Skipped reviewers:
1158
1143
  | `--verify` | `review-verifier`, AFTER all others; checks the consolidated findings by running something. Delete-only. |
1159
1144
  | (auto) | detected from diff file extensions — see Auto-detection table |
1160
1145
 
1161
- Multiple flags may be combined. Example: `review --backend --security` dispatches
1162
- `review-logic` + `review-backend` + `review-architecture` + `review-security-code`.
1163
- Example: `review --frontend --frontend-conventions` dispatches the generic frontend set plus the
1164
- 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.
1165
1150
 
1166
1151
  ---
1167
1152
 
@@ -1312,7 +1297,7 @@ Runtime rules:
1312
1297
 
1313
1298
  Do not use vague fallback messages such as "running through available agent types" without naming which reviewers used fallback and why.
1314
1299
 
1315
- Pass each sub-reviewer a payload matching `skills/review/review-orchestrator/reviewer-input.schema.json`:
1300
+ Pass each sub-reviewer a payload matching `.metaproject/skills/gdskills/review/review-orchestrator/reviewer-input.schema.json`:
1316
1301
 
1317
1302
  ```yaml
1318
1303
  review_context: <bounded context pack>
@@ -1320,7 +1305,7 @@ reviewer: <skill-name>
1320
1305
  scope_mode: diff | path
1321
1306
  context_doc: <path or empty>
1322
1307
  issue_url: <url or empty>
1323
- model_class: simple | normal | complex | current-session
1308
+ model: <the `model` block `keryx review tier` printed for this dispatch — paste verbatim>
1324
1309
  budget:
1325
1310
  max_prompt_tokens: <number or null>
1326
1311
  max_findings: <number>
@@ -1335,7 +1320,7 @@ target_path: <resolved path or file list>
1335
1320
  file_contents: <bounded file contents relevant to this reviewer>
1336
1321
  ```
1337
1322
 
1338
- Each reviewer must return a `REVIEW_RESULT` object matching `skills/review/review-orchestrator/reviewer-finding.schema.json`, followed by a concise markdown summary. The orchestrator must reject or normalize free-form reports before consolidation.
1323
+ Each reviewer must return a `REVIEW_RESULT` object matching `.metaproject/skills/gdskills/review/review-orchestrator/reviewer-finding.schema.json`, followed by a concise markdown summary. The orchestrator must reject or normalize free-form reports before consolidation.
1339
1324
 
1340
1325
  **Important for path mode:** instruct each reviewer to check the **entire file**, not just changes. The scope report should say "Path: `<TARGET_PATH>`" instead of a branch/merge-base.
1341
1326
 
@@ -1560,15 +1545,15 @@ Severity ordering for sort: `blocker` > `major` > `minor` > `info`.
1560
1545
 
1561
1546
  ### Model Metadata Rules
1562
1547
 
1563
- `current-session` is a model assignment/runtime strategy, not a model name. Never render it as `model: current-session` or as the PR comment `Model` value.
1548
+ `unsupported` is a model-assignment outcome recorded when `keryx review tier` has no session provider/model to name (it prints `inherit: true`), not a model name. Never render it as `model: unsupported` or as the PR comment `Model` value.
1564
1549
 
1565
1550
  When writing review report metadata or a PR comment:
1566
1551
  1. Read `review_context.token_policy.model_plan`.
1567
- 2. Set `Model strategy` from `model_plan.strategy`.
1552
+ 2. Set `Model strategy` from `model_plan.strategy` (`ask` or `adaptive`).
1568
1553
  3. Set `Current model` from the first available value: `model_plan.current_model`, detected tool output, current runtime model shown by the platform, or `unknown`.
1569
- 4. If `strategy` is `adaptive`, `economy`, or `per-group`, include model classes: `complex_model`, `normal_model`, and `simple_model` when known.
1570
- 5. If model assignment is unsupported and `strategy` is `current-session`, write `Model assignment: current session` and still write `Current model: <actual model or unknown>`.
1571
- 6. If the actual model is unknown, write `unknown`; do not substitute `current-session`.
1554
+ 4. Record the model actually assigned per reviewer — the `tier` and (`provider`+`model` or `inherit`) from the `model` block `keryx review tier` printed for that dispatch — rather than a fixed set of classes; include `complex_model`, `normal_model`, and `simple_model` too when `model_plan` reports them.
1555
+ 5. If model assignment is unsupported (the dispatch's `model` block carried `inherit: true`), write `Model assignment: unsupported` and still write `Current model: <actual model or unknown>`.
1556
+ 6. If the actual model is unknown, write `unknown`; do not substitute `unsupported` or `inherit`.
1572
1557
 
1573
1558
  ---
1574
1559
 
@@ -1599,9 +1584,9 @@ STATUS: DONE | DONE_WITH_CONCERNS
1599
1584
  - Reviewers dispatched: <comma-separated list>
1600
1585
  - Changed files: <count>
1601
1586
  - Context mode: `<none | light | full>`
1602
- - Model strategy: `<current | ask | adaptive | economy | per-group | current-session>`
1587
+ - Model strategy: `<ask | adaptive>`
1603
1588
  - Current model: `<actual current model id/name, or unknown>`
1604
- - Model assignment: `<single current session | adaptive classes | per reviewer classes | unsupported>`
1589
+ - Model assignment: `<per-reviewer tier/model from each dispatch's \`model\` block | unsupported>`
1605
1590
  - Token budget: `<used/limit if known; omissions count>`
1606
1591
 
1607
1592
  ## Stats
@@ -1752,9 +1737,9 @@ here is the failure this rule names.
1752
1737
  | Field | Value |
1753
1738
  |---|---|
1754
1739
  | Orchestrator | `review-orchestrator` |
1755
- | Model | `<actual current model id/name, or unknown; never current-session>` |
1756
- | Model strategy | `<current | ask | adaptive | economy | per-group | current-session>` |
1757
- | Model assignment | `<current session | adaptive classes | per reviewer classes | unsupported>` |
1740
+ | Model | `<actual current model id/name, or unknown; never inherit or unsupported>` |
1741
+ | Model strategy | `<ask | adaptive>` |
1742
+ | Model assignment | `<per-reviewer tier/model from each dispatch's \`model\` block | unsupported>` |
1758
1743
  | Agents run | `<reviewers actually dispatched, including fallback runtimes when used>` |
1759
1744
  | Available reviewers | `<all reviewers considered by the orchestrator for this repository/runtime, grouped briefly as generic/convention/project/legacy when useful>` |
1760
1745
  | Skipped reviewers | `<reviewers not dispatched with short reasons, e.g. no matching files, optional group not selected, unavailable native agent, PR number missing>` |
@@ -1794,9 +1779,9 @@ review_run_id: <stable id, e.g. pr-5462-2026-06-13T10-22-00Z>
1794
1779
  orchestrator: review-orchestrator
1795
1780
  verdict: <APPROVE | APPROVE_WITH_SUGGESTIONS | REQUEST_CHANGES>
1796
1781
  context_mode: <none | light | full>
1797
- model_strategy: <current | ask | adaptive | economy | per-group | current-session>
1782
+ model_strategy: <ask | adaptive>
1798
1783
  current_model: <actual current model id/name, or unknown>
1799
- model_assignment: <current session | adaptive classes | per reviewer classes | unsupported>
1784
+ model_assignment: <per-reviewer tier/model from each dispatch's `model` block | unsupported>
1800
1785
  agents:
1801
1786
  - <reviewer>
1802
1787
  scope:
@@ -1873,7 +1858,7 @@ Formatting rules for PR comments and AI artifacts:
1873
1858
  - `Skipped reviewers` must include short reasons from `review_context.routing.reasons`, `review_context.review_plan.skipped`, and dispatch/runtime compatibility checks.
1874
1859
  - If the list is long, keep `Agents run` complete and summarize `Available reviewers` / `Skipped reviewers` by group with counts plus notable names; put full details in the AI artifact when one is generated.
1875
1860
  - When `comment-and-ai-artifact` is selected, the PR comment meta section must include both `AI artifact` and `AI artifact description`; do not rely on the link alone.
1876
- - In the metadata table, `Model` must be the actual model id/name. Put `current-session`, `adaptive`, or `per-group` under `Model strategy` / `Model assignment`, not under `Model`.
1861
+ - In the metadata table, `Model` must be the actual model id/name. Put `unsupported`, `adaptive`, or `ask` under `Model strategy` / `Model assignment`, not under `Model`.
1877
1862
  - If posting via CLI, write the body to a temp file and use `gh pr comment <pr-number> --body-file <file>`; never inline a large heredoc into shell history.
1878
1863
 
1879
1864
  ---
@@ -46,11 +46,10 @@
46
46
  "model_strategy": {
47
47
  "type": "string",
48
48
  "enum": [
49
- "current",
50
49
  "ask",
51
50
  "adaptive"
52
51
  ],
53
- "default": "current"
52
+ "default": "adaptive"
54
53
  },
55
54
  "token_budget": {
56
55
  "type": "object",
@@ -364,12 +364,8 @@
364
364
  "strategy": {
365
365
  "type": "string",
366
366
  "enum": [
367
- "current",
368
367
  "ask",
369
- "adaptive",
370
- "economy",
371
- "per-group",
372
- "current-session"
368
+ "adaptive"
373
369
  ]
374
370
  },
375
371
  "current_model": {
@@ -7,7 +7,7 @@
7
7
  "review_context",
8
8
  "reviewer",
9
9
  "scope_mode",
10
- "model_class",
10
+ "model",
11
11
  "budget"
12
12
  ],
13
13
  "properties": {
@@ -36,14 +36,58 @@
36
36
  "null"
37
37
  ]
38
38
  },
39
- "model_class": {
40
- "type": "string",
41
- "enum": [
42
- "simple",
43
- "normal",
44
- "complex",
45
- "current-session"
46
- ]
39
+ "model": {
40
+ "description": "The `model` block `keryx review tier` printed for this dispatch (Step 6) — pasted verbatim, never composed by hand. `tier` is the mechanical vocabulary the command emits (`light`/`standard`/`deep`), never a model name. `provider`/`model` are present when the command resolved a concrete model; `inherit: true` replaces them when it could not, meaning the dispatch runs on the caller's own model. Field naming matches `model` in `contracts/subagent-dispatch.schema.json` and the object `keryx review tier --json` prints under its own `model` key.",
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": [
44
+ "tier",
45
+ "tier_reasons",
46
+ "tier_resolution",
47
+ "model_discovery"
48
+ ],
49
+ "properties": {
50
+ "tier": {
51
+ "type": "string",
52
+ "enum": [
53
+ "light",
54
+ "standard",
55
+ "deep"
56
+ ]
57
+ },
58
+ "tier_reasons": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "string",
62
+ "minLength": 1
63
+ }
64
+ },
65
+ "provider": {
66
+ "type": "string",
67
+ "minLength": 1
68
+ },
69
+ "model": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ },
73
+ "inherit": {
74
+ "type": "boolean",
75
+ "description": "Run this dispatch on the caller's own model. Present in place of `provider`/`model`, never alongside them, when `keryx review tier` could not resolve a concrete model."
76
+ },
77
+ "tier_resolution": {
78
+ "type": "string",
79
+ "enum": [
80
+ "discovered",
81
+ "session-ranked",
82
+ "session-fallback"
83
+ ]
84
+ },
85
+ "model_discovery": {
86
+ "type": "object",
87
+ "description": "What `keryx review tier` discovered and how it ranked it, as printed. Not re-validated field by field here — that contract lives in `contracts/subagent-dispatch.schema.json`.",
88
+ "additionalProperties": true
89
+ }
90
+ }
47
91
  },
48
92
  "budget": {
49
93
  "type": "object",
@@ -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"
@@ -62,7 +62,7 @@ This skill focuses on **measurable or high-likelihood bottlenecks** only. Premat
62
62
 
63
63
  ## Scope Detection
64
64
 
65
- See shared script: `skills/shared/git-merge-base.md`
65
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
66
66
 
67
67
  Run the script from that file to determine `MERGE_BASE` (`BASE_SHA`) and `SCOPE` before proceeding.
68
68
 
@@ -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
- 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.
372
-
373
- ---
374
-
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.
@@ -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"
@@ -80,8 +81,8 @@ review-pr-feedback Progress:
80
81
  | `comment_ids` | string[] | no | Restrict the run to these collected comment ids. Every excluded comment is listed with that reason. |
81
82
  | `max_fix_rounds` | integer | no | Sent in the Step 9 dispatch as an `attempt budget:` constraint. It only ever LOWERS the bound `flow-orchestrator` owns; omit it to take that skill's own. |
82
83
 
83
- Schemas: `skills/review/review-pr-feedback/input-contract.schema.json` and
84
- `skills/review/review-pr-feedback/output-contract.schema.json`. Nothing refuses a
84
+ Schemas: `.metaproject/skills/gdskills/review/review-pr-feedback/input-contract.schema.json` and
85
+ `.metaproject/skills/gdskills/review/review-pr-feedback/output-contract.schema.json`. Nothing refuses a
85
86
  dispatch that ignores them — no production code loads either file — so they are a
86
87
  contract between agents, and this skill validating its own output against the
87
88
  output schema is what makes them worth writing.
@@ -297,7 +298,7 @@ For each comment, classify intent before explaining:
297
298
 
298
299
  This maps the **intent of an incoming human comment**, which is not a code
299
300
  condition. It is not a second severity rubric: the levels themselves are defined
300
- once, in `skills/review/review-orchestrator/SKILL.md` → **Severity (canonical)**,
301
+ once, in `.metaproject/skills/gdskills/review/review-orchestrator/SKILL.md` → **Severity (canonical)**,
301
302
  and a mapped value is a starting point that the canonical test overrides whenever
302
303
  the comment names a concrete trigger and outcome.
303
304
 
@@ -504,7 +505,7 @@ implementation loop of its own, and a second one would diverge from the one that
504
505
  is tested.
505
506
 
506
507
  Dispatch payload, conforming to
507
- `skills/orchestration/flow-orchestrator/input-contract.schema.json` — a registered
508
+ `.metaproject/skills/gdskills/orchestration/flow-orchestrator/input-contract.schema.json` — a registered
508
509
  contract, so `keryx skills contracts validate <file> --schema flow-orchestrator-input`
509
510
  refuses a malformed one. Validate before dispatching.
510
511
 
@@ -539,13 +540,13 @@ criterion rather than by an author's assertion.
539
540
  ### The loop, and its bound
540
541
 
541
542
  The review→fix→review loop belongs to `flow-orchestrator`, and so does its exit
542
- threshold: `skills/orchestration/flow-orchestrator/SKILL.md` → **PR review/fix
543
+ threshold: `.metaproject/skills/gdskills/orchestration/flow-orchestrator/SKILL.md` → **PR review/fix
543
544
  loop** defines it once, beside the bound. Do not restate the level here — the
544
545
  bound was centralised and the threshold was left copied four ways in the same
545
546
  edit, which is how one of them ends up stale while every guard stays green.
546
547
 
547
548
  The bound is defined once, in
548
- `skills/orchestration/flow-orchestrator/SKILL.md` → **PR review/fix loop**, along
549
+ `.metaproject/skills/gdskills/orchestration/flow-orchestrator/SKILL.md` → **PR review/fix loop**, along
549
550
  with the evidence behind it and the `keryx review loop` repetition check that
550
551
  runs before any attempt is spent. Do not restate the number here: two copies of a
551
552
  bound are two things to edit when the evidence changes, and the copy nobody edits
@@ -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"
@@ -61,7 +63,7 @@ This skill covers **code-level security only**. It does NOT audit npm/bun depend
61
63
 
62
64
  ## Scope Detection
63
65
 
64
- See shared script: `skills/shared/git-merge-base.md`
66
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
65
67
 
66
68
  Run the script from that file to determine `MERGE_BASE` (`BASE_SHA`) and `SCOPE` before proceeding.
67
69
 
@@ -373,7 +375,7 @@ If the file does not exist or is not provided, proceed normally — context is o
373
375
 
374
376
  ## Orchestrated Review Contract
375
377
 
376
- 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.
378
+ 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.
377
379
 
378
380
  ---
379
381
 
@@ -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"
@@ -34,7 +34,7 @@ Never touches logic correctness, architecture, security, or performance.
34
34
  ```
35
35
  review-style Progress:
36
36
  - [ ] Step 1: Read Job Context (if CONTEXT_PATH provided)
37
- - [ ] Step 2: Determine git scope (merge-base) — see skills/shared/git-merge-base.md
37
+ - [ ] Step 2: Determine git scope (merge-base) — see .metaproject/skills/gdskills/shared/git-merge-base.md
38
38
  - [ ] Step 3: Collect diff and changed file list
39
39
  - [ ] Step 4: Naming conventions check
40
40
  - [ ] Step 5: Dead code and imports check
@@ -60,7 +60,7 @@ review-style Progress:
60
60
 
61
61
  ## Scope Detection
62
62
 
63
- See shared script: `skills/shared/git-merge-base.md`
63
+ See shared script: `.metaproject/skills/gdskills/shared/git-merge-base.md`
64
64
 
65
65
  Run that script to determine `BASE_SHA` before collecting the diff.
66
66
 
@@ -228,7 +228,7 @@ boundary is the trigger-and-outcome test.
228
228
 
229
229
  ## Orchestrated Review Contract
230
230
 
231
- 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.
231
+ 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.
232
232
 
233
233
  ---
234
234