@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,477 @@
1
+ ---
2
+ name: review-clean-code
3
+ description: |
4
+ Use when: reviewing code against Clean Code principles (Uncle Bob) and SOLID at the
5
+ function/class level — meaningful names, small functions, single level of abstraction,
6
+ argument count, error handling, DRY, comment quality, and SOLID (SRP, OCP, LSP, ISP, DIP)
7
+ as applied to individual classes and functions.
8
+ Triggered by: "review clean code", "check clean code", "Uncle Bob review", "SOLID review",
9
+ "review --clean-code", or dispatched by review-orchestrator.
10
+ NOT for: architectural layer violations (review-architecture), naming convention formatting
11
+ (review-style), logic correctness bugs (review-logic), or security (review-security-code).
12
+ version: "1.0.0"
13
+ triggers:
14
+ - "review clean code"
15
+ - "check clean code"
16
+ - "Uncle Bob review"
17
+ - "SOLID review"
18
+ - "review --clean-code"
19
+ - dispatched by review-orchestrator
20
+ metadata:
21
+ author: "MrCipherSmith"
22
+ version: "1.0.0"
23
+ category: "review"
24
+ license: "MIT"
25
+ compatibility: "cursor,codex,zed,opencode,claude"
26
+ ---
27
+
28
+ # Review: Clean Code + SOLID
29
+
30
+ Specialized reviewer for **Clean Code principles** (Robert C. Martin) and **SOLID** at the
31
+ function and class level. Focuses on code in the current branch diff only.
32
+
33
+ The goal is not stylistic nitpicking — every finding here points to a concrete
34
+ maintainability, readability, or extensibility problem that will cause friction
35
+ as the codebase grows.
36
+
37
+ ---
38
+
39
+ ## Workflow
40
+
41
+ ```
42
+ Clean Code Review Progress:
43
+ - [ ] Step 1: Read Job Context (if provided)
44
+ - [ ] Step 2: Determine git scope (merge-base)
45
+ - [ ] Step 3: Collect diff and changed file list
46
+ - [ ] Step 4: Meaningful Names check
47
+ - [ ] Step 5: Functions check (size, abstraction, arguments)
48
+ - [ ] Step 6: Comments check
49
+ - [ ] Step 7: Error Handling check
50
+ - [ ] Step 8: DRY check
51
+ - [ ] Step 9: SOLID check (SRP, OCP, LSP, ISP, DIP)
52
+ - [ ] Step 10: Emit findings in unified format
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Input Contract
58
+
59
+ | Field | Type | Required | Description |
60
+ |-------|------|----------|-------------|
61
+ | `branch` | string | no | Branch to review. Defaults to current branch. |
62
+ | `commit_range` | string | no | Explicit hash or range. Overrides merge-base detection. |
63
+ | `context_doc` | string | no | Path to job context document. Read before reviewing. |
64
+
65
+ ---
66
+
67
+ ## Scope Detection
68
+
69
+ See shared script: `skills/shared/git-merge-base.md`
70
+
71
+ Run the script to determine `BASE_SHA`, then collect the diff:
72
+
73
+ ```bash
74
+ git diff --name-status "${BASE_SHA}"
75
+ git diff "${BASE_SHA}"
76
+ git ls-files --others --exclude-standard
77
+ ```
78
+
79
+ Review scope: **only code introduced or modified in this branch since merge-base**.
80
+ Pre-existing problems in unchanged lines are out of scope unless a change directly
81
+ worsens them.
82
+
83
+ ---
84
+
85
+ ## Iron Laws
86
+
87
+ 1. **Findings without a specific `file:line` from the diff are not valid findings.** Never cite general observations about the codebase.
88
+ 2. **Max severity for a naming issue is `major`.** Pure naming never rises to `blocker` — reserved for issues that break correctness.
89
+ 3. **DRY violations require at least 3 repetitions before becoming `major`.** Two occurrences can be accidental; three is a pattern.
90
+ 4. **SOLID opinions without a named principle and a concrete violation description are `info` only.** State the principle (e.g., SRP), the two responsibilities, and the impact.
91
+ 5. **Do not flag language idioms or framework conventions as Clean Code violations.** If it is the standard way to do something in TypeScript / NestJS / React, it is not a violation.
92
+
93
+ ---
94
+
95
+ ## Review Checklist
96
+
97
+ ### Part A: Meaningful Names
98
+
99
+ The central test: **a name should tell you why it exists, what it does, and how it is used** — without needing a comment to explain it.
100
+
101
+ #### A1. Intention-Revealing Names
102
+
103
+ - [ ] Variable / parameter names that require a comment to understand their purpose
104
+ - [ ] Single-letter names outside loop counters (`i`, `j`, `k`) and conventional math variables
105
+ - [ ] Generic names that carry no information: `data`, `info`, `value`, `temp`, `result`, `obj`, `item`, `thing`, `stuff`, `helper`, `util`, `manager`, `processor`
106
+ - [ ] Boolean names that could be read as either true or false: prefer `isLoaded`, `hasError`, `canSubmit` over `loaded`, `error`, `submit`
107
+ - [ ] Function names that start with a vague verb: `do`, `handle`, `process`, `manage` — prefer verbs that describe the action: `parseConfig`, `validateToken`, `fetchUserById`
108
+
109
+ Flags:
110
+ - Single-letter variable outside loop — **minor**
111
+ - Generic meaningless name (`data`, `result`, `temp`) in new code — **minor**
112
+ - Boolean named without `is/has/can/should` prefix making polarity ambiguous — **minor**
113
+ - Function named `handleX` where X is also vague — **minor**
114
+
115
+ #### A2. Searchability and Length
116
+
117
+ - [ ] Names that are too short to be grepped: single letters or two-letter abbreviations for non-obvious concepts
118
+ - [ ] Names that are too long (>40 characters) adding noise without precision: prefer concise + precise over exhaustive
119
+ - [ ] Abbreviations that are not project-wide standards (`usr` for `user`, `cnt` for `count`, `cfg` for `config`)
120
+
121
+ Flags:
122
+ - Non-standard abbreviation that a new team member would need to decode — **minor**
123
+
124
+ #### A3. Consistent Vocabulary
125
+
126
+ - [ ] Same concept named differently in the same diff: `user` / `account` / `member` used interchangeably for the same domain entity
127
+ - [ ] Verb inconsistency for similar actions: `fetch` vs `get` vs `load` vs `retrieve` for the same type of operation in the same module
128
+ - [ ] Antonym inconsistency: if one side is `add`, the other should be `remove` — not `delete` / `destroy` / `clear`
129
+
130
+ Flags:
131
+ - Two names for the same concept in the same diff — **minor**
132
+
133
+ ---
134
+
135
+ ### Part B: Functions
136
+
137
+ #### B1. Function Size and Single Responsibility
138
+
139
+ Clean Code guideline: functions should do **one thing** at one level of abstraction.
140
+
141
+ - [ ] Function body exceeds ~20 lines: a strong smell that it does more than one thing
142
+ - [ ] Function mixes levels of abstraction: high-level orchestration next to low-level data manipulation in the same block
143
+ - [ ] Function that both queries data AND transforms it AND persists it (three responsibilities)
144
+ - [ ] Functions with a `And` or `Or` in the name, describing two operations
145
+
146
+ Flags:
147
+ - Function body >40 lines — **major** (clear overload; flag specific function by name)
148
+ - Function body 20–40 lines with visible mixed abstraction — **minor**
149
+ - `doXAndY()` naming explicitly stating two operations — **minor**
150
+
151
+ #### B2. Function Arguments
152
+
153
+ - [ ] Monadic (1 arg): ideal for transformations (`parseDate(str)`) and predicates (`isEmpty(list)`)
154
+ - [ ] Dyadic (2 args): acceptable when arguments form a natural ordered pair (`createPoint(x, y)`)
155
+ - [ ] Triadic (3 args): consider if a config/options object would read more clearly
156
+ - [ ] Polyadic (≥4 args): almost always a sign of a missing abstraction (config object, parameter object, or SRP violation)
157
+ - [ ] Boolean flag arguments: `renderWidget(true, false, true)` — split into separate functions or use named option objects
158
+ - [ ] Output arguments: a function that mutates its argument instead of returning a value (`populate(result)`)
159
+
160
+ Flags:
161
+ - Function with ≥4 parameters not using an options/config object — **major**
162
+ - Boolean flag parameter (`enabled: boolean`) passed to control function flow — **major** (split into two functions)
163
+ - Output argument (mutating parameter instead of returning) — **minor**
164
+ - Three parameters where a plain named object would be clearer — **minor**
165
+
166
+ #### B3. Abstraction Level Consistency
167
+
168
+ Each function should stay at one level of the abstraction ladder. A function that opens a file, reads its bytes, decodes UTF-8, splits lines, and validates each record mixes at least 3 levels.
169
+
170
+ - [ ] Inline low-level operations (string splitting, index arithmetic) inside a high-level orchestration function
171
+ - [ ] High-level domain concepts (`createUserAccount`) containing raw SQL or HTTP fetch calls instead of delegating to a repository/service
172
+
173
+ Flags:
174
+ - High-level function with low-level implementation detail mixed in — **minor**
175
+
176
+ ---
177
+
178
+ ### Part C: Comments
179
+
180
+ #### C1. Comments That Lie or Are Redundant
181
+
182
+ - [ ] Comment that repeats what the code already says: `i++ // increment i`
183
+ - [ ] Comment that is stale / no longer matches the current code
184
+ - [ ] Commented-out code left in the diff
185
+
186
+ Flags:
187
+ - Redundant comment restating the code — **minor**
188
+ - Stale comment contradicting the code — **major** (actively misleads readers)
189
+ - Commented-out code block — **minor** (use git history, not comments, to preserve old code)
190
+
191
+ #### C2. Comments That Compensate for Bad Names
192
+
193
+ A comment whose entire purpose is to explain a poorly-named identifier is a sign to improve the name, not add a comment.
194
+
195
+ - [ ] `// This is the pipeline execution queue` explaining a variable named `queue2`
196
+ - [ ] JSDoc `@param data The data to process` adding zero information
197
+
198
+ Flags:
199
+ - Comment exists only to explain a name that could be made self-documenting — **minor**
200
+
201
+ #### C3. Comments That Are Justified
202
+
203
+ These are the correct uses of comments — do NOT flag:
204
+ - Legal comments (license headers)
205
+ - Explanation of intent for a non-obvious algorithm or business rule
206
+ - Clarification of a subtle domain constraint (`// ISO week starts on Monday per business requirement`)
207
+ - Warning about consequences (`// Do not cache — response contains time-sensitive token`)
208
+ - TODO/FIXME with an issue reference (`// TODO(#1234): remove after migration`)
209
+
210
+ ---
211
+
212
+ ### Part D: Error Handling
213
+
214
+ #### D1. Error Types and Propagation
215
+
216
+ - [ ] Returning `null` or `undefined` to signal failure instead of throwing or using a Result type — causes null propagation and eventual NPE
217
+ - [ ] Swallowing exceptions: `catch (err) {}` with no logging or re-throw
218
+ - [ ] Logging AND re-throwing the same error — double-logs across callers
219
+ - [ ] Using error strings instead of typed errors: `throw new Error("NOT_FOUND")` — callers cannot pattern-match
220
+ - [ ] `catch (err: any)` — loses type safety; use `catch (err: unknown)`
221
+
222
+ Flags:
223
+ - `catch` block with empty body or only a comment — **major** (silent failure)
224
+ - Returning `null` / `undefined` from a function to signal "not found" in a critical path — **major**
225
+ - Log + rethrow in the same catch block — **minor**
226
+ - Untyped error in catch — **minor**
227
+
228
+ #### D2. Error Context
229
+
230
+ - [ ] Re-throwing an error without wrapping context: `throw err` loses the call site information; prefer `throw new AppError("context", { cause: err })`
231
+ - [ ] Generic `new Error("something went wrong")` — message must identify what went wrong and ideally what inputs caused it
232
+
233
+ Flags:
234
+ - Bare `throw err` re-throw losing context in a library/service boundary — **minor**
235
+ - Generic error message with no context — **minor**
236
+
237
+ ---
238
+
239
+ ### Part E: DRY (Don't Repeat Yourself)
240
+
241
+ #### E1. Code Duplication
242
+
243
+ - [ ] Identical or near-identical code blocks in ≥3 places in the diff
244
+ - [ ] Copy-pasted logic that differs only in one or two variable names
245
+ - [ ] Multiple functions doing the same transformation with slightly different wrapping
246
+
247
+ Flags:
248
+ - 3+ identical or near-identical blocks in the diff that could be extracted — **major**
249
+ - 2 occurrences — **minor** (note, do not raise unless the pattern is clearly intentional duplication)
250
+
251
+ #### E2. Magic Numbers and Strings
252
+
253
+ - [ ] Hardcoded numeric literal used in business logic with no named constant (`if (status === 3)`)
254
+ - [ ] Repeated string literal used as a key, type discriminant, or route path without a shared constant
255
+
256
+ Flags:
257
+ - Magic number in business logic (not an obvious neutral like `0`, `1`, `100`) — **minor**
258
+ - Repeated string constant defined inline in multiple places — **minor**
259
+
260
+ ---
261
+
262
+ ### Part F: SOLID (at function/class level)
263
+
264
+ This overlaps with `review-architecture` at the system level, but here the focus is on
265
+ **individual classes and functions**, not module structure or layer assignments.
266
+
267
+ #### F1. Single Responsibility Principle (SRP)
268
+
269
+ A class should have **one reason to change**: one owner (one part of the system that drives its evolution).
270
+
271
+ - [ ] Class responsible for both data access AND business logic
272
+ - [ ] Class responsible for both input validation AND output formatting
273
+ - [ ] A constructor that does real work: making network calls, reading files, computing state — constructors should only assign
274
+
275
+ Flags:
276
+ - Class with two clearly distinct responsibilities that have different change drivers — **major**
277
+ - Constructor performing I/O or async operations — **major**
278
+ - Service method doing validation + transformation + persistence inline — **minor**
279
+
280
+ #### F2. Open/Closed Principle (OCP)
281
+
282
+ Classes should be open for extension, closed for modification. Violations appear as chains that must grow every time a new case is added.
283
+
284
+ - [ ] `if/else if` or `switch` over a type discriminant that already has 3+ branches — consider a strategy/visitor pattern
285
+ - [ ] Adding a case to an existing long `switch` in a file not in the diff context — flag if the diff shows a new `case` in a multi-case switch
286
+
287
+ Flags:
288
+ - New `case` added to a switch with ≥4 existing cases where a strategy pattern would be more appropriate — **minor**
289
+ - `instanceof` chain (`if (x instanceof A) ... else if (x instanceof B)`) — **minor**
290
+
291
+ #### F3. Liskov Substitution Principle (LSP)
292
+
293
+ Subtypes must be substitutable for their base types without changing the program's behavior.
294
+
295
+ - [ ] Subclass `override` method that throws `NotImplementedException` or `UnsupportedOperationException`
296
+ - [ ] Subclass method that requires checking `instanceof this` to determine behavior
297
+ - [ ] Override that strengthens preconditions (rejects more inputs than the parent)
298
+ - [ ] Override that weakens postconditions (returns less than the parent guarantees)
299
+
300
+ Flags:
301
+ - Override throwing "not supported" — **major**
302
+ - Override requiring `instanceof` self-check — **major**
303
+
304
+ #### F4. Interface Segregation Principle (ISP)
305
+
306
+ Clients should not be forced to depend on methods they do not use.
307
+
308
+ - [ ] Interface with ≥7 methods where implementing classes use only a subset — split into smaller interfaces
309
+ - [ ] Abstract class method that all concrete subclasses implement as a no-op
310
+
311
+ Flags:
312
+ - Interface with methods that have stub/no-op implementations in subclasses — **minor**
313
+
314
+ #### F5. Dependency Inversion Principle (DIP) — at class level
315
+
316
+ High-level modules should not depend on low-level modules. Both should depend on abstractions.
317
+
318
+ - [ ] Class instantiating its own dependencies with `new` instead of receiving them via constructor injection
319
+ - [ ] Class importing a concrete implementation class from another module instead of an interface/abstract class
320
+
321
+ Flags:
322
+ - `new ConcreteService()` inside a class method that should receive it via DI — **major**
323
+ - Import of concrete implementation where an interface or abstract type exists — **minor**
324
+
325
+ ---
326
+
327
+ ## Scope Boundaries
328
+
329
+ | Concern | This skill | Use instead |
330
+ |---------|-----------|-------------|
331
+ | Meaningful names, function size, DRY, comments, error handling | YES | — |
332
+ | SOLID at function/class level | YES | — |
333
+ | Layer violations, module coupling, dependency direction | NO | `review-architecture` |
334
+ | Style: naming convention formatting (casing, prefix) | NO | `review-style` |
335
+ | Logic bugs, off-by-one errors, null-safety | NO | `review-logic` |
336
+ | Security vulnerabilities | NO | `review-security-code` |
337
+ | Performance anti-patterns | NO | `review-performance` |
338
+ | React/MobX-specific frontend patterns | NO | `review-frontend` |
339
+
340
+ ---
341
+
342
+ ## Orchestrated Review Contract
343
+
344
+ 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.
345
+
346
+ ---
347
+
348
+ ## Finding Format
349
+
350
+ ### Class scope — required for `blocker` and `major`
351
+
352
+ Every `blocker` and `major` finding must carry `class_scope`: **every** site that
353
+ holds the shape you found, and **how you enumerated them** — the grep or query
354
+ you ran, or the guard that derives the set.
355
+
356
+ A finding anchored to one `file:line` is a claim about one site. The recorded
357
+ history of this repository is that a fix then repairs that site and leaves its
358
+ siblings: one writer of five, one operator instruction of four, six readers of
359
+ eight. Each was found by the *next* review round, which is why reviews here have
360
+ run to seven and four rounds instead of one.
361
+
362
+ ```yaml
363
+ class_scope:
364
+ sites: ["src/lib/shell-config.ts:60", "src/session/store.ts:133"]
365
+ enumeration_method: "grep for the config-path resolvers; 7 writers, 2 unguarded"
366
+ ```
367
+
368
+ "I checked the others" is not an enumeration method. A single-entry `sites` list
369
+ is a claim that the class has exactly one member — make it deliberately, because
370
+ `review-finding.schema.json` accepts it and the next round tests it.
371
+
372
+ `minor` and `info` may omit it: enumerating the class for every low-severity
373
+ observation is theatre, not rigour.
374
+
375
+ ```markdown
376
+ ### [F-NNN] Title
377
+
378
+ - **Severity**: blocker | major | minor | info
379
+ - **File**: path/to/file.ts:line
380
+ - **Principle**: Clean Code — Meaningful Names A1 | SOLID — SRP F1 | etc.
381
+ - **Problem**: what is wrong and why it matters
382
+ - **Fix**: concrete actionable suggestion
383
+ - **Patch** (optional):
384
+ ```diff
385
+ - old line
386
+ + new line
387
+ ```
388
+ ```
389
+
390
+ Severity guide for this reviewer:
391
+
392
+ | Severity | When to use |
393
+ |----------|------------|
394
+ | `blocker` | Swallowed exception (silent failure); constructor performing I/O that prevents testing; LSP violation breaking substitutability at runtime |
395
+ | `major` | Function >40 lines; ≥4 parameters without options object; boolean flag arg; class with two distinct responsibilities; `new ConcreteService()` bypassing DI |
396
+ | `minor` | Poor naming; redundant comment; magic number; 20–40 line function; minor OCP/ISP smell; log+rethrow |
397
+ | `info` | Stylistic opinion; potential future issue with no current concrete violation |
398
+
399
+ ---
400
+
401
+ ## Output Contract
402
+
403
+ ```
404
+ STATUS: DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED
405
+ ```
406
+
407
+ ```markdown
408
+ ## Clean Code Review
409
+
410
+ ### Review Scope
411
+ - Branch: `<BRANCH>`
412
+ - Parent ref: `<PARENT>`
413
+ - Merge-base: `<BASE_SHA>`
414
+ - Scope mode: `<default-with-uncommitted | explicit-hash-range>`
415
+ - Changed files reviewed: <N>
416
+
417
+ ### Summary
418
+ <2-3 sentences: overall code health relative to Clean Code principles, key concerns.>
419
+
420
+ ### Stats
421
+ - blocker: N | major: N | minor: N | info: N
422
+
423
+ ### Findings
424
+
425
+ #### Naming
426
+ <[F-NNN] findings or "No naming issues found.">
427
+
428
+ #### Functions
429
+ <[F-NNN] findings or "No function design issues found.">
430
+
431
+ #### Comments
432
+ <[F-NNN] findings or "No comment issues found.">
433
+
434
+ #### Error Handling
435
+ <[F-NNN] findings or "No error handling issues found.">
436
+
437
+ #### DRY
438
+ <[F-NNN] findings or "No DRY violations found.">
439
+
440
+ #### SOLID
441
+ <[F-NNN] findings or "No SOLID violations found.">
442
+
443
+ ### Clean Areas
444
+ [List parts of the checklist with no findings, confirming they were reviewed]
445
+ ```
446
+
447
+ ---
448
+
449
+ ## Job Context Awareness
450
+
451
+ When dispatched by `review-orchestrator` or `job-orchestrator`, the prompt MAY include:
452
+
453
+ ```
454
+ JOB_NAME: <job-name>
455
+ CONTEXT_PATH: <JOBS_ROOT>/<job-name>/ai/context.md
456
+ ```
457
+
458
+ If provided and the file exists, read the context document before reviewing. Use it to:
459
+ - Understand team-agreed naming conventions that may differ from defaults
460
+ - Identify intentional design decisions that appear to violate Clean Code but are documented exceptions
461
+ - Understand error handling strategy (Result types vs. exceptions vs. null)
462
+
463
+ If absent, proceed normally — context is optional and non-blocking.
464
+
465
+ ---
466
+
467
+ ## Red Flags
468
+
469
+ | Rationalization | Why it is wrong |
470
+ |----------------|-----------------|
471
+ | "This function is long but it's clear" | Clarity and length are separate concerns; long functions are harder to test and change regardless of clarity |
472
+ | "The team knows what `data` means here" | Names must survive team turnover; if a newcomer can't understand it, it fails |
473
+ | "DRY isn't violated — the two blocks just happen to look the same" | If they change together and must stay in sync, they are a DRY violation |
474
+ | "Boolean arg is fine, it's obvious from context" | Boolean args always create `call(true, false, true)` call sites that require reading the signature to decode |
475
+ | "The catch block logs the error, that's enough" | Logging and silently swallowing are the same if nothing else handles it — check what happens after the catch |
476
+ | "I can flag SOLID issues at info because they're just design opinions" | Named SOLID violations with concrete impact (testability, extensibility) are at least minor |
477
+ | "This is how the framework works, so it's not a violation" | Framework idioms are explicitly exempt — Iron Law 5 |
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: review-core-boundaries
3
+ description: |
4
+ Use when reviewing shared core/infrastructure module changes for dependency
5
+ direction, feature-boundary leakage, abstraction stability, composition,
6
+ and blast-radius risks. Dispatched by review-orchestrator for
7
+ --core-boundaries, --project-conventions, --all, or src/core/** changes.
8
+ metadata:
9
+ author: "MrCipherSmith"
10
+ version: "1.0.0"
11
+ category: "review"
12
+ license: "MIT"
13
+ ---
14
+
15
+ # Review — Core Boundaries
16
+
17
+ Reviewer for shared infrastructure modules. A core module should provide stable foundations
18
+ used by feature modules; it should not accumulate feature-specific behaviour.
19
+
20
+ ---
21
+
22
+ ## Scope
23
+
24
+ Applicable to folders such as `src/core/**`, `core/**`, `shared/**`, `foundation/**`,
25
+ or whatever the repository documents as its shared infrastructure layer.
26
+
27
+ If a more specific module reviewer also applies, run both.
28
+
29
+ ---
30
+
31
+ ## Checklist
32
+
33
+ - Shared/core modules contain reusable utilities, base components, base stores, primitives, and
34
+ infrastructure.
35
+ - Feature-specific code does not move into core just to avoid imports.
36
+ - Core does not import feature/domain modules.
37
+ - Dependencies stay minimal and point inward: feature modules depend on core, not the reverse.
38
+ - Prefer composition through interfaces, base classes, adapters, or callbacks over hard-coded
39
+ feature knowledge.
40
+ - Public core APIs remain stable and domain-neutral.
41
+ - New exports are added only when there is a real shared consumer need.
42
+ - Changes are conservative because core has broad blast radius.
43
+ - Generic helpers remain generic; names, types, and state do not leak a single feature's language.
44
+ - Resource-owning utilities document and test cleanup semantics.
45
+
46
+ ---
47
+
48
+ ## Orchestrated Review Contract
49
+
50
+ 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.
51
+
52
+ ---
53
+
54
+ ## Finding Format
55
+
56
+ ### Class scope — required for `blocker` and `major`
57
+
58
+ Every `blocker` and `major` finding must carry `class_scope`: **every** site that
59
+ holds the shape you found, and **how you enumerated them** — the grep or query
60
+ you ran, or the guard that derives the set.
61
+
62
+ A finding anchored to one `file:line` is a claim about one site. The recorded
63
+ history of this repository is that a fix then repairs that site and leaves its
64
+ siblings: one writer of five, one operator instruction of four, six readers of
65
+ eight. Each was found by the *next* review round, which is why reviews here have
66
+ run to seven and four rounds instead of one.
67
+
68
+ ```yaml
69
+ class_scope:
70
+ sites: ["src/lib/shell-config.ts:60", "src/session/store.ts:133"]
71
+ enumeration_method: "grep for the config-path resolvers; 7 writers, 2 unguarded"
72
+ ```
73
+
74
+ "I checked the others" is not an enumeration method. A single-entry `sites` list
75
+ is a claim that the class has exactly one member — make it deliberately, because
76
+ `review-finding.schema.json` accepts it and the next round tests it.
77
+
78
+ `minor` and `info` may omit it: enumerating the class for every low-severity
79
+ observation is theatre, not rigour.
80
+
81
+ ```markdown
82
+ ### [F-NNN] Title
83
+
84
+ - **Severity**: blocker | major | minor | info
85
+ - **File**: path/to/core/file.ts:line
86
+ - **Problem**: core boundary or stability rule violated
87
+ - **Why it matters**: blast radius across modules
88
+ - **Fix**: move to domain module, invert dependency, or extract a truly shared abstraction
89
+ ```
90
+
91
+ Severity guidance: importing feature code into core or adding feature-specific public API is
92
+ usually `major`; broad shared API breakage can be `blocker`.
93
+
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: review-flow-graph
3
+ description: |
4
+ Use when reviewing generic ReactFlow or graph-surface abstraction changes:
5
+ public graph surface, store subclassing, layout lifecycle, internal helper
6
+ boundaries, selection lifecycle, and large-graph performance. Dispatched by
7
+ review-orchestrator for --flow-graph, --project-conventions, --all, or
8
+ src/core/flow/** / graph abstraction changes.
9
+ metadata:
10
+ author: "MrCipherSmith"
11
+ version: "1.0.0"
12
+ category: "review"
13
+ license: "MIT"
14
+ ---
15
+
16
+ # Review — Flow Graph Abstractions
17
+
18
+ Reviewer for reusable ReactFlow/graph integration layers. Use it when a repository has a shared
19
+ graph surface consumed by domain modules.
20
+
21
+ ---
22
+
23
+ ## Scope
24
+
25
+ Applicable to shared graph/flow abstraction folders such as `src/core/flow/**`,
26
+ `src/graph/**`, `src/shared/flow/**`, and consumers adding a new graph surface through the
27
+ shared public API.
28
+
29
+ If the repository has local graph docs, read them first and treat this checklist as a neutral
30
+ baseline.
31
+
32
+ ---
33
+
34
+ ## Checklist
35
+
36
+ ### Public Surface
37
+
38
+ - Domain modules consume the documented public graph surface instead of mounting internal shell
39
+ or bridge modules directly.
40
+ - New exports are added only when more than one domain consumer needs them.
41
+ - Public graph components own common setup such as loader/splitter/viewport wiring/toolbars.
42
+
43
+ ### Store and Lifecycle
44
+
45
+ - Static viewers and expandable/progressive graphs use the appropriate base store or abstraction.
46
+ - Subclasses initialize base state before local observability/reactivity.
47
+ - Domain side effects preserve base selection/click/reset behaviour.
48
+ - Expand/collapse graphs define fetch and direction/availability contracts explicitly.
49
+ - Independent graph data fetches run in parallel and merge through a deduplication helper.
50
+
51
+ ### Internal Boundary
52
+
53
+ - Layout helpers, shell components, bridge hooks, SVG/canvas geometry helpers, export helpers,
54
+ and popup/container utilities stay internal unless there is a real shared public need.
55
+ - New pure node/edge helpers live close to the graph abstraction.
56
+ - New visual primitives live in the graph abstraction layer only when domain-neutral.
57
+ - Domain-specific data shapes and selection details stay in domain modules.
58
+
59
+ ### Shared Graph Defaults and Performance
60
+
61
+ - Shared graph defaults are configured in one surface, not repeated per consumer.
62
+ - Large nodes/edges arrays avoid deep observation/proxying when shallow/reference observation is
63
+ enough.
64
+ - Selection/detail slots use reference semantics when values are swapped as units.
65
+ - Lookup maps/indexes are computed once from source arrays for O(1) access.
66
+ - Hand graph libraries fresh array references without deep cloning on every render.
67
+ - User-initiated graph changes batch writes.
68
+ - Animated edge/node effects do not restart unnecessarily on parent rerenders.
69
+ - Level-of-detail logic uses discrete thresholds or policy helpers rather than per-frame UI
70
+ rerenders.
71
+
72
+ ---
73
+
74
+ ## Orchestrated Review Contract
75
+
76
+ 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.
77
+
78
+ ---
79
+
80
+ ## Finding Format
81
+
82
+ ### Class scope — required for `blocker` and `major`
83
+
84
+ Every `blocker` and `major` finding must carry `class_scope`: **every** site that
85
+ holds the shape you found, and **how you enumerated them** — the grep or query
86
+ you ran, or the guard that derives the set.
87
+
88
+ A finding anchored to one `file:line` is a claim about one site. The recorded
89
+ history of this repository is that a fix then repairs that site and leaves its
90
+ siblings: one writer of five, one operator instruction of four, six readers of
91
+ eight. Each was found by the *next* review round, which is why reviews here have
92
+ run to seven and four rounds instead of one.
93
+
94
+ ```yaml
95
+ class_scope:
96
+ sites: ["src/lib/shell-config.ts:60", "src/session/store.ts:133"]
97
+ enumeration_method: "grep for the config-path resolvers; 7 writers, 2 unguarded"
98
+ ```
99
+
100
+ "I checked the others" is not an enumeration method. A single-entry `sites` list
101
+ is a claim that the class has exactly one member — make it deliberately, because
102
+ `review-finding.schema.json` accepts it and the next round tests it.
103
+
104
+ `minor` and `info` may omit it: enumerating the class for every low-severity
105
+ observation is theatre, not rigour.
106
+
107
+ ```markdown
108
+ ### [F-NNN] Title
109
+
110
+ - **Severity**: blocker | major | minor | info
111
+ - **File**: path/to/graph/file.ts:line
112
+ - **Problem**: which graph abstraction contract is violated
113
+ - **Why it matters**: public surface stability, graph correctness, or performance impact
114
+ - **Fix**: concrete change aligned with the shared graph surface
115
+ ```
116
+
117
+ Severity guidance: breaking the public surface or bypassing base selection/layout lifecycle is
118
+ usually `major`; performance regressions on large graphs can be `major` or `blocker`.
119
+