claude-code-kit 0.20.0__tar.gz → 0.22.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 (518) hide show
  1. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/.claude-plugin/marketplace.json +1 -1
  2. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/.claude-plugin/plugin.json +1 -1
  3. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/CHANGELOG.md +98 -0
  4. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/PKG-INFO +7 -3
  5. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/README.md +6 -2
  6. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/catalog/mcp.yaml +19 -6
  7. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/stack-skills/README.md +6 -2
  8. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/hooks.json +4 -3
  9. claude_code_kit-0.22.0/hooks/scripts/guard-kubectl-delete.sh +37 -0
  10. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/pyproject.toml +1 -1
  11. claude_code_kit-0.22.0/scripts/check_docs_consistency.py +257 -0
  12. claude_code_kit-0.22.0/skills/cron-and-scheduled-jobs/README.md +45 -0
  13. claude_code_kit-0.22.0/skills/cron-and-scheduled-jobs/SKILL.md +238 -0
  14. claude_code_kit-0.22.0/skills/cron-and-scheduled-jobs/references/choosing-and-operations.md +86 -0
  15. claude_code_kit-0.22.0/skills/cron-and-scheduled-jobs/references/kubernetes-cronjob.md +184 -0
  16. claude_code_kit-0.22.0/skills/cron-and-scheduled-jobs/references/repo-evidence.md +51 -0
  17. claude_code_kit-0.22.0/skills/cron-and-scheduled-jobs/references/temporal-schedules.md +112 -0
  18. claude_code_kit-0.22.0/skills/kubectl-operations/README.md +43 -0
  19. claude_code_kit-0.22.0/skills/kubectl-operations/SKILL.md +226 -0
  20. claude_code_kit-0.22.0/skills/kubectl-operations/references/command-reference.md +137 -0
  21. claude_code_kit-0.22.0/skills/kubectl-operations/references/context-namespace-rbac.md +91 -0
  22. claude_code_kit-0.22.0/skills/kubectl-operations/references/debugging-playbooks.md +122 -0
  23. claude_code_kit-0.22.0/skills/kubectl-operations/references/output-formats-and-selectors.md +125 -0
  24. claude_code_kit-0.22.0/skills/kubectl-operations/references/repo-evidence.md +59 -0
  25. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/sdlc/SKILL.md +1 -1
  26. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/__init__.py +1 -1
  27. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/catalog.py +12 -0
  28. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/cli.py +19 -4
  29. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/hooks.py +3 -0
  30. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/models.py +27 -2
  31. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/prompts.py +59 -3
  32. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/scaffold.py +4 -1
  33. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/upgrader.py +94 -28
  34. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/.gitignore +0 -0
  35. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/CLAUDE.md +0 -0
  36. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/CONTRIBUTING.md +0 -0
  37. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/LICENSE +0 -0
  38. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/acceptance-reviewer.md +0 -0
  39. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/auditor.md +0 -0
  40. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/dependency-scanner.md +0 -0
  41. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/developer.md +0 -0
  42. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/devils-advocate.md +0 -0
  43. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/devops-engineer.md +0 -0
  44. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/e2e-tester.md +0 -0
  45. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/em-reviewer.md +0 -0
  46. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/incident-responder.md +0 -0
  47. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/merge-reviewer.md +0 -0
  48. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/observability-engineer.md +0 -0
  49. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/orchestrator.md +0 -0
  50. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/owasp-reviewer.md +0 -0
  51. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/policy-validator.md +0 -0
  52. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/pr-raiser.md +0 -0
  53. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/risk-classifier.md +0 -0
  54. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/sdlc-code-reviewer.md +0 -0
  55. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/secret-scanner.md +0 -0
  56. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/security-reviewer.md +0 -0
  57. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/senior-backend-dev.md +0 -0
  58. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/senior-frontend-dev.md +0 -0
  59. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/senior-tester.md +0 -0
  60. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/spec-doc-writer.md +0 -0
  61. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/story-planner.md +0 -0
  62. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/technical-architect.md +0 -0
  63. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/tester.md +0 -0
  64. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/ui-designer.md +0 -0
  65. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/agents/unit-tester.md +0 -0
  66. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/catalog/capture.yaml +0 -0
  67. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/catalog/org.yaml +0 -0
  68. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/catalog/profiles.yaml +0 -0
  69. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/catalog/stacks.yaml +0 -0
  70. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/commands/abort.md +0 -0
  71. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/commands/init.md +0 -0
  72. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/commands/sdlc.md +0 -0
  73. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/commands/status.md +0 -0
  74. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/agentic-patterns.md +0 -0
  75. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/agents.md +0 -0
  76. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/architecture.md +0 -0
  77. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/coverage-audit.md +0 -0
  78. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/eval-harness.md +0 -0
  79. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/org-capabilities.md +0 -0
  80. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/stack-skills/GAP-ANALYSIS.md +0 -0
  81. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/docs/stack-skills/REPO-INVENTORY.md +0 -0
  82. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/audit-log.sh +0 -0
  83. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/capture-learnings.sh +0 -0
  84. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/guard-destructive-git.sh +0 -0
  85. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/guard-secrets.sh +0 -0
  86. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/lint-fix.sh +0 -0
  87. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/load-autonomy.sh +0 -0
  88. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/load-continuity.sh +0 -0
  89. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/load-learnings.sh +0 -0
  90. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/type-check.sh +0 -0
  91. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/validate-frontmatter.sh +0 -0
  92. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/validate-settings.sh +0 -0
  93. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/warn-large-edits.sh +0 -0
  94. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/warn-llm-io.sh +0 -0
  95. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/warn-missing-tests.sh +0 -0
  96. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/warn-sensitive-files.sh +0 -0
  97. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/hooks/scripts/warn-shared-modules.sh +0 -0
  98. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/agent-guardrails.md +0 -0
  99. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/agent-memory.md +0 -0
  100. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/agent-resilience.md +0 -0
  101. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/autonomy-levels.md +0 -0
  102. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/code-organization.md +0 -0
  103. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/continuity.md +0 -0
  104. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/design-patterns.md +0 -0
  105. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/devops-observability.md +0 -0
  106. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/documentation.md +0 -0
  107. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/evals.md +0 -0
  108. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/frontend-best-practices.md +0 -0
  109. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/goal-setting-and-monitoring.md +0 -0
  110. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/human-in-the-loop.md +0 -0
  111. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/linting-and-formatting.md +0 -0
  112. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/mandatory-workflow.md +0 -0
  113. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/model-tiers.md +0 -0
  114. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/quality-gates.md +0 -0
  115. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/rarv-cycle.md +0 -0
  116. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/reasoning-techniques.md +0 -0
  117. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/responsive-and-accessibility.md +0 -0
  118. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/risk-classification.md +0 -0
  119. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/testing.md +0 -0
  120. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/rules/tool-design.md +0 -0
  121. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/scripts/init.sh +0 -0
  122. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/_references/accessibility-checklist.md +0 -0
  123. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/_references/orchestration-patterns.md +0 -0
  124. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/_references/performance-checklist.md +0 -0
  125. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/_references/security-checklist.md +0 -0
  126. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/_references/testing-patterns.md +0 -0
  127. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/accessibility-review/SKILL.md +0 -0
  128. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/alembic-migrations/README.md +0 -0
  129. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/alembic-migrations/SKILL.md +0 -0
  130. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/alembic-migrations/references/alembic-setup-and-env.md +0 -0
  131. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/alembic-migrations/references/async-and-multitenant-migrations.md +0 -0
  132. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/alembic-migrations/references/repo-evidence.md +0 -0
  133. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/alembic-migrations/references/troubleshooting-and-debugging.md +0 -0
  134. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/alembic-migrations/references/writing-migrations.md +0 -0
  135. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/anthropic-vertex-integration/README.md +0 -0
  136. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/anthropic-vertex-integration/SKILL.md +0 -0
  137. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/anthropic-vertex-integration/references/generate-helpers-and-retry.md +0 -0
  138. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/anthropic-vertex-integration/references/repo-evidence.md +0 -0
  139. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/anthropic-vertex-integration/references/vertex-client-and-auth.md +0 -0
  140. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/api-and-interface-design/SKILL.md +0 -0
  141. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/api-integration/SKILL.md +0 -0
  142. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/api-pagination-filtering-sorting/README.md +0 -0
  143. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/api-pagination-filtering-sorting/SKILL.md +0 -0
  144. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/api-pagination-filtering-sorting/references/query-params-conventions.md +0 -0
  145. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/api-pagination-filtering-sorting/references/repo-evidence.md +0 -0
  146. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/api-pagination-filtering-sorting/references/response-metadata.md +0 -0
  147. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/archive-sprint/SKILL.md +0 -0
  148. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/async-python-patterns/README.md +0 -0
  149. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/async-python-patterns/SKILL.md +0 -0
  150. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/async-python-patterns/references/async-boundaries.md +0 -0
  151. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/async-python-patterns/references/lifecycle-and-gather.md +0 -0
  152. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/async-python-patterns/references/repo-evidence.md +0 -0
  153. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/auth-and-rbac/README.md +0 -0
  154. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/auth-and-rbac/SKILL.md +0 -0
  155. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/auth-and-rbac/references/auth-dependencies.md +0 -0
  156. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/auth-and-rbac/references/rbac-and-permissions.md +0 -0
  157. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/auth-and-rbac/references/repo-evidence.md +0 -0
  158. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/auth-and-rbac/references/security-hardening.md +0 -0
  159. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/auth-and-rbac/references/tokens-and-hashing.md +0 -0
  160. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backend-repo-architecture/README.md +0 -0
  161. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backend-repo-architecture/SKILL.md +0 -0
  162. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backend-repo-architecture/references/deployment-patterns.md +0 -0
  163. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backend-repo-architecture/references/entrypoint-and-config.md +0 -0
  164. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backend-repo-architecture/references/repo-evidence.md +0 -0
  165. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backend-repo-architecture/references/structure-patterns.md +0 -0
  166. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backend-repo-architecture/references/troubleshooting.md +0 -0
  167. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backlog/SKILL.md +0 -0
  168. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/backlog/item-template.md +0 -0
  169. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/browser-testing-with-devtools/SKILL.md +0 -0
  170. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/bug-hunt/SKILL.md +0 -0
  171. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/ci-cd-and-automation/SKILL.md +0 -0
  172. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/code-review-and-quality/SKILL.md +0 -0
  173. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/code-simplification/SKILL.md +0 -0
  174. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/component-design/SKILL.md +0 -0
  175. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/configargparse-yaml-env-layering/README.md +0 -0
  176. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/configargparse-yaml-env-layering/SKILL.md +0 -0
  177. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/configargparse-yaml-env-layering/references/config-layering-anatomy.md +0 -0
  178. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/configargparse-yaml-env-layering/references/mode-dispatch-and-precedence.md +0 -0
  179. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/configargparse-yaml-env-layering/references/repo-evidence.md +0 -0
  180. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/consolidate-learnings/SKILL.md +0 -0
  181. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/containerization-and-deployment/README.md +0 -0
  182. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/containerization-and-deployment/SKILL.md +0 -0
  183. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/containerization-and-deployment/references/deployment-and-secrets.md +0 -0
  184. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/containerization-and-deployment/references/dockerfile-and-compose.md +0 -0
  185. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/containerization-and-deployment/references/entrypoint-and-modes.md +0 -0
  186. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/containerization-and-deployment/references/kerberos-kinit-bootstrap.md +0 -0
  187. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/containerization-and-deployment/references/makefile-dev-workflow.md +0 -0
  188. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/containerization-and-deployment/references/repo-evidence.md +0 -0
  189. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/context-engineering/SKILL.md +0 -0
  190. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/data-engineering-bigquery-gcs/README.md +0 -0
  191. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/data-engineering-bigquery-gcs/SKILL.md +0 -0
  192. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/data-engineering-bigquery-gcs/references/bigquery-advanced-patterns.md +0 -0
  193. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/data-engineering-bigquery-gcs/references/bigquery-gcs-io.md +0 -0
  194. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/data-engineering-bigquery-gcs/references/medallion-architecture.md +0 -0
  195. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/data-engineering-bigquery-gcs/references/repo-evidence.md +0 -0
  196. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/data-engineering-bigquery-gcs/references/temp-table-merge-pattern.md +0 -0
  197. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/debugging-and-error-recovery/SKILL.md +0 -0
  198. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/decision/SKILL.md +0 -0
  199. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/decision/adr-template.md +0 -0
  200. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/deprecation-and-migration/SKILL.md +0 -0
  201. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/design-patterns-and-conventions/README.md +0 -0
  202. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/design-patterns-and-conventions/SKILL.md +0 -0
  203. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/design-patterns-and-conventions/references/anti-patterns.md +0 -0
  204. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/design-patterns-and-conventions/references/naming-and-layout.md +0 -0
  205. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/design-patterns-and-conventions/references/patterns-catalog.md +0 -0
  206. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/design-patterns-and-conventions/references/repo-evidence.md +0 -0
  207. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/design-patterns-and-conventions/references/testing-patterns.md +0 -0
  208. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/design-patterns-and-conventions/references/troubleshooting.md +0 -0
  209. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-compose/README.md +0 -0
  210. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-compose/SKILL.md +0 -0
  211. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-compose/references/compose-services-and-healthchecks.md +0 -0
  212. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-compose/references/dev-vs-prod-variants.md +0 -0
  213. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-compose/references/repo-evidence.md +0 -0
  214. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-shared/README.md +0 -0
  215. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-shared/SKILL.md +0 -0
  216. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-shared/references/dockerignore-and-build-secrets.md +0 -0
  217. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-shared/references/repo-evidence.md +0 -0
  218. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-shared/references/shared-base-images.md +0 -0
  219. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/docker-shared/references/shared-compose-fragments.md +0 -0
  220. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-backend/README.md +0 -0
  221. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-backend/SKILL.md +0 -0
  222. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-backend/references/backend-dockerfile-anatomy.md +0 -0
  223. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-backend/references/repo-evidence.md +0 -0
  224. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-backend/references/system-deps-and-caching.md +0 -0
  225. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-frontend/README.md +0 -0
  226. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-frontend/SKILL.md +0 -0
  227. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-frontend/references/build-args-and-nginx.md +0 -0
  228. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-frontend/references/frontend-dockerfile-anatomy.md +0 -0
  229. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/dockerfile-frontend/references/repo-evidence.md +0 -0
  230. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/documentation-and-adrs/SKILL.md +0 -0
  231. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/doubt-driven-development/SKILL.md +0 -0
  232. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/edge-to-service-trust-boundary/README.md +0 -0
  233. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/edge-to-service-trust-boundary/SKILL.md +0 -0
  234. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/edge-to-service-trust-boundary/references/repo-evidence.md +0 -0
  235. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/edge-to-service-trust-boundary/references/trust-contract.md +0 -0
  236. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/execute/SKILL.md +0 -0
  237. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/fastapi-service-patterns/README.md +0 -0
  238. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/fastapi-service-patterns/SKILL.md +0 -0
  239. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/fastapi-service-patterns/references/api-versioning.md +0 -0
  240. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/fastapi-service-patterns/references/app-factory-and-lifespan.md +0 -0
  241. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/fastapi-service-patterns/references/custom-route-and-middleware.md +0 -0
  242. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/fastapi-service-patterns/references/dependency-injection.md +0 -0
  243. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/fastapi-service-patterns/references/model-and-serialization-patterns.md +0 -0
  244. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/fastapi-service-patterns/references/repo-evidence.md +0 -0
  245. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/file-export-and-reporting/README.md +0 -0
  246. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/file-export-and-reporting/SKILL.md +0 -0
  247. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/file-export-and-reporting/references/excel-generation.md +0 -0
  248. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/file-export-and-reporting/references/repo-evidence.md +0 -0
  249. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/file-export-and-reporting/references/streaming-and-downloads.md +0 -0
  250. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/frontend-repo-architecture/README.md +0 -0
  251. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/frontend-repo-architecture/SKILL.md +0 -0
  252. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/frontend-repo-architecture/references/api-layer-and-types.md +0 -0
  253. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/frontend-repo-architecture/references/divergences.md +0 -0
  254. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/frontend-repo-architecture/references/repo-evidence.md +0 -0
  255. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/frontend-repo-architecture/references/structure-and-state.md +0 -0
  256. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/frontend-repo-architecture/references/testing-patterns.md +0 -0
  257. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/frontend-ui-engineering/SKILL.md +0 -0
  258. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcp-cloud-run-github-actions/README.md +0 -0
  259. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcp-cloud-run-github-actions/SKILL.md +0 -0
  260. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcp-cloud-run-github-actions/references/cloud-run-deploy.md +0 -0
  261. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcp-cloud-run-github-actions/references/repo-evidence.md +0 -0
  262. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcp-cloud-run-github-actions/references/workflow-structure.md +0 -0
  263. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcs-file-storage-patterns/README.md +0 -0
  264. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcs-file-storage-patterns/SKILL.md +0 -0
  265. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcs-file-storage-patterns/references/client-and-uploads.md +0 -0
  266. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcs-file-storage-patterns/references/repo-evidence.md +0 -0
  267. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/gcs-file-storage-patterns/references/signed-urls-and-reads.md +0 -0
  268. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/git-workflow-and-versioning/SKILL.md +0 -0
  269. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/grafana-dashboards-and-alerts/README.md +0 -0
  270. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/grafana-dashboards-and-alerts/SKILL.md +0 -0
  271. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/grafana-dashboards-and-alerts/references/dashboard-json-and-templating.md +0 -0
  272. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/grafana-dashboards-and-alerts/references/provisioning-and-organization.md +0 -0
  273. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/grafana-dashboards-and-alerts/references/red-metrics-queries.md +0 -0
  274. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/grafana-dashboards-and-alerts/references/repo-evidence.md +0 -0
  275. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/grafana-dashboards-and-alerts/references/unified-alerting.md +0 -0
  276. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/graphql-patterns/README.md +0 -0
  277. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/graphql-patterns/SKILL.md +0 -0
  278. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/graphql-patterns/references/apollo-client-frontend.md +0 -0
  279. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/graphql-patterns/references/apollo-client-setup.md +0 -0
  280. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/graphql-patterns/references/repo-evidence.md +0 -0
  281. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/graphql-patterns/references/strawberry-backend.md +0 -0
  282. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/graphql-patterns/references/when-to-use-graphql.md +0 -0
  283. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/idea-refine/SKILL.md +0 -0
  284. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/idea-refine/examples.md +0 -0
  285. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/idea-refine/frameworks.md +0 -0
  286. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/idea-refine/refinement-criteria.md +0 -0
  287. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/idea-refine/scripts/idea-refine.sh +0 -0
  288. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/incident-postmortem/SKILL.md +0 -0
  289. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/incremental-implementation/SKILL.md +0 -0
  290. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/interview-me/SKILL.md +0 -0
  291. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kafka-config-driven/README.md +0 -0
  292. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kafka-config-driven/SKILL.md +0 -0
  293. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kafka-config-driven/references/config-and-sasl-kerberos.md +0 -0
  294. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kafka-config-driven/references/consumer-producer-patterns.md +0 -0
  295. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kafka-config-driven/references/repo-evidence.md +0 -0
  296. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kafka-config-driven/references/troubleshooting-and-patterns.md +0 -0
  297. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kubernetes-workload-hardening/README.md +0 -0
  298. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kubernetes-workload-hardening/SKILL.md +0 -0
  299. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kubernetes-workload-hardening/references/networkpolicy-and-rbac.md +0 -0
  300. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kubernetes-workload-hardening/references/repo-evidence.md +0 -0
  301. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/kubernetes-workload-hardening/references/securitycontext-and-podsecurity.md +0 -0
  302. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/langfuse-llm-tracing/README.md +0 -0
  303. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/langfuse-llm-tracing/SKILL.md +0 -0
  304. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/langfuse-llm-tracing/references/langfuse-client-and-tracing.md +0 -0
  305. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/langfuse-llm-tracing/references/python-and-typescript.md +0 -0
  306. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/langfuse-llm-tracing/references/repo-evidence.md +0 -0
  307. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/load-testing/SKILL.md +0 -0
  308. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/manual-test/SKILL.md +0 -0
  309. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/modernization-and-migration/README.md +0 -0
  310. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/modernization-and-migration/SKILL.md +0 -0
  311. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/modernization-and-migration/references/migration-best-practices.md +0 -0
  312. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/modernization-and-migration/references/pydantic-v1-to-v2.md +0 -0
  313. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/modernization-and-migration/references/repo-evidence.md +0 -0
  314. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/modernization-and-migration/references/shared-internal-library.md +0 -0
  315. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/modernization-and-migration/references/sqlalchemy-14-to-20.md +0 -0
  316. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/multi-tenancy-patterns/README.md +0 -0
  317. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/multi-tenancy-patterns/SKILL.md +0 -0
  318. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/multi-tenancy-patterns/references/caching-patterns.md +0 -0
  319. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/multi-tenancy-patterns/references/isolation-strategies.md +0 -0
  320. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/multi-tenancy-patterns/references/repo-evidence.md +0 -0
  321. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/multi-tenancy-patterns/references/tenant-resolution.md +0 -0
  322. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-express-service/README.md +0 -0
  323. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-express-service/SKILL.md +0 -0
  324. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-express-service/references/app-factory-and-mode-dispatch.md +0 -0
  325. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-express-service/references/config-and-module-alias.md +0 -0
  326. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-express-service/references/middleware-patterns.md +0 -0
  327. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-express-service/references/repo-evidence.md +0 -0
  328. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-objection-knex/README.md +0 -0
  329. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-objection-knex/SKILL.md +0 -0
  330. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-objection-knex/references/migrations-and-validation.md +0 -0
  331. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-objection-knex/references/objection-model-and-knex.md +0 -0
  332. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/node-objection-knex/references/repo-evidence.md +0 -0
  333. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/notifications-and-messaging/README.md +0 -0
  334. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/notifications-and-messaging/SKILL.md +0 -0
  335. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/notifications-and-messaging/references/provider-abstraction.md +0 -0
  336. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/notifications-and-messaging/references/repo-evidence.md +0 -0
  337. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/notifications-and-messaging/references/templates-and-fallback.md +0 -0
  338. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/observability-and-logging/README.md +0 -0
  339. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/observability-and-logging/SKILL.md +0 -0
  340. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/observability-and-logging/references/health-and-readiness.md +0 -0
  341. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/observability-and-logging/references/logging-and-structlog.md +0 -0
  342. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/observability-and-logging/references/outbound-metrics-and-multi-mode.md +0 -0
  343. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/observability-and-logging/references/pii-redaction.md +0 -0
  344. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/observability-and-logging/references/repo-evidence.md +0 -0
  345. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/observability-and-logging/references/tracing-and-metrics.md +0 -0
  346. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/over-engineering-review/SKILL.md +0 -0
  347. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/performance-optimization/SKILL.md +0 -0
  348. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/planning-and-task-breakdown/SKILL.md +0 -0
  349. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/playwright-verification/SKILL.md +0 -0
  350. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/pydantic-schema-patterns/README.md +0 -0
  351. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/pydantic-schema-patterns/SKILL.md +0 -0
  352. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/pydantic-schema-patterns/references/repo-evidence.md +0 -0
  353. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/pydantic-schema-patterns/references/settings-and-validation.md +0 -0
  354. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/pydantic-schema-patterns/references/troubleshooting-and-common-errors.md +0 -0
  355. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/pydantic-schema-patterns/references/v1-vs-v2.md +0 -0
  356. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/python-dao-and-database/README.md +0 -0
  357. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/python-dao-and-database/SKILL.md +0 -0
  358. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/python-dao-and-database/references/advanced-query-patterns.md +0 -0
  359. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/python-dao-and-database/references/basedao-and-sessions.md +0 -0
  360. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/python-dao-and-database/references/mongodb-advanced.md +0 -0
  361. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/python-dao-and-database/references/other-db-mongodb.md +0 -0
  362. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/python-dao-and-database/references/repo-evidence.md +0 -0
  363. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/python-dao-and-database/references/sqlalchemy-1x-vs-2x.md +0 -0
  364. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/radix-tailwind-component-patterns/README.md +0 -0
  365. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/radix-tailwind-component-patterns/SKILL.md +0 -0
  366. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/radix-tailwind-component-patterns/references/radix-primitives-and-variants.md +0 -0
  367. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/radix-tailwind-component-patterns/references/repo-evidence.md +0 -0
  368. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/radix-tailwind-component-patterns/references/tailwind-theme-and-cn.md +0 -0
  369. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/react-hook-form-zod-patterns/README.md +0 -0
  370. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/react-hook-form-zod-patterns/SKILL.md +0 -0
  371. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/react-hook-form-zod-patterns/references/form-setup-and-zod.md +0 -0
  372. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/react-hook-form-zod-patterns/references/multi-step-and-modes.md +0 -0
  373. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/react-hook-form-zod-patterns/references/repo-evidence.md +0 -0
  374. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/redis-caching-patterns/README.md +0 -0
  375. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/redis-caching-patterns/SKILL.md +0 -0
  376. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/redis-caching-patterns/references/cache-manager-and-fallback.md +0 -0
  377. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/redis-caching-patterns/references/namespacing-and-invalidation.md +0 -0
  378. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/redis-caching-patterns/references/repo-evidence.md +0 -0
  379. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/refresh-docs/SKILL.md +0 -0
  380. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/remember/SKILL.md +0 -0
  381. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/scope/SKILL.md +0 -0
  382. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/scope/scope-template.md +0 -0
  383. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/security-and-hardening/SKILL.md +0 -0
  384. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/security-verification/SKILL.md +0 -0
  385. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/shannon-ai-pentest/README.md +0 -0
  386. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/shannon-ai-pentest/SKILL.md +0 -0
  387. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/shannon-ai-pentest/references/operating-guide.md +0 -0
  388. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/shipping-and-launch/SKILL.md +0 -0
  389. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/simplification-debt/SKILL.md +0 -0
  390. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/smoke-test/SKILL.md +0 -0
  391. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/source-driven-development/SKILL.md +0 -0
  392. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/spec-driven-development/SKILL.md +0 -0
  393. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/sprint/SKILL.md +0 -0
  394. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/sprint/sprint-template.md +0 -0
  395. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/tanstack-react-query-patterns/README.md +0 -0
  396. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/tanstack-react-query-patterns/SKILL.md +0 -0
  397. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/tanstack-react-query-patterns/references/mutations-and-cache.md +0 -0
  398. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/tanstack-react-query-patterns/references/query-keys-and-hooks.md +0 -0
  399. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/tanstack-react-query-patterns/references/repo-evidence.md +0 -0
  400. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/task-tracker-sync/SKILL.md +0 -0
  401. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/temporal-config-driven/README.md +0 -0
  402. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/temporal-config-driven/SKILL.md +0 -0
  403. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/temporal-config-driven/references/config-and-retry-idempotency.md +0 -0
  404. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/temporal-config-driven/references/dag-dsl-interpreter.md +0 -0
  405. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/temporal-config-driven/references/repo-evidence.md +0 -0
  406. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/temporal-config-driven/references/schedule-registration.md +0 -0
  407. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/temporal-config-driven/references/schedules-and-cron.md +0 -0
  408. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/temporal-config-driven/references/worker-workflow-activity-patterns.md +0 -0
  409. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/test-driven-development/SKILL.md +0 -0
  410. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/test-plan-review/SKILL.md +0 -0
  411. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/README.md +0 -0
  412. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/SKILL.md +0 -0
  413. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/references/async-and-mocking.md +0 -0
  414. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/references/coverage-gap-and-recommendations.md +0 -0
  415. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/references/github-actions-test-orchestration.md +0 -0
  416. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/references/pytest-and-fixtures.md +0 -0
  417. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/references/pytest-asyncio-modes.md +0 -0
  418. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/references/repo-evidence.md +0 -0
  419. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/references/security-regression-tests.md +0 -0
  420. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/testing-conventions/references/vitest-frontend-testing.md +0 -0
  421. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/threat-model/SKILL.md +0 -0
  422. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/triage/SKILL.md +0 -0
  423. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/ui-ux-design/SKILL.md +0 -0
  424. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/unit-test/SKILL.md +0 -0
  425. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/using-agent-skills/SKILL.md +0 -0
  426. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/vitest-rtl-msw-patterns/README.md +0 -0
  427. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/vitest-rtl-msw-patterns/SKILL.md +0 -0
  428. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/vitest-rtl-msw-patterns/references/msw-and-contract-tests.md +0 -0
  429. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/vitest-rtl-msw-patterns/references/repo-evidence.md +0 -0
  430. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/vitest-rtl-msw-patterns/references/vitest-rtl-setup.md +0 -0
  431. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zap-vapt-scanning/README.md +0 -0
  432. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zap-vapt-scanning/SKILL.md +0 -0
  433. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zap-vapt-scanning/references/operating-guide.md +0 -0
  434. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zap-vapt-scanning/scripts/endpoints.example.txt +0 -0
  435. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zap-vapt-scanning/scripts/requirements.txt +0 -0
  436. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zap-vapt-scanning/scripts/zap_vapt.py +0 -0
  437. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zustand-state-patterns/README.md +0 -0
  438. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zustand-state-patterns/SKILL.md +0 -0
  439. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zustand-state-patterns/references/async-polling-and-persistence.md +0 -0
  440. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zustand-state-patterns/references/repo-evidence.md +0 -0
  441. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/skills/zustand-state-patterns/references/store-structure-and-selectors.md +0 -0
  442. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/__main__.py +0 -0
  443. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/render.py +0 -0
  444. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/src/claude_kit/validator.py +0 -0
  445. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/CLAUDE.md +0 -0
  446. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/CLAUDE.stack.md.tmpl +0 -0
  447. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/CONTINUITY.template.md +0 -0
  448. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/README.claude-sdlc.md.tmpl +0 -0
  449. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/agent-memory/MEMORY.md +0 -0
  450. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/agent-memory/api/.gitkeep +0 -0
  451. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/agent-memory/architecture/.gitkeep +0 -0
  452. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/agent-memory/debugging/.gitkeep +0 -0
  453. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/agent-memory/gotchas/.gitkeep +0 -0
  454. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/agent-memory/patterns/.gitkeep +0 -0
  455. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/agent-memory/performance/.gitkeep +0 -0
  456. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/artifacts/adr.md +0 -0
  457. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/artifacts/api-change-report.md +0 -0
  458. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/artifacts/feature-spec.md +0 -0
  459. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/artifacts/release-plan.md +0 -0
  460. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/artifacts/runbook.md +0 -0
  461. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/artifacts/security-review.md +0 -0
  462. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/artifacts/test-plan.md +0 -0
  463. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/README.md +0 -0
  464. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/agents/data-workflow-agent.md +0 -0
  465. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/agents/founder-prototype-agent.md +0 -0
  466. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/agents/internal-tools-builder.md +0 -0
  467. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/agents/pm-copilot.md +0 -0
  468. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/agents/staff-pm-reviewer.md +0 -0
  469. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/agents/support-ticket-engineer.md +0 -0
  470. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/devops-and-release/README.md +0 -0
  471. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/devops-and-release/pack.yaml +0 -0
  472. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/engineering-core/README.md +0 -0
  473. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/engineering-core/pack.yaml +0 -0
  474. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/non-engineer-builder/README.md +0 -0
  475. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/non-engineer-builder/pack.yaml +0 -0
  476. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/onboarding-and-docs/README.md +0 -0
  477. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/onboarding-and-docs/pack.yaml +0 -0
  478. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/product-to-code/README.md +0 -0
  479. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/product-to-code/pack.yaml +0 -0
  480. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/quality-and-review/README.md +0 -0
  481. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/quality-and-review/pack.yaml +0 -0
  482. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/security-and-compliance/README.md +0 -0
  483. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/packs/security-and-compliance/pack.yaml +0 -0
  484. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/ai-working-agreement.md +0 -0
  485. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/ambiguity-resolution.md +0 -0
  486. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/branch-and-pr-policy.md +0 -0
  487. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/compliance-policy.md +0 -0
  488. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/non-engineer-safe-coding.md +0 -0
  489. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/pii-policy.md +0 -0
  490. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/production-data-policy.md +0 -0
  491. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/prompt-to-task-conversion.md +0 -0
  492. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/prototype-boundaries.md +0 -0
  493. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/rules/secrets-policy.md +0 -0
  494. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/customer-issue-to-fix/SKILL.md +0 -0
  495. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/feature-from-idea/SKILL.md +0 -0
  496. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/prompt-to-safe-task/SKILL.md +0 -0
  497. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/prototype-to-production/SKILL.md +0 -0
  498. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/repo-onboarding/SKILL.md +0 -0
  499. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/review-scope/SKILL.md +0 -0
  500. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/review-sprint/SKILL.md +0 -0
  501. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/review-sprint-plan/SKILL.md +0 -0
  502. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/org/skills/review-ux-flow/SKILL.md +0 -0
  503. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/settings.json +0 -0
  504. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/backend/go/net-http/rules/go-patterns.md +0 -0
  505. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/backend/python/fastapi/rules/fastapi-patterns.md +0 -0
  506. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/db/mongodb/agents/migration-specialist.md +0 -0
  507. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/db/mongodb/agents/mongodb-specialist.md +0 -0
  508. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/db/mongodb/rules/mongodb-patterns.md +0 -0
  509. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/db/postgres/agents/db-performance-reviewer.md +0 -0
  510. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/db/postgres/agents/migration-specialist.md +0 -0
  511. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/db/postgres/agents/postgres-specialist.md +0 -0
  512. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/db/postgres/rules/database-performance.md +0 -0
  513. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/db/postgres/rules/postgres-patterns.md +0 -0
  514. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/frontend/react/rules/design-system-compliance.md +0 -0
  515. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/frontend/react/rules/mobile-design-guidelines.md +0 -0
  516. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/frontend/react/rules/react-patterns.md +0 -0
  517. {claude_code_kit-0.20.0 → claude_code_kit-0.22.0}/templates/stacks/frontend/react/rules/ui-design-system.md +0 -0
  518. {claude_code_kit-0.20.0 → claude_code_kit-0.22.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.20.0",
13
+ "version": "0.22.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.20.0",
3
+ "version": "0.22.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,104 @@ 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.22.0] — 2026-06-23
8
+
9
+ **Critical-correctness hardening (PR1 of a phased review): a non-destructive `init` merge that no longer
10
+ deletes your files, a CI guard against doc/version/count drift, stricter config validation, pinned
11
+ third-party MCP versions, and several P2 fixes.**
12
+
13
+ ### Fixed
14
+
15
+ - **Data-loss bug in `init` merge mode.** Re-running `claude-kit init` over an existing `.claude/`
16
+ (the default `merge` mode) used to `shutil.rmtree` whole kit-managed directories (`rules/`,
17
+ `skills/<name>/`, `skills/_references/`), silently deleting any file you had added under them.
18
+ `init` now reconciles non-destructively via the new `upgrader.merge_install`, which reuses the
19
+ owner-aware upgrade logic: kit/overlay files are refreshed (user-modified ones backed up to
20
+ `.claude-kit.bak-N/` first), user-editable files are sidecar'd, kit/overlay orphans are pruned, and
21
+ **files the kit doesn't track are never touched**. An untracked hand-rolled `.claude/` is migrated
22
+ safely too (collisions are backed up). `--force` / `overwrite` remains the only destructive path.
23
+ - **`README.claude-sdlc.md` is now user-editable.** `init` no longer hard-overwrites it; it honours
24
+ `--force` and otherwise writes a `.claude-kit` sidecar, and `upgrade` protects it like `CLAUDE.md`.
25
+ - **Documentation/version drift.** `SECURITY.md` supported-version, the `/sdlc` skill's `standard`
26
+ gate row (added `contract-clear`), and the README hook count (16 → 17) corrected.
27
+
28
+ ### Added
29
+
30
+ - **`scripts/check_docs_consistency.py`** — a fail-loud guard (run in tests + CI) that re-derives the
31
+ facts and asserts the docs agree: version parity across `pyproject.toml`, `__init__.py`, both plugin
32
+ manifests, the latest `CHANGELOG` heading and `SECURITY.md`; component counts (agents / rules / core
33
+ & collection skills / hook scripts / MCP servers) against every number the docs quote; and the
34
+ profile→gate tables in `README.md` + `skills/sdlc/SKILL.md` against `catalog/profiles.yaml`.
35
+ - **Stricter `--config` / selection validation.** A bare `mcp: github` (or `teams: …`) string is
36
+ normalised to a one-element list instead of being iterated character-by-character; malformed shapes,
37
+ unknown config keys, an unknown `frontend_language` for the chosen framework, and an unknown `scope`
38
+ now fail loudly with a clear message (`Selection.from_dict(strict=True)` + `catalog.resolve` checks).
39
+
40
+ ### Changed
41
+
42
+ - **Pinned MCP server package versions.** `catalog/mcp.yaml` replaces moving `@latest` / implicit-latest
43
+ `npx` tags with exact version pins (snapshot 2026-06-23) for reproducible, supply-chain-aware installs;
44
+ the deprecated official GitHub/Postgres reference servers are flagged. README notes that MCP servers
45
+ are third-party code.
46
+ - **Planned CLI commands exit non-zero.** `package-org-pack`, `install-org-pack`, and
47
+ `research import-sources` now exit `2` (still announcing "planned") instead of a silent success-`0`.
48
+ - **Inline guard hooks degrade without `jq`.** The `rm -rf` / push-to-main / secrets inline guards (in
49
+ both the plugin `hooks.json` and the CLI registry) now no-op when `jq` is absent, matching the
50
+ script-backed guards and the SECURITY.md promise.
51
+
52
+ ## [0.21.0] — 2026-06-22
53
+
54
+ **Add two stack-collection skills — `cron-and-scheduled-jobs` (scheduled/recurring jobs across Kubernetes
55
+ CronJobs and Temporal Schedules) and `kubectl-operations` (the full kubectl command surface for operating
56
+ those workloads) — now 45 skills.**
57
+
58
+ ### Added
59
+
60
+ - **`cron-and-scheduled-jobs`** — a stack-derived skill documenting how scheduled/recurring jobs are
61
+ configured in system config and invoked, across the two mechanisms this stack uses:
62
+ - **Kubernetes CronJob route** — the schedule is declared in Helm `values.yaml` under a `Crons.<job>`
63
+ block (`Schedule`, `Envs: {MODE: cron, CRON_JOB: <name>}`, `ConcurrencyPolicy: Forbid`, `Suspend`,
64
+ `TtlSecondsAfterFinished`); the chart renders one `batch/v1` CronJob per entry (`restartPolicy:
65
+ Never`, history limits 3/1). The shared image boots one-shot in `MODE=cron` and dispatches a single
66
+ named job from a Python cron registry (simple `name→callable` or rich `name→{task, description,
67
+ schedule}`), instrumented via `record_cron_job_executed`. Documents the chart's missing
68
+ `timeZone`/`startingDeadlineSeconds` and how to compensate.
69
+ - **Temporal Schedule route** — `cron_expressions` vs `ScheduleIntervalSpec` (interval+offset to dodge
70
+ the UTC-cron timezone foot-gun), `ScheduleOverlapPolicy.SKIP` + `pause_on_failure`, and the one-shot
71
+ k8s `Job` (not a CronJob) that registers the schedule. Cross-links `temporal-config-driven` (which
72
+ owns workflow/activity/worker mechanics and the create-or-update registration loop) rather than
73
+ duplicating it.
74
+ - Plus a decision matrix for choosing k8s CronJob vs Temporal Schedule, and the cross-cutting concerns
75
+ (concurrency, timezone, history, missed runs, suspend vs pause, observability, idempotency).
76
+ - Fully genericized; **not** wired into the catalog/scaffold (`claude-kit init` output is unchanged).
77
+
78
+ - **`kubectl-operations`** — a stack-derived, operations-first skill for running `kubectl` against this
79
+ stack's workloads:
80
+ - **Full command surface**, grouped by task — `get`/`describe`/`explain`/`api-resources`;
81
+ `apply`/`create`/`edit`/`patch`/`set`/`replace`; `logs`/`exec`/`port-forward`/`cp`/`debug`/
82
+ `attach`/`proxy`; `rollout`/`scale`/`autoscale`; `events`/`top`; `label`/`annotate`; `config`
83
+ (contexts & namespaces); `auth can-i`; `wait`/`diff`/`kustomize`; node `cordon`/`drain`/`taint`.
84
+ (`kubectl delete` is intentionally omitted — see the guardrail below — in favour of reversible
85
+ alternatives: `scale --replicas=0`, `rollout undo`, or removing the object from the Git/Helm source.)
86
+ - **Output formatting & selectors** — `-o wide/yaml/json/name/jsonpath/custom-columns/go-template`,
87
+ `--sort-by`, label (`-l`) and field selectors, `--watch`, with copy-ready JSONPath recipes.
88
+ - **Context/namespace/RBAC safety** (the #1 footgun) and **day-2 debugging playbooks** —
89
+ CrashLoopBackOff, ImagePullBackOff, Pending/unschedulable, OOMKilled, a cron that didn't fire, a
90
+ Service with no endpoints.
91
+ - Cross-links `cron-and-scheduled-jobs`, `kubernetes-workload-hardening`,
92
+ `containerization-and-deployment`, `temporal-config-driven`, and `observability-and-logging`. Fully
93
+ genericized; **not** wired into the catalog/scaffold. The collection index is updated (45 skills).
94
+
95
+ - **Plugin guardrail `guard-kubectl-delete`** — a `PreToolUse(Bash)` hook that blocks `kubectl delete`
96
+ from the agent's Bash tool (exit 2), joining the `rm -rf` / `push main` / `guard-destructive-git` /
97
+ `guard-secrets` destructive-command family. It matches the `delete` **subcommand** as a whole word —
98
+ sparing the safe look-alikes `config delete-context`, `drain --delete-emptydir-data`,
99
+ `wait --for=delete`, and the read-only `auth can-i delete …` — and splits compound commands on
100
+ `;`/`|`/`&` so a chained `… | xargs kubectl delete` can't slip past. It refuses with the reversible
101
+ alternatives (`scale --replicas=0`, `rollout undo`, GitOps reconcile) and degrades to a no-op without
102
+ `jq`. Wired into the **plugin** (`hooks/hooks.json`) only; intentionally **not** added to the pip-CLI
103
+ scaffold registry, so `claude-kit init` output is unchanged.
104
+
7
105
  ## [0.20.0] — 2026-06-20
8
106
 
9
107
  **Expand the stack-specific skill collection: 21 new skills + 7 fold-in enhancements + a security pass,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-code-kit
3
- Version: 0.20.0
3
+ Version: 0.22.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
@@ -82,7 +82,7 @@ Quick start) for the full breakdown of any row.
82
82
  | 🧱 **Stacks & overlays** | Stack-agnostic core + **10** overlay rule sets (React · FastAPI · Go · Postgres · Mongo) wired to your exact commands, incl. a full React design system |
83
83
  | 🎚️ **Profiles, scopes & org** | **3** rigor profiles · **3** scopes · **5** autonomy levels · **7** org packs + **10** policy rules |
84
84
  | 🧠 **Memory & learning** | Working memory across context compaction + a cost-aware learnings loop (`capture_mode`) so the same mistake isn't repeated |
85
- | 🛠️ **Hooks & guards** | **16** event hooks — blocking safety guards vs. advisory warnings — that no-op gracefully without `jq` |
85
+ | 🛠️ **Hooks & guards** | **17** event hooks — blocking safety guards vs. advisory warnings — that no-op gracefully without `jq` |
86
86
  | 📦 **Distribution & lifecycle** | Plugin **and** pip from one source, **9** ready MCP fragments, and edit-preserving `upgrade` |
87
87
  | ♻️ **Reuse-first by design** | Adopt-only-the-new reviews, opt-in LLM/AI security (OWASP LLM Top 10), a worked example + self-test matrix |
88
88
 
@@ -306,7 +306,7 @@ need.
306
306
 
307
307
  <br>
308
308
 
309
- - **16 event hook scripts** in [`hooks/`](hooks/) enforce the pipeline outside the model —
309
+ - **17 event hook scripts** in [`hooks/`](hooks/) enforce the pipeline outside the model —
310
310
  `guard-secrets`, `guard-destructive-git`, `lint-fix`, `type-check`, and `validate-settings` run
311
311
  deterministically.
312
312
  - **Advisory, never-blocking warnings** — `warn-llm-io`, `warn-large-edits`, `warn-missing-tests`, and
@@ -325,6 +325,10 @@ need.
325
325
  (`claude-kit` / `ckit` / `claude-sdlc`) generate identical config.
326
326
  - **Catalog-driven extensibility** — adding a stack, framework, database, profile, MCP server, or org
327
327
  pack is a [`catalog/`](catalog/) YAML edit, never a code change; 9 MCP server fragments ship ready.
328
+ - **MCP servers are third-party** — each fragment runs an external package or hosted endpoint that
329
+ claude-kit references but does not vendor or audit; the `npx` commands are **pinned to an exact
330
+ version** (not `@latest`) for reproducible, supply-chain-aware installs. Review a server's source and
331
+ license before enabling it, and bump pins deliberately. See [`SECURITY.md`](SECURITY.md).
328
332
  - **Safe, edit-preserving upgrades** — `upgrade` refreshes kit/overlay files via per-file `owner` +
329
333
  checksum, never clobbers your edits, backs up changes, and restores deleted files (`diff` previews
330
334
  first).
@@ -55,7 +55,7 @@ Quick start) for the full breakdown of any row.
55
55
  | 🧱 **Stacks & overlays** | Stack-agnostic core + **10** overlay rule sets (React · FastAPI · Go · Postgres · Mongo) wired to your exact commands, incl. a full React design system |
