@mrciphersmith/keryx 0.2.97 → 0.2.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/dist/cli.js +4583 -2702
  2. package/dist/core.js +40 -2
  3. package/package.json +1 -1
  4. package/src/gdskills/bundled/rules/core/api-contracts.mdc +1 -0
  5. package/src/gdskills/bundled/rules/core/cli-interface-design.mdc +237 -0
  6. package/src/gdskills/bundled/rules/core/code-style-patterns.mdc +1 -0
  7. package/src/gdskills/bundled/rules/core/database-patterns.mdc +1 -0
  8. package/src/gdskills/bundled/rules/core/definition-of-done.mdc +116 -0
  9. package/src/gdskills/bundled/rules/core/documentation-management.mdc +33 -38
  10. package/src/gdskills/bundled/rules/core/error-handling.mdc +1 -11
  11. package/src/gdskills/bundled/rules/core/execution-metrics.md +1 -2
  12. package/src/gdskills/bundled/rules/core/frontend-assistant.mdc +1 -0
  13. package/src/gdskills/bundled/rules/core/git-concurrency.mdc +101 -0
  14. package/src/gdskills/bundled/rules/core/implementation-plans.mdc +23 -11
  15. package/src/gdskills/bundled/rules/core/mobx-store-template.mdc +1 -0
  16. package/src/gdskills/bundled/rules/core/nestjs-dto.mdc +1 -0
  17. package/src/gdskills/bundled/rules/core/playwright-testing.mdc +1 -0
  18. package/src/gdskills/bundled/rules/core/requirements-management.mdc +15 -11
  19. package/src/gdskills/bundled/rules/core/rule-management-workflow.mdc +29 -14
  20. package/src/gdskills/bundled/rules/core/shared-definitions.mdc +1 -1
  21. package/src/gdskills/bundled/rules/core/skill-lifecycle.mdc +9 -5
  22. package/src/gdskills/bundled/rules/core/skills-storage-workflow.mdc +156 -23
  23. package/src/gdskills/bundled/rules/core/storybook-guidelines.mdc +1 -0
  24. package/src/gdskills/bundled/rules/core/subagent-status-protocol.md +9 -2
  25. package/src/gdskills/bundled/skills/core/reviewer-skill-creator/SKILL.md +42 -5
  26. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.md +67 -74
  27. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.md +24 -8
  28. package/src/gdskills/bundled/skills/orchestration/context-collector/orchestrator-prompt.md +2 -2
  29. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.detail.md +12 -22
  30. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +44 -31
  31. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.md +2 -2
  32. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/analysis-request.template.md +1 -1
  33. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/input-contract.schema.json +4 -4
  34. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/orchestrator-prompt.md +2 -2
  35. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +20 -6
  36. package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +67 -9
  37. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.md +6 -6
  38. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/orchestrator-prompt.md +1 -1
  39. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.md +45 -5
  40. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +88 -32
  41. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +52 -41
  42. package/src/gdskills/bundled/skills/orchestration/task-implementer/output-contract.schema.json +32 -1
  43. package/src/gdskills/bundled/skills/planning/autodoc-analyst/SKILL.md +16 -0
  44. package/src/gdskills/bundled/skills/planning/autodoc-architect/SKILL.md +16 -0
  45. package/src/gdskills/bundled/skills/planning/autodoc-assembler/SKILL.md +16 -0
  46. package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +17 -0
  47. package/src/gdskills/bundled/skills/planning/autodoc-scanner/SKILL.md +16 -0
  48. package/src/gdskills/bundled/skills/planning/autodoc-writer/SKILL.md +16 -0
  49. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.md +29 -4
  50. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.codex.md +17 -0
  51. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.cursor.md +17 -0
  52. package/src/gdskills/bundled/skills/planning/consistency-checker/SKILL.md +17 -0
  53. package/src/gdskills/bundled/skills/planning/docpack-orchestrator/SKILL.md +32 -2
  54. package/src/gdskills/bundled/skills/planning/docpack-review/SKILL.md +14 -2
  55. package/src/gdskills/bundled/skills/planning/interview/SKILL.md +30 -8
  56. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +33 -7
  57. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.codex.md +16 -0
  58. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.cursor.md +16 -0
  59. package/src/gdskills/bundled/skills/planning/patterns-researcher/SKILL.md +16 -0
  60. package/src/gdskills/bundled/skills/planning/planner/SKILL.codex.md +17 -0
  61. package/src/gdskills/bundled/skills/planning/planner/SKILL.cursor.md +17 -0
  62. package/src/gdskills/bundled/skills/planning/planner/SKILL.md +17 -0
  63. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.md +27 -10
  64. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.codex.md +16 -0
  65. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.cursor.md +16 -0
  66. package/src/gdskills/bundled/skills/planning/problem-definer/SKILL.md +16 -0
  67. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.codex.md +16 -0
  68. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.cursor.md +16 -0
  69. package/src/gdskills/bundled/skills/planning/project-discovery/SKILL.md +16 -0
  70. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.codex.md +4 -0
  71. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.cursor.md +4 -0
  72. package/src/gdskills/bundled/skills/planning/spec-writer/SKILL.md +4 -0
  73. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.codex.md +4 -0
  74. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.cursor.md +4 -0
  75. package/src/gdskills/bundled/skills/planning/stack-advisor/SKILL.md +4 -0
  76. package/src/gdskills/bundled/skills/platform/agent-entrypoint-distiller/SKILL.md +31 -4
  77. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.md +27 -3
  78. package/src/gdskills/bundled/skills/platform/hookify/SKILL.md +29 -4
  79. package/src/gdskills/bundled/skills/quality/api-truth/SKILL.md +226 -0
  80. package/src/gdskills/bundled/skills/quality/changelog/SKILL.md +25 -5
  81. package/src/gdskills/bundled/skills/quality/commit/SKILL.md +26 -5
  82. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.md +25 -4
  83. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.md +26 -5
  84. package/src/gdskills/bundled/skills/quality/deploy/SKILL.md +27 -4
  85. package/src/gdskills/bundled/skills/quality/deprecation-path/SKILL.md +268 -0
  86. package/src/gdskills/bundled/skills/quality/fresh-eyes/SKILL.md +190 -0
  87. package/src/gdskills/bundled/skills/quality/metaproject-security/SKILL.md +24 -3
  88. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.md +30 -9
  89. package/src/gdskills/bundled/skills/quality/pr/SKILL.md +25 -5
  90. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.md +27 -4
  91. package/src/gdskills/bundled/skills/quality/push/SKILL.md +25 -4
  92. package/src/gdskills/bundled/skills/quality/root-cause/SKILL.md +204 -0
  93. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.md +25 -4
  94. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.md +31 -5
  95. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.md +32 -11
  96. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.md +42 -7
  97. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.md +43 -3
  98. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.md +46 -4
  99. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.md +46 -6
  100. package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +5 -5
  101. package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +5 -6
  102. package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +6 -6
  103. package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +37 -3
  104. package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +38 -4
  105. package/src/gdskills/bundled/skills/review/review-frontend/SKILL.md +4 -6
  106. package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +37 -3
  107. package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +5 -7
  108. package/src/gdskills/bundled/skills/review/review-layout/SKILL.md +24 -3
  109. package/src/gdskills/bundled/skills/review/review-logic/SKILL.md +5 -5
  110. package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +49 -64
  111. package/src/gdskills/bundled/skills/review/review-orchestrator/input-contract.schema.json +1 -2
  112. package/src/gdskills/bundled/skills/review/review-orchestrator/review-context.schema.json +1 -5
  113. package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +53 -9
  114. package/src/gdskills/bundled/skills/review/review-performance/SKILL.md +11 -11
  115. package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +9 -8
  116. package/src/gdskills/bundled/skills/review/review-regression/SKILL.md +33 -2
  117. package/src/gdskills/bundled/skills/review/review-security-code/SKILL.md +6 -4
  118. package/src/gdskills/bundled/skills/review/review-style/SKILL.md +5 -5
  119. package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +41 -3
  120. package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +2 -2
  121. package/src/gdskills/bundled/rules/core/review-agent-profile.mdc +0 -49
  122. package/src/gdskills/bundled/rules/core/review-strict-profile.mdc +0 -48
  123. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.codex.md +0 -353
  124. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.cursor.md +0 -353
  125. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.opencode.md +0 -353
  126. package/src/gdskills/bundled/skills/orchestration/code-verifier/SKILL.zed.md +0 -353
  127. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.codex.md +0 -655
  128. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.cursor.md +0 -655
  129. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.opencode.md +0 -655
  130. package/src/gdskills/bundled/skills/orchestration/context-collector/SKILL.zed.md +0 -655
  131. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +0 -434
  132. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +0 -434
  133. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +0 -434
  134. package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +0 -434
  135. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +0 -163
  136. package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +0 -163
  137. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.codex.md +0 -373
  138. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.cursor.md +0 -373
  139. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.opencode.md +0 -373
  140. package/src/gdskills/bundled/skills/orchestration/issue-analyzer/SKILL.zed.md +0 -373
  141. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.codex.md +0 -374
  142. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.cursor.md +0 -374
  143. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.opencode.md +0 -374
  144. package/src/gdskills/bundled/skills/orchestration/job-documenter/SKILL.zed.md +0 -374
  145. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +0 -2190
  146. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +0 -2190
  147. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +0 -2190
  148. package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +0 -2190
  149. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +0 -659
  150. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +0 -659
  151. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +0 -659
  152. package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +0 -659
  153. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.codex.md +0 -90
  154. package/src/gdskills/bundled/skills/planning/brainstorm/SKILL.cursor.md +0 -90
  155. package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +0 -187
  156. package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +0 -187
  157. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +0 -105
  158. package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +0 -105
  159. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.codex.md +0 -193
  160. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.cursor.md +0 -193
  161. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.opencode.md +0 -193
  162. package/src/gdskills/bundled/skills/planning/prd-creator/SKILL.zed.md +0 -193
  163. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.codex.md +0 -87
  164. package/src/gdskills/bundled/skills/platform/claude-md-management/SKILL.cursor.md +0 -87
  165. package/src/gdskills/bundled/skills/platform/hookify/SKILL.codex.md +0 -100
  166. package/src/gdskills/bundled/skills/platform/hookify/SKILL.cursor.md +0 -100
  167. package/src/gdskills/bundled/skills/quality/changelog/SKILL.codex.md +0 -84
  168. package/src/gdskills/bundled/skills/quality/changelog/SKILL.cursor.md +0 -84
  169. package/src/gdskills/bundled/skills/quality/commit/SKILL.codex.md +0 -66
  170. package/src/gdskills/bundled/skills/quality/commit/SKILL.cursor.md +0 -66
  171. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.codex.md +0 -66
  172. package/src/gdskills/bundled/skills/quality/db-migrate/SKILL.cursor.md +0 -66
  173. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.codex.md +0 -81
  174. package/src/gdskills/bundled/skills/quality/dependency-update/SKILL.cursor.md +0 -81
  175. package/src/gdskills/bundled/skills/quality/deploy/SKILL.codex.md +0 -70
  176. package/src/gdskills/bundled/skills/quality/deploy/SKILL.cursor.md +0 -70
  177. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.codex.md +0 -83
  178. package/src/gdskills/bundled/skills/quality/perf-check/SKILL.cursor.md +0 -83
  179. package/src/gdskills/bundled/skills/quality/pr/SKILL.codex.md +0 -75
  180. package/src/gdskills/bundled/skills/quality/pr/SKILL.cursor.md +0 -75
  181. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.codex.md +0 -378
  182. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.cursor.md +0 -378
  183. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.opencode.md +0 -378
  184. package/src/gdskills/bundled/skills/quality/pr-issue-documenter/SKILL.zed.md +0 -378
  185. package/src/gdskills/bundled/skills/quality/push/SKILL.codex.md +0 -52
  186. package/src/gdskills/bundled/skills/quality/push/SKILL.cursor.md +0 -52
  187. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.codex.md +0 -108
  188. package/src/gdskills/bundled/skills/quality/security-audit/SKILL.cursor.md +0 -108
  189. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.codex.md +0 -75
  190. package/src/gdskills/bundled/skills/quality/test-gen/SKILL.cursor.md +0 -75
  191. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.codex.md +0 -339
  192. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.cursor.md +0 -339
  193. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.opencode.md +0 -339
  194. package/src/gdskills/bundled/skills/quality/tests-creator/SKILL.zed.md +0 -339
  195. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.codex.md +0 -203
  196. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.cursor.md +0 -203
  197. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.opencode.md +0 -203
  198. package/src/gdskills/bundled/skills/review/code-ai-review/SKILL.zed.md +0 -203
  199. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.codex.md +0 -243
  200. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.cursor.md +0 -243
  201. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.opencode.md +0 -243
  202. package/src/gdskills/bundled/skills/review/code-learned-review/SKILL.zed.md +0 -243
  203. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.codex.md +0 -259
  204. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.cursor.md +0 -259
  205. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.opencode.md +0 -259
  206. package/src/gdskills/bundled/skills/review/code-mobx-store-review/SKILL.zed.md +0 -259
  207. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.codex.md +0 -168
  208. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.cursor.md +0 -168
  209. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.opencode.md +0 -168
  210. package/src/gdskills/bundled/skills/review/code-style-review/SKILL.zed.md +0 -168
