claude-code-kit 0.22.0__tar.gz → 0.24.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.
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/.claude-plugin/marketplace.json +1 -1
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/.claude-plugin/plugin.json +1 -1
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/CHANGELOG.md +75 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/CLAUDE.md +1 -1
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/CONTRIBUTING.md +19 -7
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/PKG-INFO +16 -3
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/README.md +12 -2
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/commands/init.md +21 -7
- claude_code_kit-0.24.0/hooks/hooks.json +106 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/warn-missing-tests.sh +1 -1
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/warn-sensitive-files.sh +1 -1
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/pyproject.toml +18 -1
- claude_code_kit-0.24.0/scripts/gen_hooks.py +69 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/scripts/init.sh +10 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/__init__.py +1 -1
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/__main__.py +1 -3
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/cli.py +65 -4
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/hooks.py +157 -26
- claude_code_kit-0.24.0/src/claude_kit/pipeline.py +240 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/prompts.py +6 -1
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/scaffold.py +73 -3
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/upgrader.py +5 -4
- claude_code_kit-0.24.0/src/claude_kit/validator.py +574 -0
- claude_code_kit-0.24.0/templates/settings.json +74 -0
- claude_code_kit-0.22.0/hooks/hooks.json +0 -58
- claude_code_kit-0.22.0/src/claude_kit/validator.py +0 -212
- claude_code_kit-0.22.0/templates/settings.json +0 -47
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/.gitignore +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/LICENSE +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/acceptance-reviewer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/auditor.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/dependency-scanner.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/developer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/devils-advocate.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/devops-engineer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/e2e-tester.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/em-reviewer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/incident-responder.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/merge-reviewer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/observability-engineer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/orchestrator.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/owasp-reviewer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/policy-validator.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/pr-raiser.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/risk-classifier.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/sdlc-code-reviewer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/secret-scanner.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/security-reviewer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/senior-backend-dev.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/senior-frontend-dev.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/senior-tester.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/spec-doc-writer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/story-planner.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/technical-architect.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/tester.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/ui-designer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/agents/unit-tester.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/catalog/capture.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/catalog/mcp.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/catalog/org.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/catalog/profiles.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/catalog/stacks.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/commands/abort.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/commands/sdlc.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/commands/status.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/agentic-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/agents.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/architecture.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/coverage-audit.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/eval-harness.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/org-capabilities.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/stack-skills/GAP-ANALYSIS.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/stack-skills/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/docs/stack-skills/REPO-INVENTORY.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/audit-log.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/capture-learnings.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/guard-destructive-git.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/guard-kubectl-delete.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/guard-secrets.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/lint-fix.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/load-autonomy.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/load-continuity.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/load-learnings.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/type-check.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/validate-frontmatter.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/validate-settings.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/warn-large-edits.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/warn-llm-io.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/hooks/scripts/warn-shared-modules.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/agent-guardrails.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/agent-memory.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/agent-resilience.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/autonomy-levels.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/code-organization.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/continuity.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/design-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/devops-observability.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/documentation.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/evals.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/frontend-best-practices.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/goal-setting-and-monitoring.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/human-in-the-loop.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/linting-and-formatting.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/mandatory-workflow.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/model-tiers.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/quality-gates.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/rarv-cycle.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/reasoning-techniques.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/responsive-and-accessibility.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/risk-classification.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/testing.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/rules/tool-design.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/scripts/check_docs_consistency.py +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/_references/accessibility-checklist.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/_references/orchestration-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/_references/performance-checklist.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/_references/security-checklist.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/_references/testing-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/accessibility-review/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/alembic-migrations/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/alembic-migrations/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/alembic-migrations/references/alembic-setup-and-env.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/alembic-migrations/references/async-and-multitenant-migrations.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/alembic-migrations/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/alembic-migrations/references/troubleshooting-and-debugging.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/alembic-migrations/references/writing-migrations.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/anthropic-vertex-integration/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/anthropic-vertex-integration/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/anthropic-vertex-integration/references/generate-helpers-and-retry.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/anthropic-vertex-integration/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/anthropic-vertex-integration/references/vertex-client-and-auth.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/api-and-interface-design/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/api-integration/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/api-pagination-filtering-sorting/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/api-pagination-filtering-sorting/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/api-pagination-filtering-sorting/references/query-params-conventions.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/api-pagination-filtering-sorting/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/api-pagination-filtering-sorting/references/response-metadata.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/archive-sprint/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/async-python-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/async-python-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/async-python-patterns/references/async-boundaries.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/async-python-patterns/references/lifecycle-and-gather.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/async-python-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/auth-and-rbac/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/auth-and-rbac/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/auth-and-rbac/references/auth-dependencies.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/auth-and-rbac/references/rbac-and-permissions.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/auth-and-rbac/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/auth-and-rbac/references/security-hardening.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/auth-and-rbac/references/tokens-and-hashing.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backend-repo-architecture/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backend-repo-architecture/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backend-repo-architecture/references/deployment-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backend-repo-architecture/references/entrypoint-and-config.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backend-repo-architecture/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backend-repo-architecture/references/structure-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backend-repo-architecture/references/troubleshooting.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backlog/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/backlog/item-template.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/browser-testing-with-devtools/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/bug-hunt/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/ci-cd-and-automation/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/code-review-and-quality/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/code-simplification/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/component-design/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/configargparse-yaml-env-layering/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/configargparse-yaml-env-layering/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/configargparse-yaml-env-layering/references/config-layering-anatomy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/configargparse-yaml-env-layering/references/mode-dispatch-and-precedence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/configargparse-yaml-env-layering/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/consolidate-learnings/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/containerization-and-deployment/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/containerization-and-deployment/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/containerization-and-deployment/references/deployment-and-secrets.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/containerization-and-deployment/references/dockerfile-and-compose.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/containerization-and-deployment/references/entrypoint-and-modes.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/containerization-and-deployment/references/kerberos-kinit-bootstrap.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/containerization-and-deployment/references/makefile-dev-workflow.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/containerization-and-deployment/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/context-engineering/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/cron-and-scheduled-jobs/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/cron-and-scheduled-jobs/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/cron-and-scheduled-jobs/references/choosing-and-operations.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/cron-and-scheduled-jobs/references/kubernetes-cronjob.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/cron-and-scheduled-jobs/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/cron-and-scheduled-jobs/references/temporal-schedules.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/data-engineering-bigquery-gcs/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/data-engineering-bigquery-gcs/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/data-engineering-bigquery-gcs/references/bigquery-advanced-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/data-engineering-bigquery-gcs/references/bigquery-gcs-io.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/data-engineering-bigquery-gcs/references/medallion-architecture.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/data-engineering-bigquery-gcs/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/data-engineering-bigquery-gcs/references/temp-table-merge-pattern.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/debugging-and-error-recovery/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/decision/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/decision/adr-template.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/deprecation-and-migration/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/design-patterns-and-conventions/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/design-patterns-and-conventions/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/design-patterns-and-conventions/references/anti-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/design-patterns-and-conventions/references/naming-and-layout.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/design-patterns-and-conventions/references/patterns-catalog.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/design-patterns-and-conventions/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/design-patterns-and-conventions/references/testing-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/design-patterns-and-conventions/references/troubleshooting.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-compose/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-compose/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-compose/references/compose-services-and-healthchecks.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-compose/references/dev-vs-prod-variants.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-compose/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-shared/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-shared/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-shared/references/dockerignore-and-build-secrets.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-shared/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-shared/references/shared-base-images.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/docker-shared/references/shared-compose-fragments.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-backend/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-backend/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-backend/references/backend-dockerfile-anatomy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-backend/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-backend/references/system-deps-and-caching.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-frontend/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-frontend/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-frontend/references/build-args-and-nginx.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-frontend/references/frontend-dockerfile-anatomy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/dockerfile-frontend/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/documentation-and-adrs/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/doubt-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/edge-to-service-trust-boundary/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/edge-to-service-trust-boundary/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/edge-to-service-trust-boundary/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/edge-to-service-trust-boundary/references/trust-contract.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/execute/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/fastapi-service-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/fastapi-service-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/fastapi-service-patterns/references/api-versioning.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/fastapi-service-patterns/references/app-factory-and-lifespan.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/fastapi-service-patterns/references/custom-route-and-middleware.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/fastapi-service-patterns/references/dependency-injection.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/fastapi-service-patterns/references/model-and-serialization-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/fastapi-service-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/file-export-and-reporting/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/file-export-and-reporting/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/file-export-and-reporting/references/excel-generation.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/file-export-and-reporting/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/file-export-and-reporting/references/streaming-and-downloads.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/frontend-repo-architecture/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/frontend-repo-architecture/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/frontend-repo-architecture/references/api-layer-and-types.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/frontend-repo-architecture/references/divergences.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/frontend-repo-architecture/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/frontend-repo-architecture/references/structure-and-state.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/frontend-repo-architecture/references/testing-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/frontend-ui-engineering/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcp-cloud-run-github-actions/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcp-cloud-run-github-actions/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcp-cloud-run-github-actions/references/cloud-run-deploy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcp-cloud-run-github-actions/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcp-cloud-run-github-actions/references/workflow-structure.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcs-file-storage-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcs-file-storage-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcs-file-storage-patterns/references/client-and-uploads.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcs-file-storage-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/gcs-file-storage-patterns/references/signed-urls-and-reads.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/git-workflow-and-versioning/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/grafana-dashboards-and-alerts/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/grafana-dashboards-and-alerts/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/grafana-dashboards-and-alerts/references/dashboard-json-and-templating.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/grafana-dashboards-and-alerts/references/provisioning-and-organization.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/grafana-dashboards-and-alerts/references/red-metrics-queries.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/grafana-dashboards-and-alerts/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/grafana-dashboards-and-alerts/references/unified-alerting.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/graphql-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/graphql-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/graphql-patterns/references/apollo-client-frontend.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/graphql-patterns/references/apollo-client-setup.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/graphql-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/graphql-patterns/references/strawberry-backend.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/graphql-patterns/references/when-to-use-graphql.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/idea-refine/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/idea-refine/examples.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/idea-refine/frameworks.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/idea-refine/refinement-criteria.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/idea-refine/scripts/idea-refine.sh +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/incident-postmortem/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/incremental-implementation/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/interview-me/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kafka-config-driven/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kafka-config-driven/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kafka-config-driven/references/config-and-sasl-kerberos.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kafka-config-driven/references/consumer-producer-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kafka-config-driven/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kafka-config-driven/references/troubleshooting-and-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubectl-operations/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubectl-operations/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubectl-operations/references/command-reference.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubectl-operations/references/context-namespace-rbac.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubectl-operations/references/debugging-playbooks.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubectl-operations/references/output-formats-and-selectors.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubectl-operations/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubernetes-workload-hardening/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubernetes-workload-hardening/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubernetes-workload-hardening/references/networkpolicy-and-rbac.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubernetes-workload-hardening/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/kubernetes-workload-hardening/references/securitycontext-and-podsecurity.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/langfuse-llm-tracing/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/langfuse-llm-tracing/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/langfuse-llm-tracing/references/langfuse-client-and-tracing.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/langfuse-llm-tracing/references/python-and-typescript.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/langfuse-llm-tracing/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/load-testing/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/manual-test/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/modernization-and-migration/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/modernization-and-migration/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/modernization-and-migration/references/migration-best-practices.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/modernization-and-migration/references/pydantic-v1-to-v2.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/modernization-and-migration/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/modernization-and-migration/references/shared-internal-library.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/modernization-and-migration/references/sqlalchemy-14-to-20.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/multi-tenancy-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/multi-tenancy-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/multi-tenancy-patterns/references/caching-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/multi-tenancy-patterns/references/isolation-strategies.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/multi-tenancy-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/multi-tenancy-patterns/references/tenant-resolution.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-express-service/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-express-service/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-express-service/references/app-factory-and-mode-dispatch.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-express-service/references/config-and-module-alias.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-express-service/references/middleware-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-express-service/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-objection-knex/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-objection-knex/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-objection-knex/references/migrations-and-validation.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-objection-knex/references/objection-model-and-knex.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/node-objection-knex/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/notifications-and-messaging/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/notifications-and-messaging/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/notifications-and-messaging/references/provider-abstraction.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/notifications-and-messaging/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/notifications-and-messaging/references/templates-and-fallback.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/observability-and-logging/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/observability-and-logging/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/observability-and-logging/references/health-and-readiness.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/observability-and-logging/references/logging-and-structlog.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/observability-and-logging/references/outbound-metrics-and-multi-mode.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/observability-and-logging/references/pii-redaction.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/observability-and-logging/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/observability-and-logging/references/tracing-and-metrics.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/over-engineering-review/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/performance-optimization/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/planning-and-task-breakdown/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/playwright-verification/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/pydantic-schema-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/pydantic-schema-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/pydantic-schema-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/pydantic-schema-patterns/references/settings-and-validation.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/pydantic-schema-patterns/references/troubleshooting-and-common-errors.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/pydantic-schema-patterns/references/v1-vs-v2.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/python-dao-and-database/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/python-dao-and-database/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/python-dao-and-database/references/advanced-query-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/python-dao-and-database/references/basedao-and-sessions.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/python-dao-and-database/references/mongodb-advanced.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/python-dao-and-database/references/other-db-mongodb.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/python-dao-and-database/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/python-dao-and-database/references/sqlalchemy-1x-vs-2x.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/radix-tailwind-component-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/radix-tailwind-component-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/radix-tailwind-component-patterns/references/radix-primitives-and-variants.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/radix-tailwind-component-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/radix-tailwind-component-patterns/references/tailwind-theme-and-cn.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/react-hook-form-zod-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/react-hook-form-zod-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/react-hook-form-zod-patterns/references/form-setup-and-zod.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/react-hook-form-zod-patterns/references/multi-step-and-modes.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/react-hook-form-zod-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/redis-caching-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/redis-caching-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/redis-caching-patterns/references/cache-manager-and-fallback.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/redis-caching-patterns/references/namespacing-and-invalidation.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/redis-caching-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/refresh-docs/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/remember/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/scope/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/scope/scope-template.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/sdlc/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/security-and-hardening/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/security-verification/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/shannon-ai-pentest/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/shannon-ai-pentest/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/shannon-ai-pentest/references/operating-guide.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/shipping-and-launch/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/simplification-debt/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/smoke-test/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/source-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/spec-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/sprint/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/sprint/sprint-template.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/tanstack-react-query-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/tanstack-react-query-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/tanstack-react-query-patterns/references/mutations-and-cache.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/tanstack-react-query-patterns/references/query-keys-and-hooks.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/tanstack-react-query-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/task-tracker-sync/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/temporal-config-driven/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/temporal-config-driven/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/temporal-config-driven/references/config-and-retry-idempotency.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/temporal-config-driven/references/dag-dsl-interpreter.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/temporal-config-driven/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/temporal-config-driven/references/schedule-registration.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/temporal-config-driven/references/schedules-and-cron.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/temporal-config-driven/references/worker-workflow-activity-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/test-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/test-plan-review/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/references/async-and-mocking.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/references/coverage-gap-and-recommendations.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/references/github-actions-test-orchestration.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/references/pytest-and-fixtures.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/references/pytest-asyncio-modes.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/references/security-regression-tests.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/testing-conventions/references/vitest-frontend-testing.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/threat-model/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/triage/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/ui-ux-design/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/unit-test/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/using-agent-skills/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/vitest-rtl-msw-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/vitest-rtl-msw-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/vitest-rtl-msw-patterns/references/msw-and-contract-tests.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/vitest-rtl-msw-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/vitest-rtl-msw-patterns/references/vitest-rtl-setup.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zap-vapt-scanning/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zap-vapt-scanning/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zap-vapt-scanning/references/operating-guide.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zap-vapt-scanning/scripts/endpoints.example.txt +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zap-vapt-scanning/scripts/requirements.txt +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zap-vapt-scanning/scripts/zap_vapt.py +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zustand-state-patterns/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zustand-state-patterns/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zustand-state-patterns/references/async-polling-and-persistence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zustand-state-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/skills/zustand-state-patterns/references/store-structure-and-selectors.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/catalog.py +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/models.py +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/src/claude_kit/render.py +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/CLAUDE.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/CLAUDE.stack.md.tmpl +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/CONTINUITY.template.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/README.claude-sdlc.md.tmpl +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/agent-memory/MEMORY.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/agent-memory/api/.gitkeep +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/agent-memory/architecture/.gitkeep +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/agent-memory/debugging/.gitkeep +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/agent-memory/gotchas/.gitkeep +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/agent-memory/patterns/.gitkeep +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/agent-memory/performance/.gitkeep +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/artifacts/adr.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/artifacts/api-change-report.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/artifacts/feature-spec.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/artifacts/release-plan.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/artifacts/runbook.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/artifacts/security-review.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/artifacts/test-plan.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/agents/data-workflow-agent.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/agents/founder-prototype-agent.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/agents/internal-tools-builder.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/agents/pm-copilot.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/agents/staff-pm-reviewer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/agents/support-ticket-engineer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/devops-and-release/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/devops-and-release/pack.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/engineering-core/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/engineering-core/pack.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/non-engineer-builder/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/non-engineer-builder/pack.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/onboarding-and-docs/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/onboarding-and-docs/pack.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/product-to-code/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/product-to-code/pack.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/quality-and-review/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/quality-and-review/pack.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/security-and-compliance/README.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/packs/security-and-compliance/pack.yaml +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/ai-working-agreement.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/ambiguity-resolution.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/branch-and-pr-policy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/compliance-policy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/non-engineer-safe-coding.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/pii-policy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/production-data-policy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/prompt-to-task-conversion.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/prototype-boundaries.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/rules/secrets-policy.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/customer-issue-to-fix/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/feature-from-idea/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/prompt-to-safe-task/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/prototype-to-production/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/repo-onboarding/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/review-scope/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/review-sprint/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/review-sprint-plan/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/org/skills/review-ux-flow/SKILL.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/backend/go/net-http/rules/go-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/backend/python/fastapi/rules/fastapi-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/db/mongodb/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/db/mongodb/agents/mongodb-specialist.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/db/mongodb/rules/mongodb-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/db/postgres/agents/db-performance-reviewer.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/db/postgres/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/db/postgres/agents/postgres-specialist.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/db/postgres/rules/database-performance.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/db/postgres/rules/postgres-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/frontend/react/rules/design-system-compliance.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/frontend/react/rules/mobile-design-guidelines.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/frontend/react/rules/react-patterns.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.0}/templates/stacks/frontend/react/rules/ui-design-system.md +0 -0
- {claude_code_kit-0.22.0 → claude_code_kit-0.24.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.
|
|
13
|
+
"version": "0.24.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.
|
|
3
|
+
"version": "0.24.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,81 @@ 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.24.0] — 2026-06-24
|
|
8
|
+
|
|
9
|
+
**PR3 of the phased hardening review: deeper validation, a deterministic pipeline CLI, an MCP
|
|
10
|
+
lockfile, and a CI matrix that brings every distribution channel and quality dimension under test.**
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`claude-kit validate --strict`** — beyond the structural checks, strict mode verifies that every
|
|
15
|
+
`settings.json` hook fires on a known event and runs an **installed, executable** script; that
|
|
16
|
+
`.mcp.json` has a sane `{mcpServers: {id: {command|url}}}` shape; that the resolved
|
|
17
|
+
`stack-catalog.snapshot.yaml` agrees with the agents/skills/overlays actually on disk; and that the
|
|
18
|
+
**bundled catalog is referentially consistent** (`validator.check_catalog`: every profile resolves to
|
|
19
|
+
existing agents/skills/registered hooks, every stack overlay rule/agent file is present, and the org
|
|
20
|
+
overlay's new skills/agents/rules/packs exist). `doctor` now runs the strict validate by default.
|
|
21
|
+
- **`claude-kit pipeline` command group** (`src/claude_kit/pipeline.py`) — deterministic,
|
|
22
|
+
**non-executing** operations on the `/sdlc` state files: `pipeline validate` (snapshot shape +
|
|
23
|
+
profile/scope/mode/lane/findings coherence, with `last_gate_passed` checked against the installed
|
|
24
|
+
gate set), `pipeline status` (human-readable run summary), `pipeline close-gate <gate> --evidence
|
|
25
|
+
<file>` (records a passed gate, requiring the evidence artifact and a gate name the profile defines),
|
|
26
|
+
and `pipeline abort`. These validate/mutate `.claude/state/pipeline-snapshot.json` — they do **not**
|
|
27
|
+
run the pipeline.
|
|
28
|
+
- **`.mcp.lock.json`** — when `.mcp.json` is written, a deterministic lockfile captures the resolved
|
|
29
|
+
package + pinned version (parsed from the `npx -y <pkg>@<ver>` args) or hosted URL per server, so a
|
|
30
|
+
reviewer can see exactly what would run. It is a kit-owned, derived artifact (refreshed on upgrade,
|
|
31
|
+
never a user sidecar). **`claude-kit doctor --mcp`** checks each server's command is on PATH, warns on
|
|
32
|
+
unset `${ENV}` vars, and flags a lockfile that has drifted from `.mcp.json` (warnings only).
|
|
33
|
+
- **Expanded CI** (`.github/workflows/ci.yml`) — new jobs alongside the test matrix: `lint`
|
|
34
|
+
(`ruff check` + `ruff format --check` + `mypy`), `shell` (`shellcheck -S warning` over all hook + repo
|
|
35
|
+
scripts), `static` (`gen_hooks.py --check`, the docs-consistency guard, catalog referential
|
|
36
|
+
integrity, and JSON validity of the plugin manifests + `hooks.json`), and `wheel-smoke` (build → install
|
|
37
|
+
into a clean venv → `init --defaults` → `validate --strict` → `doctor`). `ruff`/`mypy`/`shellcheck-py`
|
|
38
|
+
are added to the `dev` extra, with conservative `[tool.ruff.lint]` (no E501) and `[tool.mypy]` config.
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- **Latent type/lint bugs surfaced by the new CI** — `upgrader.py` used `ResolvedPlan` in annotations
|
|
43
|
+
without importing it (harmless under `from __future__ import annotations`, but undefined) and passed
|
|
44
|
+
`str | Path` to a `Path`-typed `_compare`; `_format_preview` could dereference `None`;
|
|
45
|
+
`prompts._choose_many` and `__main__` used None-returning calls in value position. All fixed; the
|
|
46
|
+
codebase is now `ruff` + `mypy --ignore-missing-imports` clean. Two hook scripts had redundant,
|
|
47
|
+
shellcheck-flagged glob alternatives (`*__tests__*` under `*test*`; `*oauth*`/`*authoriz*` under
|
|
48
|
+
`*auth*`) — removed with no behavior change.
|
|
49
|
+
|
|
50
|
+
## [0.23.0] — 2026-06-23
|
|
51
|
+
|
|
52
|
+
**PR2 of the phased hardening review: structural single-source-of-truth for hooks, and plugin/CLI
|
|
53
|
+
parity that fails loud instead of silently degrading.**
|
|
54
|
+
|
|
55
|
+
### Changed
|
|
56
|
+
|
|
57
|
+
- **Hooks are now generated from one registry.** The two previously hand-maintained static hook files —
|
|
58
|
+
the plugin's `hooks/hooks.json` and the no-pip starter `templates/settings.json` — are now generated
|
|
59
|
+
from `src/claude_kit/hooks.py` (`HOOK_REGISTRY` + per-channel membership data) via
|
|
60
|
+
`scripts/gen_hooks.py`. They had already drifted (the starter was missing `load-autonomy`, the PR1
|
|
61
|
+
`jq`-degradation prefix, and used a slightly different block message). A drift test
|
|
62
|
+
(`gen_hooks.py --check`, run in the suite) fails the build if either file is hand-edited.
|
|
63
|
+
- The installed per-profile `.claude/settings.json` (built by `build_settings`) is **byte-identical**
|
|
64
|
+
to before — pure refactor, verified against `origin/main`.
|
|
65
|
+
- `hooks/hooks.json` is **semantically identical** to before (reflowed to canonical 2-space JSON; no
|
|
66
|
+
hook added, removed, or reordered).
|
|
67
|
+
- `templates/settings.json` changes only by refreshing its two inline Bash guards to the registry
|
|
68
|
+
versions (gaining the `command -v jq … || exit 0` no-jq degradation + aligned message); same hook
|
|
69
|
+
membership.
|
|
70
|
+
- **`guard-kubectl-delete` is now declared data.** It moves into a `PLUGIN_ONLY_HOOKS` map (with a
|
|
71
|
+
`reason`) — the single documented exception to "the registry is the source of truth" — instead of
|
|
72
|
+
being a silent hand-edit in `hooks.json`.
|
|
73
|
+
|
|
74
|
+
### Fixed
|
|
75
|
+
|
|
76
|
+
- **Plugin/CLI parity: `/claude-kit:init` requires the CLI and fails loud.** The command no longer
|
|
77
|
+
silently falls back to the thin `scripts/init.sh` scaffolder when neither `claude-kit` nor `ckit` is
|
|
78
|
+
on PATH — it stops and instructs `pipx install claude-code-kit` (or `pip install …`). The shell
|
|
79
|
+
fallback is now opt-in only (`CLAUDE_KIT_BASIC=1`) and prints a loud "degraded, no-resolution
|
|
80
|
+
install; upgrade/diff won't work" warning. README onboarding documents the CLI requirement.
|
|
81
|
+
|
|
7
82
|
## [0.22.0] — 2026-06-23
|
|
8
83
|
|
|
9
84
|
**Critical-correctness hardening (PR1 of a phased review): a non-destructive `init` merge that no longer
|
|
@@ -28,7 +28,7 @@ distributed two ways from one source of truth:
|
|
|
28
28
|
| `templates/stacks/<kind>/<id>/` | Per-stack **overlay** content: `rules/` (+ `agents/` for DB stacks). **No application code, no Docker** — the only place stack-specific content lives. |
|
|
29
29
|
| `templates/org/` | **Org overlay** content (scope-gated, organization only): `skills/`, `agents/` (personas), `rules/` (policy/vibe), `packs/<pack>/{pack.yaml,README.md}`, `README.md`. Wired via `catalog/org.yaml`. The only place org-specific content lives. |
|
|
30
30
|
| `scripts/init.sh` | Thin no-pip fallback scaffolder (copies the full payload; no catalog resolution) |
|
|
31
|
-
| `src/claude_kit/` | The pip CLI (Typer): `cli.py`, `catalog.py` (resolver), `prompts.py`, `models.py`, `scaffold.py` (installer), `render.py` (Jinja2), `hooks.py`, `validator.py
|
|
31
|
+
| `src/claude_kit/` | The pip CLI (Typer): `cli.py`, `catalog.py` (resolver), `prompts.py`, `models.py`, `scaffold.py` (installer), `render.py` (Jinja2), `hooks.py`, `validator.py` (incl. `validate --strict` + `check_catalog`), `upgrader.py`, `pipeline.py` (deterministic `/sdlc` state-file ops) |
|
|
32
32
|
| `tests/` | pytest suite (catalog, render, scaffold, validator, upgrader, CLI; incl. the profile×stack×scope self-test matrix) |
|
|
33
33
|
| `examples/` | Synthetic end-to-end `/sdlc` worked example (repo reference; **not** bundled into the wheel) |
|
|
34
34
|
| `docs/architecture.md` · `docs/agents.md` · `docs/coverage-audit.md` · `docs/eval-harness.md` | Architecture diagrams · agent guide · the GATED-vs-RULE-vs-SKILL enforcement audit · the with/without eval template |
|
|
@@ -38,11 +38,15 @@ locally, and how to release.
|
|
|
38
38
|
*when* to use it. Add it to the relevant profile(s) in `catalog/profiles.yaml`.
|
|
39
39
|
- **Rule** → add `rules/<name>.md`; cross-reference siblings as `.claude/rules/<name>.md`.
|
|
40
40
|
- **Hook** → add a script to `hooks/scripts/`, register it in the `HOOK_REGISTRY` in
|
|
41
|
-
`src/claude_kit/hooks.py`,
|
|
42
|
-
|
|
43
|
-
**
|
|
44
|
-
`
|
|
45
|
-
|
|
41
|
+
`src/claude_kit/hooks.py`, and list its id in the relevant profile's `hooks:`. To surface it in the
|
|
42
|
+
plugin and/or the no-pip starter, add its id to `PLUGIN_HOOK_IDS` / `STARTER_HOOK_IDS` (same module),
|
|
43
|
+
then **run `python scripts/gen_hooks.py`** to regenerate `hooks/hooks.json` and
|
|
44
|
+
`templates/settings.json` — **never hand-edit those two files** (a drift test, `gen_hooks.py --check`,
|
|
45
|
+
fails the build if they diverge from the registry). A plugin-only hook (no CLI scaffold equivalent,
|
|
46
|
+
e.g. `guard-kubectl-delete`) goes in `PLUGIN_ONLY_HOOKS` with a `reason` instead of the registry.
|
|
47
|
+
(Exception: the agent-side capture hooks `capture-learnings[-catchup|-stop]` are **not** profile-listed
|
|
48
|
+
— they're installed by the init-time `capture_mode` choice via `catalog/capture.yaml` +
|
|
49
|
+
`catalog._apply_capture_mode`. One script, three triggers, dispatched by an arg.)
|
|
46
50
|
- **Stack** (framework / database) → a **data change**: add an entry to `catalog/stacks.yaml`
|
|
47
51
|
(`label`, `overlay_rules`, optional `overlay_agents`, `skills`, `stack_dir`, `commands`) and create
|
|
48
52
|
`templates/stacks/<stack_dir>/rules/<name>.md` (+ `agents/` for a database). Mark not-yet-ready
|
|
@@ -67,6 +71,13 @@ claude-kit diff /tmp/ck-demo
|
|
|
67
71
|
# Tests:
|
|
68
72
|
pytest
|
|
69
73
|
|
|
74
|
+
# Lint / type / shell / drift checks (all run in CI — keep them green locally):
|
|
75
|
+
ruff check src scripts tests && ruff format --check src scripts tests
|
|
76
|
+
mypy
|
|
77
|
+
shellcheck -S warning hooks/scripts/*.sh scripts/*.sh
|
|
78
|
+
python scripts/gen_hooks.py --check
|
|
79
|
+
python scripts/check_docs_consistency.py
|
|
80
|
+
|
|
70
81
|
# Build + validate the package:
|
|
71
82
|
python3 -m build
|
|
72
83
|
python3 -m twine check dist/*
|
|
@@ -84,8 +95,9 @@ a specific stack — `pytest` enforces the no-Docker invariant on a scaffolded p
|
|
|
84
95
|
|
|
85
96
|
## Releasing
|
|
86
97
|
|
|
87
|
-
1. Bump the version in **all
|
|
88
|
-
`.claude-plugin/marketplace.json` entry,
|
|
98
|
+
1. Bump the version in **all five** places: `pyproject.toml`, `.claude-plugin/plugin.json`, the
|
|
99
|
+
`.claude-plugin/marketplace.json` entry, `src/claude_kit/__init__.py`, and `SECURITY.md`
|
|
100
|
+
(`check_docs_consistency.py` enforces parity across all of them + the latest `CHANGELOG.md` heading).
|
|
89
101
|
2. Add a `CHANGELOG.md` entry, including a **"Not adopted (deliberately)"** block stating what you
|
|
90
102
|
chose *not* to add and why — this is a marketed feature of the changelog (the README links to it),
|
|
91
103
|
so keep it. If those blocks ever grow unwieldy they may later split into `docs/decision-log.md`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-kit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.24.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
|
|
@@ -21,7 +21,10 @@ Requires-Dist: pyyaml>=6.0
|
|
|
21
21
|
Requires-Dist: typer>=0.12
|
|
22
22
|
Provides-Extra: dev
|
|
23
23
|
Requires-Dist: build>=1.2; extra == 'dev'
|
|
24
|
+
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
24
25
|
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
26
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
27
|
+
Requires-Dist: shellcheck-py>=0.10; extra == 'dev'
|
|
25
28
|
Requires-Dist: twine>=5.0; extra == 'dev'
|
|
26
29
|
Description-Content-Type: text/markdown
|
|
27
30
|
|
|
@@ -110,6 +113,12 @@ Then, inside any project you want the pipeline to manage:
|
|
|
110
113
|
/sdlc Add a CSV export button to the reports page
|
|
111
114
|
```
|
|
112
115
|
|
|
116
|
+
> **`/claude-kit:init` requires the Python CLI** (`pipx install claude-code-kit`, or `pip install
|
|
117
|
+
> claude-code-kit`) — it's what resolves your stack/profile/MCP catalog and records `init-options.json`
|
|
118
|
+
> for safe `upgrade`/`diff`. If the CLI isn't on PATH the command stops and tells you to install it
|
|
119
|
+
> rather than doing a partial install. (A degraded, no-resolution shell scaffolder is available only by
|
|
120
|
+
> explicitly setting `CLAUDE_KIT_BASIC=1`; `upgrade`/`diff` won't work against it.)
|
|
121
|
+
|
|
113
122
|
> `/sdlc` is a **project skill** installed by `init`, so it becomes available after the restart. The
|
|
114
123
|
> plugin also exposes `/claude-kit:sdlc <task>`, which works immediately (no restart needed).
|
|
115
124
|
|
|
@@ -607,10 +616,11 @@ everything available.
|
|
|
607
616
|
| Command | Description |
|
|
608
617
|
|---------|-------------|
|
|
609
618
|
| `init [path] [--defaults] [--config FILE] [--force]` | Scaffold `CLAUDE.md` + `.claude/` (interactive or non-interactive) |
|
|
610
|
-
| `validate [path]` | Structurally validate an installed config |
|
|
611
|
-
| `doctor [path]` |
|
|
619
|
+
| `validate [path] [--strict]` | Structurally validate an installed config; `--strict` adds hooks→script, `.mcp.json`-shape, snapshot, and catalog-integrity checks |
|
|
620
|
+
| `doctor [path] [--mcp]` | Strict validate + environment/health checks; `--mcp` checks MCP commands, `${ENV}` vars, and lockfile drift |
|
|
612
621
|
| `diff [path]` | Preview what an `upgrade` would change (no writes) |
|
|
613
622
|
| `upgrade [path] [--force]` | Refresh kit/overlay files; protect your edits; prune orphans |
|
|
623
|
+
| `pipeline validate · status · close-gate · abort` | Inspect/mutate the `/sdlc` state files (gate/lane/evidence coherence); **does not run** the pipeline |
|
|
614
624
|
| `list-options` | List available frontend/backend/database/profile/MCP options |
|
|
615
625
|
| `status [path]` | Show what's installed, the selection, and working memory |
|
|
616
626
|
| `version` | Print the version |
|
|
@@ -619,6 +629,9 @@ everything available.
|
|
|
619
629
|
Plugin slash commands: `/claude-kit:init`, `/claude-kit:sdlc <task>`, `/claude-kit:status`; and the
|
|
620
630
|
`/sdlc` skill inside any scaffolded project.
|
|
621
631
|
|
|
632
|
+
> When MCP servers are selected, `init` also writes a derived **`.mcp.lock.json`** pinning each
|
|
633
|
+
> server's resolved package version — inspect it (or run `doctor --mcp`) to see exactly what would run.
|
|
634
|
+
|
|
622
635
|
</details>
|
|
623
636
|
|
|
624
637
|
<details>
|
|
@@ -83,6 +83,12 @@ Then, inside any project you want the pipeline to manage:
|
|
|
83
83
|
/sdlc Add a CSV export button to the reports page
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
+
> **`/claude-kit:init` requires the Python CLI** (`pipx install claude-code-kit`, or `pip install
|
|
87
|
+
> claude-code-kit`) — it's what resolves your stack/profile/MCP catalog and records `init-options.json`
|
|
88
|
+
> for safe `upgrade`/`diff`. If the CLI isn't on PATH the command stops and tells you to install it
|
|
89
|
+
> rather than doing a partial install. (A degraded, no-resolution shell scaffolder is available only by
|
|
90
|
+
> explicitly setting `CLAUDE_KIT_BASIC=1`; `upgrade`/`diff` won't work against it.)
|
|
91
|
+
|
|
86
92
|
> `/sdlc` is a **project skill** installed by `init`, so it becomes available after the restart. The
|
|
87
93
|
> plugin also exposes `/claude-kit:sdlc <task>`, which works immediately (no restart needed).
|
|
88
94
|
|
|
@@ -580,10 +586,11 @@ everything available.
|
|
|
580
586
|
| Command | Description |
|
|
581
587
|
|---------|-------------|
|
|
582
588
|
| `init [path] [--defaults] [--config FILE] [--force]` | Scaffold `CLAUDE.md` + `.claude/` (interactive or non-interactive) |
|
|
583
|
-
| `validate [path]` | Structurally validate an installed config |
|
|
584
|
-
| `doctor [path]` |
|
|
589
|
+
| `validate [path] [--strict]` | Structurally validate an installed config; `--strict` adds hooks→script, `.mcp.json`-shape, snapshot, and catalog-integrity checks |
|
|
590
|
+
| `doctor [path] [--mcp]` | Strict validate + environment/health checks; `--mcp` checks MCP commands, `${ENV}` vars, and lockfile drift |
|
|
585
591
|
| `diff [path]` | Preview what an `upgrade` would change (no writes) |
|
|
586
592
|
| `upgrade [path] [--force]` | Refresh kit/overlay files; protect your edits; prune orphans |
|
|
593
|
+
| `pipeline validate · status · close-gate · abort` | Inspect/mutate the `/sdlc` state files (gate/lane/evidence coherence); **does not run** the pipeline |
|
|
587
594
|
| `list-options` | List available frontend/backend/database/profile/MCP options |
|
|
588
595
|
| `status [path]` | Show what's installed, the selection, and working memory |
|
|
589
596
|
| `version` | Print the version |
|
|
@@ -592,6 +599,9 @@ everything available.
|
|
|
592
599
|
Plugin slash commands: `/claude-kit:init`, `/claude-kit:sdlc <task>`, `/claude-kit:status`; and the
|
|
593
600
|
`/sdlc` skill inside any scaffolded project.
|
|
594
601
|
|
|
602
|
+
> When MCP servers are selected, `init` also writes a derived **`.mcp.lock.json`** pinning each
|
|
603
|
+
> server's resolved package version — inspect it (or run `doctor --mcp`) to see exactly what would run.
|
|
604
|
+
|
|
595
605
|
</details>
|
|
596
606
|
|
|
597
607
|
<details>
|
|
@@ -6,21 +6,35 @@ allowed-tools: Bash, Read, Glob
|
|
|
6
6
|
|
|
7
7
|
Install the claude-kit autonomous-SDLC configuration into the current project.
|
|
8
8
|
|
|
9
|
-
**
|
|
9
|
+
**The Python CLI is required.** It runs the ordered prompts, resolves the stack/profile/MCP catalog,
|
|
10
10
|
installs overlay rules + agents, assembles `settings.json`, and records `init-options.json` for safe
|
|
11
|
-
upgrades). Check whether it's on PATH and use it, passing through
|
|
11
|
+
upgrades (`claude-kit upgrade` / `diff`). Check whether it's on PATH and use it, passing through
|
|
12
|
+
`$ARGUMENTS`:
|
|
12
13
|
|
|
13
14
|
```
|
|
14
15
|
command -v claude-kit >/dev/null 2>&1 && claude-kit init $ARGUMENTS \
|
|
15
|
-
|| { command -v ckit >/dev/null 2>&1 && ckit init $ARGUMENTS
|
|
16
|
+
|| { command -v ckit >/dev/null 2>&1 && ckit init $ARGUMENTS \
|
|
17
|
+
|| echo "CKIT_CLI_MISSING"; }
|
|
16
18
|
```
|
|
17
19
|
|
|
18
|
-
If
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
**If the output is `CKIT_CLI_MISSING`, STOP — do not scaffold anything.** Neither `claude-kit` nor
|
|
21
|
+
`ckit` is installed. Tell the user the CLI is required and how to install it, then have them re-run
|
|
22
|
+
`/claude-kit:init`. Do **not** silently fall back to a partial install:
|
|
23
|
+
|
|
24
|
+
- Recommended: `pipx install claude-code-kit`
|
|
25
|
+
- Or: `pip install claude-code-kit`
|
|
26
|
+
|
|
27
|
+
**Escape hatch (advanced, opt-in only).** A thin shell scaffolder exists for locked-down environments
|
|
28
|
+
where installing the CLI is impossible. It copies the full payload as a **superset** with **no**
|
|
29
|
+
stack/profile/MCP resolution, and `claude-kit upgrade` / `diff` will **not** work against it. Use it
|
|
30
|
+
**only** if the user has explicitly opted in by setting `CLAUDE_KIT_BASIC=1`:
|
|
21
31
|
|
|
22
32
|
```
|
|
23
|
-
|
|
33
|
+
if [ "${CLAUDE_KIT_BASIC:-0}" = "1" ]; then
|
|
34
|
+
bash "${CLAUDE_PLUGIN_ROOT}/scripts/init.sh" $ARGUMENTS
|
|
35
|
+
else
|
|
36
|
+
echo "set CLAUDE_KIT_BASIC=1 to use the degraded no-CLI scaffolder (the CLI is the supported path)"
|
|
37
|
+
fi
|
|
24
38
|
```
|
|
25
39
|
|
|
26
40
|
If `${CLAUDE_PLUGIN_ROOT}` is not set (running from a source checkout), locate `scripts/init.sh` in
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-continuity.sh\""
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"type": "command",
|
|
13
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-learnings.sh\""
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "command",
|
|
17
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-autonomy.sh\""
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "command",
|
|
21
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/capture-learnings.sh\" catchup"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"PreToolUse": [
|
|
27
|
+
{
|
|
28
|
+
"matcher": "Bash",
|
|
29
|
+
"hooks": [
|
|
30
|
+
{
|
|
31
|
+
"type": "command",
|
|
32
|
+
"command": "command -v jq >/dev/null 2>&1 || exit 0; CMD=$(jq -r '.tool_input.command'); if echo \"$CMD\" | grep -qE 'rm[[:space:]]+-[^[:space:]]*r[^[:space:]]*f'; then echo 'BLOCKED: rm -rf is disabled by claude-kit. Move to trash or delete specific paths explicitly.' >&2; exit 2; fi"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "command",
|
|
36
|
+
"command": "command -v jq >/dev/null 2>&1 || exit 0; CMD=$(jq -r '.tool_input.command'); if echo \"$CMD\" | grep -qE 'git[[:space:]]+push.*[[:space:]:](main|master)([[:space:]]|$)'; then echo 'BLOCKED: refusing to push to main/master — use a feature branch and a PR.' >&2; exit 2; fi"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "command",
|
|
40
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-destructive-git.sh\""
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "command",
|
|
44
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-secrets.sh\""
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "command",
|
|
48
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-kubectl-delete.sh\""
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"matcher": "Edit|Write",
|
|
54
|
+
"hooks": [
|
|
55
|
+
{
|
|
56
|
+
"type": "command",
|
|
57
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-shared-modules.sh\""
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"type": "command",
|
|
61
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-llm-io.sh\""
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"type": "command",
|
|
65
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-sensitive-files.sh\""
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"matcher": "Write",
|
|
71
|
+
"hooks": [
|
|
72
|
+
{
|
|
73
|
+
"type": "command",
|
|
74
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate-settings.sh\""
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"Stop": [
|
|
80
|
+
{
|
|
81
|
+
"matcher": "",
|
|
82
|
+
"hooks": [
|
|
83
|
+
{
|
|
84
|
+
"type": "command",
|
|
85
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/lint-fix.sh\""
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "command",
|
|
89
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/type-check.sh\""
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"SessionEnd": [
|
|
95
|
+
{
|
|
96
|
+
"matcher": "",
|
|
97
|
+
"hooks": [
|
|
98
|
+
{
|
|
99
|
+
"type": "command",
|
|
100
|
+
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/capture-learnings.sh\" end"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -12,7 +12,7 @@ low="$(printf '%s' "$FILE_PATH" | tr '[:upper:]' '[:lower:]')"
|
|
|
12
12
|
|
|
13
13
|
# Skip non-source: tests, docs, config, markdown, and the kit's own config.
|
|
14
14
|
case "$low" in
|
|
15
|
-
*test*|*spec
|
|
15
|
+
*test*|*spec*|*.md|*.markdown|*.json|*.ya?ml|*.toml|*.ini|*.cfg|*.txt|*.lock|*/.claude/*)
|
|
16
16
|
exit 0 ;;
|
|
17
17
|
esac
|
|
18
18
|
|
|
@@ -11,7 +11,7 @@ FILE_PATH="$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_response.file
|
|
|
11
11
|
low="$(printf '%s' "$FILE_PATH" | tr '[:upper:]' '[:lower:]')"
|
|
12
12
|
|
|
13
13
|
case "$low" in
|
|
14
|
-
*auth*|*login*|*session*|*
|
|
14
|
+
*auth*|*login*|*session*|*jwt*|*password*|*permission*|*rbac*)
|
|
15
15
|
echo "WARN: editing an AUTH / authorization surface ($FILE_PATH). High-risk: get review + security check before completion (.claude/rules/risk-classification.md)." >&2 ;;
|
|
16
16
|
esac
|
|
17
17
|
case "$low" in
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "claude-code-kit"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.24.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"
|
|
@@ -46,6 +46,9 @@ dev = [
|
|
|
46
46
|
"pytest>=8.0",
|
|
47
47
|
"build>=1.2",
|
|
48
48
|
"twine>=5.0",
|
|
49
|
+
"ruff>=0.6",
|
|
50
|
+
"mypy>=1.10",
|
|
51
|
+
"shellcheck-py>=0.10",
|
|
49
52
|
]
|
|
50
53
|
|
|
51
54
|
[project.urls]
|
|
@@ -62,6 +65,20 @@ claude-sdlc = "claude_kit.cli:main"
|
|
|
62
65
|
testpaths = ["tests"]
|
|
63
66
|
pythonpath = ["."]
|
|
64
67
|
|
|
68
|
+
[tool.ruff]
|
|
69
|
+
target-version = "py39"
|
|
70
|
+
|
|
71
|
+
[tool.ruff.lint]
|
|
72
|
+
# Deliberately conservative: pyflakes (F) + the actionable pycodestyle subsets (E4/E7/E9, W) +
|
|
73
|
+
# import sorting (I) + bugbear (B). Line length (E501) is intentionally NOT enforced — docstrings and
|
|
74
|
+
# pinned-version comments run long on purpose and `ruff format` owns layout.
|
|
75
|
+
select = ["E4", "E7", "E9", "F", "W", "I", "B"]
|
|
76
|
+
|
|
77
|
+
[tool.mypy]
|
|
78
|
+
files = ["src/claude_kit"]
|
|
79
|
+
ignore_missing_imports = true
|
|
80
|
+
# typer/yaml ship without type stubs; we check our own code, not third-party signatures.
|
|
81
|
+
|
|
65
82
|
[tool.hatch.build.targets.wheel]
|
|
66
83
|
packages = ["src/claude_kit"]
|
|
67
84
|
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Generate (or --check) the two *static* hook files from the single ``hooks.py`` registry.
|
|
3
|
+
|
|
4
|
+
claude-kit ships hooks through three channels, but only one should ever be hand-maintained:
|
|
5
|
+
|
|
6
|
+
* the **installed** ``.claude/settings.json`` — built per-profile by ``hooks.build_settings`` at init;
|
|
7
|
+
* the auto-discovered **plugin** ``hooks/hooks.json`` (``${CLAUDE_PLUGIN_ROOT}`` paths);
|
|
8
|
+
* the thin no-pip **starter** ``templates/settings.json`` (``$CLAUDE_PROJECT_DIR`` paths).
|
|
9
|
+
|
|
10
|
+
The latter two used to be edited by hand and silently drifted from the registry (and each other).
|
|
11
|
+
This script regenerates both from ``claude_kit.hooks`` so the registry is the single source of truth.
|
|
12
|
+
|
|
13
|
+
Usage::
|
|
14
|
+
|
|
15
|
+
python scripts/gen_hooks.py # regenerate the two files in place
|
|
16
|
+
python scripts/gen_hooks.py --check # exit 1 if either file is out of sync (CI / tests)
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
from __future__ import annotations
|
|
20
|
+
|
|
21
|
+
import json
|
|
22
|
+
import sys
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
|
|
25
|
+
ROOT = Path(__file__).resolve().parent.parent
|
|
26
|
+
sys.path.insert(
|
|
27
|
+
0, str(ROOT / "src")
|
|
28
|
+
) # importable from a bare checkout (no editable install needed)
|
|
29
|
+
|
|
30
|
+
from claude_kit import hooks # noqa: E402
|
|
31
|
+
|
|
32
|
+
#: (path on disk, generator) for each static file derived from the registry.
|
|
33
|
+
TARGETS = [
|
|
34
|
+
(ROOT / "hooks" / "hooks.json", hooks.generate_plugin_hooks_json),
|
|
35
|
+
(ROOT / "templates" / "settings.json", hooks.generate_starter_settings),
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _render(doc: dict) -> str:
|
|
40
|
+
"""Canonical JSON form (2-space indent, literal Unicode, trailing newline) for both files."""
|
|
41
|
+
return json.dumps(doc, indent=2, ensure_ascii=False) + "\n"
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def main(argv: list[str]) -> int:
|
|
45
|
+
check = "--check" in argv
|
|
46
|
+
drift: list[Path] = []
|
|
47
|
+
for path, generate in TARGETS:
|
|
48
|
+
want = _render(generate())
|
|
49
|
+
have = path.read_text(encoding="utf-8") if path.is_file() else ""
|
|
50
|
+
if check:
|
|
51
|
+
if want != have:
|
|
52
|
+
drift.append(path)
|
|
53
|
+
else:
|
|
54
|
+
path.write_text(want, encoding="utf-8")
|
|
55
|
+
print(f"wrote {path.relative_to(ROOT)}")
|
|
56
|
+
if check:
|
|
57
|
+
if drift:
|
|
58
|
+
print(
|
|
59
|
+
"hooks drift: FAIL — run `python scripts/gen_hooks.py` to regenerate:"
|
|
60
|
+
)
|
|
61
|
+
for path in drift:
|
|
62
|
+
print(f" - {path.relative_to(ROOT)}")
|
|
63
|
+
return 1
|
|
64
|
+
print("hooks: in sync with the registry")
|
|
65
|
+
return 0
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
if __name__ == "__main__":
|
|
69
|
+
sys.exit(main(sys.argv[1:]))
|
|
@@ -40,6 +40,16 @@ done
|
|
|
40
40
|
|
|
41
41
|
DEST="$TARGET/.claude"
|
|
42
42
|
mkdir -p "$DEST"
|
|
43
|
+
|
|
44
|
+
# Loud warning: this is the degraded, no-pip path. The full experience is the Python CLI.
|
|
45
|
+
echo "================================================================" >&2
|
|
46
|
+
echo "claude-kit BASIC scaffolder (no Python CLI)" >&2
|
|
47
|
+
echo " SUPERSET install: NO stack / profile / MCP resolution." >&2
|
|
48
|
+
echo " 'claude-kit upgrade' and 'diff' will NOT work against it." >&2
|
|
49
|
+
echo " For the full catalog-driven experience + safe upgrades:" >&2
|
|
50
|
+
echo " pipx install claude-code-kit (then re-run /claude-kit:init)" >&2
|
|
51
|
+
echo "================================================================" >&2
|
|
52
|
+
|
|
43
53
|
echo "claude-kit: scaffolding into $TARGET"
|
|
44
54
|
|
|
45
55
|
copy_root_file() { # src, dest, label
|