56
56
  | 🎚️ **Profiles, scopes & org** | **3** rigor profiles · **3** scopes · **5** autonomy levels · **7** org packs + **10** policy rules |
57
57
  | 🧠 **Memory & learning** | Working memory across context compaction + a cost-aware learnings loop (`capture_mode`) so the same mistake isn't repeated |
58
- | 🛠️ **Hooks & guards** | **16** event hooks — blocking safety guards vs. advisory warnings — that no-op gracefully without `jq` |
58
+ | 🛠️ **Hooks & guards** | **17** event hooks — blocking safety guards vs. advisory warnings — that no-op gracefully without `jq` |
59
59
  | 📦 **Distribution & lifecycle** | Plugin **and** pip from one source, **9** ready MCP fragments, and edit-preserving `upgrade` |
60
60
  | ♻️ **Reuse-first by design** | Adopt-only-the-new reviews, opt-in LLM/AI security (OWASP LLM Top 10), a worked example + self-test matrix |
61
61
 
@@ -279,7 +279,7 @@ need.
279
279
 
280
280
  <br>
281
281
 
282
- - **16 event hook scripts** in [`hooks/`](hooks/) enforce the pipeline outside the model —
282
+ - **17 event hook scripts** in [`hooks/`](hooks/) enforce the pipeline outside the model —
283
283
  `guard-secrets`, `guard-destructive-git`, `lint-fix`, `type-check`, and `validate-settings` run
