claude-code-kit 0.63.0__tar.gz → 0.64.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 (600) hide show
  1. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/.claude-plugin/marketplace.json +1 -1
  2. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/.claude-plugin/plugin.json +1 -1
  3. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/CHANGELOG.md +76 -0
  4. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/PKG-INFO +1 -1
  5. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/influences.md +1 -0
  6. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/pyproject.toml +1 -1
  7. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/devops-observability.md +19 -0
  8. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/resilience-engineering.md +37 -0
  9. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/_references/performance-checklist.md +24 -0
  10. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/api-and-interface-design/SKILL.md +60 -0
  11. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/api-pagination-filtering-sorting/SKILL.md +4 -0
  12. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/code-review-and-quality/SKILL.md +12 -0
  13. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/deprecation-and-migration/SKILL.md +23 -0
  14. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/library-review/SKILL.md +12 -0
  15. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/load-testing/SKILL.md +20 -0
  16. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/notifications-and-messaging/SKILL.md +1 -1
  17. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/over-engineering-review/SKILL.md +18 -0
  18. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/redis-caching-patterns/SKILL.md +7 -0
  19. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/SKILL.md +16 -0
  20. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/__init__.py +1 -1
  21. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/.gitignore +0 -0
  22. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/CLAUDE.md +0 -0
  23. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/CONTRIBUTING.md +0 -0
  24. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/LICENSE +0 -0
  25. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/README.md +0 -0
  26. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/acceptance-reviewer.md +0 -0
  27. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/auditor.md +0 -0
  28. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/dependency-scanner.md +0 -0
  29. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/developer.md +0 -0
  30. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/devils-advocate.md +0 -0
  31. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/devops-engineer.md +0 -0
  32. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/e2e-tester.md +0 -0
  33. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/em-reviewer.md +0 -0
  34. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/incident-responder.md +0 -0
  35. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/merge-reviewer.md +0 -0
  36. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/observability-engineer.md +0 -0
  37. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/orchestrator.md +0 -0
  38. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/owasp-reviewer.md +0 -0
  39. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/policy-validator.md +0 -0
  40. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/pr-raiser.md +0 -0
  41. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/risk-classifier.md +0 -0
  42. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/sdlc-code-reviewer.md +0 -0
  43. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/secret-scanner.md +0 -0
  44. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/security-reviewer.md +0 -0
  45. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/senior-backend-dev.md +0 -0
  46. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/senior-frontend-dev.md +0 -0
  47. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/senior-tester.md +0 -0
  48. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/spec-doc-writer.md +0 -0
  49. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/story-planner.md +0 -0
  50. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/technical-architect.md +0 -0
  51. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/tester.md +0 -0
  52. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/ui-designer.md +0 -0
  53. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/agents/unit-tester.md +0 -0
  54. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/catalog/capture.yaml +0 -0
  55. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/catalog/mcp.yaml +0 -0
  56. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/catalog/org.yaml +0 -0
  57. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/catalog/profiles.yaml +0 -0
  58. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/catalog/stacks.yaml +0 -0
  59. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/commands/abort.md +0 -0
  60. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/commands/init.md +0 -0
  61. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/commands/sdlc.md +0 -0
  62. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/commands/status.md +0 -0
  63. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/KNOWN_LIMITATIONS.md +0 -0
  64. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/RELEASE-POLICY.md +0 -0
  65. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/agentic-patterns.md +0 -0
  66. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/agents.md +0 -0
  67. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/architecture.md +0 -0
  68. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/autonomous-operation.md +0 -0
  69. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/capture-a-real-run.md +0 -0
  70. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/cli.md +0 -0
  71. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/coverage-audit.md +0 -0
  72. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/cursor-export.md +0 -0
  73. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/eval-harness.md +0 -0
  74. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/install.md +0 -0
  75. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/launch/awesome-prs.md +0 -0
  76. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/launch/demo-script.md +0 -0
  77. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/launch/directory-submission.md +0 -0
  78. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/launch/github-about.md +0 -0
  79. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/launch/posts.md +0 -0
  80. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/launch/road-to-1.0.md +0 -0
  81. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/launch/seed-issues.md +0 -0
  82. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/org-capabilities.md +0 -0
  83. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/rules-context-budget.md +0 -0
  84. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/skill-audit.md +0 -0
  85. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/stack-skills/GAP-ANALYSIS.md +0 -0
  86. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/stack-skills/README.md +0 -0
  87. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/docs/stack-skills/REPO-INVENTORY.md +0 -0
  88. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/hooks.json +0 -0
  89. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/audit-log.sh +0 -0
  90. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/capture-learnings.sh +0 -0
  91. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/guard-destructive-git.sh +0 -0
  92. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/guard-kubectl-delete.sh +0 -0
  93. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/guard-push-main.sh +0 -0
  94. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/guard-secrets.sh +0 -0
  95. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/lint-fix.sh +0 -0
  96. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/load-autonomy.sh +0 -0
  97. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/load-continuity.sh +0 -0
  98. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/load-learnings.sh +0 -0
  99. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/type-check.sh +0 -0
  100. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/validate-frontmatter.sh +0 -0
  101. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/validate-settings.sh +0 -0
  102. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/warn-large-edits.sh +0 -0
  103. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/warn-llm-io.sh +0 -0
  104. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/warn-missing-tests.sh +0 -0
  105. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/warn-sensitive-files.sh +0 -0
  106. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/hooks/scripts/warn-shared-modules.sh +0 -0
  107. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/agent-guardrails.md +0 -0
  108. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/agent-memory.md +0 -0
  109. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/agent-resilience.md +0 -0
  110. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/autonomy-levels.md +0 -0
  111. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/code-organization.md +0 -0
  112. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/continuity.md +0 -0
  113. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/design-patterns.md +0 -0
  114. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/documentation.md +0 -0
  115. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/evals.md +0 -0
  116. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/frontend-best-practices.md +0 -0
  117. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/goal-setting-and-monitoring.md +0 -0
  118. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/human-in-the-loop.md +0 -0
  119. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/linting-and-formatting.md +0 -0
  120. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/mandatory-workflow.md +0 -0
  121. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/model-tiers.md +0 -0
  122. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/quality-gates.md +0 -0
  123. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/rarv-cycle.md +0 -0
  124. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/reasoning-techniques.md +0 -0
  125. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/responsive-and-accessibility.md +0 -0
  126. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/risk-classification.md +0 -0
  127. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/testing.md +0 -0
  128. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/tool-design.md +0 -0
  129. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/rules/wave-orchestration.md +0 -0
  130. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/README.md +0 -0
  131. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/catalog-capture.schema.json +0 -0
  132. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/catalog-mcp.schema.json +0 -0
  133. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/catalog-org.schema.json +0 -0
  134. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/catalog-profiles.schema.json +0 -0
  135. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/catalog-stacks.schema.json +0 -0
  136. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/mcp-lock.schema.json +0 -0
  137. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/org-pack.schema.json +0 -0
  138. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/schemas/pipeline-snapshot.schema.json +0 -0
  139. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/backfill-releases.sh +0 -0
  140. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/capture-sdlc-run.sh +0 -0
  141. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/check_cross_references.py +0 -0
  142. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/check_docs_consistency.py +0 -0
  143. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/check_mcp_pins.py +0 -0
  144. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/check_rule_sizes.py +0 -0
  145. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/check_skill_descriptions.py +0 -0
  146. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/gen_hooks.py +0 -0
  147. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/scripts/init.sh +0 -0
  148. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/_references/accessibility-checklist.md +0 -0
  149. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/_references/orchestration-patterns.md +0 -0
  150. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/_references/security-checklist.md +0 -0
  151. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/_references/testing-patterns.md +0 -0
  152. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/accessibility-review/SKILL.md +0 -0
  153. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/alembic-migrations/README.md +0 -0
  154. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/alembic-migrations/SKILL.md +0 -0
  155. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/alembic-migrations/references/alembic-setup-and-env.md +0 -0
  156. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/alembic-migrations/references/async-and-multitenant-migrations.md +0 -0
  157. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/alembic-migrations/references/repo-evidence.md +0 -0
  158. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/alembic-migrations/references/troubleshooting-and-debugging.md +0 -0
  159. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/alembic-migrations/references/writing-migrations.md +0 -0
  160. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/anthropic-vertex-integration/README.md +0 -0
  161. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/anthropic-vertex-integration/SKILL.md +0 -0
  162. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/anthropic-vertex-integration/references/generate-helpers-and-retry.md +0 -0
  163. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/anthropic-vertex-integration/references/repo-evidence.md +0 -0
  164. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/anthropic-vertex-integration/references/vertex-client-and-auth.md +0 -0
  165. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/api-integration/SKILL.md +0 -0
  166. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/api-pagination-filtering-sorting/README.md +0 -0
  167. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/api-pagination-filtering-sorting/references/query-params-conventions.md +0 -0
  168. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/api-pagination-filtering-sorting/references/repo-evidence.md +0 -0
  169. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/api-pagination-filtering-sorting/references/response-metadata.md +0 -0
  170. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/archive-sprint/SKILL.md +0 -0
  171. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/async-python-patterns/README.md +0 -0
  172. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/async-python-patterns/SKILL.md +0 -0
  173. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/async-python-patterns/references/async-boundaries.md +0 -0
  174. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/async-python-patterns/references/lifecycle-and-gather.md +0 -0
  175. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/async-python-patterns/references/repo-evidence.md +0 -0
  176. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/auth-and-rbac/README.md +0 -0
  177. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/auth-and-rbac/SKILL.md +0 -0
  178. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/auth-and-rbac/references/auth-dependencies.md +0 -0
  179. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/auth-and-rbac/references/rbac-and-permissions.md +0 -0
  180. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/auth-and-rbac/references/repo-evidence.md +0 -0
  181. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/auth-and-rbac/references/security-hardening.md +0 -0
  182. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/auth-and-rbac/references/tokens-and-hashing.md +0 -0
  183. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backend-repo-architecture/README.md +0 -0
  184. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backend-repo-architecture/SKILL.md +0 -0
  185. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backend-repo-architecture/references/deployment-patterns.md +0 -0
  186. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backend-repo-architecture/references/entrypoint-and-config.md +0 -0
  187. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backend-repo-architecture/references/repo-evidence.md +0 -0
  188. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backend-repo-architecture/references/structure-patterns.md +0 -0
  189. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backend-repo-architecture/references/troubleshooting.md +0 -0
  190. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backlog/SKILL.md +0 -0
  191. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/backlog/item-template.md +0 -0
  192. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/browser-testing-with-devtools/SKILL.md +0 -0
  193. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/bug-hunt/SKILL.md +0 -0
  194. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/ci-cd-and-automation/SKILL.md +0 -0
  195. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/code-simplification/SKILL.md +0 -0
  196. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/component-design/SKILL.md +0 -0
  197. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/configargparse-yaml-env-layering/README.md +0 -0
  198. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/configargparse-yaml-env-layering/SKILL.md +0 -0
  199. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/configargparse-yaml-env-layering/references/config-layering-anatomy.md +0 -0
  200. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/configargparse-yaml-env-layering/references/mode-dispatch-and-precedence.md +0 -0
  201. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/configargparse-yaml-env-layering/references/repo-evidence.md +0 -0
  202. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/consolidate-learnings/SKILL.md +0 -0
  203. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/containerization-and-deployment/README.md +0 -0
  204. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/containerization-and-deployment/SKILL.md +0 -0
  205. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/containerization-and-deployment/references/deployment-and-secrets.md +0 -0
  206. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/containerization-and-deployment/references/dockerfile-and-compose.md +0 -0
  207. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/containerization-and-deployment/references/entrypoint-and-modes.md +0 -0
  208. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/containerization-and-deployment/references/kerberos-kinit-bootstrap.md +0 -0
  209. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/containerization-and-deployment/references/makefile-dev-workflow.md +0 -0
  210. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/containerization-and-deployment/references/repo-evidence.md +0 -0
  211. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/context-engineering/SKILL.md +0 -0
  212. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/cron-and-scheduled-jobs/README.md +0 -0
  213. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/cron-and-scheduled-jobs/SKILL.md +0 -0
  214. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/cron-and-scheduled-jobs/references/choosing-and-operations.md +0 -0
  215. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/cron-and-scheduled-jobs/references/kubernetes-cronjob.md +0 -0
  216. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/cron-and-scheduled-jobs/references/repo-evidence.md +0 -0
  217. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/cron-and-scheduled-jobs/references/temporal-schedules.md +0 -0
  218. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/data-engineering-bigquery-gcs/README.md +0 -0
  219. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/data-engineering-bigquery-gcs/SKILL.md +0 -0
  220. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/data-engineering-bigquery-gcs/references/bigquery-advanced-patterns.md +0 -0
  221. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/data-engineering-bigquery-gcs/references/bigquery-gcs-io.md +0 -0
  222. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/data-engineering-bigquery-gcs/references/medallion-architecture.md +0 -0
  223. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/data-engineering-bigquery-gcs/references/repo-evidence.md +0 -0
  224. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/data-engineering-bigquery-gcs/references/temp-table-merge-pattern.md +0 -0
  225. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/debugging-and-error-recovery/SKILL.md +0 -0
  226. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/decision/SKILL.md +0 -0
  227. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/decision/adr-template.md +0 -0
  228. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dependency-verification/SKILL.md +0 -0
  229. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/deploy/SKILL.md +0 -0
  230. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-patterns-and-conventions/README.md +0 -0
  231. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-patterns-and-conventions/SKILL.md +0 -0
  232. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-patterns-and-conventions/references/anti-patterns.md +0 -0
  233. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-patterns-and-conventions/references/naming-and-layout.md +0 -0
  234. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-patterns-and-conventions/references/patterns-catalog.md +0 -0
  235. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-patterns-and-conventions/references/repo-evidence.md +0 -0
  236. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-patterns-and-conventions/references/testing-patterns.md +0 -0
  237. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-patterns-and-conventions/references/troubleshooting.md +0 -0
  238. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-system-ops/README.md +0 -0
  239. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-system-ops/SKILL.md +0 -0
  240. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-system-ops/references/ai-readiness.md +0 -0
  241. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-system-ops/references/drift-detection.md +0 -0
  242. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-system-ops/references/governance-and-adoption.md +0 -0
  243. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-system-ops/references/system-health-and-maturity.md +0 -0
  244. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/design-system-ops/references/token-architecture.md +0 -0
  245. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/doc-consolidation/SKILL.md +0 -0
  246. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-compose/README.md +0 -0
  247. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-compose/SKILL.md +0 -0
  248. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-compose/references/compose-services-and-healthchecks.md +0 -0
  249. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-compose/references/compose-skeletons.md +0 -0
  250. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-compose/references/dev-vs-prod-variants.md +0 -0
  251. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-compose/references/repo-evidence.md +0 -0
  252. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-shared/README.md +0 -0
  253. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-shared/SKILL.md +0 -0
  254. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-shared/references/dockerignore-and-build-secrets.md +0 -0
  255. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-shared/references/repo-evidence.md +0 -0
  256. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-shared/references/shared-base-images.md +0 -0
  257. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/docker-shared/references/shared-compose-fragments.md +0 -0
  258. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-backend/README.md +0 -0
  259. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-backend/SKILL.md +0 -0
  260. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-backend/references/backend-dockerfile-anatomy.md +0 -0
  261. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-backend/references/repo-evidence.md +0 -0
  262. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-backend/references/system-deps-and-caching.md +0 -0
  263. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-frontend/README.md +0 -0
  264. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-frontend/SKILL.md +0 -0
  265. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-frontend/references/build-args-and-nginx.md +0 -0
  266. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-frontend/references/frontend-dockerfile-anatomy.md +0 -0
  267. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/dockerfile-frontend/references/repo-evidence.md +0 -0
  268. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/documentation-and-adrs/SKILL.md +0 -0
  269. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/doubt-driven-development/SKILL.md +0 -0
  270. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/edge-to-service-trust-boundary/README.md +0 -0
  271. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/edge-to-service-trust-boundary/SKILL.md +0 -0
  272. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/edge-to-service-trust-boundary/references/repo-evidence.md +0 -0
  273. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/edge-to-service-trust-boundary/references/trust-contract.md +0 -0
  274. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/execute/SKILL.md +0 -0
  275. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/fastapi-service-patterns/README.md +0 -0
  276. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/fastapi-service-patterns/SKILL.md +0 -0
  277. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/fastapi-service-patterns/references/api-versioning.md +0 -0
  278. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/fastapi-service-patterns/references/app-factory-and-lifespan.md +0 -0
  279. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/fastapi-service-patterns/references/custom-route-and-middleware.md +0 -0
  280. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/fastapi-service-patterns/references/dependency-injection.md +0 -0
  281. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/fastapi-service-patterns/references/model-and-serialization-patterns.md +0 -0
  282. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/fastapi-service-patterns/references/repo-evidence.md +0 -0
  283. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/file-export-and-reporting/README.md +0 -0
  284. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/file-export-and-reporting/SKILL.md +0 -0
  285. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/file-export-and-reporting/references/excel-generation.md +0 -0
  286. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/file-export-and-reporting/references/repo-evidence.md +0 -0
  287. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/file-export-and-reporting/references/streaming-and-downloads.md +0 -0
  288. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/frontend-repo-architecture/README.md +0 -0
  289. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/frontend-repo-architecture/SKILL.md +0 -0
  290. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/frontend-repo-architecture/references/api-layer-and-types.md +0 -0
  291. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/frontend-repo-architecture/references/divergences.md +0 -0
  292. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/frontend-repo-architecture/references/repo-evidence.md +0 -0
  293. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/frontend-repo-architecture/references/structure-and-state.md +0 -0
  294. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/frontend-repo-architecture/references/testing-patterns.md +0 -0
  295. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/frontend-ui-engineering/SKILL.md +0 -0
  296. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcp-cloud-run-github-actions/README.md +0 -0
  297. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcp-cloud-run-github-actions/SKILL.md +0 -0
  298. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcp-cloud-run-github-actions/references/cloud-run-deploy.md +0 -0
  299. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcp-cloud-run-github-actions/references/repo-evidence.md +0 -0
  300. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcp-cloud-run-github-actions/references/workflow-structure.md +0 -0
  301. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcs-file-storage-patterns/README.md +0 -0
  302. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcs-file-storage-patterns/SKILL.md +0 -0
  303. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcs-file-storage-patterns/references/client-and-uploads.md +0 -0
  304. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcs-file-storage-patterns/references/repo-evidence.md +0 -0
  305. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/gcs-file-storage-patterns/references/signed-urls-and-reads.md +0 -0
  306. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/git-workflow-and-versioning/SKILL.md +0 -0
  307. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/grafana-dashboards-and-alerts/README.md +0 -0
  308. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/grafana-dashboards-and-alerts/SKILL.md +0 -0
  309. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/grafana-dashboards-and-alerts/references/dashboard-json-and-templating.md +0 -0
  310. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/grafana-dashboards-and-alerts/references/provisioning-and-organization.md +0 -0
  311. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/grafana-dashboards-and-alerts/references/red-dashboard-skeleton.md +0 -0
  312. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/grafana-dashboards-and-alerts/references/red-metrics-queries.md +0 -0
  313. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/grafana-dashboards-and-alerts/references/repo-evidence.md +0 -0
  314. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/grafana-dashboards-and-alerts/references/unified-alerting.md +0 -0
  315. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/graphql-patterns/README.md +0 -0
  316. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/graphql-patterns/SKILL.md +0 -0
  317. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/graphql-patterns/references/apollo-client-frontend.md +0 -0
  318. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/graphql-patterns/references/apollo-client-setup.md +0 -0
  319. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/graphql-patterns/references/repo-evidence.md +0 -0
  320. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/graphql-patterns/references/strawberry-backend.md +0 -0
  321. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/graphql-patterns/references/when-to-use-graphql.md +0 -0
  322. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/idea-refine/SKILL.md +0 -0
  323. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/idea-refine/examples.md +0 -0
  324. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/idea-refine/frameworks.md +0 -0
  325. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/idea-refine/refinement-criteria.md +0 -0
  326. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/idea-refine/scripts/idea-refine.sh +0 -0
  327. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/incident-postmortem/SKILL.md +0 -0
  328. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/incremental-implementation/SKILL.md +0 -0
  329. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/interview-me/SKILL.md +0 -0
  330. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kafka-config-driven/README.md +0 -0
  331. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kafka-config-driven/SKILL.md +0 -0
  332. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kafka-config-driven/references/config-and-sasl-kerberos.md +0 -0
  333. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kafka-config-driven/references/consumer-producer-patterns.md +0 -0
  334. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kafka-config-driven/references/repo-evidence.md +0 -0
  335. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kafka-config-driven/references/troubleshooting-and-patterns.md +0 -0
  336. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubectl-operations/README.md +0 -0
  337. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubectl-operations/SKILL.md +0 -0
  338. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubectl-operations/references/command-reference.md +0 -0
  339. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubectl-operations/references/context-namespace-rbac.md +0 -0
  340. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubectl-operations/references/debugging-playbooks.md +0 -0
  341. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubectl-operations/references/output-formats-and-selectors.md +0 -0
  342. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubectl-operations/references/repo-evidence.md +0 -0
  343. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubernetes-workload-hardening/README.md +0 -0
  344. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubernetes-workload-hardening/SKILL.md +0 -0
  345. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubernetes-workload-hardening/references/networkpolicy-and-rbac.md +0 -0
  346. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubernetes-workload-hardening/references/repo-evidence.md +0 -0
  347. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/kubernetes-workload-hardening/references/securitycontext-and-podsecurity.md +0 -0
  348. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/langfuse-llm-tracing/README.md +0 -0
  349. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/langfuse-llm-tracing/SKILL.md +0 -0
  350. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/langfuse-llm-tracing/references/langfuse-client-and-tracing.md +0 -0
  351. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/langfuse-llm-tracing/references/python-and-typescript.md +0 -0
  352. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/langfuse-llm-tracing/references/repo-evidence.md +0 -0
  353. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/manual-test/SKILL.md +0 -0
  354. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/modernization-and-migration/README.md +0 -0
  355. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/modernization-and-migration/SKILL.md +0 -0
  356. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/modernization-and-migration/references/migration-best-practices.md +0 -0
  357. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/modernization-and-migration/references/pydantic-v1-to-v2.md +0 -0
  358. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/modernization-and-migration/references/repo-evidence.md +0 -0
  359. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/modernization-and-migration/references/shared-internal-library.md +0 -0
  360. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/modernization-and-migration/references/sqlalchemy-14-to-20.md +0 -0
  361. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/multi-tenancy-patterns/README.md +0 -0
  362. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/multi-tenancy-patterns/SKILL.md +0 -0
  363. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/multi-tenancy-patterns/references/caching-patterns.md +0 -0
  364. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/multi-tenancy-patterns/references/isolation-strategies.md +0 -0
  365. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/multi-tenancy-patterns/references/repo-evidence.md +0 -0
  366. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/multi-tenancy-patterns/references/tenant-resolution.md +0 -0
  367. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-express-service/README.md +0 -0
  368. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-express-service/SKILL.md +0 -0
  369. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-express-service/references/app-factory-and-mode-dispatch.md +0 -0
  370. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-express-service/references/config-and-module-alias.md +0 -0
  371. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-express-service/references/middleware-patterns.md +0 -0
  372. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-express-service/references/repo-evidence.md +0 -0
  373. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-objection-knex/README.md +0 -0
  374. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-objection-knex/SKILL.md +0 -0
  375. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-objection-knex/references/migrations-and-validation.md +0 -0
  376. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-objection-knex/references/objection-model-and-knex.md +0 -0
  377. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/node-objection-knex/references/repo-evidence.md +0 -0
  378. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/notifications-and-messaging/README.md +0 -0
  379. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/notifications-and-messaging/references/provider-abstraction.md +0 -0
  380. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/notifications-and-messaging/references/repo-evidence.md +0 -0
  381. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/notifications-and-messaging/references/templates-and-fallback.md +0 -0
  382. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/observability-and-logging/README.md +0 -0
  383. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/observability-and-logging/SKILL.md +0 -0
  384. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/observability-and-logging/references/health-and-readiness.md +0 -0
  385. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/observability-and-logging/references/logging-and-structlog.md +0 -0
  386. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/observability-and-logging/references/outbound-metrics-and-multi-mode.md +0 -0
  387. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/observability-and-logging/references/pii-redaction.md +0 -0
  388. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/observability-and-logging/references/repo-evidence.md +0 -0
  389. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/observability-and-logging/references/tracing-and-metrics.md +0 -0
  390. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/otel-tracing/README.md +0 -0
  391. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/otel-tracing/SKILL.md +0 -0
  392. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/otel-tracing/references/collector.md +0 -0
  393. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/otel-tracing/references/correlation.md +0 -0
  394. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/otel-tracing/references/gotchas.md +0 -0
  395. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/otel-tracing/references/instrumentation.md +0 -0
  396. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/otel-tracing/references/sampling.md +0 -0
  397. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/otel-tracing/references/tempo.md +0 -0
  398. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/performance-optimization/SKILL.md +0 -0
  399. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/planning-and-task-breakdown/SKILL.md +0 -0
  400. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/playwright-verification/SKILL.md +0 -0
  401. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/pydantic-schema-patterns/README.md +0 -0
  402. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/pydantic-schema-patterns/SKILL.md +0 -0
  403. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/pydantic-schema-patterns/references/repo-evidence.md +0 -0
  404. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/pydantic-schema-patterns/references/settings-and-validation.md +0 -0
  405. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/pydantic-schema-patterns/references/troubleshooting-and-common-errors.md +0 -0
  406. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/pydantic-schema-patterns/references/v1-vs-v2.md +0 -0
  407. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/python-dao-and-database/README.md +0 -0
  408. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/python-dao-and-database/SKILL.md +0 -0
  409. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/python-dao-and-database/references/advanced-query-patterns.md +0 -0
  410. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/python-dao-and-database/references/basedao-and-sessions.md +0 -0
  411. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/python-dao-and-database/references/mongodb-advanced.md +0 -0
  412. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/python-dao-and-database/references/other-db-mongodb.md +0 -0
  413. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/python-dao-and-database/references/repo-evidence.md +0 -0
  414. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/python-dao-and-database/references/sqlalchemy-1x-vs-2x.md +0 -0
  415. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/radix-tailwind-component-patterns/README.md +0 -0
  416. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/radix-tailwind-component-patterns/SKILL.md +0 -0
  417. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/radix-tailwind-component-patterns/references/radix-primitives-and-variants.md +0 -0
  418. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/radix-tailwind-component-patterns/references/repo-evidence.md +0 -0
  419. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/radix-tailwind-component-patterns/references/tailwind-theme-and-cn.md +0 -0
  420. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/react-hook-form-zod-patterns/README.md +0 -0
  421. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/react-hook-form-zod-patterns/SKILL.md +0 -0
  422. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/react-hook-form-zod-patterns/references/form-setup-and-zod.md +0 -0
  423. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/react-hook-form-zod-patterns/references/multi-step-and-modes.md +0 -0
  424. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/react-hook-form-zod-patterns/references/repo-evidence.md +0 -0
  425. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/redis-caching-patterns/README.md +0 -0
  426. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/redis-caching-patterns/references/cache-manager-and-fallback.md +0 -0
  427. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/redis-caching-patterns/references/namespacing-and-invalidation.md +0 -0
  428. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/redis-caching-patterns/references/repo-evidence.md +0 -0
  429. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/refresh-docs/SKILL.md +0 -0
  430. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/remember/SKILL.md +0 -0
  431. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/safety-critical-patterns/SKILL.md +0 -0
  432. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/scope/SKILL.md +0 -0
  433. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/scope/scope-template.md +0 -0
  434. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/sdlc/SKILL.md +0 -0
  435. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/security-and-hardening/SKILL.md +0 -0
  436. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/security-and-hardening/references/input-validation-and-uploads.md +0 -0
  437. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/security-and-hardening/references/llm-guardrails.md +0 -0
  438. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/security-and-hardening/references/owasp-top10-prevention.md +0 -0
  439. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/security-and-hardening/references/supply-chain-and-dependencies.md +0 -0
  440. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/security-verification/SKILL.md +0 -0
  441. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/shannon-ai-pentest/README.md +0 -0
  442. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/shannon-ai-pentest/SKILL.md +0 -0
  443. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/shannon-ai-pentest/references/operating-guide.md +0 -0
  444. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/shell-review/SKILL.md +0 -0
  445. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/shipping-and-launch/SKILL.md +0 -0
  446. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/simplification-debt/SKILL.md +0 -0
  447. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/smoke-test/SKILL.md +0 -0
  448. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/source-driven-development/SKILL.md +0 -0
  449. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/spec-driven-development/SKILL.md +0 -0
  450. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/sprint/SKILL.md +0 -0
  451. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/sprint/sprint-template.md +0 -0
  452. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/tanstack-react-query-patterns/README.md +0 -0
  453. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/tanstack-react-query-patterns/SKILL.md +0 -0
  454. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/tanstack-react-query-patterns/references/mutations-and-cache.md +0 -0
  455. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/tanstack-react-query-patterns/references/query-keys-and-hooks.md +0 -0
  456. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/tanstack-react-query-patterns/references/repo-evidence.md +0 -0
  457. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/task-tracker-sync/SKILL.md +0 -0
  458. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-config-driven/README.md +0 -0
  459. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-config-driven/SKILL.md +0 -0
  460. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-config-driven/references/config-and-retry-idempotency.md +0 -0
  461. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-config-driven/references/dag-dsl-interpreter.md +0 -0
  462. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-config-driven/references/repo-evidence.md +0 -0
  463. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-config-driven/references/schedule-registration.md +0 -0
  464. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-config-driven/references/schedules-and-cron.md +0 -0
  465. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-config-driven/references/worker-workflow-activity-patterns.md +0 -0
  466. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-developer/README.md +0 -0
  467. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-developer/SKILL.md +0 -0
  468. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-developer/references/cli.md +0 -0
  469. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-developer/references/determinism.md +0 -0
  470. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-developer/references/gotchas.md +0 -0
  471. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-developer/references/languages.md +0 -0
  472. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-developer/references/testing.md +0 -0
  473. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/temporal-developer/references/versioning.md +0 -0
  474. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/test-driven-development/SKILL.md +0 -0
  475. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/test-plan-review/SKILL.md +0 -0
  476. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/README.md +0 -0
  477. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/references/async-and-mocking.md +0 -0
  478. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/references/coverage-gap-and-recommendations.md +0 -0
  479. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/references/github-actions-test-orchestration.md +0 -0
  480. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/references/pytest-and-fixtures.md +0 -0
  481. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/references/pytest-asyncio-modes.md +0 -0
  482. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/references/repo-evidence.md +0 -0
  483. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/references/security-regression-tests.md +0 -0
  484. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/testing-conventions/references/vitest-frontend-testing.md +0 -0
  485. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/threat-model/SKILL.md +0 -0
  486. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/triage/SKILL.md +0 -0
  487. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/ui-ux-design/SKILL.md +0 -0
  488. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/unit-test/SKILL.md +0 -0
  489. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/using-agent-skills/SKILL.md +0 -0
  490. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/vitest-rtl-msw-patterns/README.md +0 -0
  491. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/vitest-rtl-msw-patterns/SKILL.md +0 -0
  492. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/vitest-rtl-msw-patterns/references/msw-and-contract-tests.md +0 -0
  493. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/vitest-rtl-msw-patterns/references/repo-evidence.md +0 -0
  494. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/vitest-rtl-msw-patterns/references/vitest-rtl-setup.md +0 -0
  495. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zap-vapt-scanning/README.md +0 -0
  496. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zap-vapt-scanning/SKILL.md +0 -0
  497. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zap-vapt-scanning/references/operating-guide.md +0 -0
  498. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zap-vapt-scanning/scripts/endpoints.example.txt +0 -0
  499. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zap-vapt-scanning/scripts/requirements.txt +0 -0
  500. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zap-vapt-scanning/scripts/zap_vapt.py +0 -0
  501. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zustand-state-patterns/README.md +0 -0
  502. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zustand-state-patterns/SKILL.md +0 -0
  503. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zustand-state-patterns/references/async-polling-and-persistence.md +0 -0
  504. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zustand-state-patterns/references/repo-evidence.md +0 -0
  505. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/skills/zustand-state-patterns/references/store-structure-and-selectors.md +0 -0
  506. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/__main__.py +0 -0
  507. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/catalog.py +0 -0
  508. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/cli.py +0 -0
  509. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/detect.py +0 -0
  510. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/export.py +0 -0
  511. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/hooks.py +0 -0
  512. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/models.py +0 -0
  513. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/pipeline.py +0 -0
  514. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/prompts.py +0 -0
  515. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/render.py +0 -0
  516. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/report.py +0 -0
  517. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/scaffold.py +0 -0
  518. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/schemas.py +0 -0
  519. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/upgrader.py +0 -0
  520. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/src/claude_kit/validator.py +0 -0
  521. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/CLAUDE.md +0 -0
  522. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/CLAUDE.stack.md.tmpl +0 -0
  523. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/CONTINUITY.template.md +0 -0
  524. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/README.claude-sdlc.md.tmpl +0 -0
  525. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/agent-memory/MEMORY.md +0 -0
  526. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/agent-memory/api/.gitkeep +0 -0
  527. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/agent-memory/architecture/.gitkeep +0 -0
  528. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/agent-memory/debugging/.gitkeep +0 -0
  529. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/agent-memory/gotchas/.gitkeep +0 -0
  530. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/agent-memory/patterns/.gitkeep +0 -0
  531. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/agent-memory/performance/.gitkeep +0 -0
  532. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/artifacts/adr.md +0 -0
  533. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/artifacts/api-change-report.md +0 -0
  534. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/artifacts/change-proposal.md +0 -0
  535. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/artifacts/feature-spec.md +0 -0
  536. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/artifacts/release-plan.md +0 -0
  537. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/artifacts/runbook.md +0 -0
  538. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/artifacts/security-review.md +0 -0
  539. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/artifacts/test-plan.md +0 -0
  540. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/export/sdlc-workflow-guide.md.tmpl +0 -0
  541. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/README.md +0 -0
  542. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/agents/data-workflow-agent.md +0 -0
  543. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/agents/founder-prototype-agent.md +0 -0
  544. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/agents/internal-tools-builder.md +0 -0
  545. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/agents/pm-copilot.md +0 -0
  546. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/agents/staff-pm-reviewer.md +0 -0
  547. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/agents/support-ticket-engineer.md +0 -0
  548. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/devops-and-release/README.md +0 -0
  549. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/devops-and-release/pack.yaml +0 -0
  550. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/engineering-core/README.md +0 -0
  551. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/engineering-core/pack.yaml +0 -0
  552. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/non-engineer-builder/README.md +0 -0
  553. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/non-engineer-builder/pack.yaml +0 -0
  554. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/onboarding-and-docs/README.md +0 -0
  555. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/onboarding-and-docs/pack.yaml +0 -0
  556. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/product-to-code/README.md +0 -0
  557. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/product-to-code/pack.yaml +0 -0
  558. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/quality-and-review/README.md +0 -0
  559. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/quality-and-review/pack.yaml +0 -0
  560. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/security-and-compliance/README.md +0 -0
  561. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/packs/security-and-compliance/pack.yaml +0 -0
  562. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/ai-working-agreement.md +0 -0
  563. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/ambiguity-resolution.md +0 -0
  564. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/branch-and-pr-policy.md +0 -0
  565. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/compliance-policy.md +0 -0
  566. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/non-engineer-safe-coding.md +0 -0
  567. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/pii-policy.md +0 -0
  568. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/production-data-policy.md +0 -0
  569. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/prompt-to-task-conversion.md +0 -0
  570. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/prototype-boundaries.md +0 -0
  571. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/rules/secrets-policy.md +0 -0
  572. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/customer-issue-to-fix/SKILL.md +0 -0
  573. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/feature-from-idea/SKILL.md +0 -0
  574. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/prompt-to-safe-task/SKILL.md +0 -0
  575. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/prototype-to-production/SKILL.md +0 -0
  576. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/repo-onboarding/SKILL.md +0 -0
  577. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/review-scope/SKILL.md +0 -0
  578. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/review-sprint/SKILL.md +0 -0
  579. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/review-sprint-plan/SKILL.md +0 -0
  580. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/org/skills/review-ux-flow/SKILL.md +0 -0
  581. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/scripts/sdlc-loop.sh +0 -0
  582. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/settings.json +0 -0
  583. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/backend/go/net-http/rules/go-patterns.md +0 -0
  584. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/backend/python/fastapi/rules/fastapi-patterns.md +0 -0
  585. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/db/mongodb/agents/migration-specialist.md +0 -0
  586. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/db/mongodb/agents/mongodb-specialist.md +0 -0
  587. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/db/mongodb/rules/mongodb-patterns.md +0 -0
  588. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/db/postgres/agents/db-performance-reviewer.md +0 -0
  589. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/db/postgres/agents/migration-specialist.md +0 -0
  590. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/db/postgres/agents/postgres-specialist.md +0 -0
  591. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/db/postgres/rules/database-performance.md +0 -0
  592. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/db/postgres/rules/postgres-patterns.md +0 -0
  593. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/frontend/react/rules/design-system-compliance.md +0 -0
  594. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/frontend/react/rules/mobile-design-guidelines.md +0 -0
  595. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/frontend/react/rules/react-patterns.md +0 -0
  596. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/frontend/react/rules/ui-components.md +0 -0
  597. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/frontend/react/rules/ui-design-system.md +0 -0
  598. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/frontend/react/rules/ui-layout-and-motion.md +0 -0
  599. {claude_code_kit-0.63.0 → claude_code_kit-0.64.0}/templates/stacks/frontend/react/rules/ux-dashboard-patterns.md +0 -0
  600. {claude_code_kit-0.63.0 → claude_code_kit-0.64.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.63.0",
13
+ "version": "0.64.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.63.0",
3
+ "version": "0.64.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,82 @@ 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.64.0] — 2026-07-16
8
+
9
+ **Curated engineering-writing sweep — folding widely-taught senior-engineer patterns into the
10
+ existing skill/rule set.** Prompted by a request to learn from a Medium post on "coding patterns
11
+ from senior engineers" and, more broadly, from the canon of freely-readable engineering writing
12
+ (SRE Book, AWS Builders' Library, Google's API Design Guide & Eng Practices, Martin Fowler,
13
+ Brendan Gregg, and the classic distributed-systems / "boring technology" essays). Every pattern
14
+ was checked against what the kit already ships and adopted **only where genuinely novel**;
15
+ everything is re-derived as stack-agnostic prose and **attributed to its public source, never
16
+ vendored**. Reuse-first per golden rule #7 — **0 new skills, agents, or rules; 0 new components**.
17
+ All additions are append-only `###` subsections; no headings were renumbered (cross-refs stay
18
+ stable). (0.63.0 is reserved by the in-flight chrome-devtools-mcp PR #90 — merge that first; see
19
+ the version note in this PR.)
20
+
21
+ ### Added
22
+
23
+ - **`resilience-engineering` rule — CAP/PACELC as a design-time lens** and a **"Fallbacks and
24
+ shedding — the sharp edges"** subsection: a provider-wide outage flips *all* traffic to the
25
+ secondary at once, so size the fallback for full load (or shed) and exercise it — an untested
26
+ fallback amplifies the outage (static-stability framing, per the AWS Builders' Library).
27
+ - **`devops-observability` rule — "Error budgets as a control loop"**: the budget is the shared
28
+ release/reliability throttle — burn it fast → freeze features and spend on stability; hold it →
29
+ spend it on velocity (per the Google SRE Book).
30
+ - **`_references/performance-checklist` — "Network Latency Fundamentals"**: the order-of-magnitude
31
+ latency table (L1/RAM/SSD/disk/same-DC RTT/cross-region RTT) as the back-of-envelope every design
32
+ review should start from (per "Latency Numbers Every Programmer Should Know", Dean/Norvig).
33
+ - **`load-testing` — on-CPU vs off-CPU time**, Amdahl's Law, and the Universal Scalability Law:
34
+ why throughput can *fall* under load (coherency/contention), not just plateau (per Brendan Gregg
35
+ on off-CPU analysis and Neil Gunther's USL).
36
+ - **`library-review` — "Boring is a feature (innovation-token budget)"**: spend a small, finite
37
+ budget of novelty on the few places it's a differentiator; default to proven tech elsewhere
38
+ (per Dan McKinley, "Choose Boring Technology").
39
+ - **`over-engineering-review` — "The wrong abstraction"**: a bad abstraction costs more than
40
+ duplication; inlining back to duplication is legitimate, not regression (per Sandi Metz).
41
+ - **`deprecation-and-migration` — "Parallel Change (Expand → Migrate → Contract)"**: the
42
+ three-phase safe-rename/evolve discipline (per Martin Fowler / Danilo Sato), resolving a
43
+ dangling cross-reference from the planning skill.
44
+ - **`api-pagination-filtering-sorting` — cursor/keyset pagination vs offset**: why `OFFSET n`
45
+ degrades and drifts under concurrent writes, and when a stable cursor is required.
46
+ - **`redis-caching-patterns` — cache-stampede protection for hot keys**: single-flight/request
47
+ coalescing plus probabilistic early expiration (per the AWS Builders' Library and the XFetch
48
+ scheme, Vattani et al.), with a matching anti-pattern entry.
49
+ - **`api-and-interface-design` — three additions**: decouple the API surface from the storage
50
+ schema (DTO/serializer seam), **Idempotency-Key** mutations with stored-result replay, and
51
+ **Long-Running Operations** (202 + pollable operation resource) — per Stripe's idempotency
52
+ design and the Google API Design Guide; plus three matching Red Flags.
53
+ - **`testing-conventions` — Consumer-Driven Contract testing** across services: the consumer
54
+ publishes a pact, the provider replays every consumer's pact in its own CI (per Fowler / Ian
55
+ Robinson) — the cross-service twin of the existing contract-testing pipeline.
56
+ - **`code-review-and-quality` — "If you cannot understand it, that *is* the finding"**:
57
+ incomprehensibility is a defect; "I don't understand this — please clarify or simplify" is a
58
+ legitimate blocking review comment (per Google's Code Review Developer Guide).
59
+ - **`notifications-and-messaging` — fallback-amplification caveat** on the provider fallback
60
+ chain, cross-linked to the new `resilience-engineering` static-stability note.
61
+
62
+ ### Changed
63
+
64
+ - Appended a row to `docs/influences.md` recording this curated engineering-writing sweep.
65
+
66
+ ### Not adopted (deliberately)
67
+
68
+ - **"Master the tools you hate" / "order-of-magnitude exploration" / "bottom-up strategy
69
+ synthesis"** — real senior habits, but meta-advice about how an engineer works, not
70
+ stack-agnostic engineering *conventions* the kit can enforce or check. Out of the kit's lane.
71
+ - **"A shared platform scales the org"** — already the throughline of `library-review` and the
72
+ YAGNI/over-engineering skills; adding it verbatim would duplicate, not extend.
73
+ - **"Separate simple from easy" (Rich Hickey, *Simple Made Easy*)** — its operative advice already
74
+ lives in `over-engineering-review` and `code-simplification`; folding in the vocabulary added no
75
+ new decision the reviewer could act on.
76
+ - **Mechanical-sympathy detail (cache-line/false-sharing/data-locality)** — below the kit's
77
+ abstraction level; the kept latency table gives the right-altitude version without prescribing
78
+ memory-layout tactics no stack-agnostic reviewer can apply.
79
+ - **Per-client request-rate estimation for capacity** — fragile in practice and already covered by
80
+ the retry-budget / load-shedding guidance in `resilience-engineering`.
81
+ - **No new skills/agents/rules.** Every pattern above extends an existing file; nothing warranted a
82
+ new component (reuse-first, golden rule #7). Component counts are unchanged.
7
83
  ## [0.63.0] — 2026-07-16
8
84
 
9
85
  **Catalog fix — the `auditor` agent can finally get the MCP server it depends on.** The `auditor`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-code-kit
3
- Version: 0.63.0
3
+ Version: 0.64.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
@@ -32,6 +32,7 @@ non-duplicative gaps**, minimally and catalog-wired.
32
32
  | **[facebook](https://github.com/facebook) (Meta) org review** (all 168 repos) | Interprocedural taint / data-flow security analysis (source→sink across functions); continuous A/B performance-regression CI gate; defense-in-depth agent-sandbox enforcement (argument validation + OS-level backstop) | Prose extensions to `linting-and-formatting` (taint/data-flow layer), `devops-observability` (perf-regression gate), `agent-guardrails` (§4 layered sandbox enforcement) — **0 new agents/skills/rules** (from pyre-check/Pysa · mariana-trench · FAI-PEP · mcpguard-dynamic; the org is mostly libraries/frameworks, so the verify pass *dropped* the rest — `DNE-TaaC`, `mbt`, plus already-covered `infer`/`mariana-trench`-as-tool, `fbt`, `memlab`, …) | `0.52.0` |
33
33
  | **[Netflix](https://github.com/Netflix) · [aws](https://github.com/aws) · [apple](https://github.com/apple) org review** (all **1,214** repos) | Service-level resilience the kit lacked entirely — stability patterns (timeout/retry-budget/circuit-breaker/bulkhead) + adaptive concurrency limiting, chaos engineering, and bounded-clock distributed time; failure-domain-aware progressive rollout; deterministic simulation testing; a formal RFC process (working-backwards + API bar-raiser); continuous usage-based least-privilege | The **new `resilience-engineering` rule** (chaos + stability patterns + bounded clocks, from `Netflix/concurrency-limits` · `Netflix/chaosmonkey` · `aws/clock-bound`); plus prose extensions to `devops-observability` (failure-domain rollout, from `aws/zone-aware-controllers-for-k8s`), `testing` (deterministic simulation testing, from `apple/foundationdb`), `spec-driven-development` (RFC track, from `aws/aws-cdk-rfcs`), and `security-and-hardening` (continuous least-privilege, from `Netflix/repokid`) — **1 new rule, 0 new agents/skills** (the orgs are overwhelmingly SDKs/CLIs/services, so the survey kept only 7 of 1,214) | `0.53.0` |
34
34
  | **1,345-repo OSS adoption scan** (39 provenance-tagged searches across the AI/Claude/MCP/context ecosystem; 76 verified adoption ideas → 30-item backlog) | Agent-config supply-chain vetting + toxic-flow legs taxonomy; hidden-Unicode detection; content-type-aware **reversible** output compression (~200-token floor) + "think in code" (from Apache-2.0 `headroomlabs-ai/headroom` · `gsd-build/get-shit-done`; deterministic shell-side companion `rtk-ai/rtk`, referenced); symbol-first retrieval ladder (from MIT `oraios/serena` · `MinishLab/semble`); budget-visible statusline HUDs (`jarrodwatts/claude-hud`, referenced); tribal-standards elicitation (from `buildermethods/agent-os`); evidence-based test nagging + falsifiability eval discipline (from `maxritter/pilot-shell`); colocated skill evals (from `darkrishabh/agent-skills-eval`) | Waves across `dependency-verification` (vetting canon), `catalog/mcp.yaml` (+5 fragments → 22, all leg-annotated), `validator.py` (Unicode scan + INFO channel), **new `check_cross_references.py` CI gardener**, `context-engineering` (compression recipes · 5th primitive · retrieval ladder · budget visibility · pressure symptoms · tribal test), `tool-design`, `evals` §9–10 + `eval-harness`, `agent-guardrails` §3/§4, orchestrator VALIDATE, consolidate-learnings Promote, and ~10 more files — **0 new agents/skills, 1 new CI script** | `0.60.0`–`0.62.0` |
35
+ | **Curated engineering-writing sweep** (a Medium "senior-engineer patterns" prompt → the freely-readable canon: Google SRE Book · AWS Builders' Library · Google API Design Guide & Eng Practices · Martin Fowler · Brendan Gregg · Dan McKinley · Sandi Metz · Stripe/Google idempotency & LRO · Dean/Norvig latency numbers) | Design-time CAP/PACELC + static-stability fallback sizing; error budgets as a release throttle; order-of-magnitude latency table; off-CPU/Amdahl/USL scalability; innovation-token budgeting; the wrong-abstraction cost; Parallel Change (expand→migrate→contract); cursor vs offset pagination; cache-stampede (single-flight + XFetch); DTO/storage decoupling + Idempotency-Key + long-running-operation API shapes; consumer-driven contract testing; "if you can't understand it, that's the finding" | Prose extensions to `resilience-engineering` & `devops-observability` rules + 9 skills (`_references/performance-checklist`, `load-testing`, `library-review`, `over-engineering-review`, `deprecation-and-migration`, `api-pagination-filtering-sorting`, `redis-caching-patterns`, `api-and-interface-design`, `testing-conventions`, `code-review-and-quality`, `notifications-and-messaging`) — **0 new agents/skills/rules; component counts unchanged** | `0.64.0` |
35
36
 
36
37
  > Each adoption is detailed in the [CHANGELOG](../CHANGELOG.md) — including, for every review, what we
37
38
  > deliberately **did not** add because the kit already covered it.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "claude-code-kit"
7
- version = "0.63.0"
7
+ version = "0.64.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"
@@ -72,6 +72,25 @@ is gone. The SRE pattern is to alert on **how fast the SLO's error budget is bur
72
72
  > [`google/prometheus-slo-burn-example`](https://github.com/google/prometheus-slo-burn-example).
73
73
  > Re-derived in prose; not vendored — the windows/multipliers are a starting point to tune per SLO.
74
74
 
75
+ ### Error budgets as a control loop (what you *do* when the budget burns)
76
+
77
+ Burn-rate alerting tells you the budget is draining; the error budget is also the **decision rule** for
78
+ the team, not just a dashboard number. Close the loop:
79
+
80
+ - **Spend it, or freeze.** Budget remaining ⇒ you can take launch/velocity risk. Budget **exhausted** ⇒
81
+ **freeze risky launches** and redirect effort to reliability until you are back in budget — an
82
+ automatic, blameless policy agreed in advance, not a per-incident argument.
83
+ - **Don't over-achieve the SLO.** Running far *above* target is not free: it means you spent velocity
84
+ you didn't have to and trained users to depend on reliability you never promised. 100 % is the wrong
85
+ target — the budget exists to be *used*.
86
+ - **Cap toil.** Manual, repetitive operational work should be bounded (a common ceiling is ≤ ~50 % of
87
+ an owner's time); past the cap, **automate it or escalate**, because toil that grows with traffic
88
+ doesn't scale and starves the reliability work the burn-rate signal is asking for.
89
+
90
+ > Per the Google SRE Book (error budgets as a launch-gating policy, "100 % is the wrong target", toil
91
+ > budgets), sre.google/sre-book. Applied in prose as the organizational counterpart to the burn-rate
92
+ > *detection* above.
93
+
75
94
  ### High-volume logging: rate-limit and defer
76
95
 
77
96
  Logging on a hot path or in an error burst can become its own incident — the log call dominates CPU, or
@@ -63,6 +63,43 @@ limit where queueing begins**.
63
63
  > not vendored — the algorithm maps onto any language's concurrency primitive (semaphore, pool, worker
64
64
  > count).
65
65
 
66
+ ### Partition behavior: choose consistency or availability, per operation (CAP/PACELC)
67
+
68
+ When the network **partitions**, a replicated store cannot be both consistent and available for a
69
+ write — it must either **reject** the operation (stay consistent) or **accept** it and risk divergence
70
+ (stay available). This is not one system-wide switch: decide **per operation** by its blast radius.
71
+ "Add to cart" can stay available and reconcile later; "charge the card" or "sell the last unit of
72
+ stock" must reject rather than double-spend. And the trade-off does not vanish when the network is
73
+ healthy — **PACELC**'s *else* clause: absent a partition, you still trade **latency against
74
+ consistency**, because stronger consistency costs coordination round-trips. Set that knob per
75
+ operation too (a stale read is fine for a dashboard, not for an authorization check). Don't take a
76
+ datastore's advertised guarantee on faith — assert the one you depend on with fault injection (§3),
77
+ the way partition testing repeatedly surfaces consistency violations the vendor didn't expect.
78
+
79
+ > Per the CAP / PACELC framing (Eric Brewer; Daniel Abadi) and *Designing Data-Intensive Applications*
80
+ > (Martin Kleppmann); "verify, don't trust the guarantee" follows Kyle Kingsbury's Jepsen partition
81
+ > testing (jepsen.io). Applied in prose to the per-operation choice, independent of any one datastore.
82
+
83
+ ### Fallbacks and shedding — the sharp edges
84
+
85
+ Two of the patterns in the table bite back if applied naively:
86
+
87
+ - **A fallback can amplify the outage it's meant to survive.** If the fallback path itself calls a
88
+ dependency (or retries the failing one), it *adds* load exactly when the system is already failing —
89
+ turning a partial outage into a total one. The safe fallback returns a **static or cached** value and
90
+ introduces **no new dependency at failure time** (*static stability*: pre-provision the answer so the
91
+ degraded path does less work, not more). And always make the fallback **observable** — a silently
92
+ successful fallback masks a real dependency failure.
93
+ - **Under overload, drop work that has already missed its deadline.** A request whose deadline has
94
+ passed is worthless to process — its caller has given up (and likely retried), so serving it burns
95
+ capacity for no one. Check the deadline **at dequeue**, not just at accept, and shed the expired work.
96
+ When saturated, prefer serving the **newest** requests first (LIFO): it keeps *some* requests fast
97
+ instead of making *all* of them uniformly slow and stale.
98
+
99
+ > Per the AWS Builders Library ("Avoiding fallback in distributed systems"; static stability),
100
+ > aws.amazon.com/builders-library, and the CoDel / Google SRE intuition on deadline-aware, LIFO-under-
101
+ > overload queueing. Applied in prose; the discipline is transport- and language-independent.
102
+
66
103
  **Self-check at every remote call:** does it have a timeout and a deadline budget; is its retry
67
104
  idempotent, jittered, and budgeted; is there a breaker so a *down* dependency fails fast; and is its
68
105
  resource pool isolated so it can't starve the rest?
@@ -6,6 +6,7 @@ Quick reference checklist for web application performance. Use alongside the `pe
6
6
 
7
7
  - [Core Web Vitals Targets](#core-web-vitals-targets)
8
8
  - [TTFB Diagnosis](#ttfb-diagnosis)
9
+ - [Network Latency Fundamentals](#network-latency-fundamentals)
9
10
  - [Frontend Checklist](#frontend-checklist)
10
11
  - [Backend Checklist](#backend-checklist)
11
12
  - [Measurement Commands](#measurement-commands)
@@ -27,6 +28,29 @@ When TTFB is slow (> 800ms), check each component in DevTools Network waterfall:
27
28
  - [ ] **TCP/TLS handshake** slow → enable HTTP/2, consider edge deployment, verify keep-alive
28
29
  - [ ] **Server processing** slow → profile backend, check slow queries, add caching
29
30
 
31
+ ## Network Latency Fundamentals
32
+
33
+ On a well-provisioned connection most "slow page" problems are **latency**-bound, not bandwidth-bound —
34
+ past ~5 Mbps, adding bandwidth barely moves page-load time, but every millisecond of round-trip time
35
+ (RTT) does. Know these before optimising:
36
+
37
+ - **RTT is set by distance and bounded by the speed of light** — you can't compress it, only move the
38
+ bytes closer. **Geographic proximity (CDN / edge) is the single biggest RTT lever.**
39
+ - **Each new connection costs round-trips before any data flows** — DNS + TCP handshake (1 RTT) + TLS
40
+ (1–2 RTT). **Reuse connections** (keep-alive, pooling, `preconnect`) so you pay this once, not per request.
41
+ - **TCP slow-start makes a fresh connection slow even on a fast link** — the congestion window ramps up
42
+ over several round-trips, so a cold connection can't use full bandwidth for the first few KB. Another
43
+ reason to reuse warm connections and keep critical responses small.
44
+ - **Head-of-line (HOL) blocking wastes the link.** HTTP/1.1 lets one response block those behind it on a
45
+ connection (the origin of old domain-sharding hacks). **HTTP/2** multiplexes many streams over one
46
+ connection (fixes it at the application layer); a lost packet still stalls all streams at the TCP
47
+ layer, which **HTTP/3 (QUIC over UDP)** fixes at the transport layer. Prefer H2/H3.
48
+ - **Bandwidth-delay product** (bandwidth × RTT) is how much data must be "in flight" to keep the pipe
49
+ full; on a high-RTT link a too-small window/buffer leaves the link idle no matter the bandwidth.
50
+
51
+ > Per Ilya Grigorik, *High Performance Browser Networking* (free full text at hpbn.co). A stack-agnostic
52
+ > primer; the concrete resource hints live in the Network checklist below.
53
+
30
54
  ## Frontend Checklist
31
55
 
32
56
  ### Images
@@ -34,6 +34,20 @@ This means: every public behavior — including undocumented quirks, error messa
34
34
 
35
35
  Avoid forcing consumers to choose between multiple versions of the same dependency or API. Diamond dependency problems arise when different consumers need different versions of the same thing. Design for a world where only one version exists at a time — extend rather than fork.
36
36
 
37
+ ### Decouple the API Surface from the Storage Schema
38
+
39
+ The wire contract and the database schema are two different things that change at two different rates.
40
+ If the API just serializes your tables, every storage refactor (splitting a column, normalizing,
41
+ reshaping for a new index) becomes a *breaking API change*, and conversely every API need distorts the
42
+ schema. Design the resource representation for the **consumer**, then map it to storage explicitly
43
+ through a serializer / DTO layer, so either side can evolve behind that seam. This is why `Task` (the
44
+ output type below) is defined separately from any table row — and why "establishing a database schema
45
+ that informs API shape" (in *When to Use*) means *informs*, never *dictates*: Hyrum's Law makes an
46
+ accidentally-exposed column as permanent as a deliberately-promised field.
47
+
48
+ > Per the Google API Design Guide (resource-oriented design; cloud.google.com/apis/design). Stack-agnostic —
49
+ > the DTO/serializer seam applies equally to REST, GraphQL, and RPC.
50
+
37
51
  ### 1. Contract First
38
52
 
39
53
  Define the interface before implementing it. The contract is the spec — implementation follows.
@@ -206,6 +220,49 @@ PATCH /api/tasks/123
206
220
  { "title": "Updated title" }
207
221
  ```
208
222
 
223
+ ### Idempotent Mutations (Idempotency-Key)
224
+
225
+ A client that retries a `POST` after a timeout must not create the resource twice — but the network
226
+ can't tell the client whether the first attempt actually landed. Let the client send a unique
227
+ **`Idempotency-Key`** header per logical operation; the server records that key with the result of the
228
+ first successful execution and, on any replay of the same key, returns the **stored result** instead of
229
+ re-running the side effect:
230
+
231
+ ```
232
+ POST /api/payments
233
+ Idempotency-Key: 5f3a…-once-per-operation
234
+ { "amount": 4200, "currency": "usd" }
235
+ ```
236
+
237
+ Scope keys per endpoint + caller, give them a retention window (e.g. 24h), and key on the *operation*,
238
+ not the request body (a changed body under a reused key is a client error → `422`). This makes
239
+ create/charge/enqueue endpoints safe to retry — the API-surface counterpart to the at-least-once /
240
+ idempotent-consumer discipline in `.claude/rules/resilience-engineering.md`.
241
+
242
+ > Per Stripe's idempotent-requests design and the Google API Design Guide (cloud.google.com/apis/design).
243
+ > Stack-agnostic; the store behind the key can be any durable KV.
244
+
245
+ ### Long-Running Operations
246
+
247
+ When an operation can't finish within a request (a large export, a provisioning job, a batch), don't
248
+ hold the connection open and don't fake a synchronous `200`. Return **`202 Accepted`** with an
249
+ **operation resource** — a real, pollable URL — and make that operation a first-class resource with its
250
+ own lifecycle, not an out-of-band job id:
251
+
252
+ ```
253
+ POST /api/exports → 202 Accepted, { "operation": "/api/operations/abc" }
254
+ GET /api/operations/abc → { "done": false }
255
+ GET /api/operations/abc → { "done": true, "result": { "url": "/api/exports/abc.csv" } }
256
+ // or { "done": true, "error": { "code": "...", "message": "..." } }
257
+ ```
258
+
259
+ The client polls (or is notified via webhook) until `done`. This keeps the API's latency contract
260
+ honest and its failures observable, instead of hiding a slow job behind a request that will eventually
261
+ time out.
262
+
263
+ > Per the Google API Design Guide's Long-Running Operations pattern (cloud.google.com/apis/design).
264
+ > Stack-agnostic.
265
+
209
266
  ## Type-Safe Interface Patterns
210
267
 
211
268
  ### Use Discriminated Unions for Variants
@@ -280,6 +337,9 @@ function getTask(id: TaskId): Promise<Task> { ... }
280
337
  - List endpoints without pagination
281
338
  - Verbs in REST URLs (`/api/createTask`, `/api/getUsers`)
282
339
  - Third-party API responses used without validation or sanitization
340
+ - Non-idempotent `POST`/create endpoints with no idempotency key — retries silently double-charge/double-create
341
+ - Long jobs served synchronously (a `POST` that blocks for minutes) instead of returning a `202` + operation resource
342
+ - Response bodies that are 1:1 serializations of database rows (storage schema leaking through the API)
283
343
 
284
344
  ## Verification
285
345
 
@@ -48,6 +48,10 @@ Standardize HTTP query parameter conventions and response metadata for paginated
48
48
 
49
49
  15. **Caching paginated responses**: For expensive queries, cache results by a key derived from `(query_params, hierarchy_filters, org_id, run_id)`. Serialize the Pydantic response model to JSON for cache storage. Cache TTL is typically 1 hour. Invalidate cache on data writes. Use Redis or in-memory cache. Avoid caching every page individually; instead cache the full result set or the first page and accept cache misses for deeper pages.
50
50
 
51
+ 16. **Cursor/keyset pagination — and *why* it beats offset for large or mutating sets**: offset pagination (`LIMIT/OFFSET`) has two failure modes the conventions above don't fix. **Correctness:** when rows are inserted or deleted between two page fetches, the offset shifts, so the client silently **skips rows or sees the same row twice** across page boundaries. **Performance:** the database must scan and discard all `offset` rows before returning the page, so deep pages (`OFFSET 100000`) degrade linearly. **Cursor (keyset) pagination** fixes both by paginating *relative to a stable ordering key* instead of a numeric skip: `WHERE (sort_key, id) > (:last_sort_key, :last_id) ORDER BY sort_key, id LIMIT :n`. Return an **opaque, encoded `next_cursor`** (the last row's ordering key(s) — never a raw offset the client can tamper with) plus `has_next`. It requires a **total, stable sort** — append a unique tiebreaker (e.g. `id`) so ties can't reorder between requests. Trade-off: no "jump to page 50" and no exact `total_pages`. Use offset for small, bounded, human-paged lists; use cursor for infinite scroll, large tables, and any list that mutates under the reader.
52
+
53
+ > The offset-skips-rows / deep-page-cost rationale and the opaque-cursor convention follow common API design canon (e.g. Stripe's list pagination). Stack-agnostic; the `(sort_key, id)` keyset predicate maps to any ordered store.
54
+
51
55
  ## Skeleton / example
52
56
 
53
57
  ```python
@@ -46,6 +46,18 @@ Can another engineer (or agent) understand this code without the author explaini
46
46
  - Would comments help clarify non-obvious intent? (But don't comment obvious code.)
47
47
  - Are there dead code artifacts: no-op variables (`_unused`), backwards-compat shims, or `// removed` comments?
48
48
 
49
+ **If you cannot understand it, that *is* the finding.** When a reviewer genuinely can't follow what a
50
+ piece of code does after a fair effort, do not approve it and do not wave it through with a guess — the
51
+ incomprehensibility is itself a defect, because code the next reader (human or agent) can't understand
52
+ can't be safely changed or debugged later. "I don't understand this — please clarify or simplify" is a
53
+ legitimate, blocking review comment, not an admission of reviewer inadequacy; the burden is on the
54
+ author to make the code understandable, not on the reviewer to decode it. (This is also a signal the
55
+ code may be too complex — see `over-engineering-review`.)
56
+
57
+ > Per Google's Code Review Developer Guide (google.github.io/eng-practices) — if a reviewer doesn't
58
+ > understand a change, it is likely too complex, and the reviewer should ask for clarification or
59
+ > simplification rather than approve.
60
+
49
61
  ### 3. Architecture
50
62
 
51
63
  Does the change fit the system's design?
@@ -194,6 +194,29 @@ function getTaskService(userId: string): TaskService {
194
194
  }
195
195
  ```
196
196
 
197
+ ### Parallel Change (Expand → Migrate → Contract)
198
+
199
+ To change an interface, schema, or contract that already has consumers, never edit it in place — evolve
200
+ it in three independently-deployable, reversible phases so the change is never breaking:
201
+
202
+ ```
203
+ Expand — add the new form alongside the old (new column / field / method / parameter); both work at
204
+ once, and producers write BOTH forms.
205
+ Migrate — move every consumer from the old form to the new one, incrementally. When done, the old form
206
+ has zero readers.
207
+ Contract — remove the old form. (This is exactly the Pre-Removal Safety Check above — verify zero
208
+ consumers first.)
209
+ ```
210
+
211
+ This is the **schema/interface-level** counterpart to the Strangler pattern (which routes *traffic*
212
+ between whole systems). Use it for the small, high-frequency breaking changes: renaming a database
213
+ column (add new column → dual-write + backfill → switch reads → drop old), changing a function
214
+ signature, evolving an API response field, or changing a message schema consumers deserialize. Because
215
+ each phase ships and rolls back on its own, a breaking change becomes a sequence of safe ones.
216
+
217
+ > Per Martin Fowler, "Parallel Change" / expand-contract (martinfowler.com). The interface-level twin
218
+ > of Strangler; both keep the old and new forms alive during the move.
219
+
197
220
  ## Zombie Code
198
221
 
199
222
  Zombie code is code that nobody owns but everybody depends on. It's not actively maintained, has no clear owner, and accumulates security vulnerabilities and compatibility issues. Signs:
@@ -67,6 +67,18 @@ just one helper from it.
67
67
  **✅** Active, regular releases · clear changelog + semver · permissive compatible license · security
68
68
  scanning / signed releases · small focused surface · typings available · several reputable dependents.
69
69
 
70
+ ## Boring is a feature (innovation-token budget)
71
+
72
+ Prefer **proven, boring** technology for anything that is not your core differentiator. Treat novelty
73
+ as a scarce budget: a team has only a few "innovation tokens" to spend on genuinely-new tech (whose
74
+ failure modes, operational quirks, and hiring pool it doesn't yet know), so **spend them on the
75
+ problems that are actually your product** and take the well-understood option everywhere else. A
76
+ candidate that is exciting but unproven should clear a *higher* bar on Maintenance, Adoption, and
77
+ Security above — not a lower one.
78
+
79
+ > Per Dan McKinley, *Choose Boring Technology* (boringtechnology.club). A lens over the dimensions
80
+ > above, not a separate score.
81
+
70
82
  ## The decision
71
83
 
72
84
  Conclude explicitly — never let a dependency slip in undecided:
@@ -73,6 +73,26 @@ export default function (data) {
73
73
  - p95 within the endpoint's SLO; p99 no more than ~2–3× p95 (bigger gap = tail problems).
74
74
  - Throughput scales with concurrency until a plateau — find where it flattens.
75
75
 
76
+ ## Where the time goes: on-CPU vs off-CPU, and why throughput plateaus
77
+
78
+ Two ideas explain most load-test curves and stop you optimising the wrong thing:
79
+
80
+ - **Latency rising while CPU stays low means the service is blocked *off-CPU*** — waiting on a lock, a
81
+ connection-pool slot, disk/network IO, or a downstream call, not computing. A CPU profiler shows
82
+ almost nothing in this state; you have to profile the *waiting* (**off-CPU analysis**). So when the
83
+ latency knee appears (Method step 6), check saturation of the *waited-on* resource — pool, lock,
84
+ downstream — before touching application code.
85
+ - **Throughput plateaus because of the serial fraction, and can *decline* because of coordination.**
86
+ **Amdahl's Law**: the part of the work that can't be parallelised caps total speedup no matter how
87
+ many workers you add. The **Universal Scalability Law** adds a *coherency* penalty — the cost of
88
+ workers coordinating (contended locks, a shared counter, a hot row): past a point, adding concurrency
89
+ makes throughput go **down**, not just flat (the retrograde region). A plateau-then-decline as you
90
+ raise VUs is that signature; the fix is shrinking the serial/contended fraction, not adding workers.
91
+
92
+ > Off-CPU analysis per Brendan Gregg (brendangregg.com/offcpuanalysis.html); Amdahl's Law and the
93
+ > Universal Scalability Law (Neil Gunther) as public canon. Applied in prose to reading load-test
94
+ > curves; tool-agnostic.
95
+
76
96
  ## Rules
77
97
 
78
98
  1. **Never load-test production** without explicit approval — test a staging/local stack. See `.claude/rules/human-in-the-loop.md`.
@@ -30,7 +30,7 @@ Standardize multi-provider notification delivery across email (SendGrid, Nodemai
30
30
 
31
31
  5. **Dev-mode logging instead of sending**: when `NODE_ENV === "development"` or `DISABLE_EMAIL === "true"`, skip actual API calls. Log email/SMS details to console (recipient, subject, preview of HTML/text, OTP codes) and return `{ success: true, message: "Logged (dev mode)" }`. Useful for local testing without burning quota or exposing credentials.
32
32
 
33
- 6. **Fallback chain for high availability**: wrap provider calls in a retry/fallback wrapper (`retryOnFailure(fn, provider, options)`) that attempts the primary provider, then falls back to a secondary provider on failure. Example: SendGrid primary → Nodemailer SMTP secondary. Track failure counters and alert on repeated fallback usage.
33
+ 6. **Fallback chain for high availability**: wrap provider calls in a retry/fallback wrapper (`retryOnFailure(fn, provider, options)`) that attempts the primary provider, then falls back to a secondary provider on failure. Example: SendGrid primary → Nodemailer SMTP secondary. Track failure counters and alert on repeated fallback usage. **Caveat — a provider-wide outage flips *all* traffic to the secondary at once**, so size the secondary for full load (or accept shedding) and exercise the fallback path regularly; an untested fallback that can't absorb the surge amplifies the outage instead of surviving it. See the fallback-amplification / static-stability note in `.claude/rules/resilience-engineering.md`.
34
34
 
35
35
  7. **Template-driven messages**: define templates as functions that accept data objects and return `{ subject, html, text }`. Common templates: `verificationOtpEmail(name, otp)`, `passwordResetEmail(name, resetLink)`, `welcomeEmail(name, portalLink)`, `interviewScheduledEmail(candidate, job, interviewDate, meetingLink)`, `offerExpiringEmail(candidate, job, expiryDate)`. Use a template engine (Nunjucks, Handlebars, or inline string templates) for HTML generation. Store templates in `templates/` or `src/templates/emails/`.
36
36
 
@@ -55,6 +55,24 @@ Dependencies the stdlib or platform already ships · single-implementation inter
55
55
  one product · wrappers that only delegate · modules exporting one thing · dead flags and config ·
56
56
  hand-rolled stdlib · speculative "for later" scaffolding.
57
57
 
58
+ ## The wrong abstraction (when de-duplication went too far)
59
+
60
+ Over-engineering also hides in the *inverse* of duplication. Watch for a shared abstraction that keeps
61
+ growing **boolean / enum / "mode" parameters** so each caller can fork its behavior down a different
62
+ branch. That parameter accretion is the signature of the **wrong abstraction** — code de-duplicated
63
+ before the right shape was known, so now every caller pays for a generalization that fits none of them,
64
+ and each new requirement wedges in another flag.
65
+
66
+ The counter-intuitive fix: **re-inline it back into its callers** (yes, re-introducing the
67
+ duplication), then let the *correct* abstraction re-emerge once the real axis of variation is visible.
68
+ **A little duplication is far cheaper than the wrong abstraction** — copied code is a local, obvious
69
+ cost; a wrong abstraction taxes every caller and compounds. Flag it (`shrink:` on the flag-laden
70
+ generalization, recommending re-inlining) when a "reusable" helper is mostly `if mode == …` branches.
71
+
72
+ > Per Sandi Metz, "The Wrong Abstraction" (prefer duplication over the wrong abstraction). The
73
+ > complement to the `yagni:` tag: `yagni:` catches abstraction built too *early*; this catches
74
+ > abstraction that de-duplicated too *aggressively*.
75
+
58
76
  ## Burden of proof — scrutinize each addition
59
77
 
60
78
  The five tags catch complexity that already exists. In **diff mode**, also invert the burden of proof
@@ -46,6 +46,12 @@ Standardize Redis caching implementation with multi-tenant key isolation, TTL st
46
46
 
47
47
  13. **Cross-link multi-tenancy-patterns and async-python-patterns**: see `multi-tenancy-patterns` for RLS/schema isolation and tenant context propagation; see `async-python-patterns` for asyncio task scheduling, connection pooling, and async context managers.
48
48
 
49
+ 14. **Cache-stampede protection for hot keys** (single-flight + early recompute): when a popular key expires, many concurrent requests miss *at the same instant* and all recompute it simultaneously — a *thundering herd* that can overload the very origin the cache exists to protect (and the network can't tell them to wait for each other). Two composable defenses; reserve them for genuinely hot keys, since the coordination cost isn't worth it for cold ones:
50
+ - **Request coalescing / single-flight** — the first miss takes a short per-key lock (`SET {key}:lock <token> NX EX <few s>`), recomputes, and populates the cache; concurrent callers that fail to get the lock briefly wait-and-retry the read (or serve the last good value) instead of stampeding the origin. Only one caller hits the backend per key per expiry. Release the lock by token (compare-and-delete) so a slow holder can't delete a successor's lock.
51
+ - **Probabilistic early expiration (XFetch)** — store the value's recompute cost and its expiry alongside it, and let each reader *probabilistically* recompute slightly *before* the TTL elapses (the probability rises as expiry nears). One request refreshes the key while it is still warm; everyone else keeps hitting the cache, so the key never actually expires under load. This avoids the synchronized miss entirely, without a lock.
52
+
53
+ > Per the AWS Builders Library ("Caching challenges and strategies", aws.amazon.com/builders-library) and the XFetch scheme (Vattani et al., "Optimal Probabilistic Cache Stampede Prevention"). Stack-agnostic; the lock/early-recompute discipline maps to any cache, not just Redis.
54
+
49
55
  ## Skeleton / example
50
56
 
51
57
  ```python
@@ -495,6 +501,7 @@ class TenantRedis:
495
501
  8. **Not logging cache errors**: silent failures are invisible. Log at `warning` or `error` level for monitoring/alerting.
496
502
  9. **Mixing sync and async Redis clients**: use `redis.asyncio` consistently in async services (FastAPI, aiohttp). Sync `redis-py` blocks the event loop.
497
503
  10. **Storing sensitive data without encryption**: cache should not hold PII/secrets unless encrypted at application layer. Use short TTLs for sensitive data.
504
+ 11. **No stampede protection on hot keys**: letting a popular key expire with no coalescing or early recompute means every concurrent miss recomputes at once and can knock over the origin — the failure often looks like a mysterious periodic latency/error spike synced to the TTL. Add single-flight and/or probabilistic early expiration for hot keys (convention 14).
498
505
 
499
506
  ## References
500
507
 
@@ -175,6 +175,22 @@ jobs:
175
175
  - run: pytest -m integration -v
176
176
  ```
177
177
 
178
+ ### Consumer-Driven Contract Testing (across services)
179
+
180
+ The "Contract testing pipeline" above validates one repo's schema against its own frontend. When a
181
+ provider serves *multiple independent consumers* (other services, mobile clients, partner APIs),
182
+ generalize it to **consumer-driven contracts (CDC)**: each consumer publishes the exact subset of the
183
+ provider's responses it actually depends on (a *pact*), and the provider replays **every** consumer's
184
+ pact in **its own CI**. The provider then learns it broke a downstream consumer *before* it deploys —
185
+ without standing up a full end-to-end environment — and stays free to change anything no consumer's
186
+ contract pins. CDC is the test-suite counterpart to the cross-service planning in
187
+ `planning-and-task-breakdown` and the expand/contract rollout in `deprecation-and-migration`: green
188
+ pacts are how you know the "contract" (removal) phase is actually safe. _(cross-service test pattern)_
189
+
190
+ > Per Martin Fowler / Ian Robinson, "Consumer-Driven Contracts" (martinfowler.com). Stack- and
191
+ > tool-agnostic — Pact is one implementation; the discipline (consumer defines, provider verifies in
192
+ > CI) is the point.
193
+
178
194
  ### Security-Regression Tests
179
195
 
180
196
  Functional tests prove a feature *works*; security-regression tests prove it *can't be abused*. They are
@@ -7,4 +7,4 @@ Docker): ``claude-kit init`` asks ordered questions and lays down ``CLAUDE.md``
7
7
  as a plugin. Extensibility is data-driven via the ``catalog/`` (stacks, profiles, MCP).
8
8
  """
9
9
 
10
- __version__ = "0.63.0"
10
+ __version__ = "0.64.0"