@@ -5,6 +5,10 @@ description: >
5
5
  architecture doc, and best practices. Does NOT invent new architectural decisions.
6
6
  Use when: dispatched by gproject-orchestrator Phase 4.
7
7
  NOT for: direct user invocation.
8
+ triggers:
9
+ - "write spec"
10
+ - "technical specification"
11
+ - "implementation plan"
8
12
  metadata:
9
13
  version: 1.0.0
10
14
  compatible_harnesses: "cursor,codex,zed,opencode"
@@ -5,6 +5,10 @@ description: >
5
5
  architecture doc, and best practices. Does NOT invent new architectural decisions.
6
6
  Use when: dispatched by gproject-orchestrator Phase 4.
7
7
  NOT for: direct user invocation.
8
+ triggers:
9
+ - "write spec"
10
+ - "technical specification"
11
+ - "implementation plan"
8
12
  metadata:
9
13
  version: 1.0.0
10
14
  ---
@@ -5,6 +5,10 @@ description: >
5
5
  technology stack with trade-off analysis.
6
6
  Use when: dispatched by gproject-orchestrator Phase 2.
7
7
  NOT for: direct user invocation.
8
+ triggers:
9
+ - "stack advice"
10
+ - "choose stack"
11
+ - "technology choice"
8
12
  metadata:
