claude-code-kit 0.22.0__tar.gz → 0.23.0__tar.gz

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 (521) hide show
  1. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/.claude-plugin/marketplace.json +1 -1
  2. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/.claude-plugin/plugin.json +1 -1
  3. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/CHANGELOG.md +32 -0
  4. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/CONTRIBUTING.md +9 -5
  5. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/PKG-INFO +7 -1
  6. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/README.md +6 -0
  7. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/commands/init.md +21 -7
  8. claude_code_kit-0.23.0/hooks/hooks.json +106 -0
  9. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/pyproject.toml +1 -1
  10. claude_code_kit-0.23.0/scripts/gen_hooks.py +69 -0
  11. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/scripts/init.sh +10 -0
  12. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/__init__.py +1 -1
  13. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/hooks.py +157 -26
  14. claude_code_kit-0.23.0/templates/settings.json +74 -0
  15. claude_code_kit-0.22.0/hooks/hooks.json +0 -58
  16. claude_code_kit-0.22.0/templates/settings.json +0 -47
  17. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/.gitignore +0 -0
  18. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/CLAUDE.md +0 -0
  19. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/LICENSE +0 -0
  20. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/acceptance-reviewer.md +0 -0
  21. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/auditor.md +0 -0
  22. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/dependency-scanner.md +0 -0
  23. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/developer.md +0 -0
  24. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/devils-advocate.md +0 -0
  25. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/devops-engineer.md +0 -0
  26. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/e2e-tester.md +0 -0
  27. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/em-reviewer.md +0 -0
  28. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/incident-responder.md +0 -0
  29. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/merge-reviewer.md +0 -0
  30. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/observability-engineer.md +0 -0
  31. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/orchestrator.md +0 -0
  32. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/owasp-reviewer.md +0 -0
  33. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/policy-validator.md +0 -0
  34. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/pr-raiser.md +0 -0
  35. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/risk-classifier.md +0 -0
  36. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/sdlc-code-reviewer.md +0 -0
  37. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/secret-scanner.md +0 -0
  38. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/security-reviewer.md +0 -0
  39. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/senior-backend-dev.md +0 -0
  40. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/senior-frontend-dev.md +0 -0
  41. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/senior-tester.md +0 -0
  42. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/spec-doc-writer.md +0 -0
  43. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/story-planner.md +0 -0
  44. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/technical-architect.md +0 -0
  45. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/tester.md +0 -0
  46. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/ui-designer.md +0 -0
  47. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/agents/unit-tester.md +0 -0
  48. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/catalog/capture.yaml +0 -0
  49. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/catalog/mcp.yaml +0 -0
  50. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/catalog/org.yaml +0 -0
  51. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/catalog/profiles.yaml +0 -0
  52. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/catalog/stacks.yaml +0 -0
  53. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/commands/abort.md +0 -0
  54. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/commands/sdlc.md +0 -0
  55. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/commands/status.md +0 -0
  56. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/agentic-patterns.md +0 -0
  57. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/agents.md +0 -0
  58. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/architecture.md +0 -0
  59. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/coverage-audit.md +0 -0
  60. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/eval-harness.md +0 -0
  61. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/org-capabilities.md +0 -0
  62. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/stack-skills/GAP-ANALYSIS.md +0 -0
  63. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/stack-skills/README.md +0 -0
  64. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/docs/stack-skills/REPO-INVENTORY.md +0 -0
  65. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/audit-log.sh +0 -0
  66. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/capture-learnings.sh +0 -0
  67. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/guard-destructive-git.sh +0 -0
  68. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/guard-kubectl-delete.sh +0 -0
  69. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/guard-secrets.sh +0 -0
  70. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/lint-fix.sh +0 -0
  71. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/load-autonomy.sh +0 -0
  72. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/load-continuity.sh +0 -0
  73. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/load-learnings.sh +0 -0
  74. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/type-check.sh +0 -0
  75. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/validate-frontmatter.sh +0 -0
  76. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/validate-settings.sh +0 -0
  77. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/warn-large-edits.sh +0 -0
  78. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/warn-llm-io.sh +0 -0
  79. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/warn-missing-tests.sh +0 -0
  80. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/warn-sensitive-files.sh +0 -0
  81. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/hooks/scripts/warn-shared-modules.sh +0 -0
  82. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/agent-guardrails.md +0 -0
  83. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/agent-memory.md +0 -0
  84. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/agent-resilience.md +0 -0
  85. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/autonomy-levels.md +0 -0
  86. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/code-organization.md +0 -0
  87. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/continuity.md +0 -0
  88. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/design-patterns.md +0 -0
  89. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/devops-observability.md +0 -0
  90. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/documentation.md +0 -0
  91. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/evals.md +0 -0
  92. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/frontend-best-practices.md +0 -0
  93. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/goal-setting-and-monitoring.md +0 -0
  94. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/human-in-the-loop.md +0 -0
  95. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/linting-and-formatting.md +0 -0
  96. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/mandatory-workflow.md +0 -0
  97. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/model-tiers.md +0 -0
  98. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/quality-gates.md +0 -0
  99. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/rarv-cycle.md +0 -0
  100. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/reasoning-techniques.md +0 -0
  101. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/responsive-and-accessibility.md +0 -0
  102. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/risk-classification.md +0 -0
  103. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/testing.md +0 -0
  104. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/rules/tool-design.md +0 -0
  105. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/scripts/check_docs_consistency.py +0 -0
  106. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/_references/accessibility-checklist.md +0 -0
  107. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/_references/orchestration-patterns.md +0 -0
  108. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/_references/performance-checklist.md +0 -0
  109. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/_references/security-checklist.md +0 -0
  110. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/_references/testing-patterns.md +0 -0
  111. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/accessibility-review/SKILL.md +0 -0
  112. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/alembic-migrations/README.md +0 -0
  113. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/alembic-migrations/SKILL.md +0 -0
  114. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/alembic-migrations/references/alembic-setup-and-env.md +0 -0
  115. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/alembic-migrations/references/async-and-multitenant-migrations.md +0 -0
  116. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/alembic-migrations/references/repo-evidence.md +0 -0
  117. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/alembic-migrations/references/troubleshooting-and-debugging.md +0 -0
  118. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/alembic-migrations/references/writing-migrations.md +0 -0
  119. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/anthropic-vertex-integration/README.md +0 -0
  120. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/anthropic-vertex-integration/SKILL.md +0 -0
  121. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/anthropic-vertex-integration/references/generate-helpers-and-retry.md +0 -0
  122. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/anthropic-vertex-integration/references/repo-evidence.md +0 -0
  123. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/anthropic-vertex-integration/references/vertex-client-and-auth.md +0 -0
  124. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/api-and-interface-design/SKILL.md +0 -0
  125. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/api-integration/SKILL.md +0 -0
  126. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/api-pagination-filtering-sorting/README.md +0 -0
  127. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/api-pagination-filtering-sorting/SKILL.md +0 -0
  128. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/api-pagination-filtering-sorting/references/query-params-conventions.md +0 -0
  129. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/api-pagination-filtering-sorting/references/repo-evidence.md +0 -0
  130. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/api-pagination-filtering-sorting/references/response-metadata.md +0 -0
  131. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/archive-sprint/SKILL.md +0 -0
  132. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/async-python-patterns/README.md +0 -0
  133. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/async-python-patterns/SKILL.md +0 -0
  134. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/async-python-patterns/references/async-boundaries.md +0 -0
  135. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/async-python-patterns/references/lifecycle-and-gather.md +0 -0
  136. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/async-python-patterns/references/repo-evidence.md +0 -0
  137. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/auth-and-rbac/README.md +0 -0
  138. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/auth-and-rbac/SKILL.md +0 -0
  139. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/auth-and-rbac/references/auth-dependencies.md +0 -0
  140. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/auth-and-rbac/references/rbac-and-permissions.md +0 -0
  141. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/auth-and-rbac/references/repo-evidence.md +0 -0
  142. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/auth-and-rbac/references/security-hardening.md +0 -0
  143. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/auth-and-rbac/references/tokens-and-hashing.md +0 -0
  144. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backend-repo-architecture/README.md +0 -0
  145. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backend-repo-architecture/SKILL.md +0 -0
  146. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backend-repo-architecture/references/deployment-patterns.md +0 -0
  147. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backend-repo-architecture/references/entrypoint-and-config.md +0 -0
  148. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backend-repo-architecture/references/repo-evidence.md +0 -0
  149. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backend-repo-architecture/references/structure-patterns.md +0 -0
  150. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backend-repo-architecture/references/troubleshooting.md +0 -0
  151. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backlog/SKILL.md +0 -0
  152. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/backlog/item-template.md +0 -0
  153. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/browser-testing-with-devtools/SKILL.md +0 -0
  154. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/bug-hunt/SKILL.md +0 -0
  155. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/ci-cd-and-automation/SKILL.md +0 -0
  156. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/code-review-and-quality/SKILL.md +0 -0
  157. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/code-simplification/SKILL.md +0 -0
  158. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/component-design/SKILL.md +0 -0
  159. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/configargparse-yaml-env-layering/README.md +0 -0
  160. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/configargparse-yaml-env-layering/SKILL.md +0 -0
  161. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/configargparse-yaml-env-layering/references/config-layering-anatomy.md +0 -0
  162. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/configargparse-yaml-env-layering/references/mode-dispatch-and-precedence.md +0 -0
  163. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/configargparse-yaml-env-layering/references/repo-evidence.md +0 -0
  164. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/consolidate-learnings/SKILL.md +0 -0
  165. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/containerization-and-deployment/README.md +0 -0
  166. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/containerization-and-deployment/SKILL.md +0 -0
  167. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/containerization-and-deployment/references/deployment-and-secrets.md +0 -0
  168. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/containerization-and-deployment/references/dockerfile-and-compose.md +0 -0
  169. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/containerization-and-deployment/references/entrypoint-and-modes.md +0 -0
  170. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/containerization-and-deployment/references/kerberos-kinit-bootstrap.md +0 -0
  171. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/containerization-and-deployment/references/makefile-dev-workflow.md +0 -0
  172. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/containerization-and-deployment/references/repo-evidence.md +0 -0
  173. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/context-engineering/SKILL.md +0 -0
  174. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/cron-and-scheduled-jobs/README.md +0 -0
  175. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/cron-and-scheduled-jobs/SKILL.md +0 -0
  176. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/cron-and-scheduled-jobs/references/choosing-and-operations.md +0 -0
  177. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/cron-and-scheduled-jobs/references/kubernetes-cronjob.md +0 -0
  178. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/cron-and-scheduled-jobs/references/repo-evidence.md +0 -0
  179. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/cron-and-scheduled-jobs/references/temporal-schedules.md +0 -0
  180. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/data-engineering-bigquery-gcs/README.md +0 -0
  181. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/data-engineering-bigquery-gcs/SKILL.md +0 -0
  182. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/data-engineering-bigquery-gcs/references/bigquery-advanced-patterns.md +0 -0
  183. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/data-engineering-bigquery-gcs/references/bigquery-gcs-io.md +0 -0
  184. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/data-engineering-bigquery-gcs/references/medallion-architecture.md +0 -0
  185. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/data-engineering-bigquery-gcs/references/repo-evidence.md +0 -0
  186. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/data-engineering-bigquery-gcs/references/temp-table-merge-pattern.md +0 -0
  187. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/debugging-and-error-recovery/SKILL.md +0 -0
  188. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/decision/SKILL.md +0 -0
  189. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/decision/adr-template.md +0 -0
  190. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/deprecation-and-migration/SKILL.md +0 -0
  191. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/design-patterns-and-conventions/README.md +0 -0
  192. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/design-patterns-and-conventions/SKILL.md +0 -0
  193. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/design-patterns-and-conventions/references/anti-patterns.md +0 -0
  194. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/design-patterns-and-conventions/references/naming-and-layout.md +0 -0
  195. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/design-patterns-and-conventions/references/patterns-catalog.md +0 -0
  196. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/design-patterns-and-conventions/references/repo-evidence.md +0 -0
  197. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/design-patterns-and-conventions/references/testing-patterns.md +0 -0
  198. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/design-patterns-and-conventions/references/troubleshooting.md +0 -0
  199. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-compose/README.md +0 -0
  200. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-compose/SKILL.md +0 -0
  201. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-compose/references/compose-services-and-healthchecks.md +0 -0
  202. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-compose/references/dev-vs-prod-variants.md +0 -0
  203. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-compose/references/repo-evidence.md +0 -0
  204. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-shared/README.md +0 -0
  205. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-shared/SKILL.md +0 -0
  206. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-shared/references/dockerignore-and-build-secrets.md +0 -0
  207. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-shared/references/repo-evidence.md +0 -0
  208. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-shared/references/shared-base-images.md +0 -0
  209. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/docker-shared/references/shared-compose-fragments.md +0 -0
  210. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-backend/README.md +0 -0
  211. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-backend/SKILL.md +0 -0
  212. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-backend/references/backend-dockerfile-anatomy.md +0 -0
  213. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-backend/references/repo-evidence.md +0 -0
  214. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-backend/references/system-deps-and-caching.md +0 -0
  215. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-frontend/README.md +0 -0
  216. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-frontend/SKILL.md +0 -0
  217. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-frontend/references/build-args-and-nginx.md +0 -0
  218. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-frontend/references/frontend-dockerfile-anatomy.md +0 -0
  219. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/dockerfile-frontend/references/repo-evidence.md +0 -0
  220. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/documentation-and-adrs/SKILL.md +0 -0
  221. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/doubt-driven-development/SKILL.md +0 -0
  222. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/edge-to-service-trust-boundary/README.md +0 -0
  223. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/edge-to-service-trust-boundary/SKILL.md +0 -0
  224. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/edge-to-service-trust-boundary/references/repo-evidence.md +0 -0
  225. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/edge-to-service-trust-boundary/references/trust-contract.md +0 -0
  226. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/execute/SKILL.md +0 -0
  227. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/fastapi-service-patterns/README.md +0 -0
  228. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/fastapi-service-patterns/SKILL.md +0 -0
  229. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/fastapi-service-patterns/references/api-versioning.md +0 -0
  230. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/fastapi-service-patterns/references/app-factory-and-lifespan.md +0 -0
  231. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/fastapi-service-patterns/references/custom-route-and-middleware.md +0 -0
  232. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/fastapi-service-patterns/references/dependency-injection.md +0 -0
  233. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/fastapi-service-patterns/references/model-and-serialization-patterns.md +0 -0
  234. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/fastapi-service-patterns/references/repo-evidence.md +0 -0
  235. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/file-export-and-reporting/README.md +0 -0
  236. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/file-export-and-reporting/SKILL.md +0 -0
  237. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/file-export-and-reporting/references/excel-generation.md +0 -0
  238. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/file-export-and-reporting/references/repo-evidence.md +0 -0
  239. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/file-export-and-reporting/references/streaming-and-downloads.md +0 -0
  240. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/frontend-repo-architecture/README.md +0 -0
  241. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/frontend-repo-architecture/SKILL.md +0 -0
  242. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/frontend-repo-architecture/references/api-layer-and-types.md +0 -0
  243. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/frontend-repo-architecture/references/divergences.md +0 -0
  244. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/frontend-repo-architecture/references/repo-evidence.md +0 -0
  245. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/frontend-repo-architecture/references/structure-and-state.md +0 -0
  246. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/frontend-repo-architecture/references/testing-patterns.md +0 -0
  247. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/frontend-ui-engineering/SKILL.md +0 -0
  248. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcp-cloud-run-github-actions/README.md +0 -0
  249. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcp-cloud-run-github-actions/SKILL.md +0 -0
  250. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcp-cloud-run-github-actions/references/cloud-run-deploy.md +0 -0
  251. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcp-cloud-run-github-actions/references/repo-evidence.md +0 -0
  252. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcp-cloud-run-github-actions/references/workflow-structure.md +0 -0
  253. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcs-file-storage-patterns/README.md +0 -0
  254. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcs-file-storage-patterns/SKILL.md +0 -0
  255. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcs-file-storage-patterns/references/client-and-uploads.md +0 -0
  256. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcs-file-storage-patterns/references/repo-evidence.md +0 -0
  257. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/gcs-file-storage-patterns/references/signed-urls-and-reads.md +0 -0
  258. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/git-workflow-and-versioning/SKILL.md +0 -0
  259. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/grafana-dashboards-and-alerts/README.md +0 -0
  260. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/grafana-dashboards-and-alerts/SKILL.md +0 -0
  261. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/grafana-dashboards-and-alerts/references/dashboard-json-and-templating.md +0 -0
  262. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/grafana-dashboards-and-alerts/references/provisioning-and-organization.md +0 -0
  263. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/grafana-dashboards-and-alerts/references/red-metrics-queries.md +0 -0
  264. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/grafana-dashboards-and-alerts/references/repo-evidence.md +0 -0
  265. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/grafana-dashboards-and-alerts/references/unified-alerting.md +0 -0
  266. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/graphql-patterns/README.md +0 -0
  267. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/graphql-patterns/SKILL.md +0 -0
  268. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/graphql-patterns/references/apollo-client-frontend.md +0 -0
  269. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/graphql-patterns/references/apollo-client-setup.md +0 -0
  270. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/graphql-patterns/references/repo-evidence.md +0 -0
  271. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/graphql-patterns/references/strawberry-backend.md +0 -0
  272. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/graphql-patterns/references/when-to-use-graphql.md +0 -0
  273. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/idea-refine/SKILL.md +0 -0
  274. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/idea-refine/examples.md +0 -0
  275. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/idea-refine/frameworks.md +0 -0
  276. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/idea-refine/refinement-criteria.md +0 -0
  277. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/idea-refine/scripts/idea-refine.sh +0 -0
  278. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/incident-postmortem/SKILL.md +0 -0
  279. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/incremental-implementation/SKILL.md +0 -0
  280. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/interview-me/SKILL.md +0 -0
  281. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kafka-config-driven/README.md +0 -0
  282. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kafka-config-driven/SKILL.md +0 -0
  283. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kafka-config-driven/references/config-and-sasl-kerberos.md +0 -0
  284. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kafka-config-driven/references/consumer-producer-patterns.md +0 -0
  285. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kafka-config-driven/references/repo-evidence.md +0 -0
  286. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kafka-config-driven/references/troubleshooting-and-patterns.md +0 -0
  287. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubectl-operations/README.md +0 -0
  288. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubectl-operations/SKILL.md +0 -0
  289. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubectl-operations/references/command-reference.md +0 -0
  290. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubectl-operations/references/context-namespace-rbac.md +0 -0
  291. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubectl-operations/references/debugging-playbooks.md +0 -0
  292. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubectl-operations/references/output-formats-and-selectors.md +0 -0
  293. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubectl-operations/references/repo-evidence.md +0 -0
  294. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubernetes-workload-hardening/README.md +0 -0
  295. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubernetes-workload-hardening/SKILL.md +0 -0
  296. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubernetes-workload-hardening/references/networkpolicy-and-rbac.md +0 -0
  297. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubernetes-workload-hardening/references/repo-evidence.md +0 -0
  298. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/kubernetes-workload-hardening/references/securitycontext-and-podsecurity.md +0 -0
  299. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/langfuse-llm-tracing/README.md +0 -0
  300. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/langfuse-llm-tracing/SKILL.md +0 -0
  301. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/langfuse-llm-tracing/references/langfuse-client-and-tracing.md +0 -0
  302. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/langfuse-llm-tracing/references/python-and-typescript.md +0 -0
  303. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/langfuse-llm-tracing/references/repo-evidence.md +0 -0
  304. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/load-testing/SKILL.md +0 -0
  305. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/manual-test/SKILL.md +0 -0
  306. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/modernization-and-migration/README.md +0 -0
  307. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/modernization-and-migration/SKILL.md +0 -0
  308. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/modernization-and-migration/references/migration-best-practices.md +0 -0
  309. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/modernization-and-migration/references/pydantic-v1-to-v2.md +0 -0
  310. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/modernization-and-migration/references/repo-evidence.md +0 -0
  311. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/modernization-and-migration/references/shared-internal-library.md +0 -0
  312. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/modernization-and-migration/references/sqlalchemy-14-to-20.md +0 -0
  313. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/multi-tenancy-patterns/README.md +0 -0
  314. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/multi-tenancy-patterns/SKILL.md +0 -0
  315. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/multi-tenancy-patterns/references/caching-patterns.md +0 -0
  316. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/multi-tenancy-patterns/references/isolation-strategies.md +0 -0
  317. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/multi-tenancy-patterns/references/repo-evidence.md +0 -0
  318. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/multi-tenancy-patterns/references/tenant-resolution.md +0 -0
  319. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-express-service/README.md +0 -0
  320. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-express-service/SKILL.md +0 -0
  321. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-express-service/references/app-factory-and-mode-dispatch.md +0 -0
  322. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-express-service/references/config-and-module-alias.md +0 -0
  323. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-express-service/references/middleware-patterns.md +0 -0
  324. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-express-service/references/repo-evidence.md +0 -0
  325. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-objection-knex/README.md +0 -0
  326. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-objection-knex/SKILL.md +0 -0
  327. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-objection-knex/references/migrations-and-validation.md +0 -0
  328. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-objection-knex/references/objection-model-and-knex.md +0 -0
  329. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/node-objection-knex/references/repo-evidence.md +0 -0
  330. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/notifications-and-messaging/README.md +0 -0
  331. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/notifications-and-messaging/SKILL.md +0 -0
  332. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/notifications-and-messaging/references/provider-abstraction.md +0 -0
  333. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/notifications-and-messaging/references/repo-evidence.md +0 -0
  334. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/notifications-and-messaging/references/templates-and-fallback.md +0 -0
  335. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/observability-and-logging/README.md +0 -0
  336. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/observability-and-logging/SKILL.md +0 -0
  337. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/observability-and-logging/references/health-and-readiness.md +0 -0
  338. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/observability-and-logging/references/logging-and-structlog.md +0 -0
  339. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/observability-and-logging/references/outbound-metrics-and-multi-mode.md +0 -0
  340. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/observability-and-logging/references/pii-redaction.md +0 -0
  341. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/observability-and-logging/references/repo-evidence.md +0 -0
  342. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/observability-and-logging/references/tracing-and-metrics.md +0 -0
  343. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/over-engineering-review/SKILL.md +0 -0
  344. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/performance-optimization/SKILL.md +0 -0
  345. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/planning-and-task-breakdown/SKILL.md +0 -0
  346. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/playwright-verification/SKILL.md +0 -0
  347. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/pydantic-schema-patterns/README.md +0 -0
  348. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/pydantic-schema-patterns/SKILL.md +0 -0
  349. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/pydantic-schema-patterns/references/repo-evidence.md +0 -0
  350. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/pydantic-schema-patterns/references/settings-and-validation.md +0 -0
  351. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/pydantic-schema-patterns/references/troubleshooting-and-common-errors.md +0 -0
  352. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/pydantic-schema-patterns/references/v1-vs-v2.md +0 -0
  353. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/python-dao-and-database/README.md +0 -0
  354. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/python-dao-and-database/SKILL.md +0 -0
  355. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/python-dao-and-database/references/advanced-query-patterns.md +0 -0
  356. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/python-dao-and-database/references/basedao-and-sessions.md +0 -0
  357. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/python-dao-and-database/references/mongodb-advanced.md +0 -0
  358. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/python-dao-and-database/references/other-db-mongodb.md +0 -0
  359. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/python-dao-and-database/references/repo-evidence.md +0 -0
  360. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/python-dao-and-database/references/sqlalchemy-1x-vs-2x.md +0 -0
  361. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/radix-tailwind-component-patterns/README.md +0 -0
  362. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/radix-tailwind-component-patterns/SKILL.md +0 -0
  363. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/radix-tailwind-component-patterns/references/radix-primitives-and-variants.md +0 -0
  364. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/radix-tailwind-component-patterns/references/repo-evidence.md +0 -0
  365. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/radix-tailwind-component-patterns/references/tailwind-theme-and-cn.md +0 -0
  366. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/react-hook-form-zod-patterns/README.md +0 -0
  367. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/react-hook-form-zod-patterns/SKILL.md +0 -0
  368. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/react-hook-form-zod-patterns/references/form-setup-and-zod.md +0 -0
  369. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/react-hook-form-zod-patterns/references/multi-step-and-modes.md +0 -0
  370. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/react-hook-form-zod-patterns/references/repo-evidence.md +0 -0
  371. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/redis-caching-patterns/README.md +0 -0
  372. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/redis-caching-patterns/SKILL.md +0 -0
  373. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/redis-caching-patterns/references/cache-manager-and-fallback.md +0 -0
  374. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/redis-caching-patterns/references/namespacing-and-invalidation.md +0 -0
  375. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/redis-caching-patterns/references/repo-evidence.md +0 -0
  376. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/refresh-docs/SKILL.md +0 -0
  377. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/remember/SKILL.md +0 -0
  378. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/scope/SKILL.md +0 -0
  379. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/scope/scope-template.md +0 -0
  380. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/sdlc/SKILL.md +0 -0
  381. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/security-and-hardening/SKILL.md +0 -0
  382. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/security-verification/SKILL.md +0 -0
  383. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/shannon-ai-pentest/README.md +0 -0
  384. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/shannon-ai-pentest/SKILL.md +0 -0
  385. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/shannon-ai-pentest/references/operating-guide.md +0 -0
  386. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/shipping-and-launch/SKILL.md +0 -0
  387. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/simplification-debt/SKILL.md +0 -0
  388. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/smoke-test/SKILL.md +0 -0
  389. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/source-driven-development/SKILL.md +0 -0
  390. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/spec-driven-development/SKILL.md +0 -0
  391. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/sprint/SKILL.md +0 -0
  392. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/sprint/sprint-template.md +0 -0
  393. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/tanstack-react-query-patterns/README.md +0 -0
  394. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/tanstack-react-query-patterns/SKILL.md +0 -0
  395. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/tanstack-react-query-patterns/references/mutations-and-cache.md +0 -0
  396. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/tanstack-react-query-patterns/references/query-keys-and-hooks.md +0 -0
  397. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/tanstack-react-query-patterns/references/repo-evidence.md +0 -0
  398. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/task-tracker-sync/SKILL.md +0 -0
  399. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/temporal-config-driven/README.md +0 -0
  400. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/temporal-config-driven/SKILL.md +0 -0
  401. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/temporal-config-driven/references/config-and-retry-idempotency.md +0 -0
  402. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/temporal-config-driven/references/dag-dsl-interpreter.md +0 -0
  403. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/temporal-config-driven/references/repo-evidence.md +0 -0
  404. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/temporal-config-driven/references/schedule-registration.md +0 -0
  405. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/temporal-config-driven/references/schedules-and-cron.md +0 -0
  406. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/temporal-config-driven/references/worker-workflow-activity-patterns.md +0 -0
  407. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/test-driven-development/SKILL.md +0 -0
  408. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/test-plan-review/SKILL.md +0 -0
  409. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/README.md +0 -0
  410. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/SKILL.md +0 -0
  411. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/references/async-and-mocking.md +0 -0
  412. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/references/coverage-gap-and-recommendations.md +0 -0
  413. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/references/github-actions-test-orchestration.md +0 -0
  414. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/references/pytest-and-fixtures.md +0 -0
  415. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/references/pytest-asyncio-modes.md +0 -0
  416. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/references/repo-evidence.md +0 -0
  417. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/references/security-regression-tests.md +0 -0
  418. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/testing-conventions/references/vitest-frontend-testing.md +0 -0
  419. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/threat-model/SKILL.md +0 -0
  420. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/triage/SKILL.md +0 -0
  421. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/ui-ux-design/SKILL.md +0 -0
  422. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/unit-test/SKILL.md +0 -0
  423. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/using-agent-skills/SKILL.md +0 -0
  424. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/vitest-rtl-msw-patterns/README.md +0 -0
  425. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/vitest-rtl-msw-patterns/SKILL.md +0 -0
  426. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/vitest-rtl-msw-patterns/references/msw-and-contract-tests.md +0 -0
  427. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/vitest-rtl-msw-patterns/references/repo-evidence.md +0 -0
  428. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/vitest-rtl-msw-patterns/references/vitest-rtl-setup.md +0 -0
  429. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zap-vapt-scanning/README.md +0 -0
  430. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zap-vapt-scanning/SKILL.md +0 -0
  431. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zap-vapt-scanning/references/operating-guide.md +0 -0
  432. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zap-vapt-scanning/scripts/endpoints.example.txt +0 -0
  433. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zap-vapt-scanning/scripts/requirements.txt +0 -0
  434. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zap-vapt-scanning/scripts/zap_vapt.py +0 -0
  435. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zustand-state-patterns/README.md +0 -0
  436. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zustand-state-patterns/SKILL.md +0 -0
  437. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zustand-state-patterns/references/async-polling-and-persistence.md +0 -0
  438. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zustand-state-patterns/references/repo-evidence.md +0 -0
  439. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/skills/zustand-state-patterns/references/store-structure-and-selectors.md +0 -0
  440. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/__main__.py +0 -0
  441. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/catalog.py +0 -0
  442. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/cli.py +0 -0
  443. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/models.py +0 -0
  444. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/prompts.py +0 -0
  445. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/render.py +0 -0
  446. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/scaffold.py +0 -0
  447. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/upgrader.py +0 -0
  448. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/src/claude_kit/validator.py +0 -0
  449. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/CLAUDE.md +0 -0
  450. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/CLAUDE.stack.md.tmpl +0 -0
  451. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/CONTINUITY.template.md +0 -0
  452. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/README.claude-sdlc.md.tmpl +0 -0
  453. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/agent-memory/MEMORY.md +0 -0
  454. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/agent-memory/api/.gitkeep +0 -0
  455. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/agent-memory/architecture/.gitkeep +0 -0
  456. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/agent-memory/debugging/.gitkeep +0 -0
  457. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/agent-memory/gotchas/.gitkeep +0 -0
  458. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/agent-memory/patterns/.gitkeep +0 -0
  459. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/agent-memory/performance/.gitkeep +0 -0
  460. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/artifacts/adr.md +0 -0
  461. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/artifacts/api-change-report.md +0 -0
  462. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/artifacts/feature-spec.md +0 -0
  463. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/artifacts/release-plan.md +0 -0
  464. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/artifacts/runbook.md +0 -0
  465. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/artifacts/security-review.md +0 -0
  466. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/artifacts/test-plan.md +0 -0
  467. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/README.md +0 -0
  468. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/agents/data-workflow-agent.md +0 -0
  469. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/agents/founder-prototype-agent.md +0 -0
  470. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/agents/internal-tools-builder.md +0 -0
  471. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/agents/pm-copilot.md +0 -0
  472. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/agents/staff-pm-reviewer.md +0 -0
  473. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/agents/support-ticket-engineer.md +0 -0
  474. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/devops-and-release/README.md +0 -0
  475. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/devops-and-release/pack.yaml +0 -0
  476. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/engineering-core/README.md +0 -0
  477. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/engineering-core/pack.yaml +0 -0
  478. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/non-engineer-builder/README.md +0 -0
  479. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/non-engineer-builder/pack.yaml +0 -0
  480. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/onboarding-and-docs/README.md +0 -0
  481. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/onboarding-and-docs/pack.yaml +0 -0
  482. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/product-to-code/README.md +0 -0
  483. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/product-to-code/pack.yaml +0 -0
  484. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/quality-and-review/README.md +0 -0
  485. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/quality-and-review/pack.yaml +0 -0
  486. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/security-and-compliance/README.md +0 -0
  487. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/packs/security-and-compliance/pack.yaml +0 -0
  488. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/ai-working-agreement.md +0 -0
  489. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/ambiguity-resolution.md +0 -0
  490. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/branch-and-pr-policy.md +0 -0
  491. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/compliance-policy.md +0 -0
  492. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/non-engineer-safe-coding.md +0 -0
  493. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/pii-policy.md +0 -0
  494. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/production-data-policy.md +0 -0
  495. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/prompt-to-task-conversion.md +0 -0
  496. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/prototype-boundaries.md +0 -0
  497. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/rules/secrets-policy.md +0 -0
  498. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/customer-issue-to-fix/SKILL.md +0 -0
  499. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/feature-from-idea/SKILL.md +0 -0
  500. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/prompt-to-safe-task/SKILL.md +0 -0
  501. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/prototype-to-production/SKILL.md +0 -0
  502. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/repo-onboarding/SKILL.md +0 -0
  503. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/review-scope/SKILL.md +0 -0
  504. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/review-sprint/SKILL.md +0 -0
  505. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/review-sprint-plan/SKILL.md +0 -0
  506. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/org/skills/review-ux-flow/SKILL.md +0 -0
  507. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/backend/go/net-http/rules/go-patterns.md +0 -0
  508. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/backend/python/fastapi/rules/fastapi-patterns.md +0 -0
  509. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/db/mongodb/agents/migration-specialist.md +0 -0
  510. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/db/mongodb/agents/mongodb-specialist.md +0 -0
  511. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/db/mongodb/rules/mongodb-patterns.md +0 -0
  512. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/db/postgres/agents/db-performance-reviewer.md +0 -0
  513. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/db/postgres/agents/migration-specialist.md +0 -0
  514. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/db/postgres/agents/postgres-specialist.md +0 -0
  515. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/db/postgres/rules/database-performance.md +0 -0
  516. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/db/postgres/rules/postgres-patterns.md +0 -0
  517. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/frontend/react/rules/design-system-compliance.md +0 -0
  518. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/frontend/react/rules/mobile-design-guidelines.md +0 -0
  519. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/frontend/react/rules/react-patterns.md +0 -0
  520. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/frontend/react/rules/ui-design-system.md +0 -0
  521. {claude_code_kit-0.22.0 → claude_code_kit-0.23.0}/templates/stacks/frontend/react/rules/ux-patterns.md +0 -0
