claude-code-kit 0.24.0__tar.gz → 0.26.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.24.0 → claude_code_kit-0.26.0}/.claude-plugin/marketplace.json +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/.claude-plugin/plugin.json +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/CHANGELOG.md +60 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/PKG-INFO +26 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/README.md +25 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/coverage-audit.md +2 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/hooks.json +11 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/guard-secrets.sh +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/pyproject.toml +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/continuity.md +4 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/scripts/check_docs_consistency.py +34 -19
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/scripts/init.sh +4 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/alembic-migrations/references/alembic-setup-and-env.md +3 -3
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/alembic-migrations/references/repo-evidence.md +2 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/alembic-migrations/references/writing-migrations.md +6 -6
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-pagination-filtering-sorting/README.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-pagination-filtering-sorting/SKILL.md +10 -10
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-pagination-filtering-sorting/references/query-params-conventions.md +9 -9
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-pagination-filtering-sorting/references/repo-evidence.md +47 -47
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/containerization-and-deployment/references/deployment-and-secrets.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/data-engineering-bigquery-gcs/README.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/data-engineering-bigquery-gcs/SKILL.md +20 -20
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/data-engineering-bigquery-gcs/references/bigquery-gcs-io.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/data-engineering-bigquery-gcs/references/medallion-architecture.md +21 -21
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/data-engineering-bigquery-gcs/references/repo-evidence.md +11 -11
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/design-patterns-and-conventions/references/naming-and-layout.md +2 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/design-patterns-and-conventions/references/patterns-catalog.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/fastapi-service-patterns/references/api-versioning.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/frontend-repo-architecture/SKILL.md +3 -3
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/frontend-repo-architecture/references/api-layer-and-types.md +12 -12
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/frontend-repo-architecture/references/divergences.md +5 -5
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/frontend-repo-architecture/references/repo-evidence.md +19 -18
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/frontend-repo-architecture/references/structure-and-state.md +48 -48
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/frontend-repo-architecture/references/testing-patterns.md +4 -4
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcp-cloud-run-github-actions/references/repo-evidence.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/graphql-patterns/README.md +3 -3
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/graphql-patterns/SKILL.md +19 -19
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/graphql-patterns/references/repo-evidence.md +32 -31
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/graphql-patterns/references/strawberry-backend.md +49 -47
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/graphql-patterns/references/when-to-use-graphql.md +10 -10
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kafka-config-driven/references/consumer-producer-patterns.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kafka-config-driven/references/repo-evidence.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/manual-test/SKILL.md +2 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/multi-tenancy-patterns/SKILL.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/multi-tenancy-patterns/references/isolation-strategies.md +6 -6
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/multi-tenancy-patterns/references/repo-evidence.md +10 -10
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/observability-and-logging/SKILL.md +7 -7
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/observability-and-logging/references/outbound-metrics-and-multi-mode.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/observability-and-logging/references/repo-evidence.md +5 -5
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/observability-and-logging/references/tracing-and-metrics.md +2 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/python-dao-and-database/references/mongodb-advanced.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/python-dao-and-database/references/other-db-mongodb.md +10 -10
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/python-dao-and-database/references/repo-evidence.md +5 -5
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/tanstack-react-query-patterns/SKILL.md +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/tanstack-react-query-patterns/references/repo-evidence.md +55 -55
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/SKILL.md +6 -6
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/references/async-and-mocking.md +6 -6
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/references/coverage-gap-and-recommendations.md +27 -27
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/references/pytest-asyncio-modes.md +4 -4
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/references/repo-evidence.md +10 -10
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/references/vitest-frontend-testing.md +2 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zustand-state-patterns/README.md +2 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zustand-state-patterns/SKILL.md +46 -46
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zustand-state-patterns/references/async-polling-and-persistence.md +49 -49
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zustand-state-patterns/references/repo-evidence.md +79 -77
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zustand-state-patterns/references/store-structure-and-selectors.md +26 -26
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/__init__.py +1 -1
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/cli.py +20 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/hooks.py +4 -3
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/pipeline.py +82 -3
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/settings.json +2 -2
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/.gitignore +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/CLAUDE.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/CONTRIBUTING.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/LICENSE +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/acceptance-reviewer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/auditor.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/dependency-scanner.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/developer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/devils-advocate.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/devops-engineer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/e2e-tester.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/em-reviewer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/incident-responder.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/merge-reviewer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/observability-engineer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/orchestrator.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/owasp-reviewer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/policy-validator.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/pr-raiser.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/risk-classifier.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/sdlc-code-reviewer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/secret-scanner.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/security-reviewer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/senior-backend-dev.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/senior-frontend-dev.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/senior-tester.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/spec-doc-writer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/story-planner.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/technical-architect.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/tester.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/ui-designer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/agents/unit-tester.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/catalog/capture.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/catalog/mcp.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/catalog/org.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/catalog/profiles.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/catalog/stacks.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/commands/abort.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/commands/init.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/commands/sdlc.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/commands/status.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/agentic-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/agents.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/architecture.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/eval-harness.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/org-capabilities.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/stack-skills/GAP-ANALYSIS.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/stack-skills/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/docs/stack-skills/REPO-INVENTORY.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/audit-log.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/capture-learnings.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/guard-destructive-git.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/guard-kubectl-delete.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/lint-fix.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/load-autonomy.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/load-continuity.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/load-learnings.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/type-check.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/validate-frontmatter.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/validate-settings.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/warn-large-edits.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/warn-llm-io.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/warn-missing-tests.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/warn-sensitive-files.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/hooks/scripts/warn-shared-modules.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/agent-guardrails.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/agent-memory.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/agent-resilience.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/autonomy-levels.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/code-organization.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/design-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/devops-observability.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/documentation.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/evals.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/frontend-best-practices.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/goal-setting-and-monitoring.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/human-in-the-loop.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/linting-and-formatting.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/mandatory-workflow.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/model-tiers.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/quality-gates.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/rarv-cycle.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/reasoning-techniques.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/responsive-and-accessibility.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/risk-classification.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/testing.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/rules/tool-design.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/scripts/gen_hooks.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/_references/accessibility-checklist.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/_references/orchestration-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/_references/performance-checklist.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/_references/security-checklist.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/_references/testing-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/accessibility-review/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/alembic-migrations/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/alembic-migrations/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/alembic-migrations/references/async-and-multitenant-migrations.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/alembic-migrations/references/troubleshooting-and-debugging.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/anthropic-vertex-integration/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/anthropic-vertex-integration/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/anthropic-vertex-integration/references/generate-helpers-and-retry.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/anthropic-vertex-integration/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/anthropic-vertex-integration/references/vertex-client-and-auth.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-and-interface-design/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-integration/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-pagination-filtering-sorting/references/response-metadata.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/archive-sprint/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/async-python-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/async-python-patterns/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/async-python-patterns/references/async-boundaries.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/async-python-patterns/references/lifecycle-and-gather.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/async-python-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/auth-and-rbac/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/auth-and-rbac/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/auth-and-rbac/references/auth-dependencies.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/auth-and-rbac/references/rbac-and-permissions.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/auth-and-rbac/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/auth-and-rbac/references/security-hardening.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/auth-and-rbac/references/tokens-and-hashing.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backend-repo-architecture/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backend-repo-architecture/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backend-repo-architecture/references/deployment-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backend-repo-architecture/references/entrypoint-and-config.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backend-repo-architecture/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backend-repo-architecture/references/structure-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backend-repo-architecture/references/troubleshooting.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backlog/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/backlog/item-template.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/browser-testing-with-devtools/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/bug-hunt/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/ci-cd-and-automation/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/code-review-and-quality/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/code-simplification/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/component-design/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/configargparse-yaml-env-layering/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/configargparse-yaml-env-layering/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/configargparse-yaml-env-layering/references/config-layering-anatomy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/configargparse-yaml-env-layering/references/mode-dispatch-and-precedence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/configargparse-yaml-env-layering/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/consolidate-learnings/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/containerization-and-deployment/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/containerization-and-deployment/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/containerization-and-deployment/references/dockerfile-and-compose.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/containerization-and-deployment/references/entrypoint-and-modes.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/containerization-and-deployment/references/kerberos-kinit-bootstrap.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/containerization-and-deployment/references/makefile-dev-workflow.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/containerization-and-deployment/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/context-engineering/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/cron-and-scheduled-jobs/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/cron-and-scheduled-jobs/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/cron-and-scheduled-jobs/references/choosing-and-operations.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/cron-and-scheduled-jobs/references/kubernetes-cronjob.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/cron-and-scheduled-jobs/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/cron-and-scheduled-jobs/references/temporal-schedules.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/data-engineering-bigquery-gcs/references/bigquery-advanced-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/data-engineering-bigquery-gcs/references/temp-table-merge-pattern.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/debugging-and-error-recovery/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/decision/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/decision/adr-template.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/deprecation-and-migration/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/design-patterns-and-conventions/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/design-patterns-and-conventions/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/design-patterns-and-conventions/references/anti-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/design-patterns-and-conventions/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/design-patterns-and-conventions/references/testing-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/design-patterns-and-conventions/references/troubleshooting.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-compose/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-compose/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-compose/references/compose-services-and-healthchecks.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-compose/references/dev-vs-prod-variants.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-compose/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-shared/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-shared/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-shared/references/dockerignore-and-build-secrets.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-shared/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-shared/references/shared-base-images.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/docker-shared/references/shared-compose-fragments.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-backend/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-backend/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-backend/references/backend-dockerfile-anatomy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-backend/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-backend/references/system-deps-and-caching.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-frontend/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-frontend/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-frontend/references/build-args-and-nginx.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-frontend/references/frontend-dockerfile-anatomy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/dockerfile-frontend/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/documentation-and-adrs/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/doubt-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/edge-to-service-trust-boundary/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/edge-to-service-trust-boundary/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/edge-to-service-trust-boundary/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/edge-to-service-trust-boundary/references/trust-contract.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/execute/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/fastapi-service-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/fastapi-service-patterns/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/fastapi-service-patterns/references/app-factory-and-lifespan.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/fastapi-service-patterns/references/custom-route-and-middleware.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/fastapi-service-patterns/references/dependency-injection.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/fastapi-service-patterns/references/model-and-serialization-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/fastapi-service-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/file-export-and-reporting/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/file-export-and-reporting/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/file-export-and-reporting/references/excel-generation.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/file-export-and-reporting/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/file-export-and-reporting/references/streaming-and-downloads.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/frontend-repo-architecture/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/frontend-ui-engineering/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcp-cloud-run-github-actions/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcp-cloud-run-github-actions/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcp-cloud-run-github-actions/references/cloud-run-deploy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcp-cloud-run-github-actions/references/workflow-structure.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcs-file-storage-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcs-file-storage-patterns/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcs-file-storage-patterns/references/client-and-uploads.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcs-file-storage-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/gcs-file-storage-patterns/references/signed-urls-and-reads.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/git-workflow-and-versioning/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/grafana-dashboards-and-alerts/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/grafana-dashboards-and-alerts/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/grafana-dashboards-and-alerts/references/dashboard-json-and-templating.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/grafana-dashboards-and-alerts/references/provisioning-and-organization.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/grafana-dashboards-and-alerts/references/red-metrics-queries.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/grafana-dashboards-and-alerts/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/grafana-dashboards-and-alerts/references/unified-alerting.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/graphql-patterns/references/apollo-client-frontend.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/graphql-patterns/references/apollo-client-setup.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/idea-refine/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/idea-refine/examples.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/idea-refine/frameworks.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/idea-refine/refinement-criteria.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/idea-refine/scripts/idea-refine.sh +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/incident-postmortem/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/incremental-implementation/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/interview-me/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kafka-config-driven/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kafka-config-driven/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kafka-config-driven/references/config-and-sasl-kerberos.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kafka-config-driven/references/troubleshooting-and-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubectl-operations/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubectl-operations/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubectl-operations/references/command-reference.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubectl-operations/references/context-namespace-rbac.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubectl-operations/references/debugging-playbooks.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubectl-operations/references/output-formats-and-selectors.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubectl-operations/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubernetes-workload-hardening/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubernetes-workload-hardening/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubernetes-workload-hardening/references/networkpolicy-and-rbac.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubernetes-workload-hardening/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/kubernetes-workload-hardening/references/securitycontext-and-podsecurity.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/langfuse-llm-tracing/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/langfuse-llm-tracing/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/langfuse-llm-tracing/references/langfuse-client-and-tracing.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/langfuse-llm-tracing/references/python-and-typescript.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/langfuse-llm-tracing/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/load-testing/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/modernization-and-migration/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/modernization-and-migration/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/modernization-and-migration/references/migration-best-practices.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/modernization-and-migration/references/pydantic-v1-to-v2.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/modernization-and-migration/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/modernization-and-migration/references/shared-internal-library.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/modernization-and-migration/references/sqlalchemy-14-to-20.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/multi-tenancy-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/multi-tenancy-patterns/references/caching-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/multi-tenancy-patterns/references/tenant-resolution.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-express-service/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-express-service/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-express-service/references/app-factory-and-mode-dispatch.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-express-service/references/config-and-module-alias.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-express-service/references/middleware-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-express-service/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-objection-knex/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-objection-knex/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-objection-knex/references/migrations-and-validation.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-objection-knex/references/objection-model-and-knex.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/node-objection-knex/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/notifications-and-messaging/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/notifications-and-messaging/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/notifications-and-messaging/references/provider-abstraction.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/notifications-and-messaging/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/notifications-and-messaging/references/templates-and-fallback.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/observability-and-logging/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/observability-and-logging/references/health-and-readiness.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/observability-and-logging/references/logging-and-structlog.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/observability-and-logging/references/pii-redaction.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/over-engineering-review/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/performance-optimization/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/planning-and-task-breakdown/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/playwright-verification/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/pydantic-schema-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/pydantic-schema-patterns/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/pydantic-schema-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/pydantic-schema-patterns/references/settings-and-validation.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/pydantic-schema-patterns/references/troubleshooting-and-common-errors.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/pydantic-schema-patterns/references/v1-vs-v2.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/python-dao-and-database/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/python-dao-and-database/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/python-dao-and-database/references/advanced-query-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/python-dao-and-database/references/basedao-and-sessions.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/python-dao-and-database/references/sqlalchemy-1x-vs-2x.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/radix-tailwind-component-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/radix-tailwind-component-patterns/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/radix-tailwind-component-patterns/references/radix-primitives-and-variants.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/radix-tailwind-component-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/radix-tailwind-component-patterns/references/tailwind-theme-and-cn.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/react-hook-form-zod-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/react-hook-form-zod-patterns/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/react-hook-form-zod-patterns/references/form-setup-and-zod.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/react-hook-form-zod-patterns/references/multi-step-and-modes.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/react-hook-form-zod-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/redis-caching-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/redis-caching-patterns/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/redis-caching-patterns/references/cache-manager-and-fallback.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/redis-caching-patterns/references/namespacing-and-invalidation.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/redis-caching-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/refresh-docs/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/remember/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/scope/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/scope/scope-template.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/sdlc/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/security-and-hardening/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/security-verification/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/shannon-ai-pentest/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/shannon-ai-pentest/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/shannon-ai-pentest/references/operating-guide.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/shipping-and-launch/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/simplification-debt/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/smoke-test/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/source-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/spec-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/sprint/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/sprint/sprint-template.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/tanstack-react-query-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/tanstack-react-query-patterns/references/mutations-and-cache.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/tanstack-react-query-patterns/references/query-keys-and-hooks.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/task-tracker-sync/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/temporal-config-driven/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/temporal-config-driven/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/temporal-config-driven/references/config-and-retry-idempotency.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/temporal-config-driven/references/dag-dsl-interpreter.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/temporal-config-driven/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/temporal-config-driven/references/schedule-registration.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/temporal-config-driven/references/schedules-and-cron.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/temporal-config-driven/references/worker-workflow-activity-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/test-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/test-plan-review/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/references/github-actions-test-orchestration.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/references/pytest-and-fixtures.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/testing-conventions/references/security-regression-tests.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/threat-model/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/triage/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/ui-ux-design/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/unit-test/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/using-agent-skills/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/vitest-rtl-msw-patterns/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/vitest-rtl-msw-patterns/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/vitest-rtl-msw-patterns/references/msw-and-contract-tests.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/vitest-rtl-msw-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/vitest-rtl-msw-patterns/references/vitest-rtl-setup.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zap-vapt-scanning/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zap-vapt-scanning/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zap-vapt-scanning/references/operating-guide.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zap-vapt-scanning/scripts/endpoints.example.txt +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zap-vapt-scanning/scripts/requirements.txt +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/zap-vapt-scanning/scripts/zap_vapt.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/__main__.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/catalog.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/models.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/prompts.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/render.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/scaffold.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/upgrader.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/src/claude_kit/validator.py +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/CLAUDE.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/CLAUDE.stack.md.tmpl +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/CONTINUITY.template.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/README.claude-sdlc.md.tmpl +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/agent-memory/MEMORY.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/agent-memory/api/.gitkeep +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/agent-memory/architecture/.gitkeep +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/agent-memory/debugging/.gitkeep +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/agent-memory/gotchas/.gitkeep +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/agent-memory/patterns/.gitkeep +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/agent-memory/performance/.gitkeep +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/artifacts/adr.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/artifacts/api-change-report.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/artifacts/feature-spec.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/artifacts/release-plan.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/artifacts/runbook.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/artifacts/security-review.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/artifacts/test-plan.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/agents/data-workflow-agent.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/agents/founder-prototype-agent.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/agents/internal-tools-builder.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/agents/pm-copilot.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/agents/staff-pm-reviewer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/agents/support-ticket-engineer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/devops-and-release/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/devops-and-release/pack.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/engineering-core/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/engineering-core/pack.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/non-engineer-builder/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/non-engineer-builder/pack.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/onboarding-and-docs/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/onboarding-and-docs/pack.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/product-to-code/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/product-to-code/pack.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/quality-and-review/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/quality-and-review/pack.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/security-and-compliance/README.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/packs/security-and-compliance/pack.yaml +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/ai-working-agreement.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/ambiguity-resolution.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/branch-and-pr-policy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/compliance-policy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/non-engineer-safe-coding.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/pii-policy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/production-data-policy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/prompt-to-task-conversion.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/prototype-boundaries.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/rules/secrets-policy.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/customer-issue-to-fix/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/feature-from-idea/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/prompt-to-safe-task/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/prototype-to-production/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/repo-onboarding/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/review-scope/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/review-sprint/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/review-sprint-plan/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/org/skills/review-ux-flow/SKILL.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/backend/go/net-http/rules/go-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/backend/python/fastapi/rules/fastapi-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/db/mongodb/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/db/mongodb/agents/mongodb-specialist.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/db/mongodb/rules/mongodb-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/db/postgres/agents/db-performance-reviewer.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/db/postgres/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/db/postgres/agents/postgres-specialist.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/db/postgres/rules/database-performance.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/db/postgres/rules/postgres-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/frontend/react/rules/design-system-compliance.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/frontend/react/rules/mobile-design-guidelines.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/frontend/react/rules/react-patterns.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/templates/stacks/frontend/react/rules/ui-design-system.md +0 -0
- {claude_code_kit-0.24.0 → claude_code_kit-0.26.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.26.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.26.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,64 @@ 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.26.0] — 2026-06-24
|
|
8
|
+
|
|
9
|
+
**Post-hardening follow-up: two correctness/security fixes plus polish, all from a verified review
|
|
10
|
+
punch list.**
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Plugin now guards secret-file reads out of the box.** `protect-secrets` (PreToolUse/Read — blocks
|
|
14
|
+
reading `.env`/`.pem`/`.key`/`id_rsa`/credentials/…) was installed by the pip CLI (it's in the
|
|
15
|
+
`standard`/`all` profiles) but missing from the always-on plugin hook set, so plugin-only users had
|
|
16
|
+
no Read guard until they ran an init. It's now in `PLUGIN_HOOK_IDS`; `hooks/hooks.json` gains a
|
|
17
|
+
`PreToolUse`/`Read` group.
|
|
18
|
+
- **`.github/dependabot.yml`** for the `github-actions` ecosystem (weekly, grouped) so CI/publish
|
|
19
|
+
actions are kept current and SHA-pinned by Dependabot's PRs, with auditable tag comments.
|
|
20
|
+
`pypa/gh-action-pypi-publish` stays on `release/v1` (required for Trusted Publishing + attestations).
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- **`pipeline close-gate` enforces the blocking-findings rule.** It now refuses to record a gate as
|
|
24
|
+
passed while any **critical/high/medium** findings are open (`rules/quality-gates.md`); low/cosmetic
|
|
25
|
+
still pass. A deliberate override requires `--force` **with** `--override-reason "<why>"`, recorded
|
|
26
|
+
under `gate_overrides[gate]` for human review.
|
|
27
|
+
- **`pipeline validate` re-checks gate evidence.** When a gate is recorded passed and has a
|
|
28
|
+
`gate_evidence` path, validate now fails if that file no longer exists on disk, and surfaces any
|
|
29
|
+
force-closed gate. Lenient on the upgrade path (no evidence map → silent; partial map → warn).
|
|
30
|
+
- **Inline hook guards quiet their `jq` calls** (`2>/dev/null || true`) so malformed/missing hook JSON
|
|
31
|
+
can't spam stderr — matching the script-backed guards; `guard-secrets.sh` aligned for consistency.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
- **Docs consistency checker catches duplicate gate tables.** `check_docs_consistency.py` previously
|
|
35
|
+
keyed profile gate rows in a dict, so a second (possibly stale) table could silently overwrite an
|
|
36
|
+
earlier one; it now collects every occurrence, flags duplicates, and requires each to match
|
|
37
|
+
`profiles.yaml`.
|
|
38
|
+
- **Stale comments in `scripts/init.sh`** corrected: it's described as the degraded, no-resolution
|
|
39
|
+
fallback (the pip CLI is the catalog-driven/upgrade-safe installer), and existing files are noted as
|
|
40
|
+
written to `*.claude-kit` sidecars (not `*.example`).
|
|
41
|
+
|
|
42
|
+
## [0.25.0] — 2026-06-24
|
|
43
|
+
|
|
44
|
+
**PR4 of the phased hardening review: supply-chain provenance, an explicit trust model, and a full
|
|
45
|
+
genericization pass so the public repo carries only neutral examples.**
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
- **PEP 740 build attestations re-enabled** in `publish.yml`. They were temporarily disabled while
|
|
49
|
+
Sigstore's Rekor transparency log was returning HTTP 502s at upload time; Sigstore has since been
|
|
50
|
+
healthy (verified via status.sigstore.dev — all services online, no incidents), so releases are
|
|
51
|
+
signed again for supply-chain provenance.
|
|
52
|
+
- **A "Security & trust model" section** in `README.md` (with a nav link) stating plainly that the
|
|
53
|
+
guard hooks are convenience, not a hardened boundary; that most quality gates are agent protocols
|
|
54
|
+
rather than mechanical enforcement; and that MCP servers are third-party code — surfacing
|
|
55
|
+
`SECURITY.md`'s posture where users decide to rely on the kit.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
- **Genericization pass** — removed residual internal / company-specific identifiers so the published
|
|
59
|
+
repo carries only neutral examples. Genericized the 0.15.0 adoption narrative in `CHANGELOG.md` and
|
|
60
|
+
`docs/coverage-audit.md`; renamed test functions and replaced an internal-token blocklist with a
|
|
61
|
+
positive neutralization check in `tests/test_scaffold.py`; and neutralized the skills-collection
|
|
62
|
+
reference docs (example feature / module / variable names, domain-specific jargon, and a
|
|
63
|
+
region-specific registry host) into generic equivalents. Examples-only — no behavior change.
|
|
64
|
+
|
|
7
65
|
## [0.24.0] — 2026-06-24
|
|
8
66
|
|
|
9
67
|
**PR3 of the phased hardening review: deeper validation, a deterministic pipeline CLI, an MCP
|
|
@@ -532,7 +590,7 @@ values (→ `#______` placeholders, matching the existing `design-system-complia
|
|
|
532
590
|
|
|
533
591
|
## [0.15.0] — 2026-06-16
|
|
534
592
|
|
|
535
|
-
**Adopt
|
|
593
|
+
**Adopt a set of internal engineering personas & skills** (a private Claude Code plugin marketplace —
|
|
536
594
|
11 agents + 29 skills across 7 plugins: engineer, designer, pm, context-gen, staff-em, staff-sdet,
|
|
537
595
|
staff-pm). Those plugins are excellent but heavily **stack-bound** (FastAPI/SQLAlchemy/Pydantic/React/
|
|
538
596
|
Tailwind/Radix/Zod/Temporal/Kafka/Langfuse, against an internal `.ai/` doc convention). Mirroring all
|
|
@@ -546,7 +604,7 @@ nothing), **18 extend** (a real delta folded into the nearest existing component
|
|
|
546
604
|
layer), **1 adopt-core** (genuinely new + stack-agnostic). Net: **2 new core skills, ~10 surgical core
|
|
547
605
|
extends, 1 new React overlay rule + FastAPI/React overlay enrichments, 5 new org components** — zero
|
|
548
606
|
stack leakage into core, zero diluting duplicates. IP boundary: technique-and-structure only, no source
|
|
549
|
-
text copied; every
|
|
607
|
+
text copied; every source-internal reference (internal doc conventions, internal field/service names, numeric
|
|
550
608
|
heuristics) stripped or genericized.
|
|
551
609
|
|
|
552
610
|
Three deliberate decisions: **(1)** Temporal/Kafka/Langfuse are **not** added as selectable stacks —
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-kit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.26.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
|
|
@@ -44,7 +44,7 @@ with a quality gate between every phase. **No application code. No Docker. Confi
|
|
|
44
44
|
[](https://github.com/ajyadav013/claude-kit/actions/workflows/ci.yml)
|
|
45
45
|
[](CHANGELOG.md)
|
|
46
46
|
|
|
47
|
-
✨ [Features](#features) · 🚀 [Quick start](#quick-start) · 🧭 [How it works](#how-it-works) · 🔁 [The pipeline](#the-pipeline) · 🧪 [Example](examples/) · 🌱 [What we adopted](#influences--what-we-adopted) · 🤖 [Agents](#the-agents) · 🧩 [Catalog](#catalog--extensibility) · 🛠️ [CLI](#cli-reference) · 📖 [Agent guide](docs/agents.md)
|
|
47
|
+
✨ [Features](#features) · 🚀 [Quick start](#quick-start) · 🧭 [How it works](#how-it-works) · 🔁 [The pipeline](#the-pipeline) · 🧪 [Example](examples/) · 🌱 [What we adopted](#influences--what-we-adopted) · 🤖 [Agents](#the-agents) · 🧩 [Catalog](#catalog--extensibility) · 🛠️ [CLI](#cli-reference) · 🔒 [Security](#security--trust-model) · 📖 [Agent guide](docs/agents.md)
|
|
48
48
|
|
|
49
49
|
</div>
|
|
50
50
|
|
|
@@ -668,6 +668,30 @@ hints.
|
|
|
668
668
|
|
|
669
669
|
---
|
|
670
670
|
|
|
671
|
+
## Security & trust model
|
|
672
|
+
|
|
673
|
+
claude-kit installs **configuration only** — no application code, no Docker, nothing that runs as a
|
|
674
|
+
service. It never executes your code; it lays down rules, agents, skills, gates, and hook scripts that
|
|
675
|
+
**Claude Code** then follows. Three honest caveats are worth understanding before you rely on it:
|
|
676
|
+
|
|
677
|
+
- **The guard hooks are convenience, not a hardened boundary.** Scripts like `guard-secrets`,
|
|
678
|
+
`guard-destructive-git`, and the `warn-*` advisories raise the cost of a mistake — they do **not**
|
|
679
|
+
sandbox the agent or guarantee prevention. They need a POSIX shell + `jq` and **silently no-op**
|
|
680
|
+
without them (e.g. on Windows outside WSL/Git Bash). Treat them as seatbelts, not walls.
|
|
681
|
+
- **Most quality gates are agent protocols, not mechanical enforcement.** The pipeline's gates
|
|
682
|
+
(`spec-complete`, `code-review`, `security-clear`, …) are disciplines Claude is instructed to follow
|
|
683
|
+
and self-verify; only the hook scripts are deterministic, host-enforced checks. A capable model can
|
|
684
|
+
still be wrong or skip a step — keep a human in the loop for anything that matters.
|
|
685
|
+
- **MCP servers are third-party code.** Each fragment runs an external package (pinned to an exact
|
|
686
|
+
version) or a hosted endpoint that claude-kit references but does **not** vendor or audit. Review a
|
|
687
|
+
server's source and license before enabling it.
|
|
688
|
+
|
|
689
|
+
Releases are published to PyPI via OIDC **Trusted Publishing** (no long-lived API token) with **PEP 740
|
|
690
|
+
build attestations** for supply-chain provenance. Report vulnerabilities privately — see
|
|
691
|
+
[`SECURITY.md`](SECURITY.md) for the full scope and reporting process.
|
|
692
|
+
|
|
693
|
+
---
|
|
694
|
+
|
|
671
695
|
## Project structure
|
|
672
696
|
|
|
673
697
|
<details>
|
|
@@ -14,7 +14,7 @@ with a quality gate between every phase. **No application code. No Docker. Confi
|
|
|
14
14
|
[](https://github.com/ajyadav013/claude-kit/actions/workflows/ci.yml)
|
|
15
15
|
[](CHANGELOG.md)
|
|
16
16
|
|
|
17
|
-
✨ [Features](#features) · 🚀 [Quick start](#quick-start) · 🧭 [How it works](#how-it-works) · 🔁 [The pipeline](#the-pipeline) · 🧪 [Example](examples/) · 🌱 [What we adopted](#influences--what-we-adopted) · 🤖 [Agents](#the-agents) · 🧩 [Catalog](#catalog--extensibility) · 🛠️ [CLI](#cli-reference) · 📖 [Agent guide](docs/agents.md)
|
|
17
|
+
✨ [Features](#features) · 🚀 [Quick start](#quick-start) · 🧭 [How it works](#how-it-works) · 🔁 [The pipeline](#the-pipeline) · 🧪 [Example](examples/) · 🌱 [What we adopted](#influences--what-we-adopted) · 🤖 [Agents](#the-agents) · 🧩 [Catalog](#catalog--extensibility) · 🛠️ [CLI](#cli-reference) · 🔒 [Security](#security--trust-model) · 📖 [Agent guide](docs/agents.md)
|
|
18
18
|
|
|
19
19
|
</div>
|
|
20
20
|
|
|
@@ -638,6 +638,30 @@ hints.
|
|
|
638
638
|
|
|
639
639
|
---
|
|
640
640
|
|
|
641
|
+
## Security & trust model
|
|
642
|
+
|
|
643
|
+
claude-kit installs **configuration only** — no application code, no Docker, nothing that runs as a
|
|
644
|
+
service. It never executes your code; it lays down rules, agents, skills, gates, and hook scripts that
|
|
645
|
+
**Claude Code** then follows. Three honest caveats are worth understanding before you rely on it:
|
|
646
|
+
|
|
647
|
+
- **The guard hooks are convenience, not a hardened boundary.** Scripts like `guard-secrets`,
|
|
648
|
+
`guard-destructive-git`, and the `warn-*` advisories raise the cost of a mistake — they do **not**
|
|
649
|
+
sandbox the agent or guarantee prevention. They need a POSIX shell + `jq` and **silently no-op**
|
|
650
|
+
without them (e.g. on Windows outside WSL/Git Bash). Treat them as seatbelts, not walls.
|
|
651
|
+
- **Most quality gates are agent protocols, not mechanical enforcement.** The pipeline's gates
|
|
652
|
+
(`spec-complete`, `code-review`, `security-clear`, …) are disciplines Claude is instructed to follow
|
|
653
|
+
and self-verify; only the hook scripts are deterministic, host-enforced checks. A capable model can
|
|
654
|
+
still be wrong or skip a step — keep a human in the loop for anything that matters.
|
|
655
|
+
- **MCP servers are third-party code.** Each fragment runs an external package (pinned to an exact
|
|
656
|
+
version) or a hosted endpoint that claude-kit references but does **not** vendor or audit. Review a
|
|
657
|
+
server's source and license before enabling it.
|
|
658
|
+
|
|
659
|
+
Releases are published to PyPI via OIDC **Trusted Publishing** (no long-lived API token) with **PEP 740
|
|
660
|
+
build attestations** for supply-chain provenance. Report vulnerabilities privately — see
|
|
661
|
+
[`SECURITY.md`](SECURITY.md) for the full scope and reporting process.
|
|
662
|
+
|
|
663
|
+
---
|
|
664
|
+
|
|
641
665
|
## Project structure
|
|
642
666
|
|
|
643
667
|
<details>
|
|
@@ -51,9 +51,9 @@ The pattern matches the rest of the kit: a *discipline* is a RULE (always-on gui
|
|
|
51
51
|
spec/EM gate exists at all. P0-2 is the exception that strengthens *every* gate by making a fabricated
|
|
52
52
|
verdict auto-Critical, without adding a token.
|
|
53
53
|
|
|
54
|
-
##
|
|
54
|
+
## Internal-toolkit adoption disciplines (as of 0.15.0)
|
|
55
55
|
|
|
56
|
-
The
|
|
56
|
+
The internal persona/skill adoption (CHANGELOG 0.15.0) added capabilities reuse-first. Consistent with the
|
|
57
57
|
posture above, it added **no new gate tokens** — the new capabilities are SKILLs, OVERLAY rules, or
|
|
58
58
|
checklists that ride *inside existing* review gates. Enforcement class of each:
|
|
59
59
|
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"hooks": [
|
|
30
30
|
{
|
|
31
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"
|
|
32
|
+
"command": "command -v jq >/dev/null 2>&1 || exit 0; CMD=$(jq -r '.tool_input.command' 2>/dev/null || true); 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
33
|
},
|
|
34
34
|
{
|
|
35
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"
|
|
36
|
+
"command": "command -v jq >/dev/null 2>&1 || exit 0; CMD=$(jq -r '.tool_input.command' 2>/dev/null || true); 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
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"type": "command",
|
|
@@ -49,6 +49,15 @@
|
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
},
|
|
52
|
+
{
|
|
53
|
+
"matcher": "Read",
|
|
54
|
+
"hooks": [
|
|
55
|
+
{
|
|
56
|
+
"type": "command",
|
|
57
|
+
"command": "command -v jq >/dev/null 2>&1 || exit 0; FP=$(jq -r '.tool_input.file_path // empty' 2>/dev/null || true); if echo \"$FP\" | grep -qE '(^|/)\\.env$|\\.pem$|\\.key$|(^|/)id_rsa|(^|/)id_ed25519|(^|/)credentials(\\.json)?$|\\.p12$'; then echo 'BLOCKED: refusing to read a secrets file. Use .env.example or a secret manager.' >&2; exit 2; fi"
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
},
|
|
52
61
|
{
|
|
53
62
|
"matcher": "Edit|Write",
|
|
54
63
|
"hooks": [
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Pairs with the secret-scanner agent and the protect-secrets read-guard — this is the automatic,
|
|
4
4
|
# every-commit guardrail. Degrades to a no-op when not a git commit or git/jq is unavailable.
|
|
5
5
|
command -v jq >/dev/null 2>&1 || exit 0
|
|
6
|
-
CMD=$(jq -r '.tool_input.command // empty' 2>/dev/null)
|
|
6
|
+
CMD=$(jq -r '.tool_input.command // empty' 2>/dev/null || true)
|
|
7
7
|
echo "$CMD" | grep -qE 'git[[:space:]]+commit' || exit 0
|
|
8
8
|
cd "${CLAUDE_PROJECT_DIR:-.}" 2>/dev/null || exit 0
|
|
9
9
|
command -v git >/dev/null 2>&1 || exit 0
|
|
@@ -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.26.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"
|
|
@@ -39,10 +39,14 @@ Schema (keep it small and truthful — omit a field rather than guess it):
|
|
|
39
39
|
"lanes": { "<lane>": "not-started | in-progress | passed | failed" },
|
|
40
40
|
"last_gate_passed": "<gate token, e.g. code-review>",
|
|
41
41
|
"open_findings": { "critical": 0, "high": 0, "medium": 0 },
|
|
42
|
+
"gate_evidence": { "<gate token>": "<path to the evidence artifact>" },
|
|
43
|
+
"gate_overrides": { "<gate token>": "<why a blocking gate was force-closed>" },
|
|
42
44
|
"next": "<the immediate next action>"
|
|
43
45
|
}
|
|
44
46
|
```
|
|
45
47
|
|
|
48
|
+
A gate is PASS only when zero **critical/high/medium** findings remain open (low/cosmetic may pass with notes). `gate_evidence` records the artifact backing each passed gate; `gate_overrides` is written **only** when a gate is deliberately force-closed despite open blocking findings, so a reviewer (or `claude-kit pipeline validate`) can surface and re-examine it.
|
|
49
|
+
|
|
46
50
|
**Resume by reloading, not by re-running.** On resume, read the snapshot as *context* to decide where to continue — then continue from there. Do **not** re-run setup that already ran, re-apply edits already committed, or re-open a gate already PASSed. Re-enter at the first gate *after* `last_gate_passed`, re-running only un-passed or defect-affected lanes. The snapshot records what was *true when written*, so the verify-before-trust check still applies (`.claude/rules/agent-memory.md`): if a "passed" gate's artifact is gone, treat it as not passed. If the snapshot is absent or unparseable, fall back to the freeform CONTINUITY state (back-compatible) and proceed.
|
|
47
51
|
|
|
48
52
|
## Concurrency
|
|
@@ -183,13 +183,17 @@ def _effective_gates() -> dict[str, set[str]]:
|
|
|
183
183
|
return {name: resolve(name) for name in profiles}
|
|
184
184
|
|
|
185
185
|
|
|
186
|
-
def _doc_gate_sets(relfile: str) -> dict[str, set[str]]:
|
|
187
|
-
"""Parse
|
|
188
|
-
|
|
186
|
+
def _doc_gate_sets(relfile: str) -> dict[str, list[set[str]]]:
|
|
187
|
+
"""Parse *every* lean/standard/enterprise gate row from a doc (one entry per table occurrence).
|
|
188
|
+
|
|
189
|
+
Returns a list of gate sets per profile rather than a single value, so a second (possibly stale)
|
|
190
|
+
gate table can't silently overwrite an earlier one — each occurrence is checked independently.
|
|
191
|
+
"""
|
|
192
|
+
raw: dict[str, list[str]] = {}
|
|
189
193
|
for line in _read(relfile).splitlines():
|
|
190
194
|
m = re.match(r"\|\s*\*\*(lean|standard|enterprise)\*\*\s*\|(.+?)\|\s*$", line)
|
|
191
195
|
if m:
|
|
192
|
-
raw
|
|
196
|
+
raw.setdefault(m.group(1), []).append(m.group(2))
|
|
193
197
|
|
|
194
198
|
def tokens(cell: str) -> set[str]:
|
|
195
199
|
return {
|
|
@@ -198,16 +202,18 @@ def _doc_gate_sets(relfile: str) -> dict[str, set[str]]:
|
|
|
198
202
|
if t.strip().strip("*").strip("\\").strip()
|
|
199
203
|
}
|
|
200
204
|
|
|
201
|
-
def expand(
|
|
202
|
-
cell = raw[profile]
|
|
205
|
+
def expand(cell: str) -> set[str]:
|
|
203
206
|
if (
|
|
204
207
|
"+" in cell
|
|
205
208
|
): # e.g. "standard + pipeline-green · observability-ready · acceptance"
|
|
206
209
|
base, extra = cell.split("+", 1)
|
|
207
|
-
|
|
210
|
+
base_name = base.strip().strip("*").lower()
|
|
211
|
+
base_cells = raw.get(base_name)
|
|
212
|
+
base_gates = expand(base_cells[0]) if base_cells else set()
|
|
213
|
+
return base_gates | tokens(extra)
|
|
208
214
|
return tokens(cell)
|
|
209
215
|
|
|
210
|
-
return {p: expand(
|
|
216
|
+
return {p: [expand(c) for c in cells] for p, cells in raw.items()}
|
|
211
217
|
|
|
212
218
|
|
|
213
219
|
def check_profile_gates() -> list[str]:
|
|
@@ -216,21 +222,30 @@ def check_profile_gates() -> list[str]:
|
|
|
216
222
|
for relfile in ("README.md", "skills/sdlc/SKILL.md"):
|
|
217
223
|
doc = _doc_gate_sets(relfile)
|
|
218
224
|
for profile in ("lean", "standard", "enterprise"):
|
|
219
|
-
|
|
225
|
+
occurrences = doc.get(profile) or []
|
|
226
|
+
if not occurrences:
|
|
220
227
|
errors.append(f"{relfile}: no gate row found for profile {profile!r}")
|
|
221
228
|
continue
|
|
222
|
-
if
|
|
223
|
-
missing = effective[profile] - doc[profile]
|
|
224
|
-
extra = doc[profile] - effective[profile]
|
|
225
|
-
detail = []
|
|
226
|
-
if missing:
|
|
227
|
-
detail.append(f"missing {sorted(missing)}")
|
|
228
|
-
if extra:
|
|
229
|
-
detail.append(f"unexpected {sorted(extra)}")
|
|
229
|
+
if len(occurrences) > 1:
|
|
230
230
|
errors.append(
|
|
231
|
-
f"{relfile}: {
|
|
232
|
-
|
|
231
|
+
f"{relfile}: {len(occurrences)} gate rows for profile {profile!r} "
|
|
232
|
+
"(duplicate gate table) — keep exactly one so a stale table can't hide "
|
|
233
|
+
"behind a correct one"
|
|
233
234
|
)
|
|
235
|
+
for idx, gates in enumerate(occurrences):
|
|
236
|
+
if gates != effective[profile]:
|
|
237
|
+
missing = effective[profile] - gates
|
|
238
|
+
extra = gates - effective[profile]
|
|
239
|
+
detail = []
|
|
240
|
+
if missing:
|
|
241
|
+
detail.append(f"missing {sorted(missing)}")
|
|
242
|
+
if extra:
|
|
243
|
+
detail.append(f"unexpected {sorted(extra)}")
|
|
244
|
+
where = "" if len(occurrences) == 1 else f" (occurrence {idx + 1})"
|
|
245
|
+
errors.append(
|
|
246
|
+
f"{relfile}: {profile} gate row{where} disagrees with "
|
|
247
|
+
"profiles.yaml — " + "; ".join(detail)
|
|
248
|
+
)
|
|
234
249
|
return errors
|
|
235
250
|
|
|
236
251
|
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
# project's .claude/ directory and drops a generic CLAUDE.md at the project root.
|
|
6
6
|
#
|
|
7
7
|
# Used by the /claude-kit:init slash command (plugin) and runnable directly from a checkout.
|
|
8
|
-
#
|
|
8
|
+
# This is a degraded, no-resolution fallback: it copies the full payload as-is. The pip CLI
|
|
9
|
+
# (`claude-kit init`) is the recommended installer — it is catalog-driven (stack/profile/MCP
|
|
10
|
+
# resolution) and upgrade-safe (diff/upgrade), which this script does not do.
|
|
9
11
|
#
|
|
10
12
|
# Usage: init.sh [TARGET_DIR] [--defaults] [--force] [--minimal] [--no-hooks]
|
|
11
13
|
# TARGET_DIR project to scaffold into (default: $CLAUDE_PROJECT_DIR or current dir)
|
|
12
14
|
# --defaults accepted for parity with the pip CLI (`claude-kit init --defaults`); a no-op here
|
|
13
15
|
# because this shell fallback is already non-interactive
|
|
14
|
-
# --force overwrite existing CLAUDE.md / settings.json (otherwise written as *.
|
|
16
|
+
# --force overwrite existing CLAUDE.md / settings.json (otherwise written as *.claude-kit sidecars)
|
|
15
17
|
# --minimal only CLAUDE.md + rules/ (skip agents, skills, hooks, memory)
|
|
16
18
|
# --no-hooks skip installing hook scripts and settings.json
|
|
17
19
|
set -euo pipefail
|
|
@@ -151,7 +151,7 @@ from app.database import Base
|
|
|
151
151
|
from config.settings import settings
|
|
152
152
|
|
|
153
153
|
# Import all models (wildcard imports)
|
|
154
|
-
from app.
|
|
154
|
+
from app.items.models import *
|
|
155
155
|
from app.units.models import *
|
|
156
156
|
# ... (40+ wildcard imports)
|
|
157
157
|
|
|
@@ -183,8 +183,8 @@ from app.users.models import User
|
|
|
183
183
|
from app.organizations.models import Organization
|
|
184
184
|
|
|
185
185
|
# Wildcard imports (acceptable in env.py, used in multiple production services)
|
|
186
|
-
from
|
|
187
|
-
from
|
|
186
|
+
from app.users.models import *
|
|
187
|
+
from app.tenants.models import *
|
|
188
188
|
```
|
|
189
189
|
|
|
190
190
|
**Critical**: If a model is not imported in `env.py`, Alembic won't detect it for autogenerate.
|
|
@@ -146,9 +146,9 @@ from app.database import Base
|
|
|
146
146
|
from config.settings import settings
|
|
147
147
|
|
|
148
148
|
# Wildcard model imports
|
|
149
|
-
from app.
|
|
149
|
+
from app.items.models import *
|
|
150
150
|
from app.units.models import *
|
|
151
|
-
from app.
|
|
151
|
+
from app.catalog.models import *
|
|
152
152
|
# ... 40+ wildcard imports
|
|
153
153
|
|
|
154
154
|
# target_metadata
|
|
@@ -34,10 +34,10 @@ alembic/versions/
|
|
|
34
34
|
```
|
|
35
35
|
alembic/versions/
|
|
36
36
|
├── 202407301751-ad610b2bab70_add_event_log_table.py
|
|
37
|
-
├── 202408011255-
|
|
37
|
+
├── 202408011255-e848fe551d9b_add_category_mapping_tables.py
|
|
38
38
|
├── 202408012159-c3f783a32f7c_add_username_to_event_log_table.py
|
|
39
|
-
├── 202408052213-
|
|
40
|
-
├── 202409031128-
|
|
39
|
+
├── 202408052213-943a94fc4f73_add_is_active_to_mapping_tables.py
|
|
40
|
+
├── 202409031128-0fc8dde689fe_add_source_cluster.py
|
|
41
41
|
└── ...
|
|
42
42
|
```
|
|
43
43
|
|
|
@@ -53,10 +53,10 @@ alembic/versions/
|
|
|
53
53
|
|
|
54
54
|
```
|
|
55
55
|
migrations/versions/
|
|
56
|
-
├──
|
|
56
|
+
├── 554395de0772_added_data_models.py
|
|
57
57
|
├── 9d07416cb3d0_modified_generated_file_model.py
|
|
58
|
-
├──
|
|
59
|
-
└──
|
|
58
|
+
├── cb876bd3ff47_added_watermark_model.py
|
|
59
|
+
└── d5885c4539c2_updated_watermark_table.py
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
**Format**: `{auto_hash}_{description}.py` (default Alembic behavior)
|
{claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-pagination-filtering-sorting/README.md
RENAMED
|
@@ -18,7 +18,7 @@ This skill covers production-tested conventions for designing paginated, filtere
|
|
|
18
18
|
|
|
19
19
|
## Origin
|
|
20
20
|
|
|
21
|
-
This skill derives from real production backend services handling inventory, forecasting,
|
|
21
|
+
This skill derives from real production backend services handling inventory, forecasting, and order data. It distills conventions observed across multiple services with large datasets (10k-1M+ records per tenant) requiring efficient pagination, multi-dimensional filtering, and flexible sorting.
|
|
22
22
|
|
|
23
23
|
## Relation to other skills
|
|
24
24
|
|
{claude_code_kit-0.24.0 → claude_code_kit-0.26.0}/skills/api-pagination-filtering-sorting/SKILL.md
RENAMED
|
@@ -26,7 +26,7 @@ Standardize HTTP query parameter conventions and response metadata for paginated
|
|
|
26
26
|
|
|
27
27
|
4. **Multi-value filters via FastAPI `Query`**: For filters that accept multiple values (e.g., `status`, `store_ids`, `segment_codes`), use `Optional[List[str]] = Query(None, description="...")`. The client sends `?status=pending&status=approved` or `?status[]=pending&status[]=approved` (FastAPI accepts both). In the query builder, translate to SQL `IN` clause or `ANY(ARRAY[...])`.
|
|
28
28
|
|
|
29
|
-
5. **Comma-separated multi-value filters**: Some endpoints accept comma-separated values in a single param (e.g., `?
|
|
29
|
+
5. **Comma-separated multi-value filters**: Some endpoints accept comma-separated values in a single param (e.g., `?items=ITEM-001,ITEM-002,ITEM-003`). Use `Optional[str] = Query(None)` and split by comma in the service or repository layer before building SQL. This pattern is common for legacy APIs or when the client cannot send array query params.
|
|
30
30
|
|
|
31
31
|
6. **Hierarchical filters**: Product or location hierarchies (e.g., segment → family → class → brick; zone → format → state → region → city → store) use separate query params for each level. Each is optional; when provided, it narrows results to that level. Example: `?segment=BEVERAGES&family=SOFT_DRINKS&class=COLA`. Query builder applies `WHERE` clauses for each non-null filter. Some services support both singular and plural param names (`?store=...` and `?stores=...`); prefer plural for multi-value, singular for single value.
|
|
32
32
|
|
|
@@ -36,9 +36,9 @@ Standardize HTTP query parameter conventions and response metadata for paginated
|
|
|
36
36
|
|
|
37
37
|
9. **Repository layer pagination**: The repository fetches two results in parallel—`(records_data, total_count)`—via `asyncio.gather` or sequential calls. It executes the count query to get `total_count`, then executes the data query with `LIMIT/OFFSET`. Service layer constructs the response object with data + pagination metadata. For download endpoints (no pagination), omit `LIMIT/OFFSET` from the query.
|
|
38
38
|
|
|
39
|
-
10. **Search across multiple fields**: A single `search` query param applies a case-insensitive substring match across multiple columns. In SQL, use `WHERE (LOWER(field1) LIKE LOWER(:search) OR LOWER(field2) LIKE LOWER(:search) OR ...)` with param `%{search}%`. Some implementations use `ILIKE` (PostgreSQL) or full-text search. Common searchable fields:
|
|
39
|
+
10. **Search across multiple fields**: A single `search` query param applies a case-insensitive substring match across multiple columns. In SQL, use `WHERE (LOWER(field1) LIKE LOWER(:search) OR LOWER(field2) LIKE LOWER(:search) OR ...)` with param `%{search}%`. Some implementations use `ILIKE` (PostgreSQL) or full-text search. Common searchable fields: item codes, descriptions, store IDs, order IDs.
|
|
40
40
|
|
|
41
|
-
11. **Pydantic models for query params**: Define a `QueryParams` Pydantic model (e.g., `
|
|
41
|
+
11. **Pydantic models for query params**: Define a `QueryParams` Pydantic model (e.g., `InventoryQueryParams`, `ForecastQuery`) to encapsulate all filters, pagination, sorting, and search params. This separates route handler param extraction from business logic. The model can provide helper methods like `@property def limit(self)` to derive limit from `page_size` or compute `offset` from `page` and `page_size`.
|
|
42
42
|
|
|
43
43
|
12. **FastAPI route handler**: Extract query params via `Query()` for primitive types or depend on Pydantic model. Calculate `offset = (page - 1) * page_size` if needed. Call service layer with `query_params` object or individual params. Return response via `ResponseData.ok(data=..., pagination=...)` or a typed response model wrapping data + metadata.
|
|
44
44
|
|
|
@@ -175,8 +175,8 @@ class ItemQueryBuilder:
|
|
|
175
175
|
search_param = self._add_param(f"%{search}%")
|
|
176
176
|
return f"""
|
|
177
177
|
AND (
|
|
178
|
-
LOWER(
|
|
179
|
-
OR LOWER(
|
|
178
|
+
LOWER(item_id) LIKE LOWER({search_param})
|
|
179
|
+
OR LOWER(item_description) LIKE LOWER({search_param})
|
|
180
180
|
OR LOWER(store_id) LIKE LOWER({search_param})
|
|
181
181
|
)
|
|
182
182
|
"""
|
|
@@ -186,7 +186,7 @@ class ItemQueryBuilder:
|
|
|
186
186
|
sort_mapping = {
|
|
187
187
|
"created_at": "created_at",
|
|
188
188
|
"updated_at": "updated_at",
|
|
189
|
-
"
|
|
189
|
+
"item": "item_id",
|
|
190
190
|
"store": "store_id",
|
|
191
191
|
}
|
|
192
192
|
column = sort_mapping.get(sort_by, "created_at")
|
|
@@ -284,7 +284,7 @@ async def list_items(
|
|
|
284
284
|
sort_by: str = Query("created_at", description="Field to sort by"),
|
|
285
285
|
sort_order: str = Query("desc", regex="^(asc|desc)$", description="Sort direction"),
|
|
286
286
|
# Search
|
|
287
|
-
search: Optional[str] = Query(None, description="Search across
|
|
287
|
+
search: Optional[str] = Query(None, description="Search across item, description, store"),
|
|
288
288
|
# Filters
|
|
289
289
|
status: Optional[List[str]] = Query(None, description="Filter by status (multi-value)"),
|
|
290
290
|
store_ids: Optional[List[str]] = Query(None, description="Filter by store IDs"),
|
|
@@ -301,7 +301,7 @@ async def list_items(
|
|
|
301
301
|
- page_size: Records per page (1-100, default: 20)
|
|
302
302
|
|
|
303
303
|
**Sorting:**
|
|
304
|
-
- sort_by: Field to sort by (created_at, updated_at,
|
|
304
|
+
- sort_by: Field to sort by (created_at, updated_at, item, store)
|
|
305
305
|
- sort_order: asc or desc (default: desc)
|
|
306
306
|
|
|
307
307
|
**Filters:**
|
|
@@ -311,7 +311,7 @@ async def list_items(
|
|
|
311
311
|
- family: Product family (hierarchical, requires segment)
|
|
312
312
|
|
|
313
313
|
**Search:**
|
|
314
|
-
- search: Substring match across
|
|
314
|
+
- search: Substring match across item_id, item_description, store_id
|
|
315
315
|
"""
|
|
316
316
|
query_params = QueryParams(
|
|
317
317
|
page=page,
|
|
@@ -336,7 +336,7 @@ async def list_items(
|
|
|
336
336
|
5. **Single-responsibility violation**: Query construction in route handlers; move SQL building to a dedicated QueryBuilder or repository method.
|
|
337
337
|
6. **Zero-indexed `page` in user-facing APIs**: Users expect page 1 to be the first page; use 1-indexed `page` in API and convert to 0-indexed offset internally.
|
|
338
338
|
7. **Hardcoding sort column names**: User sends `sort_by=doh` but SQL uses `days_on_hand`; maintain a sort mapping dict to translate user-facing names to column names.
|
|
339
|
-
8. **Ignoring case-sensitivity in search**: `WHERE
|
|
339
|
+
8. **Ignoring case-sensitivity in search**: `WHERE item_id LIKE :search` is case-sensitive on some DBs; use `LOWER(...)` or `ILIKE` for case-insensitive search.
|
|
340
340
|
9. **Fetching full result set then paginating in Python**: Always push `LIMIT/OFFSET` to SQL; paginating in-memory defeats the purpose and exhausts memory on large datasets.
|
|
341
341
|
10. **Not validating `sort_order`**: Accepting arbitrary `sort_order` can inject ASC/DESC into SQL unsafely; use `regex="^(asc|desc)$"` or enum validation.
|
|
342
342
|
11. **Returning inconsistent metadata field names**: `total` vs `total_records`, `limit` vs `page_size`, `next` vs `has_next`; standardize on one naming convention per service.
|
|
@@ -86,16 +86,16 @@ WHERE store_id = ANY($2)
|
|
|
86
86
|
Legacy or client-constrained APIs:
|
|
87
87
|
|
|
88
88
|
```python
|
|
89
|
-
|
|
89
|
+
items: Optional[str] = Query(None, description="Comma-separated item codes")
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
Split in service/repository:
|
|
93
93
|
```python
|
|
94
|
-
|
|
95
|
-
# Then use in SQL: WHERE
|
|
94
|
+
item_list = items.split(',') if items else []
|
|
95
|
+
# Then use in SQL: WHERE item_id = ANY($1)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
Example: `?
|
|
98
|
+
Example: `?items=ITEM-001,ITEM-002,ITEM-003`
|
|
99
99
|
|
|
100
100
|
## Hierarchical filters
|
|
101
101
|
|
|
@@ -172,14 +172,14 @@ query = f"ORDER BY {column} {sort_order.upper()}"
|
|
|
172
172
|
Single search param for multi-field substring matching:
|
|
173
173
|
|
|
174
174
|
```python
|
|
175
|
-
search: Optional[str] = Query(None, description="Search text across
|
|
175
|
+
search: Optional[str] = Query(None, description="Search text across item, description, store")
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
Translate to case-insensitive SQL:
|
|
179
179
|
```sql
|
|
180
180
|
WHERE (
|
|
181
|
-
LOWER(
|
|
182
|
-
OR LOWER(
|
|
181
|
+
LOWER(item_id) LIKE LOWER($1)
|
|
182
|
+
OR LOWER(item_description) LIKE LOWER($1)
|
|
183
183
|
OR LOWER(store_id) LIKE LOWER($1)
|
|
184
184
|
)
|
|
185
185
|
```
|
|
@@ -189,8 +189,8 @@ Param value: `f"%{search}%"`
|
|
|
189
189
|
Some implementations use PostgreSQL `ILIKE`:
|
|
190
190
|
```sql
|
|
191
191
|
WHERE (
|
|
192
|
-
|
|
193
|
-
OR
|
|
192
|
+
item_id ILIKE $1
|
|
193
|
+
OR item_description ILIKE $1
|
|
194
194
|
)
|
|
195
195
|
```
|
|
196
196
|
|