9
13
  version: 1.0.0
10
14
  compatible_harnesses: "cursor,codex,zed,opencode"
@@ -5,6 +5,10 @@ description: >
5
5
  technology stack with trade-off analysis.
6
6
  Use when: dispatched by gproject-orchestrator Phase 2.
7
7
  NOT for: direct user invocation.
8
+ triggers:
9
+ - "stack advice"
10
+ - "choose stack"
11
+ - "technology choice"
8
12
  metadata:
9
13
  version: 1.0.0
10
14
  compatible_harnesses: "cursor,codex,zed,opencode"
@@ -5,6 +5,10 @@ description: >
5
5
  technology stack with trade-off analysis.
6
6
  Use when: dispatched by gproject-orchestrator Phase 2.
7
7
  NOT for: direct user invocation.
8
+ triggers:
9
+ - "stack advice"
10
+ - "choose stack"
11
+ - "technology choice"
8
12
  metadata:
9
13
  version: 1.0.0
10
14
  ---
@@ -1,9 +1,13 @@
1
1
  ---
2
2
  name: agent-entrypoint-distiller
3
- description: Use when the user asks to split, decompose, distill, or refactor a large AGENTS.md or CLAUDE.md into Metaproject rules and project-specific skills while keeping root entrypoints compact.
3
+ description: "Use when the user asks to split, decompose, distill, or refactor a large AGENTS.md or CLAUDE.md into Metaproject rules and project-specific skills while keeping root entrypoints compact. NOT for: adding a newly learned convention or command to an existing CLAUDE.md (use claude-md-management)."
4
4
  triggers:
5
- - "distill AGENTS.md"
5
+ - "distill claude"
6
6
  - "split CLAUDE.md"
7
+ - "разбери CLAUDE.md"
8
+ - "создай правила из CLAUDE.md"
9
+ - "entrypoint rules"
10
+ - "distill AGENTS.md"
7
11
  - "разнеси CLAUDE.md по правилам"
8
12
  metadata:
9
13
  version: "1.0.0"
@@ -35,10 +39,33 @@ keryx rules distill
35
39
 
36
40
  ```bash
37
41
  keryx rules sync
38
- keryx flow check 001
42
+ keryx flow check
39
43
  ```
40
44
 
41
- Skip `flow check` when the project has no Task Manager flow.
45
+ `flow check` takes no flow id: it validates every package under `.metaproject/flows/` — id uniqueness, `flow.json` against the published schema, the six required documents, and the acceptance-criteria checksum. With no flows it prints `All flows are consistent.` and exits 0, so it is safe to run either way.
46
+
47
+ ## Red Flags
48
+
49
+ Stop and re-read this skill if you are thinking:
50
+
51
+ | Rationalization | Rebuttal |
52
+ |---|---|
53
+ | "`keryx rules distill` exited 0, so the split is correct." | Exit 0 says the command ran, not that it split well. It happily writes an empty rule, a rule titled after a heading it could not classify, and two rules holding the same paragraph. Open every file listed in step 3 before reporting anything. |
54
+ | "The root entrypoint is short now, so the job is done." | Shortness is a side effect, not the goal. A root that no longer points at `.metaproject/index.md`, or that lost an always-on instruction into a rule nothing loads, is a regression that looks like success on a line count. |
55
+ | "This section read like a project rule, so I moved it out of the root." | Global, personal and highest-priority always-on instructions stay in the root by design. If you had to guess which kind a section was, it belongs in the ambiguous list for a human — not silently in a rule file. |
56
+ | "The project has no flow, so I can skip verification." | `keryx flow check` is not conditional either — with no flows it reports `All flows are consistent.` and exits 0. `keryx rules sync` runs every time; skipping it ships a rules tree whose index and files disagree. |
57
+ | "`keryx rules distill` rewrote the root files, so I don't need to read them." | The rewrite is exactly what needs checking. Reading the post-distill `AGENTS.md` and `CLAUDE.md` is the only way to see what was carried out of them. |
58
+
59
+ ## Verification
60
+
61
+ Before reporting, all of these must hold:
62
+
63
+ - `keryx rules sync` exits 0.
64
+ - `.metaproject/rules/entrypoints/index.md` exists and names every file written under `.metaproject/rules/entrypoints/`.
65
+ - Every generated rule and project-skill file is non-empty and was read, not just listed.
66
+ - `AGENTS.md` and `CLAUDE.md` both still reference `.metaproject/index.md`.
67
+ - `keryx flow check` exits 0. It takes no id and checks every flow package in the project, so a distill that corrupted one reports here even though the distill never touched flows.
68
+ - Every section you could not confidently classify appears in the ambiguous list of the Output Contract. An empty ambiguous list on a large entrypoint is a claim, and it must be a true one.
42
69
 