284
284
  deterministically.
285
285
  - **Advisory, never-blocking warnings** — `warn-llm-io`, `warn-large-edits`, `warn-missing-tests`, and
@@ -298,6 +298,10 @@ need.
298
298
  (`claude-kit` / `ckit` / `claude-sdlc`) generate identical config.
299
299
  - **Catalog-driven extensibility** — adding a stack, framework, database, profile, MCP server, or org
300
300
  pack is a [`catalog/`](catalog/) YAML edit, never a code change; 9 MCP server fragments ship ready.
301
+ - **MCP servers are third-party** — each fragment runs an external package or hosted endpoint that
302
+ claude-kit references but does not vendor or audit; the `npx` commands are **pinned to an exact
303
+ version** (not `@latest`) for reproducible, supply-chain-aware installs. Review a server's source and
304
+ license before enabling it, and bump pins deliberately. See [`SECURITY.md`](SECURITY.md).
301
305
  - **Safe, edit-preserving upgrades** — `upgrade` refreshes kit/overlay files via per-file `owner` +
302
306
  checksum, never clobbers your edits, backs up changes, and restores deleted files (`diff` previews
303
307
  first).
@@ -1,16 +1,26 @@
1
1
  # claude-kit optional MCP integrations. Selected servers are written into a project-root `.mcp.json`