@@ -10,7 +10,7 @@
10
10
  "name": "claude-kit",
11
11
  "source": "./",
12
12
  "description": "Cookiecutter-style scaffolder for an autonomous Claude Code SDLC config (no app code, no Docker): install CLAUDE.md + .claude/ (rules, the profile's agents/skills, hooks, artifact templates) + optional .mcp.json, then run /sdlc to drive spec → review → build → test → security → ship through profile-aware quality gates, working memory, and a self-improving learnings loop.",
13
- "version": "0.22.0",
13
+ "version": "0.23.0",
14
14
  "license": "MIT",
15
15
  "keywords": ["sdlc", "agents", "orchestration", "quality-gates", "workflow", "scaffold", "cookiecutter"]
16
16
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-kit",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "description": "Cookiecutter-style scaffolder for an autonomous Claude Code SDLC config (no app code, no Docker). `claude-kit init` asks ordered questions and installs CLAUDE.md + .claude/ (rules, the profile's agents/skills, hooks, artifact templates) + optional .mcp.json; run /sdlc to drive spec → review → build → test → security → ship through profile-aware quality gates with working memory and a self-improving learnings loop.",
5
5
  "author": {
6
6
  "name": "Arjunsingh Yadav",
@@ -4,6 +4,38 @@ All notable changes to claude-kit are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/), and the project uses
5
5
  [semantic versioning](https://semver.org/).
6
6
 
7
+ ## [0.23.0] — 2026-06-23
8
+
9
+ **PR2 of the phased hardening review: structural single-source-of-truth for hooks, and plugin/CLI
10
+ parity that fails loud instead of silently degrading.**
11
+
12
+ ### Changed
13
+
14
+ - **Hooks are now generated from one registry.** The two previously hand-maintained static hook files —
15
+ the plugin's `hooks/hooks.json` and the no-pip starter `templates/settings.json` — are now generated
16
+ from `src/claude_kit/hooks.py` (`HOOK_REGISTRY` + per-channel membership data) via
17
+ `scripts/gen_hooks.py`. They had already drifted (the starter was missing `load-autonomy`, the PR1
18
+ `jq`-degradation prefix, and used a slightly different block message). A drift test
19
+ (`gen_hooks.py --check`, run in the suite) fails the build if either file is hand-edited.
20
+ - The installed per-profile `.claude/settings.json` (built by `build_settings`) is **byte-identical**
21
+ to before — pure refactor, verified against `origin/main`.
22
+ - `hooks/hooks.json` is **semantically identical** to before (reflowed to canonical 2-space JSON; no
23
+ hook added, removed, or reordered).
24
+ - `templates/settings.json` changes only by refreshing its two inline Bash guards to the registry
25
+ versions (gaining the `command -v jq … || exit 0` no-jq degradation + aligned message); same hook
26
+ membership.
27
+ - **`guard-kubectl-delete` is now declared data.** It moves into a `PLUGIN_ONLY_HOOKS` map (with a
28
+ `reason`) — the single documented exception to "the registry is the source of truth" — instead of
29
+ being a silent hand-edit in `hooks.json`.
30
+
31
+ ### Fixed
32
+
33
+ - **Plugin/CLI parity: `/claude-kit:init` requires the CLI and fails loud.** The command no longer
34
+ silently falls back to the thin `scripts/init.sh` scaffolder when neither `claude-kit` nor `ckit` is
35
+ on PATH — it stops and instructs `pipx install claude-code-kit` (or `pip install …`). The shell
36
+ fallback is now opt-in only (`CLAUDE_KIT_BASIC=1`) and prints a loud "degraded, no-resolution
37
+ install; upgrade/diff won't work" warning. README onboarding documents the CLI requirement.
38
+
7
39
  ## [0.22.0] — 2026-06-23
8
40
 
9
41
  **Critical-correctness hardening (PR1 of a phased review): a non-destructive `init` merge that no longer
@@ -38,11 +38,15 @@ locally, and how to release.
38
38
  *when* to use it. Add it to the relevant profile(s) in `catalog/profiles.yaml`.
39
39
  - **Rule** → add `rules/<name>.md`; cross-reference siblings as `.claude/rules/<name>.md`.
40
40
  - **Hook** → add a script to `hooks/scripts/`, register it in the `HOOK_REGISTRY` in
41
- `src/claude_kit/hooks.py`, wire it in `hooks/hooks.json` (plugin), and list its id in the relevant
42
- profile's `hooks:`. (Exception: the agent-side capture hooks `capture-learnings[-catchup|-stop]` are
43
- **not** profile-listed they're installed by the init-time `capture_mode` choice via
44
- `catalog/capture.yaml` + `catalog._apply_capture_mode`. One script, three triggers, dispatched by an
45
- arg.)
41
+ `src/claude_kit/hooks.py`, and list its id in the relevant profile's `hooks:`. To surface it in the
42
+ plugin and/or the no-pip starter, add its id to `PLUGIN_HOOK_IDS` / `STARTER_HOOK_IDS` (same module),
43
+ then **run `python scripts/gen_hooks.py`** to regenerate `hooks/hooks.json` and
44
+ `templates/settings.json` **never hand-edit those two files** (a drift test, `gen_hooks.py --check`,
45
+ fails the build if they diverge from the registry). A plugin-only hook (no CLI scaffold equivalent,
46
+ e.g. `guard-kubectl-delete`) goes in `PLUGIN_ONLY_HOOKS` with a `reason` instead of the registry.
47
+ (Exception: the agent-side capture hooks `capture-learnings[-catchup|-stop]` are **not** profile-listed
48
+ — they're installed by the init-time `capture_mode` choice via `catalog/capture.yaml` +
49
+ `catalog._apply_capture_mode`. One script, three triggers, dispatched by an arg.)
46
50
  - **Stack** (framework / database) → a **data change**: add an entry to `catalog/stacks.yaml`
47
51
  (`label`, `overlay_rules`, optional `overlay_agents`, `skills`, `stack_dir`, `commands`) and create
48
52
  `templates/stacks/<stack_dir>/rules/<name>.md` (+ `agents/` for a database). Mark not-yet-ready
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-code-kit
3
- Version: 0.22.0
3
+ Version: 0.23.0
4
4
  Summary: Cookiecutter-style scaffolder for an autonomous Claude Code SDLC configuration (no app code, no Docker). Asks ordered questions and installs CLAUDE.md + .claude/ (rules, the chosen profile's agents/skills, hooks, artifact templates) + optional .mcp.json; run /sdlc to drive spec → review → build → test → security → ship through profile-aware quality gates, working memory, and a self-improving learnings loop.
5
5
  Project-URL: Homepage, https://github.com/ajyadav013/claude-kit
6
6
  Project-URL: Repository, https://github.com/ajyadav013/claude-kit
@@ -110,6 +110,12 @@ Then, inside any project you want the pipeline to manage:
110
110
  /sdlc Add a CSV export button to the reports page
111
111
  ```
112
112
 
113
+ > **`/claude-kit:init` requires the Python CLI** (`pipx install claude-code-kit`, or `pip install
114
+ > claude-code-kit`) — it's what resolves your stack/profile/MCP catalog and records `init-options.json`
115
+ > for safe `upgrade`/`diff`. If the CLI isn't on PATH the command stops and tells you to install it
116
+ > rather than doing a partial install. (A degraded, no-resolution shell scaffolder is available only by
117
+ > explicitly setting `CLAUDE_KIT_BASIC=1`; `upgrade`/`diff` won't work against it.)
118
+
113
119
  > `/sdlc` is a **project skill** installed by `init`, so it becomes available after the restart. The
114
120
  > plugin also exposes `/claude-kit:sdlc <task>`, which works immediately (no restart needed).
115
121
 
@@ -83,6 +83,12 @@ Then, inside any project you want the pipeline to manage:
83
83
  /sdlc Add a CSV export button to the reports page
84
84
  ```
85
85
 
86
+ > **`/claude-kit:init` requires the Python CLI** (`pipx install claude-code-kit`, or `pip install
87
+ > claude-code-kit`) — it's what resolves your stack/profile/MCP catalog and records `init-options.json`
88
+ > for safe `upgrade`/`diff`. If the CLI isn't on PATH the command stops and tells you to install it
89
+ > rather than doing a partial install. (A degraded, no-resolution shell scaffolder is available only by
90
+ > explicitly setting `CLAUDE_KIT_BASIC=1`; `upgrade`/`diff` won't work against it.)
91
+
86
92
  > `/sdlc` is a **project skill** installed by `init`, so it becomes available after the restart. The
87
93
  > plugin also exposes `/claude-kit:sdlc <task>`, which works immediately (no restart needed).
88
94
 
@@ -6,21 +6,35 @@ allowed-tools: Bash, Read, Glob
6
6
 
7
7
  Install the claude-kit autonomous-SDLC configuration into the current project.
8
8
 
9
- **Prefer the full Python CLI** (it runs the ordered prompts, resolves the stack/profile/MCP catalog,
9
+ **The Python CLI is required.** It runs the ordered prompts, resolves the stack/profile/MCP catalog,
10
10
  installs overlay rules + agents, assembles `settings.json`, and records `init-options.json` for safe
11
- upgrades). Check whether it's on PATH and use it, passing through `$ARGUMENTS`:
11
+ upgrades (`claude-kit upgrade` / `diff`). Check whether it's on PATH and use it, passing through
12
+ `$ARGUMENTS`:
12
13
 
13
14
  ```
14
15
  command -v claude-kit >/dev/null 2>&1 && claude-kit init $ARGUMENTS \
15
- || { command -v ckit >/dev/null 2>&1 && ckit init $ARGUMENTS; }
16
+ || { command -v ckit >/dev/null 2>&1 && ckit init $ARGUMENTS \
17
+ || echo "CKIT_CLI_MISSING"; }
16
18
  ```
17
19
 
18
- If neither `claude-kit` nor `ckit` is installed, fall back to the **thin** bundled scaffolder (it
19
- copies the full payload with no stack/profile resolution a superset install; suggest the user
20
- `pip install claude-code-kit` afterwards for the catalog-driven experience):
20
+ **If the output is `CKIT_CLI_MISSING`, STOP do not scaffold anything.** Neither `claude-kit` nor
21
+ `ckit` is installed. Tell the user the CLI is required and how to install it, then have them re-run
22
+ `/claude-kit:init`. Do **not** silently fall back to a partial install:
23
+
24
+ - Recommended: `pipx install claude-code-kit`
25
+ - Or: `pip install claude-code-kit`
26
+
27
+ **Escape hatch (advanced, opt-in only).** A thin shell scaffolder exists for locked-down environments
28
+ where installing the CLI is impossible. It copies the full payload as a **superset** with **no**
29
+ stack/profile/MCP resolution, and `claude-kit upgrade` / `diff` will **not** work against it. Use it
30
+ **only** if the user has explicitly opted in by setting `CLAUDE_KIT_BASIC=1`:
21
31
 
22
32
  ```
23
- bash "${CLAUDE_PLUGIN_ROOT}/scripts/init.sh" $ARGUMENTS
33
+ if [ "${CLAUDE_KIT_BASIC:-0}" = "1" ]; then
34
+ bash "${CLAUDE_PLUGIN_ROOT}/scripts/init.sh" $ARGUMENTS
35
+ else
36
+ echo "set CLAUDE_KIT_BASIC=1 to use the degraded no-CLI scaffolder (the CLI is the supported path)"
37
+ fi
24
38
  ```
25
39
 
26
40
  If `${CLAUDE_PLUGIN_ROOT}` is not set (running from a source checkout), locate `scripts/init.sh` in
@@ -0,0 +1,106 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-continuity.sh\""
10
+ },
11
+ {
12
+ "type": "command",
13
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-learnings.sh\""
14
+ },
15
+ {
16
+ "type": "command",
17
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-autonomy.sh\""
18
+ },
19
+ {
20
+ "type": "command",
21
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/capture-learnings.sh\" catchup"
22
+ }
23
+ ]
24
+ }
25
+ ],
26
+ "PreToolUse": [
27
+ {
28
+ "matcher": "Bash",
29
+ "hooks": [
30
+ {
31
+ "type": "command",
32
+ "command": "command -v jq >/dev/null 2>&1 || exit 0; CMD=$(jq -r '.tool_input.command'); if echo \"$CMD\" | grep -qE 'rm[[:space:]]+-[^[:space:]]*r[^[:space:]]*f'; then echo 'BLOCKED: rm -rf is disabled by claude-kit. Move to trash or delete specific paths explicitly.' >&2; exit 2; fi"
33
+ },
34
+ {
35
+ "type": "command",
36
+ "command": "command -v jq >/dev/null 2>&1 || exit 0; CMD=$(jq -r '.tool_input.command'); if echo \"$CMD\" | grep -qE 'git[[:space:]]+push.*[[:space:]:](main|master)([[:space:]]|$)'; then echo 'BLOCKED: refusing to push to main/master — use a feature branch and a PR.' >&2; exit 2; fi"
37
+ },
38
+ {
39
+ "type": "command",
40
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-destructive-git.sh\""
41
+ },
42
+ {
43
+ "type": "command",
44
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-secrets.sh\""
45
+ },
46
+ {
47
+ "type": "command",
48
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-kubectl-delete.sh\""
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ "matcher": "Edit|Write",
54
+ "hooks": [
55
+ {
56
+ "type": "command",
57
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-shared-modules.sh\""
58
+ },
59
+ {
60
+ "type": "command",
61
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-llm-io.sh\""
62
+ },
63
+ {
64
+ "type": "command",
65
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-sensitive-files.sh\""
66
+ }
67
+ ]
68
+ },
69
+ {
70
+ "matcher": "Write",
71
+ "hooks": [
72
+ {
73
+ "type": "command",
74
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate-settings.sh\""
75
+ }
76
+ ]
77
+ }
78
+ ],
79
+ "Stop": [
80
+ {
81
+ "matcher": "",
82
+ "hooks": [
83
+ {
84
+ "type": "command",
85
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/lint-fix.sh\""
86
+ },
87
+ {
88
+ "type": "command",
89
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/type-check.sh\""
90
+ }
91
+ ]
92
+ }
93
+ ],
94
+ "SessionEnd": [
95
+ {
96
+ "matcher": "",
97
+ "hooks": [
98
+ {
99
+ "type": "command",
100
+ "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/capture-learnings.sh\" end"
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ }
106
+ }
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "claude-code-kit"
7
- version = "0.22.0"
7
+ version = "0.23.0"
8
8
  description = "Cookiecutter-style scaffolder for an autonomous Claude Code SDLC configuration (no app code, no Docker). Asks ordered questions and installs CLAUDE.md + .claude/ (rules, the chosen profile's agents/skills, hooks, artifact templates) + optional .mcp.json; run /sdlc to drive spec → review → build → test → security → ship through profile-aware quality gates, working memory, and a self-improving learnings loop."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env python3
2
+ """Generate (or --check) the two *static* hook files from the single ``hooks.py`` registry.
3
+
4
+ claude-kit ships hooks through three channels, but only one should ever be hand-maintained:
5
+
6
+ * the **installed** ``.claude/settings.json`` — built per-profile by ``hooks.build_settings`` at init;
7
+ * the auto-discovered **plugin** ``hooks/hooks.json`` (``${CLAUDE_PLUGIN_ROOT}`` paths);
8
+ * the thin no-pip **starter** ``templates/settings.json`` (``$CLAUDE_PROJECT_DIR`` paths).
9
+
10
+ The latter two used to be edited by hand and silently drifted from the registry (and each other).
11
+ This script regenerates both from ``claude_kit.hooks`` so the registry is the single source of truth.
12
+
13
+ Usage::
14
+
15
+ python scripts/gen_hooks.py # regenerate the two files in place
16
+ python scripts/gen_hooks.py --check # exit 1 if either file is out of sync (CI / tests)
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ import json
22
+ import sys
23
+ from pathlib import Path
24
+
25
+ ROOT = Path(__file__).resolve().parent.parent
26
+ sys.path.insert(
27
+ 0, str(ROOT / "src")
28
+ ) # importable from a bare checkout (no editable install needed)
29
+
30
+ from claude_kit import hooks # noqa: E402
31
+
32
+ #: (path on disk, generator) for each static file derived from the registry.
33
+ TARGETS = [
34
+ (ROOT / "hooks" / "hooks.json", hooks.generate_plugin_hooks_json),
35
+ (ROOT / "templates" / "settings.json", hooks.generate_starter_settings),
36
+ ]
37
+
38
+
39
+ def _render(doc: dict) -> str:
40
+ """Canonical JSON form (2-space indent, literal Unicode, trailing newline) for both files."""
41
+ return json.dumps(doc, indent=2, ensure_ascii=False) + "\n"
42
+
43
+
44
+ def main(argv: list[str]) -> int:
45
+ check = "--check" in argv
46
+ drift: list[Path] = []
47
+ for path, generate in TARGETS:
48
+ want = _render(generate())
49
+ have = path.read_text(encoding="utf-8") if path.is_file() else ""
50
+ if check:
51
+ if want != have:
52
+ drift.append(path)
53
+ else:
54
+ path.write_text(want, encoding="utf-8")
55
+ print(f"wrote {path.relative_to(ROOT)}")
56
+ if check:
57
+ if drift:
58
+ print(
59
+ "hooks drift: FAIL — run `python scripts/gen_hooks.py` to regenerate:"
60
+ )
61
+ for path in drift:
62
+ print(f" - {path.relative_to(ROOT)}")
63
+ return 1
64
+ print("hooks: in sync with the registry")
65
+ return 0
66
+
67
+
68
+ if __name__ == "__main__":
69
+ sys.exit(main(sys.argv[1:]))
@@ -40,6 +40,16 @@ done
40
40
 
41
41
  DEST="$TARGET/.claude"
42
42
  mkdir -p "$DEST"
43
+
44
+ # Loud warning: this is the degraded, no-pip path. The full experience is the Python CLI.
45
+ echo "================================================================" >&2
46
+ echo "claude-kit BASIC scaffolder (no Python CLI)" >&2
47
+ echo " SUPERSET install: NO stack / profile / MCP resolution." >&2
48
+ echo " 'claude-kit upgrade' and 'diff' will NOT work against it." >&2
49
+ echo " For the full catalog-driven experience + safe upgrades:" >&2
50
+ echo " pipx install claude-code-kit (then re-run /claude-kit:init)" >&2
51
+ echo "================================================================" >&2
52
+
43
53
  echo "claude-kit: scaffolding into $TARGET"
44
54
 
45
55
  copy_root_file() { # src, dest, label
@@ -7,4 +7,4 @@ Docker): ``claude-kit init`` asks ordered questions and lays down ``CLAUDE.md``
7
7
  as a plugin. Extensibility is data-driven via the ``catalog/`` (stacks, profiles, MCP).
8
8
  """
9
9
 
10
- __version__ = "0.22.0"
10
+ __version__ = "0.23.0"
@@ -60,6 +60,19 @@ def _script_entry(name: str, arg: str = "") -> dict[str, str]:
60
60
  return {"type": "command", "command": command}
61
61
 
62
62
 
63
+ def _plugin_entry(name: str, arg: str = "") -> dict[str, str]:
64
+ """Build a settings.json command entry that runs a hook script from the plugin root.
65
+
66
+ The plugin variant of :func:`_script_entry` — Claude Code exposes the plugin's own directory via
67
+ ``${CLAUDE_PLUGIN_ROOT}``, so the auto-discovered ``hooks/hooks.json`` references scripts there
68
+ rather than in a scaffolded project's ``.claude/hooks/``.
69
+ """
70
+ command = f'bash "${{CLAUDE_PLUGIN_ROOT}}/hooks/scripts/{name}"'
71
+ if arg:
72
+ command += f" {arg}"
73
+ return {"type": "command", "command": command}
74
+
75
+
63
76
  #: The canonical registry. Order here is the order hooks appear in assembled settings.json.
64
77
  #: Each value: ``event``, ``matcher``, ``entry`` (settings.json hook object), and ``script``
65
78
  #: (basename under payload ``hooks/scripts/`` to copy, or ``None`` for inline/prompt hooks).
@@ -180,21 +193,97 @@ HOOK_REGISTRY: dict[str, dict[str, Any]] = {
180
193
  "matcher": "",
181
194
  "entry": _script_entry("capture-learnings.sh", "end"),
182
195
  "script": "capture-learnings.sh",
196
+ "arg": "end",
183
197
  },
184
198
  "capture-learnings-catchup": {
185
199
  "event": "SessionStart",
186
200
  "matcher": "",
187
201
  "entry": _script_entry("capture-learnings.sh", "catchup"),
188
202
  "script": "capture-learnings.sh",
203
+ "arg": "catchup",
189
204
  },
190
205
  "capture-learnings-stop": {
191
206
  "event": "Stop",
192
207
  "matcher": "",
193
208
  "entry": _script_entry("capture-learnings.sh", "stop"),
194
209
  "script": "capture-learnings.sh",
210
+ "arg": "stop",
195
211
  },
196
212
  }
197
213
 
214
+ #: Hooks the plugin ships but the pip CLI does NOT — the single declared exception to "the registry
215
+ #: is the source of truth". These run from the auto-discovered ``hooks/hooks.json`` only; they are
216
+ #: deliberately absent from ``HOOK_REGISTRY`` / ``catalog/profiles.yaml`` so ``claude-kit init`` output
217
+ #: is unchanged. Each entry carries a ``reason`` so the divergence is documented data, not an accident.
218
+ PLUGIN_ONLY_HOOKS: dict[str, dict[str, Any]] = {
219
+ "guard-kubectl-delete": {
220
+ "event": "PreToolUse",
221
+ "matcher": "Bash",
222
+ "script": "guard-kubectl-delete.sh",
223
+ "arg": "",
224
+ "reason": (
225
+ "Blocks destructive `kubectl delete` from the agent's Bash tool. Plugin-only by design: "
226
+ "intentionally not added to the CLI scaffold registry / profiles, so `claude-kit init` "
227
+ "output is unchanged (see PR #25)."
228
+ ),
229
+ },
230
+ }
231
+
232
+ #: Which registry hooks each *static* generated file ships (the dynamic per-profile installed
233
+ #: settings.json comes from the profile's hook list instead). Declaring channel membership as data —
234
+ #: rather than hand-editing two JSON files — is what keeps the plugin file and the no-pip starter from
235
+ #: silently drifting apart; ``scripts/gen_hooks.py`` regenerates both and a drift test enforces it.
236
+ #:
237
+ #: The plugin file (hooks/hooks.json, always-on for any project using the plugin) carries the broad
238
+ #: recommended set plus the plugin-only guards above.
239
+ PLUGIN_HOOK_IDS: frozenset[str] = frozenset(
240
+ {
241
+ "load-continuity",
242
+ "load-learnings",
243
+ "load-autonomy",
244
+ "guard-rm-rf",
245
+ "guard-push-main",
246
+ "guard-destructive-git",
247
+ "guard-commit-secrets",
248
+ "warn-shared-modules",
249
+ "warn-llm-io",
250
+ "warn-sensitive-files",
251
+ "validate-settings",
252
+ "lint-fix",
253
+ "type-check",
254
+ "capture-learnings",
255
+ "capture-learnings-catchup",
256
+ }
257
+ )
258
+
259
+ #: The thin no-pip starter (templates/settings.json, copied by scripts/init.sh) ships a smaller subset
260
+ #: — the degraded fallback path keeps a minimal, broadly-safe set rather than the full plugin roster.
261
+ STARTER_HOOK_IDS: frozenset[str] = frozenset(
262
+ {
263
+ "load-continuity",
264
+ "load-learnings",
265
+ "guard-rm-rf",
266
+ "guard-push-main",
267
+ "warn-shared-modules",
268
+ "lint-fix",
269
+ "type-check",
270
+ "capture-learnings",
271
+ "capture-learnings-catchup",
272
+ }
273
+ )
274
+
275
+ #: $comment headers for the two channels (kept here so generation is the single source).
276
+ _INSTALLED_COMMENT = (
277
+ "Claude Code settings installed by claude-kit. Hooks wire the SDLC working-memory, "
278
+ "learnings, guardrails, and quality checks to scripts in .claude/hooks/. Personal "
279
+ "overrides belong in .claude/settings.local.json (gitignored)."
280
+ )
281
+ _STARTER_COMMENT = (
282
+ "Recommended Claude Code settings installed by claude-kit. Hooks wire the SDLC working-memory, "
283
+ "learnings, guardrails, and quality checks to the scripts in .claude/hooks/. Merge with your "
284
+ "existing settings.json as needed."
285
+ )
286
+
198
287
  #: Event ordering for a stable, readable settings.json.
199
288
  _EVENT_ORDER = (
200
289
  "SessionStart",
@@ -221,42 +310,84 @@ def scripts_for(hook_ids: list[str]) -> list[str]:
221
310
  return sorted(set(out))
222
311
 
223
312
 
224
- def build_settings(hook_ids: list[str]) -> dict[str, Any]:
225
- """Assemble a ``settings.json`` document from the selected hook ids.
313
+ def _hooks_block(specs: list[tuple[str, str, dict[str, Any]]]) -> dict[str, Any]:
314
+ """Group ``(event, matcher, entry)`` specs into the ``{EVENT: [{matcher, hooks}]}`` schema.
315
+
316
+ Order is preserved from ``specs`` (callers pass them in registry order), with events sorted by
317
+ :data:`_EVENT_ORDER`. This is the one place the settings/hooks schema is assembled, shared by the
318
+ installed-settings, plugin, and starter generators so all three stay byte-identical in shape.
319
+ """
320
+ grouped: dict[str, dict[str, list[dict[str, Any]]]] = {}
321
+ for event, matcher, entry in specs:
322
+ grouped.setdefault(event, {}).setdefault(matcher, []).append(entry)
323
+ ordered_events = [e for e in _EVENT_ORDER if e in grouped] + [
324
+ e for e in grouped if e not in _EVENT_ORDER
325
+ ]
326
+ return {
327
+ event: [
328
+ {"matcher": matcher, "hooks": entries}
329
+ for matcher, entries in grouped[event].items()
330
+ ]
331
+ for event in ordered_events
332
+ }
333
+
334
+
335
+ def build_settings(
336
+ hook_ids: list[str], *, comment: str | None = None
337
+ ) -> dict[str, Any]:
338
+ """Assemble an installed ``.claude/settings.json`` document from the selected hook ids.
226
339
 
227
340
  Groups the selected hooks by event and matcher, preserving registry order, into the schema
228
- Claude Code expects (``{"hooks": {EVENT: [{"matcher": …, "hooks": [entry, …]}]}}``).
341
+ Claude Code expects (``{"hooks": {EVENT: [{"matcher": …, "hooks": [entry, …]}]}}``). Uses the
342
+ project-relative script paths (``$CLAUDE_PROJECT_DIR/.claude/hooks/…``).
229
343
 
230
344
  Args:
231
345
  hook_ids: Hook ids to enable.
346
+ comment: Optional ``$comment`` header (defaults to the installed-settings blurb).
232
347
 
233
348
  Returns:
234
349
  A JSON-serialisable settings mapping (always includes an explanatory ``$comment``).
235
350
  """
236
- selected = [hid for hid in HOOK_REGISTRY if hid in set(hook_ids)]
237
- # event -> matcher -> [entries]
238
- grouped: dict[str, dict[str, list[dict[str, Any]]]] = {}
239
- for hid in selected:
240
- spec = HOOK_REGISTRY[hid]
241
- grouped.setdefault(spec["event"], {}).setdefault(spec["matcher"], []).append(
242
- spec["entry"]
351
+ specs = [
352
+ (
353
+ HOOK_REGISTRY[hid]["event"],
354
+ HOOK_REGISTRY[hid]["matcher"],
355
+ HOOK_REGISTRY[hid]["entry"],
243
356
  )
244
-
245
- hooks_block: dict[str, list[dict[str, Any]]] = {}
246
- ordered_events = [e for e in _EVENT_ORDER if e in grouped] + [
247
- e for e in grouped if e not in _EVENT_ORDER
357
+ for hid in HOOK_REGISTRY
358
+ if hid in set(hook_ids)
248
359
  ]
249
- for event in ordered_events:
250
- hooks_block[event] = [
251
- {"matcher": matcher, "hooks": entries}
252
- for matcher, entries in grouped[event].items()
253
- ]
254
-
255
360
  return {
256
- "$comment": (
257
- "Claude Code settings installed by claude-kit. Hooks wire the SDLC working-memory, "
258
- "learnings, guardrails, and quality checks to scripts in .claude/hooks/. Personal "
259
- "overrides belong in .claude/settings.local.json (gitignored)."
260
- ),
261
- "hooks": hooks_block,
361
+ "$comment": comment or _INSTALLED_COMMENT,
362
+ "hooks": _hooks_block(specs),
262
363
  }
364
+
365
+
366
+ def generate_starter_settings() -> dict[str, Any]:
367
+ """Generate the thin no-pip starter ``templates/settings.json`` from :data:`STARTER_HOOK_IDS`."""
368
+ return build_settings(sorted(STARTER_HOOK_IDS), comment=_STARTER_COMMENT)
369
+
370
+
371
+ def generate_plugin_hooks_json() -> dict[str, Any]:
372
+ """Generate the auto-discovered plugin ``hooks/hooks.json`` from the registry.
373
+
374
+ Ships :data:`PLUGIN_HOOK_IDS` (rebuilt with ``${CLAUDE_PLUGIN_ROOT}`` script paths; inline guard
375
+ commands are path-independent and reused verbatim) plus :data:`PLUGIN_ONLY_HOOKS`, which are
376
+ appended after the registry hooks within their event/matcher group. No ``$comment`` (the plugin
377
+ loader reads this as a hooks fragment).
378
+ """
379
+ specs: list[tuple[str, str, dict[str, Any]]] = []
380
+ for hid in HOOK_REGISTRY:
381
+ if hid not in PLUGIN_HOOK_IDS:
382
+ continue
383
+ spec = HOOK_REGISTRY[hid]
384
+ if spec["script"]:
385
+ entry = _plugin_entry(spec["script"], spec.get("arg", ""))
386
+ else:
387
+ entry = spec["entry"] # inline command — no path to rewrite
388
+ specs.append((spec["event"], spec["matcher"], entry))
389
+ for po in PLUGIN_ONLY_HOOKS.values():
390
+ specs.append(
391
+ (po["event"], po["matcher"], _plugin_entry(po["script"], po.get("arg", "")))
392
+ )
393
+ return {"hooks": _hooks_block(specs)}