43
70
  ## Output Contract
44
71
 
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  name: claude-md-management
3
- description: "Use when saving session learnings, coding patterns, conventions, or commands discovered during work into CLAUDE.md files."
3
+ description: "Use when saving session learnings, coding patterns, conventions, or commands discovered during work into CLAUDE.md files. NOT for: breaking an oversized entrypoint apart into Metaproject rules and skills (use agent-entrypoint-distiller)."
4
4
  triggers:
5
- - "/revise-claude-md"
5
+ - "CLAUDE.md management"
6
+ - "agent entrypoint"
6
7
  - "Update claude md"
7
8
  - "Save learnings"
8
9
  - "Update project instructions"
@@ -10,7 +11,7 @@ triggers:
10
11
  metadata:
11
12
  author: "MrCipherSmith"
12
13
  version: "1.0.0"
13
- category: "configuration"
14
+ category: "platform"
14
15
  compatible_harnesses: "cursor,codex,zed,opencode,claude"
15
16
  license: "MIT"
16
17
  ---
@@ -85,3 +86,26 @@ Present diff preview:
85
86
  - NEVER add entries that duplicate what's already there
86
87
  - Keep CLAUDE.md files under 100 lines
87
88
  - Prefer project-level for project-specific things
89
+
90
+ ## Red Flags
91
+
92
+ Stop and re-read this skill if you are thinking:
93
+
94
+ | Rationalization | Rebuttal |
95
+ |---|---|
96
+ | "I established this pattern earlier in the session, so it is a project convention." | One occurrence in one session is an anecdote. Write it only if you saw it hold more than once, or the user stated it as a rule. Everything else is noise that a future session will obey as if it were law. |
97
+ | "`--auto` was passed, so I can skip reading the current files." | `--auto` removes the approval step in Step 5, not Steps 2-3. Skipping the read is how the same bullet lands three times and the file stops being read by anyone. |
98
+ | "This entry is genuinely useful, so the project CLAUDE.md is the safe place for it." | A personal preference written into the project file is committed and imposed on every contributor. Classify against the Step 3 table first: global preferences go to `~/.claude/CLAUDE.md`, project-specific personal notes to the per-project user file. |
99
+ | "The file is already at the 100-line cap, so one more line is harmless." | The cap is a limit, not a starting point. Going over means condensing or removing something outdated — and the removal has to be shown and explained, never done quietly. |
100
+ | "The new entry contradicts an existing one, so the newer one obviously wins." | Maybe the old entry is still right and what you observed was a one-off. Surface the contradiction in the proposal and let the user decide which survives. |
101
+
102
+ ## Verification
103
+
104
+ Before reporting, all of these must hold:
105
+
106
+ - Every target file was re-read after editing, not assumed from the diff.
107
+ - No bullet you added duplicates or contradicts an existing line, in that file or in a sibling CLAUDE.md.
108
+ - Each edited file is still under 100 lines, uses `##` section headers, and has no YAML frontmatter.
109
+ - Every insight landed in the file the Step 3 table names for its type — no project file carrying a personal preference.
110
+ - Unless `--auto` was passed, the user saw the proposed diff and approved it before any write.
111
+ - The report names each file changed, each entry added, and each entry removed with the reason it was removed.
@@ -1,8 +1,10 @@
1
1
  ---
2
2
  name: hookify
3
- description: "Use when adding automated hook behavior to Claude Code or Cursor from a natural language description."
3
+ description: "Use when adding automated hook behavior to Claude Code or Cursor from a natural language description. NOT for: recording a convention or command as prose an agent reads (use claude-md-management)."
4
4
  triggers:
5
- - "/hookify"
5
+ - "hookify"
6
+ - "hook guidance"
7
+ - "safe hooks"
6
8
  - "Create hook"
7
9
  - "Add hook"
8
10
  - "Run lint after edit"
@@ -10,7 +12,7 @@ triggers:
10
12
  metadata:
11
13
  author: "MrCipherSmith"
12
14
  version: "1.0.0"
13
- category: "configuration"
15
+ category: "platform"
14
16
  compatible_harnesses: "cursor,codex,zed,opencode,claude"
15
17
  license: "MIT"
16
18
  ---
@@ -88,7 +90,7 @@ After confirmation, merge into settings.
88
90
 
89
91
  - **Auto-lint**: PostToolUse(Edit) → `eslint --fix $FILE`
90
92
  - **Auto-format**: PostToolUse(Write) → `prettier --write $FILE`