2
2
  # ONLY when chosen at init (default: none). Configs use ${ENV} placeholders — no credentials are ever
3
3
  # generated. Fill the referenced env vars (e.g. in your shell or .env) before using a server.
4
+ #
5
+ # SUPPLY CHAIN: every server below is THIRD-PARTY code (an npx package or a hosted HTTP endpoint) with
6
+ # its own maintainers, trust, and licensing model — claude-kit only references it, never vendors or
7
+ # audits it. The `npx -y <pkg>@<version>` commands are pinned to an exact version (snapshot 2026-06-23)
8
+ # rather than a moving `@latest`, so an install is reproducible and a fresh upstream release can't
9
+ # silently change what runs. Bump these deliberately (and review the changelog) — do not switch back
10
+ # to `@latest`. See SECURITY.md and the README "MCP integrations" note.
4
11
 
5
12
  version: 1
6
13
 
7
14
  servers:
8
15
  github:
9
16
  label: "GitHub (issues, PRs, repos)"
17
+ # NOTE: the official @modelcontextprotocol/server-github npm package is archived/deprecated upstream
18
+ # (GitHub now ships a Go `github-mcp-server`). Pinned to its last published version for a stable
19
+ # install; switch to the maintained server in a future kit release if you need newer features.
10
20
  config:
