@mrciphersmith/keryx 0.2.9

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 (297) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +351 -0
  3. package/dist/cli.js +48427 -0
  4. package/dist/proxy-worker.js +381 -0
  5. package/package.json +63 -0
  6. package/src/gdgraph/affected.test.ts +100 -0
  7. package/src/gdgraph/affected.ts +135 -0
  8. package/src/gdgraph/build-integrity.test.ts +193 -0
  9. package/src/gdgraph/build-lang.test.ts +399 -0
  10. package/src/gdgraph/build.test.ts +120 -0
  11. package/src/gdgraph/build.ts +804 -0
  12. package/src/gdgraph/config.test.ts +47 -0
  13. package/src/gdgraph/config.ts +113 -0
  14. package/src/gdgraph/core-sources.test.ts +99 -0
  15. package/src/gdgraph/core-sources.ts +20 -0
  16. package/src/gdgraph/enrich.ts +79 -0
  17. package/src/gdgraph/fallback.test.ts +153 -0
  18. package/src/gdgraph/find.test.ts +78 -0
  19. package/src/gdgraph/find.ts +107 -0
  20. package/src/gdgraph/pagerank.ts +129 -0
  21. package/src/gdgraph/path.test.ts +56 -0
  22. package/src/gdgraph/path.ts +112 -0
  23. package/src/gdgraph/query.ts +133 -0
  24. package/src/gdgraph/repomap.test.ts +110 -0
  25. package/src/gdgraph/repomap.ts +193 -0
  26. package/src/gdgraph/service.test.ts +59 -0
  27. package/src/gdgraph/service.ts +51 -0
  28. package/src/gdgraph/staleness.ts +20 -0
  29. package/src/gdgraph/symbol.test.ts +89 -0
  30. package/src/gdgraph/symbol.ts +123 -0
  31. package/src/gdgraph/symbols-capability.test.ts +41 -0
  32. package/src/gdgraph/symbols-capability.ts +49 -0
  33. package/src/gdgraph/target.ts +56 -0
  34. package/src/gdgraph/treesitter/adapter.test.ts +249 -0
  35. package/src/gdgraph/treesitter/adapter.ts +213 -0
  36. package/src/gdgraph/treesitter/extract.test.ts +278 -0
  37. package/src/gdgraph/treesitter/extract.ts +389 -0
  38. package/src/gdgraph/treesitter/grammars.ts +110 -0
  39. package/src/gdgraph/treesitter/no-treesitter-import.test.ts +51 -0
  40. package/src/gdgraph/treesitter/resolve-calls.test.ts +38 -0
  41. package/src/gdgraph/types.ts +63 -0
  42. package/src/gdskills/bundled/rules/core/api-contracts.mdc +148 -0
  43. package/src/gdskills/bundled/rules/core/async-patterns.mdc +185 -0
  44. package/src/gdskills/bundled/rules/core/clean-architecture.mdc +163 -0
  45. package/src/gdskills/bundled/rules/core/code-review-ai-assistant.mdc +49 -0
  46. package/src/gdskills/bundled/rules/core/code-review-b091-profile.mdc +48 -0
  47. package/src/gdskills/bundled/rules/core/code-style-patterns.mdc +54 -0
  48. package/src/gdskills/bundled/rules/core/commit-message-formatting.mdc +25 -0
  49. package/src/gdskills/bundled/rules/core/database-patterns.mdc +162 -0
  50. package/src/gdskills/bundled/rules/core/documentation-management.mdc +106 -0
  51. package/src/gdskills/bundled/rules/core/error-handling.mdc +163 -0
  52. package/src/gdskills/bundled/rules/core/execution-metrics.md +99 -0
  53. package/src/gdskills/bundled/rules/core/frontend-assistant.mdc +40 -0
  54. package/src/gdskills/bundled/rules/core/git-rules.mdc +37 -0
  55. package/src/gdskills/bundled/rules/core/gproject-contracts.mdc +198 -0
  56. package/src/gdskills/bundled/rules/core/implementation-doc-mandate.mdc +149 -0
  57. package/src/gdskills/bundled/rules/core/implementation-plans.mdc +58 -0
  58. package/src/gdskills/bundled/rules/core/jobs-documentation.mdc +221 -0
  59. package/src/gdskills/bundled/rules/core/mobx-store-template.mdc +561 -0
  60. package/src/gdskills/bundled/rules/core/model-selection.mdc +53 -0
  61. package/src/gdskills/bundled/rules/core/nestjs-dto.mdc +50 -0
  62. package/src/gdskills/bundled/rules/core/playwright-testing.mdc +321 -0
  63. package/src/gdskills/bundled/rules/core/requirements-management.mdc +35 -0
  64. package/src/gdskills/bundled/rules/core/requirements-package-standard.mdc +103 -0
  65. package/src/gdskills/bundled/rules/core/review-agent-profile.mdc +49 -0
  66. package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +44 -0
  67. package/src/gdskills/bundled/rules/core/rule-management-workflow.mdc +62 -0
  68. package/src/gdskills/bundled/rules/core/security-baseline.mdc +155 -0
  69. package/src/gdskills/bundled/rules/core/shared-definitions.mdc +79 -0
  70. package/src/gdskills/bundled/rules/core/skill-lifecycle.mdc +55 -0
  71. package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +88 -0
  72. package/src/gdskills/bundled/rules/core/solid-principles.mdc +149 -0
  73. package/src/gdskills/bundled/rules/core/storybook-guidelines.mdc +36 -0
  74. package/src/gdskills/bundled/rules/core/subagent-context-construction.md +107 -0
  75. package/src/gdskills/bundled/rules/core/subagent-status-protocol.md +169 -0
  76. package/src/gdskills/bundled/rules/core/tdd-workflow.mdc +96 -0
  77. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +47 -0
  78. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +55 -0
  79. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +352 -0
  80. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +39 -0
  81. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +29 -0
  82. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +567 -0
  83. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +567 -0
  84. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +655 -0
  85. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +567 -0
  86. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +567 -0
  87. package/src/gdskills/bundled/skills/orchestration/context-collector/input-contract.schema.json +134 -0
  88. package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +183 -0
  89. package/src/gdskills/bundled/skills/orchestration/context-collector/output-contract.schema.json +208 -0
  90. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +1412 -0
  91. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +1412 -0
  92. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.detail.md +735 -0
  93. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +468 -0
  94. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +1412 -0
  95. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +1412 -0
  96. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.md +62 -0
  97. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.template.md +79 -0
  98. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/input-contract.schema.json +247 -0
  99. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +362 -0
  100. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/output-contract.schema.json +87 -0
  101. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +105 -0
  102. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +105 -0
  103. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +165 -0
  104. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +379 -0
  105. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/input-contract.schema.json +33 -0
  106. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/output-contract.schema.json +41 -0
  107. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +307 -0
  108. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +307 -0
  109. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +373 -0
  110. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +307 -0
  111. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +307 -0
  112. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/input-contract.schema.json +130 -0
  113. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/issue-request.template.md +50 -0
  114. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +155 -0
  115. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/output-contract.schema.json +61 -0
  116. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +365 -0
  117. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +365 -0
  118. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +373 -0
  119. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +365 -0
  120. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +365 -0
  121. package/src/gdskills/bundled/skills/orchestration/job-documenter/input-contract.schema.json +55 -0
  122. package/src/gdskills/bundled/skills/orchestration/job-documenter/output-contract.schema.json +58 -0
  123. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +1701 -0
  124. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +1701 -0
  125. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +1734 -0
  126. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +1701 -0
  127. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +1701 -0
  128. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json +188 -0
  129. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/orchestrator-prompt.md +179 -0
  130. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/output-contract.schema.json +103 -0
  131. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/state.schema.json +164 -0
  132. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +395 -0
  133. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +395 -0
  134. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +556 -0
  135. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +395 -0
  136. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +395 -0
  137. package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +204 -0
  138. package/src/gdskills/bundled/skills/orchestration/task-implementer/orchestrator-prompt.md +206 -0
  139. package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +51 -0
  140. package/src/gdskills/bundled/skills/orchestration/task-implementer/task-request.template.md +111 -0
  141. package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +163 -0
  142. package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +161 -0
  143. package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +128 -0
  144. package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +321 -0
  145. package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +166 -0
  146. package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +253 -0
  147. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.claude.md +46 -0
  148. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +90 -0
  149. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +90 -0
  150. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +90 -0
  151. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +33 -0
  152. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +33 -0
  153. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +190 -0
  154. package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +142 -0
  155. package/src/gdskills/bundled/skills/planning/docpack-orchestrator/input-contract.schema.json +31 -0
  156. package/src/gdskills/bundled/skills/planning/docpack-orchestrator/output-contract.schema.json +31 -0
  157. package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +80 -0
  158. package/src/gdskills/bundled/skills/planning/docpack-review/input-contract.schema.json +20 -0
  159. package/src/gdskills/bundled/skills/planning/docpack-review/output-contract.schema.json +36 -0
  160. package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +181 -0
  161. package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +181 -0
  162. package/src/gdskills/bundled/skills/planning/interview/SKILL.md +187 -0
  163. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.claude.md +94 -0
  164. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +99 -0
  165. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +99 -0
  166. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +105 -0
  167. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +33 -0
  168. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +33 -0
  169. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +237 -0
  170. package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +33 -0
  171. package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +33 -0
  172. package/src/gdskills/bundled/skills/planning/planner/SKILL.md +190 -0
  173. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +193 -0
  174. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +193 -0
  175. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +193 -0
  176. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +193 -0
  177. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +193 -0
  178. package/src/gdskills/bundled/skills/planning/prd-creator/input-contract.schema.json +63 -0
  179. package/src/gdskills/bundled/skills/planning/prd-creator/output-contract.schema.json +175 -0
  180. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +31 -0
  181. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +31 -0
  182. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +153 -0
  183. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +32 -0
  184. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +32 -0
  185. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +166 -0
  186. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +44 -0
  187. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +44 -0
  188. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +243 -0
  189. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +43 -0
  190. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +43 -0
  191. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +193 -0
  192. package/src/gdskills/bundled/skills/platform/agent-entrypoint-distiller/SKILL.md +47 -0
  193. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +87 -0
  194. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +87 -0
  195. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +87 -0
  196. package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +100 -0
  197. package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +100 -0
  198. package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +100 -0
  199. package/src/gdskills/bundled/skills/quality/changelog/SKILL.claude.md +45 -0
  200. package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +84 -0
  201. package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +84 -0
  202. package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +84 -0
  203. package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +66 -0
  204. package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +66 -0
  205. package/src/gdskills/bundled/skills/quality/commit/SKILL.md +66 -0
  206. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.claude.md +40 -0
  207. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +66 -0
  208. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +66 -0
  209. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +66 -0
  210. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.claude.md +45 -0
  211. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +81 -0
  212. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +81 -0
  213. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +81 -0
  214. package/src/gdskills/bundled/skills/quality/deploy/SKILL.claude.md +42 -0
  215. package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +70 -0
  216. package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +70 -0
  217. package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +70 -0
  218. package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +103 -0
  219. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.claude.md +48 -0
  220. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +83 -0
  221. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +83 -0
  222. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +83 -0
  223. package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +75 -0
  224. package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +75 -0
  225. package/src/gdskills/bundled/skills/quality/pr/SKILL.md +75 -0
  226. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +364 -0
  227. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +295 -0
  228. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +378 -0
  229. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +364 -0
  230. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +38 -0
  231. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/input-contract.schema.json +53 -0
  232. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/output-contract.schema.json +46 -0
  233. package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +52 -0
  234. package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +52 -0
  235. package/src/gdskills/bundled/skills/quality/push/SKILL.md +52 -0
  236. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.claude.md +40 -0
  237. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +61 -0
  238. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +61 -0
  239. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +61 -0
  240. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.claude.md +30 -0
  241. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +75 -0
  242. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +75 -0
  243. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +75 -0
  244. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +64 -0
  245. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +74 -0
  246. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +339 -0
  247. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +48 -0
  248. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +44 -0
  249. package/src/gdskills/bundled/skills/quality/tests-creator/input-contract.schema.json +121 -0
  250. package/src/gdskills/bundled/skills/quality/tests-creator/output-contract.schema.json +127 -0
  251. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +204 -0
  252. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +204 -0
  253. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +203 -0
  254. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +204 -0
  255. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +204 -0
  256. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.codex.md +209 -0
  257. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.cursor.md +209 -0
  258. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.md +208 -0
  259. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.opencode.md +209 -0
  260. package/src/gdskills/bundled/skills/review/code-b091-review/SKILL.zed.md +209 -0
  261. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +263 -0
  262. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +263 -0
  263. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +258 -0
  264. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +263 -0
  265. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +263 -0
  266. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +175 -0
  267. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +175 -0
  268. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +168 -0
  269. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +175 -0
  270. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +175 -0
  271. package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +360 -0
  272. package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +337 -0
  273. package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +477 -0
  274. package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +93 -0
  275. package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +119 -0
  276. package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +595 -0
  277. package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +144 -0
  278. package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +519 -0
  279. package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +323 -0
  280. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +927 -0
  281. package/src/gdskills/bundled/skills/review/review-orchestrator/input-contract.schema.json +153 -0
  282. package/src/gdskills/bundled/skills/review/review-orchestrator/output-contract.schema.json +77 -0
  283. package/src/gdskills/bundled/skills/review/review-orchestrator/review-context.schema.json +389 -0
  284. package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-finding.schema.json +189 -0
  285. package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +241 -0
  286. package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +344 -0
  287. package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +327 -0
  288. package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +348 -0
  289. package/src/gdskills/bundled/skills/review/review-strict/SKILL.md +328 -0
  290. package/src/gdskills/bundled/skills/review/review-style/SKILL.md +343 -0
  291. package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +134 -0
  292. package/src/gdskills/bundled/skills/shared/git-merge-base.md +33 -0
  293. package/src/gdskills/contracts/agent-event.schema.json +32 -0
  294. package/src/gdskills/contracts/orchestrator-state.schema.json +58 -0
  295. package/src/gdskills/contracts/review-finding.schema.json +59 -0
  296. package/src/gdskills/contracts/subagent-dispatch.schema.json +123 -0
  297. package/src/gdskills/contracts/subagent-result.schema.json +136 -0