91
- - **Type-check gate**: PreToolUse(Bash:git commit) → `npx tsc --noEmit`
93
+ - **Type-check gate**: PreToolUse(Bash:git commit) → `keryx health run --changed --source typescript` (or the project's own configured type-check command when keryx health is not configured — never a hardcoded `npx tsc`)
92
94
  - **Notify on done**: Stop → notification command
93
95
 
94
96
  ## Rules
@@ -98,3 +100,26 @@ After confirmation, merge into settings.
98
100
  - Keep timeouts reasonable (10-60s)
99
101
  - Warn if hook could slow down every tool call
100
102
  - Test commands before adding as hooks
103
+
104
+ ## Red Flags
105
+
106
+ Stop and re-read this skill if you are thinking:
107
+
108
+ | Rationalization | Rebuttal |
109
+ |---|---|
110
+ | "The JSON is valid, so the hook works." | Valid JSON says nothing about whether the binary is on PATH, the matcher spells the tool name the way the harness emits it, or the command exits non-zero on a clean run. Step 4 exists because a hook that fails silently is worse than no hook: it runs on every tool call and reports nothing. |
111
+ | "The user described what they want clearly, so I can skip the preview." | The preview is where a matcher mistake is caught — "after every edit" meaning `Edit` but not `Write`, or a `PreToolUse` hook that will block the tool instead of warning. Show the resolved event, matcher, command and timeout, and apply only after confirmation. |
112
+ | "There is already a hook on this event, so I'll replace it." | Overwriting is the one thing this skill forbids. Merge into the existing array, or ask which should win. A removed hook does not announce itself — the user finds out when the check it enforced stops running. |
113
+ | "It's only a lint run, so the timeout does not matter." | A `PostToolUse(Edit)` hook runs on every single edit. A 5-minute lint on a large repo turns every edit into a stall, and the user will disable hooks entirely rather than debug it. Keep it in the 10-60s band and say so when the command is likely to be slow. |
114
+ | "The command works in my shell, so it works as a hook." | Hooks run without the interactive shell's profile, aliases or cwd assumptions. Use an absolute or project-relative invocation, and test it the way the hook will run it. |
115
+
116
+ ## Verification
117
+
118
+ Before reporting, all of these must hold:
119
+
120
+ - The command was run standalone (when safe to do so) and its exit code observed — not assumed.
121
+ - The event name and matcher were checked against the Hook Event Reference table, and the matcher matches the tool the user actually meant.
122
+ - Existing hooks on that event were read and preserved; the written config contains them plus the new one.
123
+ - The timeout is set explicitly and is within the 10-60s band, or the report explains why it is not.
124
+ - The user saw the preview block (event, matcher, command, timeout) and confirmed before the settings file was written.
125
+ - The report names the settings file that changed and the exact hook entry added; for `--remove`, it names the entry deleted.
@@ -0,0 +1,226 @@
1
+ ---
2
+ name: api-truth
3
+ model_tier: deep
4
+ description: |
5
+ Use when code is about to call a dependency nobody has read today — a client
6
+ method, an option object, a config key, a CLI flag — and the only thing
7
+ vouching for the signature is somebody's recollection of it. Recollection has
8
+ a cutoff date; the version resolved in this project does not. Settles what
9
+ "checked" means: the version actually installed here rather than the newest
10
+ one, the artefacts that carry it in rank order, and which side wins when the
11
+ published documentation and the installed build disagree. Every call that went
12
+ out unchecked is MARKED as unchecked, so a later reader can tell a verified
13
+ signature from a remembered one.
14
+ NOT for: moving a project onto newer releases of the packages it already has,
15
+ and NOT for picking which library or architectural pattern to adopt before
16
+ anything is installed.
17
+ triggers:
18
+ - "check this against the installed version"
19
+ - "is that still the API"
20
+ - "did you make that signature up"
21
+ - "which version do we actually have"
22
+ - "look up the real API"
23
+ metadata:
24
+ author: "MrCipherSmith"
25
+ version: "1.0.0"
26
+ category: "quality"
27
+ compatible_harnesses: "cursor,codex,zed,opencode,claude"
28
+ license: "MIT"
29
+ ---
30
+
31
+ # API Truth
32
+
33
+ A remembered API call is a claim about a version. The claim is usually right,
34
+ which is the problem: it fails quietly, in the small fraction of cases where the
35
+ library moved, and it fails in the worst possible way — the code compiles, the
36
+ option object accepts the unknown key and ignores it, and nothing surfaces until
37
+ production or never.
38
+
39
+ Model weights have a cutoff date. A dependency does not. The gap between them
40
+ grows every day the project is alive, and no signal inside the editor announces
41
+ it.
42
+
43
+ This skill is not "look things up". Looking things up on every call is a rule
44
+ agents follow twice and abandon. It is four decisions: **when** the check is
45
+ worth its cost, **which version** counts as the truth, **what** counts as a
46
+ source, and **how** the unchecked calls are marked so somebody downstream can
47
+ see them.
48
+
49
+ ---
50
+
51
+ ## 1. The version is the one installed here, not the latest
52
+
53
+ "I checked the docs" means nothing until it names a version. The default failure
54
+ is checking the current documentation of a library this project pinned eighteen
55
+ months ago — same defect as recollection, with a citation attached.
56
+
57
+ Three different numbers exist, and only one of them runs:
58
+
59
+ | Number | Where | What it is |
60
+ |---|---|---|
61
+ | The range | `package.json` / `pyproject.toml` / `go.mod` | What the project will *accept*. Not a version. |
62
+ | The resolved version | `bun.lock`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `poetry.lock`, `Cargo.lock`, `go.sum` | What a fresh install produces. |
63
+ | The installed version | `node_modules/<pkg>/package.json` → `"version"`; `pip show <pkg>`; `cargo tree -p <pkg>` | What is on disk and executing **now**. |
64
+
65
+ Read the third. When the third and the second disagree, the tree is stale and
66
+ that is itself worth reporting — a call verified against a stale tree is
67
+ verified against nothing anyone else has.
68
+
69
+ For a transitive dependency, the version your direct dependency pulls is often
70
+ not the version at the top level. Resolve the one on the actual path.
71
+
72
+ ## 2. When the check is worth paying for
73
+
74
+ A skill that says *always verify everything* is ignored by the third task. The
75
+ cost is real, so spend it where the failure is silent.
76
+
77
+ **Check before writing the call when any of these hold:**
78
+
79
+ - The symbol is not visible in types you can see — an untyped package, a config
80
+ object typed `Record<string, unknown>`, a CLI flag, an HTTP endpoint, a
81
+ template convention. Nothing will catch you.
82
+ - The option is a **key in a bag**. Unknown keys in option objects, YAML, and
83
+ env-var maps are ignored in silence; a typo and a removed option are
84
+ indistinguishable from working code.
85
+ - The call has an effect you cannot see locally — a write, a payment, an auth
86
+ decision, a migration, a cache invalidation, a webhook.
87
+ - You know a major version boundary sits between your recollection and the
88
+ installed number, or you cannot say which side of one you are on.
89
+ - Defaults matter to the behaviour you promised. Defaults change in *minor*
90
+ releases more often than signatures do, and no compiler mentions it.
91
+
92
+ **Do not pay for it when:**
93
+
94
+ - The call is typed and the type-checker runs on it. A strict `tsc --noEmit`
95
+ against the package's own shipped `.d.ts` **is** a check against the installed
96
+ version, performed by a machine, for free — that is §3's rank 1 already done.
97
+ - A test you watched fail and then pass exercises this exact call path.
98
+ - You read this same symbol, at this same version, earlier in this session.
99
+ Record it once; do not re-fetch per call site.
100
+ - It is the language or runtime standard library at a version the toolchain
101
+ already pins.
102
+
103
+ Everything outside both lists is a judgement call, and the tiebreaker is: how
104
+ long would this defect stay invisible? Loud and immediate — write it and let the
105
+ failure teach you. Silent — check first.
106
+
107
+ ## 3. What counts as a source, in rank order
108
+
109
+ 1. **The installed artefact itself** — the `.d.ts` beside the package, the
110
+ `node_modules` source, `inspect.signature`, the binary's `--help`. It cannot
111
+ be at the wrong version, because it *is* the version. Highest rank, and
112
+ usually the fastest to reach.
113
+ 2. **The package's own documentation, pinned to the installed version** — the
114
+ docs for the exact version installed, reached by whichever of these the
115
+ environment actually has. None of them ships with this skill or is installed
116
+ for you; check what is there before you reach for one:
117
+
118
+ - A versioned docs URL, or the repository at the tag matching that version.
119
+ - A docs-retrieval tool, where one is configured — a `ctx7`-style MCP server,
120
+ or `npx ctx7@latest library "Library Name" "<the actual question>"` then
121
+ `npx ctx7@latest docs /org/project/<installed-version> "<the question>"` if
122
+ that CLI is reachable. Official spelling ("Next.js", not "nextjs"), the real
123
+ question rather than one word, three commands of budget, no credentials.
124
+ - With neither, the docs shipped *inside* the installed artefact — its README,
125
+ its `docs/`, the binary's long help — pinned by construction. If that is
126
+ empty too, rank 2 is unavailable here: say so and rely on rank 1.
127
+ 3. **The package's own documentation, unpinned** — acceptable only after you
128
+ state the gap between it and the installed version, and treat everything it
129
+ says as provisional across that gap.
130
+ 4. **The changelog or migration guide**, for the narrow question of *what
131
+ changed between two versions you have named*. Not for what the API is now.
132
+ 5. **A blog post, a forum answer, another project's code, and your own
133
+ recollection** — all the same rank, which is *hypothesis*. They are worth
134
+ something: they tell you what to go and look at in ranks 1–3. They are worth
135
+ nothing as evidence, and a citation of one is not a check.
136
+
137
+ ## 4. When the documentation and the installed build disagree
138
+
139
+ This is common, and it is the point where a careless agent picks the wrong side.
140
+
141
+ **The installed artefact wins.** Documentation describes a version, usually the
142
+ newest; `node_modules` is what executes. If the docs show an option the types do
143
+ not have, the option does not exist here.
144
+
145
+ The disagreement is not noise to route around — it is a finding, and it has to
146
+ be named before you carry on:
147
+
148
+ - Say which version the docs were at and which is installed. Nine times out of
149
+ ten the gap explains the disagreement, and now the next person does not
150
+ re-derive it.
151
+ - Same version, still disagreeing? Then the docs are wrong, or you are reading a
152
+ different export path, or a patch/override is rewriting the package. Check the
153
+ path before concluding the docs are wrong.
154
+ - Never split the difference by writing the documented call and adding a
155
+ fallback for the installed one. Two paths, one of which has never run, is a
156
+ larger defect than the one you were avoiding.
157
+ - If the behaviour you need exists only in the documented version, that is an
158
+ upgrade decision and it belongs to whoever owns the dependency — say so, and
159
+ do not smuggle the bump in beside the feature.
160
+
161
+ ## 5. Marking what was not verified
162
+
163
+ This is the part that survives into review, and the part agents skip.
164
+
165
+ A checked call and a remembered call look identical in a diff. Unless the
166
+ difference is written down, the reviewer inherits a file where every line
167
+ carries the same implied confidence, and the one guess is camouflaged by forty
168
+ facts around it.
169
+
170
+ At the call site, on anything that went out unchecked:
171
+
172
+ ```
173
+ // unverified: <symbol> against <pkg>@<version> — from recollection,
174
+ // settle with: <the command or file that would settle it>
175
+ ```
176
+
177
+ In the report or PR body, a short section that lists them: the symbol, the
178
+ package and version, why the check was skipped (§2), and the one observation
179
+ that would close it. An empty list is a fine result and should be stated as
180
+ empty rather than omitted.
181
+
182
+ And the converse, which is the cheaper half: when you *did* check, say against
183
+ what. "Verified against `@aws-sdk/client-s3@3.620.0` types" is a sentence a
184
+ reviewer can re-run. "I checked the docs" is not.
185
+
186
+ Never mark a call verified on the strength of rank 5.
187
+
188
+ ## Red Flags
189
+
190
+ | Rationalization | Why it is wrong |
191
+ |---|---|
192
+ | "It compiled, so the API is right." | Compilation proves the shape the *types* declare, and the silent failures live where types do not reach: unknown keys in an option bag, a string enum the library parses at runtime, a config file, a CLI flag. Those compile perfectly and do nothing. |
193
+ | "I read the library's documentation, so this is checked." | Not until the version is named. The docs site serves the newest release; this project resolves whatever the lockfile says. An unversioned citation is a remembered call with a footnote — the same defect, harder to spot. |
194
+ | "`package.json` says `^4.2.0`, so we are on 4.x." | That is the range the project accepts, not the build that is running. Read `node_modules/<pkg>/package.json`, and when it disagrees with the lockfile, say so — the tree is stale and nobody else's is like it. |
195
+ | "The docs show this option but the types do not, so the types are out of date." | Backwards nearly every time. The types ship inside the installed package; the docs describe some version, usually a newer one. The artefact on disk is what executes — name the gap instead of overriding it. |
196
+ | "I will write the documented call and add a fallback for the old signature." | You have shipped two branches and exercised one. The dead branch is never run, never tested and wrong in a way nobody discovers, and you took on that debt to avoid reading one file. |
197
+ | "This is a well-known library, I have used it a hundred times." | Familiarity is the exposure, not the protection. The APIs recalled most confidently are the ones learned longest ago, so recollection is most stale exactly where it feels safest, and confident wrong calls skip their own review. |
198
+ | "A blog post shows this exact pattern working." | It worked, at some version, on some day, for somebody whose lockfile you cannot see. That makes it a lead worth thirty seconds against the installed types — it does not make it evidence, and citing it does not turn a guess into a check. |
199
+ | "Checking every call would take all day, so I checked none." | The list is not every call. It is the ones whose failure is silent — option bags, untyped surfaces, effects you cannot observe locally, changed defaults. Typed calls under a type-check are already verified; that is most of them. |
200
+ | "I was not sure about two of these, but the rest are solid." | Then the two are invisible, because a diff shows no difference between them and the forty around them. Mark them at the call site with what would settle them, or the reviewer's only options are re-check everything or trust everything. |
201
+
202
+ ## Verification
203
+
204
+ Do not report the work as done until all of these hold:
205
+
206
+ - Every dependency call this change introduced is either verified against a
207
+ named source at a named version, or carries an `unverified:` marker at the
208
+ call site.
209
+ - Each version named is the one installed on disk — read from the package's own
210
+ installed metadata, not from a manifest range — and any disagreement with the
211
+ lockfile is reported.
212
+ - Every check cites its rank (§3): which artefact or versioned document, not
213
+ "the docs". No call is reported as verified on rank 5 alone.
214
+ - Where documentation and the installed build disagreed, the report says which
215
+ versions were compared, which side was followed, and why — and no call site
216
+ branches across both.
217
+ - The report carries the unverified list — symbol, package, version, reason the
218
+ check was skipped, and the observation that would close it — stated as empty
219
+ when it is empty.
220
+ - Any needed behaviour that exists only in a newer release is written up as an
221
+ upgrade decision for the dependency's owner, and no version was bumped inside
222
+ this change to obtain it.
223
+
224
+ Credit: [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
225
+ (MIT) is where the pairing comes from — check the dependency before calling it,
226
+ and mark what went out unchecked. The ranks and the version rule are ours.
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: changelog
3
- description: "Use when generating a changelog, release notes, or summarizing what changed between tags, versions, or date ranges."
3
+ description: "Use when generating a changelog, release notes, or summarizing what changed between tags, versions, or date ranges. NOT for describing a single pull request or its linked issue (use `pr-issue-documenter`)."
4
4
  triggers:
5
- - "/changelog"
6
- - "Generate changelog"
5
+ - "generate changelog"
6
+ - "release notes"
7
+ - "what changed"
7
8
  - "What changed since"
8
- - "Release notes"
9
9
  - "What's new"
10
10
  metadata:
11
11
  author: "MrCipherSmith"
12
12
  version: "1.0.0"
13
- category: "workflow"
13
+ category: "quality"
14
14
  compatible_harnesses: "cursor,codex,zed,opencode,claude"
15
15
  license: "MIT"
16
16
  ---
@@ -82,3 +82,23 @@ If `gh` CLI available: fetch PR titles for merge commits, get authors and labels
82
82
  - If no conventional commits found, fall back to plain list by date
83
83
  - Breaking changes always go first
84
84
  - One line per change
85
+
86
+ ## Red Flags
87
+
88
+ | Rationalization | Why it is wrong |
89
+ |---|---|
90
+ | "This commit has no `feat:`/`fix:` prefix, but it reads like a feature — I'll file it under Features" | Classification comes from the commit's own prefix. Guessing a section invents a release note nobody wrote. Unprefixed commits go to the plain dated fallback list |
91
+ | "The subject is terse, so I'll describe what the change probably did" | You read the log, not the diff. A changelog entry that states an effect the commit never claimed is a false release note that ships to users |
92
+ | "No tag matches the range, so I'll start from the first commit" | That silently turns "since last release" into the project's whole history. State the range you could not resolve and ask, rather than emitting a thousand-line changelog |
93
+ | "The merge commit summarizes the branch nicely, keep it alongside the branch's commits" | It double-counts: the merge subject and the commits underneath describe the same work. Use the PR title, drop the merge |
94
+ | "The type is `fix:` so it belongs in Bug Fixes, even though the body says BREAKING CHANGE" | `BREAKING CHANGE` outranks the type prefix. A breaking change filed under Bug Fixes is the entry a reader upgrades past without noticing |
95
+
96
+ ## Verification
97
+
98
+ Do not report the changelog as done until all of the following hold:
99
+
100
+ - The range actually used (tag-to-tag, tag-to-HEAD, or `--since` date) is stated in the output, including when it was a fallback
101
+ - Every commit in `git log <range> --oneline` is either an entry or a deliberate skip (merge commit, exact duplicate) — none dropped silently
102
+ - No section header is emitted with zero entries under it
103
+ - Breaking Changes, when present, is the first section
104
+ - With `--output` / `--prepend`: the target file exists, the pre-existing content is still intact, and the new block sits at the top rather than replacing it
@@ -1,15 +1,16 @@
1
1
  ---
2
2
  name: commit
3
- description: "Use when committing code changes and a well-structured conventional commit message is needed, with optional amend or selective staging."
3
+ description: "Use when committing code changes and a well-structured conventional commit message is needed, with optional amend or selective staging. NOT for publishing the branch to the remote (use `push`) or opening a pull request (use `pr`)."
4
4
  triggers:
5
- - "/commit"
6
- - "Commit changes"
5
+ - "commit changes"
6
+ - "git commit"
7
+ - "conventional commit"
7
8
  - "Commit this"
8
9
  - "Save changes"
9
10
  metadata:
10
11
  author: "MrCipherSmith"
11
12
  version: "1.0.0"
12
- category: "workflow"
13
+ category: "quality"
13
14
  compatible_harnesses: "cursor,codex,zed,opencode,claude"
14
15
  license: "MIT"
15
16
  ---
@@ -29,7 +30,7 @@ Create well-structured git commits from current changes.
29
30
  If nothing is staged, intelligently stage relevant files:
30
31
  - Stage modified and new files that are part of the logical change
31
32
  - **NEVER** stage `.env`, credentials, secrets, or large binary files
32
- - Prefer `git add <specific files>` over `git add -A`
33
+ - Stage explicit pathspecs (`git add <specific files>`); **NEVER** `git add -A`, `--all`, or `.`
33
34
  - Ask the user before staging untracked files that look unrelated to recent work
34
35
 
35
36
  ### Phase 3: Generate Commit Message
@@ -64,3 +65,23 @@ Show the result: `git log --oneline -1` and `git status`
64
65
  - NEVER add Co-Authored-By lines
65
66
  - If pre-commit hook fails: fix the issue, re-stage, create a NEW commit (don't amend)
66
67
  - Follow existing commit message conventions in the repository
68
+
69
+ ## Red Flags
70
+
71
+ | Rationalization | Why it is wrong |
72
+ |---|---|
73
+ | "Everything in the tree is my work, so staging it all is faster" | It is not all your work. A parallel agent, a running lane, or a half-finished edit of the user's rides along invisibly. Never stage by wildcard — list explicit pathspecs |
74
+ | "The pre-commit hook failed on a file I didn't touch, `--no-verify` gets me past it" | The hook is the repository's gate, not an obstacle to route around. Fix the issue, re-stage, commit again |
75
+ | "The last commit is mine and close enough — I'll amend it" | Amend only when the user explicitly asked. Amending a commit that is already pushed rewrites history someone else has fetched |
76
+ | "The diff shows what happened, so `chore: updates` is enough" | The subject line is all a `git log` reader gets. Name the change and its scope in under 72 chars |
77
+ | "The user is out of the loop on this untracked file, but it looks like mine" | Untracked files that look unrelated to recent work get a question, not a guess — that is how an `.env` or a scratch dump gets committed |
78
+
79
+ ## Verification
80
+
81
+ Do not report the commit as done until all of the following hold:
82
+
83
+ - `git log --oneline -1` shows the new commit, subject in `<type>(<scope>): <description>` form and under 72 chars
84
+ - `git show --stat HEAD` lists exactly the intended files — no `.env`, credential, key, or large binary file
85
+ - `git status` shows nothing else newly staged that you did not mean to include
86
+ - `git show HEAD` carries no `Co-Authored-By` or generated-by trailer
87
+ - Hooks ran — no `--no-verify` was passed; if a hook failed, a NEW commit exists rather than an amend
@@ -1,16 +1,17 @@
1
1
  ---
2
2
  name: db-migrate
3
- description: "Use when creating, applying, rolling back, or checking the status of database migrations."
3
+ description: "Use when creating, applying, rolling back, or checking the status of database migrations. NOT for shipping the application release that carries the migration (use `deploy`)."
4
4
  triggers:
5
- - "/db-migrate"
5
+ - "database migration"
6
+ - "db migrate"
7
+ - "migration status"
6
8
  - "Create migration"
7
9
  - "Run migrations"
8
- - "Migration status"
9
10
  - "Rollback migration"
10
11
  metadata:
11
12
  author: "MrCipherSmith"
12
13
  version: "1.0.0"
13
- category: "database"
14
+ category: "quality"
14
15
  compatible_harnesses: "cursor,codex,zed,opencode,claude"
15
16
  license: "MIT"
16
17
  ---
@@ -64,3 +65,23 @@ Search for: `prisma/schema.prisma`, `ormconfig.*`, `data-source.ts`, `knexfile.*
64
65
  - NEVER apply to production without explicit confirmation
65
66
  - For destructive operations (drop table, remove column), double-warn
66
67
  - If ORM can't be detected, ask the user
68
+
69
+ ## Red Flags
70
+
71
+ | Rationalization | Why it is wrong |
72
+ |---|---|
73
+ | "The ORM autogenerated it, so the SQL must be correct" | Autogenerate routinely emits drop-and-recreate for a change that could have been an in-place alter. The generated file is a draft to read, not an answer to trust |
74
+ | "It's only the dev database, no need to show the SQL first" | The same file is what runs against production later. The preview is the one moment the destructive statement can still be caught, and skipping it in dev means nobody ever read it |
75
+ | "A rollback is unlikely, so an empty `down` is fine" | An empty `down` is worse than a missing one: the rollback reports success while changing nothing, and the schema silently stays ahead of the code |
76
+ | "Two migration tools are configured; I'll use the one I know" | Each tool keeps its own history table. Picking the wrong one writes a migration the project's real tool will never see and cannot roll back. Ask which is authoritative |
77
+ | "`prisma migrate dev` is the standard create command, just run it" | On a database with any drift it offers to reset — i.e. drop the data. Know what the create command does to an existing database before pointing it at one |
78
+
79
+ ## Verification
80
+
81
+ Do not report the migration as done until all of the following hold:
82
+
83
+ - The status command shows the intended migration in the intended state (applied, or pending for `create`), and no other migration changed state
84
+ - The migration file carries both directions (up and down, or the ORM's equivalent) and the down path was read, not assumed
85
+ - Any destructive statement (`DROP`, `ALTER … DROP`, `TRUNCATE`, a column removal) was shown to the user and confirmed in this conversation before it ran
86
+ - The report names the detected tool, the migration name/id, and the environment the command ran against
87
+ - For a production target: an explicit confirmation exists in this conversation, and the SQL preview preceded it
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: dependency-update
3
- description: "Use when checking for outdated packages or upgrading dependencies with compatibility verification."
3
+ description: "Use when checking for outdated packages or upgrading dependencies with compatibility verification. NOT for finding which packages are vulnerable in the first place (use `security-audit`)."
4
4
  triggers:
5
- - "/dependency-update"
6
- - "Update dependencies"
7
- - "Upgrade packages"
5
+ - "update dependencies"
6
+ - "upgrade packages"
7
+ - "bump deps"
8
8
  - "Check outdated"
9
9
  - "Update npm packages"
10
10
  metadata:
11
11
  author: "MrCipherSmith"
12
12
  version: "1.0.0"
13
- category: "maintenance"
13
+ category: "quality"
14
14
  compatible_harnesses: "cursor,codex,zed,opencode,claude"
15
15
  license: "MIT"
16
16
  ---
@@ -79,3 +79,24 @@ npm run lint && npx tsc --noEmit && npm test && npm run build
79
79
  - Commit each group separately
80
80
  - Respect pinned versions
81
81
  - Check peer dependency warnings
82
+
83
+ ## Red Flags
84
+
85
+ | Rationalization | Why it is wrong |
86
+ |---|---|
87
+ | "The suite passes with all of them installed, so batching the majors saved five rounds" | When it breaks you cannot tell which major did it, and bisecting a batch costs more than the rounds you saved. Majors go one at a time, tests after each (Step 4) |
88
+ | "Tests broke after the major bump — I'll migrate the call sites while I'm here" | Two fix attempts, then rollback. An open-ended API migration is a separate task with its own review; smuggling it into a dependency bump hides it from everyone |
89
+ | "This version is pinned, but the pin looks stale" | A pin is a decision someone made, usually about a break you cannot see from `npm outdated`. Report it as pinned and let the user unpin it |
90
+ | "`npm outdated` printed nothing, so the project is up to date" | It prints nothing when the lockfile belongs to a different package manager. Detect from the lockfile (`bun.lock`, `pnpm-lock.yaml`, `yarn.lock`) before concluding "current" |
91
+ | "Peer dependency warnings are warnings, not errors" | They are the standard cause of the runtime failure that shows up two commits later, in something that was never touched. Carry them into the report |
92
+ | "One commit for the whole update is tidier than three" | It makes the one bad package unrevertable without dropping the good ones. Commit per risk group, as Step 4 specifies |
93
+
94
+ ## Exit Criteria
95
+
96
+ Do not report the update as done until all of the following hold:
97
+
98
+ - `npm run lint && npx tsc --noEmit && npm test && npm run build` — or the project's own equivalents — all pass on the final tree
99
+ - Every major was applied and tested on its own, with its own commit; no major shares a commit with another
100
+ - Every package the plan proposed is accounted for in the report as updated, skipped (with the reason), or rolled back
101
+ - `git status` is clean and the lockfile is committed alongside the manifest it belongs to
102
+ - Pinned versions are unchanged, and peer dependency warnings that appeared are listed in the report