11
21
  type: stdio
12
22
  command: npx
13
- args: ["-y", "@modelcontextprotocol/server-github"]
23
+ args: ["-y", "@modelcontextprotocol/server-github@2025.4.8"]
14
24
  env:
15
25
  GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_PERSONAL_ACCESS_TOKEN}"
16
26
  linear:
@@ -23,22 +33,25 @@ servers:
23
33
  config:
24
34
  type: stdio
25
35
  command: npx
26
- args: ["-y", "mcp-atlassian"]
36
+ args: ["-y", "mcp-atlassian@2.1.0"]
27
37
  env:
28
38
  JIRA_URL: "${JIRA_URL}"
29
39
  JIRA_API_TOKEN: "${JIRA_API_TOKEN}"
30
40
  postgres:
31
41
  label: "PostgreSQL (query the database)"
42
+ # NOTE: @modelcontextprotocol/server-postgres is archived/deprecated upstream; pinned to its last
43
+ # published version for a stable install. Consider a maintained Postgres MCP server going forward.
32
44
  config:
33
45
  type: stdio
34
46
  command: npx
35
- args: ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
47
+ args:
48
+ ["-y", "@modelcontextprotocol/server-postgres@0.6.2", "${DATABASE_URL}"]
36
49
  mongodb:
37
50
  label: "MongoDB (query the database)"