@@ -0,0 +1,343 @@
1
+ ---
2
+ name: review-style
3
+ description: |
4
+ Use when: reviewing code for style, naming conventions, readability, and DRY violations —
5
+ without touching logic, architecture, security, or performance. Covers "review style",
6
+ "style review", "check naming", "check readability", or dispatched by review-orchestrator
7
+ with --style flag.
8
+ NOT for: logic bugs, architectural violations, security vulnerabilities, performance
9
+ anti-patterns, or any finding that could cause a functional regression.
10
+ version: "1.0.0"
11
+ triggers:
12
+ - "review style"
13
+ - "style review"
14
+ - "check naming"
15
+ - "check readability"
16
+ - "review --style"
17
+ metadata:
18
+ author: "MrCipherSmith"
19
+ version: "1.0.0"
20
+ category: "review"
21
+ license: "MIT"
22
+ compatibility: "cursor,codex,zed,opencode,claude"
23
+ ---
24
+
25
+ # Review — Style, Naming & Readability
26
+
27
+ Focused style reviewer. Covers naming conventions, dead code, readability, DRY violations,
28
+ import organization, comment quality, file length, cyclomatic complexity, and console noise.
29
+ Never touches logic correctness, architecture, security, or performance.
30
+
31
+ ---
32
+
33
+ ## Workflow
34
+
35
+ ```
36
+ review-style Progress:
37
+ - [ ] Step 1: Read Job Context (if CONTEXT_PATH provided)
38
+ - [ ] Step 2: Determine git scope (merge-base) — see skills/shared/git-merge-base.md
39
+ - [ ] Step 3: Collect diff and changed file list
40
+ - [ ] Step 4: Naming conventions check
41
+ - [ ] Step 5: Dead code and imports check
42
+ - [ ] Step 6: Readability and complexity check
43
+ - [ ] Step 7: DRY violations check
44
+ - [ ] Step 8: Comment quality check
45
+ - [ ] Step 9: File length and structure check
46
+ - [ ] Step 10: Console usage check
47
+ - [ ] Step 11: Emit findings in unified format, sorted by severity
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Input Contract
53
+
54
+ | Field | Type | Required | Description |
55
+ |-------|------|----------|-------------|
56
+ | `branch` | string | no | Branch to review. Defaults to current branch. |
57
+ | `commit_range` | string | no | Explicit range (e.g., `abc123..HEAD`). Overrides merge-base detection. |
58
+ | `context_doc` | string | no | Path to job context document (e.g., `<JOBS_ROOT>/<job>/ai/context.md`). |
59
+
60
+ ---
61
+
62
+ ## Scope Detection
63
+
64
+ See shared script: `skills/shared/git-merge-base.md`
65
+
66
+ Run that script to determine `BASE_SHA` before collecting the diff.
67
+
68
+ ```bash
69
+ # Default mode — all changes from merge-base to working tree
70
+ git diff --name-only "${BASE_SHA}"
71
+ git diff "${BASE_SHA}"
72
+
73
+ # Explicit range mode
74
+ git diff --name-only <FROM_SHA>..<TO_SHA>
75
+ git diff <FROM_SHA>..<TO_SHA>
76
+ ```
77
+
78
+ Only review code changed in scope. Do not flag style issues in lines outside the diff.
79
+
80
+ ---
81
+
82
+ ## Review Checklist
83
+
84
+ ### 1. Naming Conventions
85
+
86
+ **Variables and functions**
87
+ - `camelCase` for variables, function parameters, and function names
88
+ - `PascalCase` for classes, interfaces, enums, and React components
89
+ - `UPPER_SNAKE_CASE` for module-level constants (truly constant values, not `let` reassigned as constants)
90
+ - Boolean variables/functions prefixed with `is`, `has`, `can`, `should` (e.g., `isLoading`, `hasAccess`)
91
+ - Avoid single-letter names except in short array callbacks (`arr.map(x => x.id)` acceptable; `let x = fetchUser()` is not)
92
+ - Avoid abbreviations that are not universally understood (`usr`, `mgr`, `repo` vs `repository`)
93
+
94
+ **Functions**
95
+ - Function names are verbs or verb phrases: `getUser`, `handleSubmit`, `parseConfig`
96
+ - Event handlers prefixed with `on` or `handle`: `onSubmit`, `handleClick`
97
+ - Predicate functions return boolean and are named accordingly: `isValid()`, not `checkValid()`
98
+
99
+ **Classes and interfaces**
100
+ - Interface names use `I` prefix: `IUserService`, `IAuthGuard`
101
+ - Enum members: `UPPER_SNAKE_CASE` or `PascalCase` — whichever the project uses consistently; flag inconsistency
102
+ - Type alias names: `PascalCase`
103
+
104
+ **Files and directories**
105
+ - File names match the primary export: `UserService` → `user.service.ts`
106
+ - Test files: `*.spec.ts` or `*.test.ts` next to the subject file
107
+
108
+ Flag naming issues as `minor` unless the name is actively misleading (e.g., `isLoading` that is actually a count), which is `major`.
109
+
110
+ ---
111
+
112
+ ### 2. Dead Code and Unused Imports
113
+
114
+ - Unused variables (`const x = ...` never referenced) — flag as `minor`
115
+ - Unused function parameters in non-interface-implementing functions — flag as `minor`
116
+ - Unused imports — flag as `minor`; provide the removal patch
117
+ - Commented-out code blocks (more than one line) — flag as `minor`; ask: "Is this intentional? If not, remove."
118
+ - Exported functions/classes that are never imported anywhere in the diff scope — flag as `info`
119
+ (may be used externally; do not assume dead without evidence)
120
+
121
+ ---
122
+
123
+ ### 3. Readability and Complexity
124
+
125
+ **Conditions**
126
+ - Overly complex boolean conditions (more than 3 clauses without parentheses grouping) — flag as `minor`; suggest extracting to a named predicate
127
+ - Double negatives (`!isNotEmpty`) — flag as `minor`; rewrite to positive form
128
+ - Ternary chains (ternary inside ternary) — flag as `minor`; suggest `if/else` or early return
129
+
130
+ **Nesting**
131
+ - Functions with callback nesting deeper than 3 levels — flag as `minor`; suggest extraction or `async/await`
132
+ - `if/else` trees deeper than 3 levels — flag as `minor`; suggest guard clauses (early returns)
133
+
134
+ **Magic numbers**
135
+ - Numeric or string literals used in logic without a named constant — flag as `minor`
136
+ - Exception: index `0`, `1`, `-1`, empty string `""`, and HTTP status codes when the context is obvious
137
+ - Suggest: `const MAX_RETRY_COUNT = 3;`
138
+
139
+ **Cyclomatic complexity**
140
+ - Functions with more than 10 decision branches (if/else/switch cases/ternary/loop) — flag as `minor`
141
+ - Suggest splitting into smaller, named functions
142
+
143
+ ---
144
+
145
+ ### 4. DRY Violations
146
+
147
+ - Clearly duplicated logic blocks (same or near-identical code in two places within the diff) — flag as `major` if the blocks are non-trivial (>5 lines), `minor` if small
148
+ - Duplicated string literals used in multiple places — flag as `info`; suggest a shared constant
149
+ - Similar switch/if-else trees that could be a lookup map — flag as `minor`
150
+
151
+ Do not flag DRY violations for code outside the diff even if legacy duplication exists.
152
+
153
+ ---
154
+
155
+ ### 5. Import Organization
156
+
157
+ - Imports must be grouped (framework/library imports first, then project imports, then relative imports); blank line between groups
158
+ - Imports within a group should be alphabetically sorted (or consistently ordered — match project convention)
159
+ - Barrel imports (`import * as X from '...'`) without reason — flag as `info`
160
+ - Circular imports (visible from import paths) — flag as `major`
161
+ - Re-exporting something that is immediately re-used in the same file — flag as `minor` (unnecessary indirection)
162
+
163
+ ---
164
+
165
+ ### 6. Comment Quality
166
+
167
+ **Misleading or outdated comments**
168
+ - Comment describes what the code does but the code has changed — flag as `minor`
169
+ - Comment says "TODO: remove before deploy" and was merged — flag as `major`
170
+ - Comment is actively wrong (incorrect description of behavior) — flag as `major`
171
+
172
+ **Missing JSDoc on public APIs**
173
+ - Public functions/classes exported from a module should have a JSDoc comment describing purpose, params, and return value
174
+ - Missing JSDoc on public APIs: flag as `info` (unless the project has a documented standard requiring it, in which case `minor`)
175
+
176
+ **Noise comments**
177
+ - `// increment i` above `i++` — flag as `info`; suggest removing
178
+ - Section divider comments (`// =========`) that add no semantic value — flag as `info`
179
+
180
+ ---
181
+
182
+ ### 7. File Length and Structure
183
+
184
+ - Files exceeding 500 lines (excluding generated code, test fixtures, and migration files) — flag as `info` with a suggestion to split by responsibility
185
+ - Files exceeding 800 lines — flag as `minor`
186
+ - Single file exporting more than 5 unrelated things — flag as `minor`; suggest splitting into focused modules
187
+ - Test files: no limit enforced; complexity handled by test count and grouping
188
+
189
+ ---
190
+
191
+ ### 8. Console Usage
192
+
193
+ - `console.log` / `console.error` / `console.warn` in non-test production code — flag as `minor`
194
+ - Suggest replacing with project logger (`AppLogger`, `Logger`, etc.) or remove entirely
195
+ - Exception: `console.error` in the outermost catch of a CLI entry point is acceptable
196
+
197
+ ---
198
+
199
+ ## Iron Laws
200
+
201
+ | Rule | Rationale |
202
+ |------|-----------|
203
+ | Style findings are **never** blockers unless they cause a functional bug | Style is a quality concern, not a safety gate |
204
+ | Maximum severity for pure style is `major` (only for actively misleading names or circular imports) | Most style is `minor` or `info` |
205
+ | Never flag issues handled by the project's autoformatter (indentation, trailing spaces, bracket style) | Linter/formatter owns that; double-flagging creates noise |
206
+ | Do not expand scope to architectural or logic concerns | Stay in style lane; hand off to the right reviewer |
207
+
208
+ ---
209
+
210
+ ## Orchestrated Review Contract
211
+
212
+ When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/review-orchestrator/reviewer-finding.schema.json`, then a concise markdown summary. Keep findings evidence-based, include concrete `suggested_fix` for every blocker/major, and return `NEEDS_CONTEXT` instead of guessing when required context is missing.
213
+
214
+ ---
215
+
216
+ ## Finding Format
217
+
218
+ ### Class scope — required for `blocker` and `major`
219
+
220
+ Every `blocker` and `major` finding must carry `class_scope`: **every** site that
221
+ holds the shape you found, and **how you enumerated them** — the grep or query
222
+ you ran, or the guard that derives the set.
223
+
224
+ A finding anchored to one `file:line` is a claim about one site. The recorded
225
+ history of this repository is that a fix then repairs that site and leaves its
226
+ siblings: one writer of five, one operator instruction of four, six readers of
227
+ eight. Each was found by the *next* review round, which is why reviews here have
228
+ run to seven and four rounds instead of one.
229
+
230
+ ```yaml
231
+ class_scope:
232
+ sites: ["src/lib/shell-config.ts:60", "src/session/store.ts:133"]
233
+ enumeration_method: "grep for the config-path resolvers; 7 writers, 2 unguarded"
234
+ ```
235
+
236
+ "I checked the others" is not an enumeration method. A single-entry `sites` list
237
+ is a claim that the class has exactly one member — make it deliberately, because
238
+ `review-finding.schema.json` accepts it and the next round tests it.
239
+
240
+ `minor` and `info` may omit it: enumerating the class for every low-severity
241
+ observation is theatre, not rigour.
242
+
243
+ ```markdown
244
+ ### [F-001] Title
245
+
246
+ - **Severity**: major | minor | info
247
+ - **File**: path/to/file.ts:line
248
+ - **Problem**: what is wrong
249
+ - **Why it matters**: readability / maintainability / DRY / convention consistency
250
+ - **Fix**: concrete suggestion
251
+ - **Patch** (optional):
252
+ ```diff
253
+ - old line
254
+ + new line
255
+ ```
256
+ ```
257
+
258
+ ---
259
+
260
+ ## Output Contract
261
+
262
+ ```
263
+ STATUS: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
264
+ ```
265
+
266
+ - `DONE` — no major or above findings (minor/info only or none)
267
+ - `DONE_WITH_CONCERNS` — one or more major findings (actively misleading names, circular imports, non-trivial DRY violations)
268
+ - `NEEDS_CONTEXT` — project naming convention unclear and no context doc provided; state what is ambiguous
269
+ - `BLOCKED` — cannot access diff; state reason
270
+
271
+ ```markdown
272
+ # Style Review Report
273
+
274
+ ## Verdict: APPROVE | APPROVE_WITH_SUGGESTIONS | REQUEST_CHANGES
275
+
276
+ ## Summary
277
+ <2-3 sentences: overall naming and readability health, notable patterns found.>
278
+
279
+ ## Review Scope
280
+ - Branch: `<BRANCH>`
281
+ - Parent ref: `<PARENT>`
282
+ - Merge-base: `<BASE_SHA>`
283
+ - Scope mode: `<default-with-uncommitted | explicit-hash-range>`
284
+ - Changed files: <count>
285
+
286
+ ## Stats
287
+ - major: N
288
+ - minor: N
289
+ - info: N
290
+
291
+ ## Major Issues
292
+ <[F-NNN] findings — misleading names, circular imports, significant DRY violations>
293
+
294
+ ## Minor & Info
295
+ <[F-NNN] findings>
296
+
297
+ ## Positive Notes
298
+ <Optional. Consistent naming, clean imports, good comments.>
299
+ ```
300
+
301
+ ---
302
+
303
+ ## Scope Boundaries
304
+
305
+ | Concern | This skill | Use instead |
306
+ |---------|------------|-------------|
307
+ | Naming, DRY, readability, imports, comments, file length | YES | — |
308
+ | Logic bugs, incorrect return values | NO | `review-logic` |
309
+ | Architectural layer violations | NO | `review-architecture` |
310
+ | Security vulnerabilities | NO | `review-security-code` |
311
+ | Performance anti-patterns | NO | `review-performance` |
312
+ | NestJS/backend patterns | NO | `review-backend` |
313
+ | React/MobX patterns | NO | `review-frontend` |
314
+
315
+ ---
316
+
317
+ ## Job Context Awareness
318
+
319
+ When dispatched by `job-orchestrator` or called with an explicit context path, the prompt MAY include:
320
+
321
+ ```
322
+ JOB_NAME: <job-name>
323
+ CONTEXT_PATH: <JOBS_ROOT>/<job-name>/ai/context.md
324
+ ```
325
+
326
+ If provided and the file exists, read the context document **before** running scope detection.
327
+ Use it to understand:
328
+ - Project-specific naming conventions (e.g., the project uses `PascalCase` for enums, not `UPPER_SNAKE_CASE`)
329
+ - Intentional style decisions documented as agreed-upon patterns (do not flag as issues)
330
+
331
+ If absent, infer conventions from surrounding unchanged code in the same files; note any ambiguity.
332
+
333
+ ---
334
+
335
+ ## Red Flags
336
+
337
+ | Rationalization | Why it is wrong |
338
+ |----------------|-----------------|
339
+ | "The naming is a bit odd but I understand it" | Reviewers understand their own code; the next dev won't |
340
+ | "Commented-out code might be needed later" | Git history exists for that; dead comments add noise |
341
+ | "It's only one magic number" | One `42` today becomes twelve untraceable `42`s tomorrow |
342
+ | "DRY violation is minor so I'll skip it" | Non-trivial duplication is `major`; do not understate it |
343
+ | "The file is 600 lines but it's organized" | Organization doesn't prevent merge conflicts and scroll fatigue |
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: review-testing-practices
3
+ description: |
4
+ Use when reviewing unit, integration, Storybook, component, or e2e tests
5
+ against repository-local testing conventions: co-location, network mocking,
6
+ MSW-style boundary mocks, behaviour assertions, deterministic waits,
7
+ smoke/full split, locator priority, and screenshot-test discipline.
8
+ Dispatched by review-orchestrator for --testing-practices,
9
+ --project-conventions, --all, or changed test/e2e/story files.
10
+ metadata:
11
+ author: "MrCipherSmith"
12
+ version: "1.0.0"
13
+ category: "review"
14
+ license: "MIT"
15
+ ---
16
+
17
+ # Review — Testing Practices
18
+
19
+ Reviewer for local testing discipline. Read project test guides first when present, then apply
20
+ the neutral baseline below.
21
+
22
+ ---
23
+
24
+ ## Scope
25
+
26
+ Applicable paths commonly include:
27
+
28
+ - `**/*.test.ts`, `**/*.test.tsx`, `**/*.spec.ts`, `**/*.spec.tsx`
29
+ - `**/*.integration.test.ts`, `**/*.integration.test.tsx`
30
+ - `**/*.msw.ts`, `test/**`, `src/test/**`
31
+ - `*.stories.tsx`, Storybook specs
32
+ - `e2e/**`, Playwright/Cypress page objects and fixtures
33
+
34
+ If the repository has local test documentation, cite the relevant convention in findings.
35
+
36
+ ---
37
+
38
+ ## Checklist
39
+
40
+ ### Test Location and Tiers
41
+
42
+ - Tests live near the code they cover unless the repository has a deliberate central test layout.
43
+ - Shared test infrastructure folders are not used as buckets for feature tests.
44
+ - Unit, integration, component, and e2e tiers are named and routed consistently.
45
+ - Fast feedback lanes stay fast; screenshot/component/e2e suites are not used for cheap unit
46
+ assertions.
47
+ - Coverage gates focus on changed risk, not low-value tests for trivial getters.
48
+
49
+ ### Network and Boundary Mocking
50
+
51
+ - For data-fetching UI, prefer rendering the real component/store and mocking only the network
52
+ boundary.
53
+ - Avoid mocking the API module in integration tests when the repository has network-level mock
54
+ infrastructure.
55
+ - Unhandled network requests fail loudly instead of silently hitting the real world.
56
+ - Mock handlers/fixtures are colocated and reusable by tests/stories where practical.
57
+ - Handler paths match the runtime test environment and avoid hard-coded origins unless required.
58
+
59
+ ### Behaviour Assertions
60
+
61
+ - Assert on user-visible DOM, callbacks, toasts, emitted events, or public state.
62
+ - Do not reach into private methods or internal fields unless the unit under test is explicitly a
63
+ low-level utility.
64
+ - Store-internal timing and concurrency can be unit-tested with lower-level mocks when that is
65
+ the clean seam.
66
+
67
+ ### Browser and E2E Determinism
68
+
69
+ - Tests create their own artifacts with unique names and assert on those artifacts.
70
+ - Avoid mutating or deleting seeded/shared environment data.
71
+ - Avoid env-wide assertions such as exact global counts, `.first()`, or `.nth(N)` unless the test
72
+ owns the full dataset.
73
+ - No fixed sleeps; wait on assertions, events, responses, or polling predicates.
74
+ - Backend-dependent assertions wait on the response/event that proves the backend completed.
75
+ - Smoke tags are reserved for fast, reliable, load-bearing baseline flows.
76
+ - Locator priority prefers stable test ids and accessible roles over raw CSS selectors.
77
+ - Screenshot tests are avoided for heavy, unstable, or non-deterministic surfaces unless the
78
+ repository explicitly supports them.
79
+
80
+ ### Local Type and Build Gotchas
81
+
82
+ - Account for incremental compiler caches when validating newly added files.
83
+ - Generated/vendored files that are outside the lint/type project are ignored centrally rather
84
+ than hand-formatted into compliance.
85
+
86
+ ---
87
+
88
+ ## Orchestrated Review Contract
89
+
90
+ When dispatched by `review-orchestrator`, follow the provided `reviewer-input.schema.json` payload. Return a `REVIEW_RESULT` object compatible with `skills/review-orchestrator/reviewer-finding.schema.json`, then a concise markdown summary. Keep findings evidence-based, include concrete `suggested_fix` for every blocker/major, and return `NEEDS_CONTEXT` instead of guessing when required context is missing.
91
+
92
+ ---
93
+
94
+ ## Finding Format
95
+
96
+ ### Class scope — required for `blocker` and `major`
97
+
98
+ Every `blocker` and `major` finding must carry `class_scope`: **every** site that
99
+ holds the shape you found, and **how you enumerated them** — the grep or query
100
+ you ran, or the guard that derives the set.
101
+
102
+ A finding anchored to one `file:line` is a claim about one site. The recorded
103
+ history of this repository is that a fix then repairs that site and leaves its
104
+ siblings: one writer of five, one operator instruction of four, six readers of
105
+ eight. Each was found by the *next* review round, which is why reviews here have
106
+ run to seven and four rounds instead of one.
107
+
108
+ ```yaml
109
+ class_scope:
110
+ sites: ["src/lib/shell-config.ts:60", "src/session/store.ts:133"]
111
+ enumeration_method: "grep for the config-path resolvers; 7 writers, 2 unguarded"
112
+ ```
113
+
114
+ "I checked the others" is not an enumeration method. A single-entry `sites` list
115
+ is a claim that the class has exactly one member — make it deliberately, because
116
+ `review-finding.schema.json` accepts it and the next round tests it.
117
+
118
+ `minor` and `info` may omit it: enumerating the class for every low-severity
119
+ observation is theatre, not rigour.
120
+
121
+ ```markdown
122
+ ### [F-NNN] Title
123
+
124
+ - **Severity**: blocker | major | minor | info
125
+ - **File**: path/to/test.ts:line
126
+ - **Problem**: which testing rule is violated
127
+ - **Why it matters**: determinism, confidence, CI runtime, or maintenance impact
128
+ - **Fix**: concrete test rewrite or fixture/handler change
129
+ ```
130
+
131
+ Severity guidance: real-network leaks, shared-data mutation, fixed sleeps, and backend-race
132
+ assertions are usually `major` or `blocker`; substrate choice and smoke tagging are usually
133
+ `minor` unless they make CI flaky.
134
+
@@ -0,0 +1,33 @@
1
+ # Shared: Git Scope Detection
2
+
3
+ ## Purpose
4
+ Reusable bash script for determining the review scope (merge-base) for review skills.
5
+ Used by: code-ai-review, code-boss-review, code-mobx-store-review, code-style-review.
6
+
7
+ ## Script
8
+
9
+ ```bash
10
+ BRANCH="$(git rev-parse --abbrev-ref HEAD)"
11
+ UPSTREAM_REF="$(git rev-parse --abbrev-ref --symbolic-full-name @{upstream} 2>/dev/null || true)"
12
+
13
+ PARENT=""
14
+ if git rev-parse --verify -q "origin/main" >/dev/null; then
15
+ PARENT="origin/main"
16
+ elif git rev-parse --verify -q "origin/master" >/dev/null; then
17
+ PARENT="origin/master"
18
+ elif git rev-parse --verify -q "main" >/dev/null; then
19
+ PARENT="main"
20
+ elif git rev-parse --verify -q "master" >/dev/null; then
21
+ PARENT="master"
22
+ elif [ -n "$UPSTREAM_REF" ] && [ "$UPSTREAM_REF" != "$BRANCH" ] && [ "$UPSTREAM_REF" != "origin/$BRANCH" ]; then
23
+ PARENT="@{upstream}"
24
+ else
25
+ echo "Cannot determine parent ref" >&2
26
+ exit 1
27
+ fi
28
+
29
+ BASE_SHA="$(git merge-base HEAD "$PARENT")"
30
+ ```
31
+
32
+ ## Usage
33
+ Copy-paste or reference this script at the start of any review skill's scope detection phase.
@@ -0,0 +1,32 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://keryx.local/schemas/gdskills/agent-event.schema.json",
4
+ "title": "Metaproject Agent Event",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["contract_version", "run_id", "event_id", "type", "timestamp_utc"],
8
+ "properties": {
9
+ "contract_version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
10
+ "run_id": { "type": "string" },
11
+ "event_id": { "type": "string" },
12
+ "dispatch_id": { "type": ["string", "null"] },
13
+ "type": {
14
+ "type": "string",
15
+ "enum": [
16
+ "run_started",
17
+ "run_completed",
18
+ "run_failed",
19
+ "dispatch_created",
20
+ "dispatch_completed",
21
+ "dispatch_blocked",
22
+ "artifact_written",
23
+ "question_asked",
24
+ "decision_recorded",
25
+ "validation_failed"
26
+ ]
27
+ },
28
+ "message": { "type": "string" },
29
+ "data": { "type": "object", "additionalProperties": true },
30
+ "timestamp_utc": { "type": "string", "format": "date-time" }
31
+ }
32
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://keryx.local/schemas/gdskills/orchestrator-state.schema.json",
4
+ "title": "Metaproject Orchestrator State",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["contract_version", "run_id", "orchestrator", "phase", "status", "plan", "artifacts", "updated_at"],
8
+ "properties": {
9
+ "contract_version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
10
+ "run_id": { "type": "string" },
11
+ "orchestrator": { "type": "string" },
12
+ "intent": { "type": "string" },
13
+ "phase": { "type": "string" },
14
+ "status": { "type": "string", "enum": ["pending", "in_progress", "completed", "blocked", "failed"] },
15
+ "plan": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": ["steps"],
19
+ "properties": {
20
+ "steps": {
21
+ "type": "array",
22
+ "items": {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": ["id", "skill", "status"],
26
+ "properties": {
27
+ "id": { "type": "string" },
28
+ "skill": { "type": "string" },
29
+ "depends_on": { "type": "array", "items": { "type": "string" } },
30
+ "status": { "type": "string", "enum": ["pending", "in_progress", "completed", "skipped", "blocked", "failed"] },
31
+ "dispatch_id": { "type": ["string", "null"] },
32
+ "result_path": { "type": ["string", "null"] }
33
+ }
34
+ }
35
+ },
36
+ "current_step": { "type": ["string", "null"] }
37
+ }
38
+ },
39
+ "artifacts": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "object",
43
+ "required": ["path", "kind", "exists"],
44
+ "properties": {
45
+ "path": { "type": "string" },
46
+ "kind": { "type": "string" },
47
+ "exists": { "type": "boolean" },
48
+ "summary": { "type": "string" }
49
+ }
50
+ }
51
+ },
52
+ "metrics": {
53
+ "type": "object",
54
+ "additionalProperties": true
55
+ },
56
+ "updated_at": { "type": "string", "format": "date-time" }
57
+ }
58
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://keryx.local/schemas/gdskills/review-finding.schema.json",
4
+ "title": "Metaproject Review Finding",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "id",
9
+ "reviewer",
10
+ "severity",
11
+ "problem",
12
+ "impact",
13
+ "suggested_fix",
14
+ "evidence",
15
+ "confidence"
16
+ ],
17
+ "properties": {
18
+ "id": { "type": "string" },
19
+ "reviewer": { "type": "string" },
20
+ "severity": { "type": "string", "enum": ["blocker", "major", "minor", "info"] },
21
+ "file": { "type": ["string", "null"] },
22
+ "line": { "type": ["integer", "null"], "minimum": 1 },
23
+ "symbol": { "type": ["string", "null"] },
24
+ "problem": { "type": "string" },
25
+ "impact": { "type": "string" },
26
+ "suggested_fix": { "type": "string" },
27
+ "evidence": { "type": "string" },
28
+ "confidence": { "type": "string", "enum": ["high", "medium", "low"] },
29
+ "dedupe_key": { "type": ["string", "null"] },
30
+ "blocking_merge": { "type": "boolean", "default": false },
31
+ "related_skill": { "type": ["string", "null"] },
32
+ "learning_candidate": { "type": "boolean", "default": false },
33
+ "class_scope": {
34
+ "title": "Every site of this shape, and how the set was derived",
35
+ "description": "A finding anchored to one file:line is a claim about one site. Repeatedly, a fix repaired that site and left its siblings — one writer of five, one operator instruction of four, six readers of eight — and the next review round found them. Required for blocker and major; optional below, because enumerating the class for every info finding is theatre.",
36
+ "type": "object",
37
+ "additionalProperties": false,
38
+ "required": ["sites", "enumeration_method"],
39
+ "properties": {
40
+ "sites": {
41
+ "type": "array",
42
+ "minItems": 1,
43
+ "items": { "type": "string" },
44
+ "description": "Every location carrying the shape, including ones already correct. A single-entry list is a claim that the class has one member."
45
+ },
46
+ "enumeration_method": {
47
+ "type": "string",
48
+ "minLength": 1,
49
+ "description": "How the set was derived: the grep or query run, the source-level guard that enumerates it, or why the list is exhaustive. 'I checked the others' is not a method."
50
+ }
51
+ }
52
+ }
53
+ },
54
+ "if": {
55
+ "required": ["severity"],
56
+ "properties": { "severity": { "enum": ["blocker", "major"] } }
57
+ },
58
+ "then": { "required": ["class_scope"] }
59
+ }