38
51
  config:
39
52
  type: stdio
40
53
  command: npx
41
- args: ["-y", "mongodb-mcp-server"]
54
+ args: ["-y", "mongodb-mcp-server@1.13.0"]
42
55
  env:
43
56
  MDB_MCP_CONNECTION_STRING: "${MONGODB_URI}"
44
57
  playwright:
@@ -46,7 +59,7 @@ servers:
46
59
  config:
47
60
  type: stdio
48
61
  command: npx
49
- args: ["-y", "@playwright/mcp@latest"]
62
+ args: ["-y", "@playwright/mcp@0.0.76"]
50
63
  docs:
51
64
  label: "Docs / Context7 (live library docs)"
52
65
  config:
@@ -61,7 +74,7 @@ servers:
61
74
  # source is FSL-1.1-Apache-2.0 (source-available; converts to Apache-2.0 two years after each
62
75
  # release) — flagged in the label like the repowise AGPL note; this entry references only the
63
76
  # OAuth-hosted service, not the source. Self-hosted/token alternative (instead of the http url):
64
- # command: npx, args: ["-y", "@sentry/mcp-server@latest"], env: SENTRY_ACCESS_TOKEN: "${SENTRY_ACCESS_TOKEN}".
77
+ # command: npx, args: ["-y", "@sentry/mcp-server@0.36.0"], env: SENTRY_ACCESS_TOKEN: "${SENTRY_ACCESS_TOKEN}".
65
78
  sentry:
66
79
  label: "Sentry (error monitoring / issue triage; source-available FSL-1.1)"
67
80
  config:
@@ -1,6 +1,6 @@
1
1
  # Production Engineering Skills Collection
2
2
 
3
- These forty-three Claude Code skills encode production-proven engineering conventions derived from real-world Python/FastAPI, Node/Express, and React services. Each skill was extracted from analyzing patterns across multiple production backend and frontend services, capturing canonical patterns for FastAPI microservices, async Python, Kafka/Temporal integration, multi-tenancy, database access, layered configuration, Redis caching, GCS file handling, LLM integration (Vertex AI / Langfuse), Node/Express services, React frontends (state, data-fetching, forms, design systems, testing), observability (including Grafana dashboards & unified alerting), authentication, containerization (with granular Dockerfile/compose deep-dives), testing, data pipelines, security scanning (OWASP ZAP VAPT/DAST and autonomous AI pentesting), security architecture (edge-to-service signed-identity trust boundary, Kubernetes workload hardening), and modernization strategies. Use them to align new projects with established patterns, audit existing services, or onboard engineers to modern Python, Node, and React development practices.
3
+ These forty-five Claude Code skills encode production-proven engineering conventions derived from real-world Python/FastAPI, Node/Express, and React services. Each skill was extracted from analyzing patterns across multiple production backend and frontend services, capturing canonical patterns for FastAPI microservices, async Python, Kafka/Temporal integration, multi-tenancy, database access, layered configuration, Redis caching, GCS file handling, LLM integration (Vertex AI / Langfuse), Node/Express services, React frontends (state, data-fetching, forms, design systems, testing), observability (including Grafana dashboards & unified alerting), authentication, containerization (with granular Dockerfile/compose deep-dives), testing, data pipelines, security scanning (OWASP ZAP VAPT/DAST and autonomous AI pentesting), security architecture (edge-to-service signed-identity trust boundary, Kubernetes workload hardening), scheduled & recurring jobs (Kubernetes CronJob + Temporal Schedule), kubectl day-2 operations, and modernization strategies. Use them to align new projects with established patterns, audit existing services, or onboard engineers to modern Python, Node, and React development practices.
4
4
 
5
5
  > **Where these live in this repo:** the skill folders are under [`skills/`](../../skills/) (auto-discovered by the claude-kit plugin). The links below point there.
6
6
 
@@ -51,6 +51,8 @@ These forty-three Claude Code skills encode production-proven engineering conven
51
51
  | **shannon-ai-pentest** | Drive Shannon (by Keygraph) — an autonomous **white-box** AI pentest that reads an app's source, plans attacks, runs **real proof-of-concept exploits** against the live app, and reports only proven findings. Documents the external **AGPL-3.0** `npx @keygraph/shannon` CLI (setup/start/status/logs/stop/workspaces + flags), AI-provider & model-tier config (Anthropic/Bedrock/Vertex/proxy), the YAML engagement config (auth + login-flows + TOTP, scope avoid/focus rules, report filters), output layout, and safety. Not bundled — installed separately (complements `zap-vapt-scanning`) | [SKILL.md](../../skills/shannon-ai-pentest/SKILL.md) |
52
52
  | **edge-to-service-trust-boundary** | The cryptographic trust contract between an API gateway/edge and the services behind it — edge **HMAC-signs** forwarded identity/tenant headers (signature + timestamp), downstream services **verify with constant-time compare and fail closed**, reject replayed/skewed requests, **detect conflicts** across resolution sources, and still enforce their own authz. Anti-patterns: `verify_signature=False`-then-trust, naked-header trust, fail-open. Complements `auth-and-rbac` + `multi-tenancy-patterns` | [SKILL.md](../../skills/edge-to-service-trust-boundary/SKILL.md) |
53
53
  | **kubernetes-workload-hardening** | Runtime/manifest-layer Kubernetes hardening — pod/container `securityContext` (runAsNonRoot, drop-ALL caps, `readOnlyRootFilesystem`, seccomp `RuntimeDefault`), **default-deny NetworkPolicy** + explicit allows, **digest-pinned** images, resource requests/limits, **restricted PodSecurity** admission, least-privilege ServiceAccount/RBAC, and secrets via `secretRef`. The runtime layer atop the `dockerfile-*`/`docker-shared` image-build skills | [SKILL.md](../../skills/kubernetes-workload-hardening/SKILL.md) |
54
+ | **cron-and-scheduled-jobs** | Scheduled/recurring jobs two ways — **Kubernetes CronJob** declared in Helm values (`Crons` block) firing a one-shot `MODE=cron` pod that dispatches a named job from a Python registry, and **Temporal Schedules** (cron vs interval specs, `ScheduleOverlapPolicy.SKIP`, pause-on-failure, idempotent create-or-update registration run as a one-shot k8s `Job`) — how each is configured + invoked, concurrency/timezone/history, and choosing between them | [SKILL.md](../../skills/cron-and-scheduled-jobs/SKILL.md) |
55
+ | **kubectl-operations** | Operating Kubernetes workloads with `kubectl` — the full command surface (get/describe/explain, apply/create/edit/patch/delete, logs/exec/port-forward/cp/debug, rollout/scale/autoscale, config contexts/namespaces, auth can-i, jobs/cronjobs, node cordon/drain) + output formatting (`-o jsonpath/custom-columns/go-template`), label/field selectors, dry-run+diff, and day-2 debugging playbooks (CrashLoopBackOff, ImagePullBackOff, Pending, OOMKilled, cron didn't fire, Service has no endpoints). Context/namespace safety first | [SKILL.md](../../skills/kubectl-operations/SKILL.md) |
54
56
 
55
57
  > **Existing skills extended (this release):** `fastapi-service-patterns` (API versioning + conditional routes), `python-dao-and-database` (MongoDB advanced — aggregation/bulk-upsert/indexes), `temporal-config-driven` (schedule registration), `graphql-patterns` (advanced Apollo Client setup), `containerization-and-deployment` (Makefile dev workflow + Kerberos kinit bootstrap), and `testing-conventions` (GitHub Actions test orchestration) each gained a new section + reference file. A follow-on **security pass** further extended `observability-and-logging` (PII/secret redaction processor + `references/pii-redaction.md`), `testing-conventions` (security-regression tests — negative authz, cross-tenant/RLS, IDOR, lockout, signed-header trust — + `references/security-regression-tests.md`), `graphql-patterns` (a CSRF-token clarification on the Apollo preflight note), and the **core** `security-and-hardening` skill (a CSRF synchronizer-token pattern + an outbound-TLS-verification ban).
56
58
 
@@ -101,11 +103,13 @@ These forty-three Claude Code skills encode production-proven engineering conven
101
103
  - "run Shannon / autonomous or white-box AI pentest / exploit-test an app from its source / set up @keygraph/shannon / proof-by-exploitation report" → **shannon-ai-pentest**
102
104
  - "sign forwarded identity headers / verify a gateway HMAC signature / trust x-user-data behind a gateway / fail closed on forwarded identity / prevent header spoofing or direct-to-service bypass" → **edge-to-service-trust-boundary**
103
105
  - "harden a Kubernetes Deployment / add securityContext / write a NetworkPolicy / enforce PodSecurity restricted / pin an image digest / least-privilege ServiceAccount + RBAC" → **kubernetes-workload-hardening**
106
+ - "add a cron job / scheduled job / recurring job / declare a CronJob in Helm values / wire a MODE=cron entrypoint / register a Temporal schedule / choose k8s CronJob vs Temporal schedule" → **cron-and-scheduled-jobs**
107
+ - "run kubectl / inspect a Deployment or pod / tail logs / exec into a container / port-forward / roll out or roll back / kubectl -o jsonpath / debug CrashLoopBackOff or ImagePullBackOff / switch kube context or namespace / auth can-i" → **kubectl-operations**
104
108
 
105
109
  4. **References:** Each skill includes a `references/` subdirectory with detailed evidence files showing the exact file paths, snippets, and patterns from source repositories.
106
110
 
107
111
  ## Scope and Limitations
108
112
 
109
113
  - **Source:** These skills are derived from real-world production Python/FastAPI and React services as of June 2026. They reflect real-world conventions, including some anti-patterns that are documented for awareness.
110
- - **Stack coverage:** Python FastAPI + SQLAlchemy (1.4 and 2.0) + Kafka + Temporal + Redis (caching); layered configuration (configargparse + YAML + Pydantic); GCS file ops + Excel/CSV reporting; LLM integration (Claude on Vertex AI via AnthropicVertex + Langfuse tracing); Node/Express + Objection/Knex + Joi; React + Vite + TypeScript (Zustand, TanStack Query, react-hook-form + Zod, Radix + Tailwind, Vitest + RTL + MSW); limited MongoDB (sync pymongo + aggregation/bulk/index patterns); BigQuery/GCS data pipelines; Strawberry GraphQL (backend) + Apollo Client (frontend); Docker + docker-compose + k8s; Cloud Run + GitHub Actions CI/CD; pytest + pytest-asyncio + Playwright; OpenTelemetry + Sentry + Prometheus + NewRelic; Grafana dashboards + unified alerting (Prometheus/Tempo/Pyroscope/managed-cloud datasources); argon2 + JWT + pyotp; Alembic migrations; multi-provider email/SMS notifications; OWASP ZAP VAPT/DAST scanning with automated PDF reporting; Shannon autonomous white-box AI pentesting (an external AGPL-3.0 CLI — documented, not bundled); edge-to-service HMAC-signed forwarded-identity trust boundary; Kubernetes runtime/manifest hardening (securityContext, NetworkPolicy, PodSecurity, RBAC, digest-pinned images).
114
+ - **Stack coverage:** Python FastAPI + SQLAlchemy (1.4 and 2.0) + Kafka + Temporal + Redis (caching); layered configuration (configargparse + YAML + Pydantic); GCS file ops + Excel/CSV reporting; LLM integration (Claude on Vertex AI via AnthropicVertex + Langfuse tracing); Node/Express + Objection/Knex + Joi; React + Vite + TypeScript (Zustand, TanStack Query, react-hook-form + Zod, Radix + Tailwind, Vitest + RTL + MSW); limited MongoDB (sync pymongo + aggregation/bulk/index patterns); BigQuery/GCS data pipelines; Strawberry GraphQL (backend) + Apollo Client (frontend); Docker + docker-compose + k8s; Cloud Run + GitHub Actions CI/CD; pytest + pytest-asyncio + Playwright; OpenTelemetry + Sentry + Prometheus + NewRelic; Grafana dashboards + unified alerting (Prometheus/Tempo/Pyroscope/managed-cloud datasources); argon2 + JWT + pyotp; Alembic migrations; multi-provider email/SMS notifications; OWASP ZAP VAPT/DAST scanning with automated PDF reporting; Shannon autonomous white-box AI pentesting (an external AGPL-3.0 CLI — documented, not bundled); edge-to-service HMAC-signed forwarded-identity trust boundary; Kubernetes runtime/manifest hardening (securityContext, NetworkPolicy, PodSecurity, RBAC, digest-pinned images); scheduled/recurring jobs (Kubernetes CronJob declared in Helm values + Temporal Schedules); kubectl day-2 operations (full command surface, output formatting/JSONPath, contexts/RBAC, debugging playbooks).
111
115
  - **What's NOT covered:** SQLModel, Tortoise ORM, beanie/motor (async MongoDB), Django, Flask, and non-Express Node frameworks (NestJS, Fastify). These were absent (or single-repo only) in the analyzed codebases and were deliberately not created.
@@ -15,10 +15,11 @@
15
15
  {
16
16
  "matcher": "Bash",
17
17
  "hooks": [
18
- { "type": "command", "command": "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" },
19
- { "type": "command", "command": "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" },
18
+ { "type": "command", "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" },
19
+ { "type": "command", "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" },
20
20
  { "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-destructive-git.sh\"" },
21
- { "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-secrets.sh\"" }
21
+ { "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-secrets.sh\"" },
22
+ { "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-kubectl-delete.sh\"" }
22
23
  ]
23
24
  },
24
25
  {
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bash
2
+ # PreToolUse(Bash): BLOCK `kubectl delete` — destructive deletes must not run from an agent session.
3
+ #
4
+ # Why a guard (block, exit 2) and not a warn: a delete is irreversible and trivially misfires against
5
+ # the wrong namespace or cluster. A PreToolUse advisory would be theatre — the resource would already
6
+ # be gone. So this refuses and points at the reversible alternatives (scale to 0, rollout undo, or
7
+ # removing the object from the Git/Helm source and letting the pipeline reconcile). It joins the
8
+ # guard-rm-rf / guard-push-main / guard-destructive-git destructive-command family.
9
+ #
10
+ # Scope is deliberately the `delete` SUBCOMMAND only, matched as a whole word, so it spares the safe
11
+ # look-alikes that merely contain the string "delete":
12
+ # - `kubectl config delete-context|delete-cluster|delete-user` (local kubeconfig edits, hyphenated)
13
+ # - `kubectl drain ... --delete-emptydir-data` (a drain flag, hyphenated)
14
+ # - `kubectl wait --for=delete ...` (a wait condition, after '=')
15
+ # - `kubectl auth can-i delete <res>` (a READ-ONLY RBAC query)
16
+ # Compound commands are split on ; | & first, so a chained delete (e.g. `get -o name | xargs kubectl
17
+ # delete`) is caught per-segment. Threat model: this prevents accidental agent deletes, not a determined
18
+ # operator who deliberately crafts a bypass string (they own the machine and can disable the hook).
19
+ #
20
+ # Degrades to a no-op (fail-open) without jq — consistent with the other script-backed guards.
21
+ command -v jq >/dev/null 2>&1 || exit 0
22
+ CMD="$(jq -r '.tool_input.command // empty' 2>/dev/null || true)"
23
+ [ -z "$CMD" ] && exit 0
24
+
25
+ # Split on shell separators → one segment per line; drop read-only `auth can-i` queries; keep only
26
+ # kubectl segments; then look for a bare `delete` verb (not delete-context, --delete-*, or --for=delete).
27
+ if printf '%s' "$CMD" | tr ';|&' '\n\n\n' \
28
+ | grep -vE 'auth[[:space:]]+can-i' \
29
+ | grep -E '(^|[[:space:]])kubectl(\.exe)?[[:space:]]' \
30
+ | grep -qE '(^|[[:space:]])delete([[:space:]]|$)'; then
31
+ echo "BLOCKED: 'kubectl delete' is disabled by claude-kit — destructive deletes must not run from an agent session." >&2
32
+ echo " Use a reversible alternative: 'kubectl scale --replicas=0' to stop a workload, 'kubectl rollout undo' to roll back," >&2
33
+ echo " or remove the resource from the Git/Helm source and let the pipeline reconcile." >&2
34
+ echo " Read-only checks still work ('kubectl auth can-i delete <res>', 'kubectl get/describe'). (guard-kubectl-delete.sh)" >&2
35
+ exit 2
36
+ fi
37
+ exit 0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "claude-code-kit"
7
- version = "0.20.0"
7
+ version = "0.22.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,257 @@
1
+ #!/usr/bin/env python3
2
+ """Fail-loud guard against documentation / version / count drift in this repo.
3
+
4
+ claude-kit ships from one source of truth but advertises itself in many places — the README,
5
+ SECURITY.md, the CHANGELOG, the plugin manifests, and the `/sdlc` skill. Those numbers and version
6
+ strings drift the moment a component is added without a doc sweep (e.g. PR #25 added a 17th hook
7
+ script but left the README saying "16"). This script re-derives the facts from the filesystem and
8
+ the catalog and asserts the docs agree.
9
+
10
+ It checks three classes of drift:
11
+
12
+ 1. **Version parity** — the single version string must be identical across ``pyproject.toml``,
13
+ ``src/claude_kit/__init__.py``, both plugin manifests, the latest ``CHANGELOG.md`` heading, and
14
+ ``SECURITY.md``.
15
+ 2. **Component counts** — agents / core rules / core skills / collection skills / hook scripts /
16
+ MCP fragments, counted on disk (or in ``catalog/mcp.yaml``), must match every number the docs
17
+ quote for them.
18
+ 3. **Profile → gate tables** — the gate lists in ``README.md`` and ``skills/sdlc/SKILL.md`` must
19
+ match the effective gate sets resolved from ``catalog/profiles.yaml`` (inheritance included).
20
+
21
+ Run directly (``python scripts/check_docs_consistency.py``) — exits 0 when consistent, 1 otherwise
22
+ and prints every mismatch. Also exercised by ``tests/test_docs_consistency.py`` and CI.
23
+ """
24
+
25
+ from __future__ import annotations
26
+
27
+ import json
28
+ import re
29
+ import sys
30
+ from pathlib import Path
31
+
32
+ import yaml
33
+
34
+ ROOT = Path(__file__).resolve().parent.parent
35
+
36
+
37
+ def _read(rel: str) -> str:
38
+ return (ROOT / rel).read_text(encoding="utf-8")
39
+
40
+
41
+ # --------------------------------------------------------------------------------------------------
42
+ # 1) Version parity
43
+ # --------------------------------------------------------------------------------------------------
44
+
45
+
46
+ def _versions() -> dict[str, str]:
47
+ """Return the version string each source declares, keyed by a human label."""
48
+ out: dict[str, str] = {}
49
+ m = re.search(r'^version\s*=\s*"([^"]+)"', _read("pyproject.toml"), re.MULTILINE)
50
+ out["pyproject.toml"] = m.group(1) if m else "??"
51
+ m = re.search(r'__version__\s*=\s*"([^"]+)"', _read("src/claude_kit/__init__.py"))
52
+ out["src/claude_kit/__init__.py"] = m.group(1) if m else "??"
53
+ out[".claude-plugin/plugin.json"] = json.loads(
54
+ _read(".claude-plugin/plugin.json")
55
+ ).get("version", "??")
56
+ market = json.loads(_read(".claude-plugin/marketplace.json"))
57
+ for i, p in enumerate(market.get("plugins", [])):
58
+ out[f".claude-plugin/marketplace.json[{i}]"] = p.get("version", "??")
59
+ m = re.search(r"^##\s*\[([^\]]+)\]", _read("CHANGELOG.md"), re.MULTILINE)
60
+ out["CHANGELOG.md (latest)"] = m.group(1) if m else "??"
61
+ m = re.search(r"currently\s*\*\*([^*]+)\*\*", _read("SECURITY.md"))
62
+ out["SECURITY.md"] = m.group(1) if m else "??"
63
+ return out
64
+
65
+
66
+ def check_versions() -> list[str]:
67
+ versions = _versions()
68
+ distinct = set(versions.values())
69
+ if len(distinct) == 1:
70
+ return []
71
+ canonical = versions["pyproject.toml"]
72
+ return [
73
+ f"version drift: {label} says {ver!r} (canonical pyproject.toml = {canonical!r})"
74
+ for label, ver in versions.items()
75
+ if ver != canonical
76
+ ]
77
+
78
+
79
+ # --------------------------------------------------------------------------------------------------
80
+ # 2) Component counts
81
+ # --------------------------------------------------------------------------------------------------
82
+
83
+
84
+ def _count_skills() -> tuple[int, int]:
85
+ """Return (core, collection): collection skills carry a README.md, core ones do not."""
86
+ core = collection = 0
87
+ for d in sorted((ROOT / "skills").iterdir()):
88
+ if not d.is_dir() or d.name.startswith("_"):
89
+ continue
90
+ if (d / "README.md").is_file():
91
+ collection += 1
92
+ else:
93
+ core += 1
94
+ return core, collection
95
+
96
+
97
+ def _actuals() -> dict[str, int]:
98
+ core, collection = _count_skills()
99
+ mcp = yaml.safe_load(_read("catalog/mcp.yaml")).get("servers", {})
100
+ return {
101
+ "agents": len(list((ROOT / "agents").glob("*.md"))),
102
+ "rules": len(list((ROOT / "rules").glob("*.md"))),
103
+ "core skills": core,
104
+ "collection skills": collection,
105
+ "hook scripts": len(list((ROOT / "hooks" / "scripts").glob("*.sh"))),
106
+ "mcp servers": len(mcp),
107
+ }
108
+
109
+
110
+ # Each anchor ties a component count to one regex (single capture group = the number) in one file.
111
+ # Every listed regex must match at least once, and every match must equal the on-disk count — so a
112
+ # count change forces a doc update, and a reworded sentence that drops the number trips "anchor not
113
+ # found". Subset counts elsewhere ("8 agent-operation rules") are deliberately NOT anchored.
114
+ _ANCHORS: list[tuple[str, str, str]] = [
115
+ ("agents", "README.md", r"\*\*(\d+)\*\* tiered agents"),
116
+ ("agents", "README.md", r"(\d+) specialized agents"),
117
+ ("agents", "README.md", r"(\d+) specialized roles"),
118
+ ("agents", "README.md", r"(\d+) SDLC agents"),
119
+ ("rules", "README.md", r"\*\*(\d+)\*\* stack-agnostic core rules"),
120
+ ("rules", "README.md", r"(\d+) stack-agnostic core rules"),
121
+ ("rules", "README.md", r"(\d+) stack-agnostic contracts"),
122
+ ("rules", "README.md", r"(\d+) engineering rules"),
123
+ ("core skills", "README.md", r"\*\*(\d+)\*\* context-activated skills"),
124
+ ("core skills", "README.md", r"(\d+) on-demand skills"),
125
+ ("hook scripts", "README.md", r"\*\*(\d+)\*\* event hooks"),
126
+ ("hook scripts", "README.md", r"(\d+) event hook scripts"),
127
+ ("mcp servers", "README.md", r"\*\*(\d+)\*\* ready MCP fragments"),
128
+ ("mcp servers", "README.md", r"(\d+) MCP server fragments"),
129
+ ]
130
+
131
+
132
+ def check_counts() -> list[str]:
133
+ actuals = _actuals()
134
+ errors: list[str] = []
135
+ for component, relfile, pattern in _ANCHORS:
136
+ text = _read(relfile)
137
+ matches = re.findall(pattern, text)
138
+ if not matches:
139
+ errors.append(
140
+ f"{relfile}: anchor for {component!r} not found (pattern {pattern!r}) — "
141
+ "doc reworded? update check_docs_consistency.py"
142
+ )
143
+ continue
144
+ want = actuals[component]
145
+ for got in matches:
146
+ if int(got) != want:
147
+ errors.append(
148
+ f"{relfile}: {component} count says {got}, but there are {want} "
149
+ f"(pattern {pattern!r})"
150
+ )
151
+
152
+ # Collection skills also drive the living index table in docs/stack-skills/README.md.
153
+ idx = _read("docs/stack-skills/README.md")
154
+ rows = [ln for ln in idx.splitlines() if re.match(r"\|\s*\*\*", ln)]
155
+ if len(rows) != actuals["collection skills"]:
156
+ errors.append(
157
+ f"docs/stack-skills/README.md: {len(rows)} skill rows, but "
158
+ f"{actuals['collection skills']} collection skills exist on disk"
159
+ )
160
+ return errors
161
+
162
+
163
+ # --------------------------------------------------------------------------------------------------
164
+ # 3) Profile -> gate tables
165
+ # --------------------------------------------------------------------------------------------------
166
+
167
+
168
+ def _effective_gates() -> dict[str, set[str]]:
169
+ """Resolve each profile's effective gate set from profiles.yaml (unioning ``inherit``)."""
170
+ profiles = yaml.safe_load(_read("catalog/profiles.yaml"))["profiles"]
171
+ cache: dict[str, set[str]] = {}
172
+
173
+ def resolve(name: str) -> set[str]:
174
+ if name in cache:
175
+ return cache[name]
176
+ p = profiles[name]
177
+ gates = set(p.get("gates") or [])
178
+ if p.get("inherit"):
179
+ gates |= resolve(p["inherit"])
180
+ cache[name] = gates
181
+ return gates
182
+
183
+ return {name: resolve(name) for name in profiles}
184
+
185
+
186
+ def _doc_gate_sets(relfile: str) -> dict[str, set[str]]:
187
+ """Parse the lean/standard/enterprise gate rows from a doc's profile→gate table."""
188
+ raw: dict[str, str] = {}
189
+ for line in _read(relfile).splitlines():
190
+ m = re.match(r"\|\s*\*\*(lean|standard|enterprise)\*\*\s*\|(.+?)\|\s*$", line)
191
+ if m:
192
+ raw[m.group(1)] = m.group(2)
193
+
194
+ def tokens(cell: str) -> set[str]:
195
+ return {
196
+ t.strip().strip("*").strip("\\").strip()
197
+ for t in cell.split("·")
198
+ if t.strip().strip("*").strip("\\").strip()
199
+ }
200
+
201
+ def expand(profile: str) -> set[str]:
202
+ cell = raw[profile]
203
+ if (
204
+ "+" in cell
205
+ ): # e.g. "standard + pipeline-green · observability-ready · acceptance"
206
+ base, extra = cell.split("+", 1)
207
+ return expand(base.strip().strip("*").lower()) | tokens(extra)
208
+ return tokens(cell)
209
+
210
+ return {p: expand(p) for p in raw}
211
+
212
+
213
+ def check_profile_gates() -> list[str]:
214
+ effective = _effective_gates()
215
+ errors: list[str] = []
216
+ for relfile in ("README.md", "skills/sdlc/SKILL.md"):
217
+ doc = _doc_gate_sets(relfile)
218
+ for profile in ("lean", "standard", "enterprise"):
219
+ if profile not in doc:
220
+ errors.append(f"{relfile}: no gate row found for profile {profile!r}")
221
+ continue
222
+ if doc[profile] != effective[profile]:
223
+ missing = effective[profile] - doc[profile]
224
+ extra = doc[profile] - effective[profile]
225
+ detail = []
226
+ if missing:
227
+ detail.append(f"missing {sorted(missing)}")
228
+ if extra:
229
+ detail.append(f"unexpected {sorted(extra)}")
230
+ errors.append(
231
+ f"{relfile}: {profile} gate row disagrees with profiles.yaml — "
232
+ + "; ".join(detail)
233
+ )
234
+ return errors
235
+
236
+
237
+ # --------------------------------------------------------------------------------------------------
238
+
239
+
240
+ def run() -> list[str]:
241
+ """Run every check and return the combined list of error messages (empty = consistent)."""
242
+ return check_versions() + check_counts() + check_profile_gates()
243
+
244
+
245
+ def main() -> int:
246
+ errors = run()
247
+ if errors:
248
+ print("docs consistency: FAIL")
249
+ for e in errors:
250
+ print(f" - {e}")
251
+ return 1
252
+ print("docs consistency: OK")
253
+ return 0
254
+
255
+
256
+ if __name__ == "__main__":
257
+ sys.exit(main())