claude-code-kit 0.37.0__tar.gz → 0.39.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.37.0 → claude_code_kit-0.39.0}/.claude-plugin/marketplace.json +1 -1
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/.claude-plugin/plugin.json +1 -1
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/CHANGELOG.md +40 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/PKG-INFO +4 -4
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/README.md +3 -3
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/dependency-scanner.md +23 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/pyproject.toml +1 -1
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/code-review-and-quality/SKILL.md +2 -0
- claude_code_kit-0.39.0/skills/dependency-verification/SKILL.md +101 -0
- claude_code_kit-0.39.0/skills/library-review/SKILL.md +105 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/security-and-hardening/SKILL.md +6 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/test-driven-development/SKILL.md +29 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/__init__.py +1 -1
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/.gitignore +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/CLAUDE.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/CONTRIBUTING.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/LICENSE +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/acceptance-reviewer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/auditor.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/developer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/devils-advocate.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/devops-engineer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/e2e-tester.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/em-reviewer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/incident-responder.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/merge-reviewer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/observability-engineer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/orchestrator.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/owasp-reviewer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/policy-validator.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/pr-raiser.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/risk-classifier.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/sdlc-code-reviewer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/secret-scanner.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/security-reviewer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/senior-backend-dev.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/senior-frontend-dev.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/senior-tester.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/spec-doc-writer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/story-planner.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/technical-architect.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/tester.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/ui-designer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/agents/unit-tester.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/catalog/capture.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/catalog/mcp.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/catalog/org.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/catalog/profiles.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/catalog/stacks.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/commands/abort.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/commands/init.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/commands/sdlc.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/commands/status.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/agentic-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/agents.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/architecture.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/capture-a-real-run.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/coverage-audit.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/eval-harness.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/org-capabilities.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/stack-skills/GAP-ANALYSIS.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/stack-skills/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/docs/stack-skills/REPO-INVENTORY.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/hooks.json +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/audit-log.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/capture-learnings.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/guard-destructive-git.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/guard-kubectl-delete.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/guard-secrets.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/lint-fix.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/load-autonomy.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/load-continuity.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/load-learnings.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/type-check.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/validate-frontmatter.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/validate-settings.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/warn-large-edits.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/warn-llm-io.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/warn-missing-tests.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/warn-sensitive-files.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/hooks/scripts/warn-shared-modules.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/agent-guardrails.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/agent-memory.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/agent-resilience.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/autonomy-levels.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/code-organization.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/continuity.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/design-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/devops-observability.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/documentation.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/evals.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/frontend-best-practices.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/goal-setting-and-monitoring.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/human-in-the-loop.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/linting-and-formatting.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/mandatory-workflow.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/model-tiers.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/quality-gates.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/rarv-cycle.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/reasoning-techniques.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/responsive-and-accessibility.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/risk-classification.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/testing.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/rules/tool-design.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/scripts/capture-sdlc-run.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/scripts/check_docs_consistency.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/scripts/gen_hooks.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/scripts/init.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/_references/accessibility-checklist.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/_references/orchestration-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/_references/performance-checklist.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/_references/security-checklist.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/_references/testing-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/accessibility-review/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/alembic-migrations/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/alembic-migrations/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/alembic-migrations/references/alembic-setup-and-env.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/alembic-migrations/references/async-and-multitenant-migrations.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/alembic-migrations/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/alembic-migrations/references/troubleshooting-and-debugging.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/alembic-migrations/references/writing-migrations.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/anthropic-vertex-integration/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/anthropic-vertex-integration/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/anthropic-vertex-integration/references/generate-helpers-and-retry.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/anthropic-vertex-integration/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/anthropic-vertex-integration/references/vertex-client-and-auth.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/api-and-interface-design/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/api-integration/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/api-pagination-filtering-sorting/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/api-pagination-filtering-sorting/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/api-pagination-filtering-sorting/references/query-params-conventions.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/api-pagination-filtering-sorting/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/api-pagination-filtering-sorting/references/response-metadata.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/archive-sprint/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/async-python-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/async-python-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/async-python-patterns/references/async-boundaries.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/async-python-patterns/references/lifecycle-and-gather.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/async-python-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/auth-and-rbac/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/auth-and-rbac/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/auth-and-rbac/references/auth-dependencies.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/auth-and-rbac/references/rbac-and-permissions.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/auth-and-rbac/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/auth-and-rbac/references/security-hardening.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/auth-and-rbac/references/tokens-and-hashing.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backend-repo-architecture/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backend-repo-architecture/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backend-repo-architecture/references/deployment-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backend-repo-architecture/references/entrypoint-and-config.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backend-repo-architecture/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backend-repo-architecture/references/structure-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backend-repo-architecture/references/troubleshooting.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backlog/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/backlog/item-template.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/browser-testing-with-devtools/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/bug-hunt/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/ci-cd-and-automation/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/code-simplification/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/component-design/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/configargparse-yaml-env-layering/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/configargparse-yaml-env-layering/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/configargparse-yaml-env-layering/references/config-layering-anatomy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/configargparse-yaml-env-layering/references/mode-dispatch-and-precedence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/configargparse-yaml-env-layering/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/consolidate-learnings/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/containerization-and-deployment/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/containerization-and-deployment/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/containerization-and-deployment/references/deployment-and-secrets.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/containerization-and-deployment/references/dockerfile-and-compose.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/containerization-and-deployment/references/entrypoint-and-modes.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/containerization-and-deployment/references/kerberos-kinit-bootstrap.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/containerization-and-deployment/references/makefile-dev-workflow.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/containerization-and-deployment/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/context-engineering/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/cron-and-scheduled-jobs/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/cron-and-scheduled-jobs/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/cron-and-scheduled-jobs/references/choosing-and-operations.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/cron-and-scheduled-jobs/references/kubernetes-cronjob.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/cron-and-scheduled-jobs/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/cron-and-scheduled-jobs/references/temporal-schedules.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/data-engineering-bigquery-gcs/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/data-engineering-bigquery-gcs/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/data-engineering-bigquery-gcs/references/bigquery-advanced-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/data-engineering-bigquery-gcs/references/bigquery-gcs-io.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/data-engineering-bigquery-gcs/references/medallion-architecture.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/data-engineering-bigquery-gcs/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/data-engineering-bigquery-gcs/references/temp-table-merge-pattern.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/debugging-and-error-recovery/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/decision/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/decision/adr-template.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/deprecation-and-migration/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/design-patterns-and-conventions/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/design-patterns-and-conventions/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/design-patterns-and-conventions/references/anti-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/design-patterns-and-conventions/references/naming-and-layout.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/design-patterns-and-conventions/references/patterns-catalog.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/design-patterns-and-conventions/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/design-patterns-and-conventions/references/testing-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/design-patterns-and-conventions/references/troubleshooting.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-compose/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-compose/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-compose/references/compose-services-and-healthchecks.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-compose/references/dev-vs-prod-variants.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-compose/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-shared/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-shared/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-shared/references/dockerignore-and-build-secrets.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-shared/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-shared/references/shared-base-images.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/docker-shared/references/shared-compose-fragments.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-backend/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-backend/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-backend/references/backend-dockerfile-anatomy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-backend/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-backend/references/system-deps-and-caching.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-frontend/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-frontend/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-frontend/references/build-args-and-nginx.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-frontend/references/frontend-dockerfile-anatomy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/dockerfile-frontend/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/documentation-and-adrs/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/doubt-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/edge-to-service-trust-boundary/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/edge-to-service-trust-boundary/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/edge-to-service-trust-boundary/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/edge-to-service-trust-boundary/references/trust-contract.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/execute/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/fastapi-service-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/fastapi-service-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/fastapi-service-patterns/references/api-versioning.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/fastapi-service-patterns/references/app-factory-and-lifespan.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/fastapi-service-patterns/references/custom-route-and-middleware.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/fastapi-service-patterns/references/dependency-injection.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/fastapi-service-patterns/references/model-and-serialization-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/fastapi-service-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/file-export-and-reporting/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/file-export-and-reporting/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/file-export-and-reporting/references/excel-generation.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/file-export-and-reporting/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/file-export-and-reporting/references/streaming-and-downloads.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/frontend-repo-architecture/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/frontend-repo-architecture/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/frontend-repo-architecture/references/api-layer-and-types.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/frontend-repo-architecture/references/divergences.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/frontend-repo-architecture/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/frontend-repo-architecture/references/structure-and-state.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/frontend-repo-architecture/references/testing-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/frontend-ui-engineering/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcp-cloud-run-github-actions/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcp-cloud-run-github-actions/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcp-cloud-run-github-actions/references/cloud-run-deploy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcp-cloud-run-github-actions/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcp-cloud-run-github-actions/references/workflow-structure.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcs-file-storage-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcs-file-storage-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcs-file-storage-patterns/references/client-and-uploads.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcs-file-storage-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/gcs-file-storage-patterns/references/signed-urls-and-reads.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/git-workflow-and-versioning/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/grafana-dashboards-and-alerts/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/grafana-dashboards-and-alerts/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/grafana-dashboards-and-alerts/references/dashboard-json-and-templating.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/grafana-dashboards-and-alerts/references/provisioning-and-organization.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/grafana-dashboards-and-alerts/references/red-metrics-queries.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/grafana-dashboards-and-alerts/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/grafana-dashboards-and-alerts/references/unified-alerting.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/graphql-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/graphql-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/graphql-patterns/references/apollo-client-frontend.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/graphql-patterns/references/apollo-client-setup.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/graphql-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/graphql-patterns/references/strawberry-backend.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/graphql-patterns/references/when-to-use-graphql.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/idea-refine/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/idea-refine/examples.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/idea-refine/frameworks.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/idea-refine/refinement-criteria.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/idea-refine/scripts/idea-refine.sh +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/incident-postmortem/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/incremental-implementation/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/interview-me/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kafka-config-driven/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kafka-config-driven/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kafka-config-driven/references/config-and-sasl-kerberos.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kafka-config-driven/references/consumer-producer-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kafka-config-driven/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kafka-config-driven/references/troubleshooting-and-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubectl-operations/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubectl-operations/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubectl-operations/references/command-reference.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubectl-operations/references/context-namespace-rbac.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubectl-operations/references/debugging-playbooks.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubectl-operations/references/output-formats-and-selectors.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubectl-operations/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubernetes-workload-hardening/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubernetes-workload-hardening/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubernetes-workload-hardening/references/networkpolicy-and-rbac.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubernetes-workload-hardening/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/kubernetes-workload-hardening/references/securitycontext-and-podsecurity.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/langfuse-llm-tracing/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/langfuse-llm-tracing/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/langfuse-llm-tracing/references/langfuse-client-and-tracing.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/langfuse-llm-tracing/references/python-and-typescript.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/langfuse-llm-tracing/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/load-testing/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/manual-test/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/modernization-and-migration/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/modernization-and-migration/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/modernization-and-migration/references/migration-best-practices.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/modernization-and-migration/references/pydantic-v1-to-v2.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/modernization-and-migration/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/modernization-and-migration/references/shared-internal-library.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/modernization-and-migration/references/sqlalchemy-14-to-20.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/multi-tenancy-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/multi-tenancy-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/multi-tenancy-patterns/references/caching-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/multi-tenancy-patterns/references/isolation-strategies.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/multi-tenancy-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/multi-tenancy-patterns/references/tenant-resolution.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-express-service/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-express-service/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-express-service/references/app-factory-and-mode-dispatch.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-express-service/references/config-and-module-alias.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-express-service/references/middleware-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-express-service/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-objection-knex/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-objection-knex/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-objection-knex/references/migrations-and-validation.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-objection-knex/references/objection-model-and-knex.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/node-objection-knex/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/notifications-and-messaging/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/notifications-and-messaging/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/notifications-and-messaging/references/provider-abstraction.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/notifications-and-messaging/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/notifications-and-messaging/references/templates-and-fallback.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/observability-and-logging/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/observability-and-logging/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/observability-and-logging/references/health-and-readiness.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/observability-and-logging/references/logging-and-structlog.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/observability-and-logging/references/outbound-metrics-and-multi-mode.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/observability-and-logging/references/pii-redaction.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/observability-and-logging/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/observability-and-logging/references/tracing-and-metrics.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/over-engineering-review/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/performance-optimization/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/planning-and-task-breakdown/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/playwright-verification/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/pydantic-schema-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/pydantic-schema-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/pydantic-schema-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/pydantic-schema-patterns/references/settings-and-validation.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/pydantic-schema-patterns/references/troubleshooting-and-common-errors.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/pydantic-schema-patterns/references/v1-vs-v2.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/python-dao-and-database/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/python-dao-and-database/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/python-dao-and-database/references/advanced-query-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/python-dao-and-database/references/basedao-and-sessions.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/python-dao-and-database/references/mongodb-advanced.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/python-dao-and-database/references/other-db-mongodb.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/python-dao-and-database/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/python-dao-and-database/references/sqlalchemy-1x-vs-2x.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/radix-tailwind-component-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/radix-tailwind-component-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/radix-tailwind-component-patterns/references/radix-primitives-and-variants.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/radix-tailwind-component-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/radix-tailwind-component-patterns/references/tailwind-theme-and-cn.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/react-hook-form-zod-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/react-hook-form-zod-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/react-hook-form-zod-patterns/references/form-setup-and-zod.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/react-hook-form-zod-patterns/references/multi-step-and-modes.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/react-hook-form-zod-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/redis-caching-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/redis-caching-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/redis-caching-patterns/references/cache-manager-and-fallback.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/redis-caching-patterns/references/namespacing-and-invalidation.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/redis-caching-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/refresh-docs/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/remember/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/scope/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/scope/scope-template.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/sdlc/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/security-verification/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/shannon-ai-pentest/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/shannon-ai-pentest/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/shannon-ai-pentest/references/operating-guide.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/shipping-and-launch/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/simplification-debt/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/smoke-test/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/source-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/spec-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/sprint/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/sprint/sprint-template.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/tanstack-react-query-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/tanstack-react-query-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/tanstack-react-query-patterns/references/mutations-and-cache.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/tanstack-react-query-patterns/references/query-keys-and-hooks.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/tanstack-react-query-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/task-tracker-sync/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-config-driven/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-config-driven/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-config-driven/references/config-and-retry-idempotency.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-config-driven/references/dag-dsl-interpreter.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-config-driven/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-config-driven/references/schedule-registration.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-config-driven/references/schedules-and-cron.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-config-driven/references/worker-workflow-activity-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-developer/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-developer/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-developer/references/cli.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-developer/references/determinism.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-developer/references/gotchas.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-developer/references/languages.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-developer/references/testing.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/temporal-developer/references/versioning.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/test-plan-review/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/references/async-and-mocking.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/references/coverage-gap-and-recommendations.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/references/github-actions-test-orchestration.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/references/pytest-and-fixtures.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/references/pytest-asyncio-modes.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/references/security-regression-tests.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/testing-conventions/references/vitest-frontend-testing.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/threat-model/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/triage/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/ui-ux-design/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/unit-test/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/using-agent-skills/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/vitest-rtl-msw-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/vitest-rtl-msw-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/vitest-rtl-msw-patterns/references/msw-and-contract-tests.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/vitest-rtl-msw-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/vitest-rtl-msw-patterns/references/vitest-rtl-setup.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zap-vapt-scanning/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zap-vapt-scanning/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zap-vapt-scanning/references/operating-guide.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zap-vapt-scanning/scripts/endpoints.example.txt +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zap-vapt-scanning/scripts/requirements.txt +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zap-vapt-scanning/scripts/zap_vapt.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zustand-state-patterns/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zustand-state-patterns/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zustand-state-patterns/references/async-polling-and-persistence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zustand-state-patterns/references/repo-evidence.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/skills/zustand-state-patterns/references/store-structure-and-selectors.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/__main__.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/catalog.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/cli.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/hooks.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/models.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/pipeline.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/prompts.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/render.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/scaffold.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/upgrader.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/src/claude_kit/validator.py +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/CLAUDE.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/CLAUDE.stack.md.tmpl +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/CONTINUITY.template.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/README.claude-sdlc.md.tmpl +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/agent-memory/MEMORY.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/agent-memory/api/.gitkeep +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/agent-memory/architecture/.gitkeep +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/agent-memory/debugging/.gitkeep +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/agent-memory/gotchas/.gitkeep +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/agent-memory/patterns/.gitkeep +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/agent-memory/performance/.gitkeep +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/artifacts/adr.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/artifacts/api-change-report.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/artifacts/change-proposal.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/artifacts/feature-spec.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/artifacts/release-plan.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/artifacts/runbook.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/artifacts/security-review.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/artifacts/test-plan.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/agents/data-workflow-agent.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/agents/founder-prototype-agent.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/agents/internal-tools-builder.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/agents/pm-copilot.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/agents/staff-pm-reviewer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/agents/support-ticket-engineer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/devops-and-release/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/devops-and-release/pack.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/engineering-core/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/engineering-core/pack.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/non-engineer-builder/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/non-engineer-builder/pack.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/onboarding-and-docs/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/onboarding-and-docs/pack.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/product-to-code/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/product-to-code/pack.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/quality-and-review/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/quality-and-review/pack.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/security-and-compliance/README.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/packs/security-and-compliance/pack.yaml +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/ai-working-agreement.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/ambiguity-resolution.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/branch-and-pr-policy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/compliance-policy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/non-engineer-safe-coding.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/pii-policy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/production-data-policy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/prompt-to-task-conversion.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/prototype-boundaries.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/rules/secrets-policy.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/customer-issue-to-fix/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/feature-from-idea/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/prompt-to-safe-task/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/prototype-to-production/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/repo-onboarding/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/review-scope/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/review-sprint/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/review-sprint-plan/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/org/skills/review-ux-flow/SKILL.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/settings.json +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/backend/go/net-http/rules/go-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/backend/python/fastapi/rules/fastapi-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/db/mongodb/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/db/mongodb/agents/mongodb-specialist.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/db/mongodb/rules/mongodb-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/db/postgres/agents/db-performance-reviewer.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/db/postgres/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/db/postgres/agents/postgres-specialist.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/db/postgres/rules/database-performance.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/db/postgres/rules/postgres-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/frontend/react/rules/design-system-compliance.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/frontend/react/rules/mobile-design-guidelines.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/frontend/react/rules/react-patterns.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.0}/templates/stacks/frontend/react/rules/ui-design-system.md +0 -0
- {claude_code_kit-0.37.0 → claude_code_kit-0.39.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.39.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.39.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,46 @@ 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.39.0] — 2026-06-26
|
|
8
|
+
|
|
9
|
+
**Supply-chain defense** (first of four adoptions from the MIT [`athola/claude-night-market`](https://github.com/athola/claude-night-market);
|
|
10
|
+
re-derived stack-agnostic, nothing vendored). Closes the pre-install gap between "should we add a dep"
|
|
11
|
+
(§2a.5 / `library-review`) and "are our installed deps vulnerable" (`dependency-scanner`).
|
|
12
|
+
|
|
13
|
+
- **`skills/dependency-verification/`** (new core skill) — pre-install verification that a package
|
|
14
|
+
**name** actually exists in its registry (PyPI/npm/crates.io/…) and isn't a typosquat/slopsquat,
|
|
15
|
+
before any install command or manifest edit. Defends against LLM-hallucinated package names
|
|
16
|
+
(~5–22% of model-suggested packages don't exist; the recurring names get pre-registered with
|
|
17
|
+
malware). Three states — exists / nonexistent / unverified — and **never fails closed on a network
|
|
18
|
+
error**. Cross-linked into the supply-chain layer chain (§2a.5 → library-review → this → install →
|
|
19
|
+
dependency-scanner).
|
|
20
|
+
- **`agents/dependency-scanner.md`** gains a **Supply-Chain Integrity mode** (post-resolve):
|
|
21
|
+
lockfile/hash integrity, artifact + lifecycle-script scanning, known-bad-versions cross-check, and
|
|
22
|
+
provenance signals — beyond the existing CVE audit.
|
|
23
|
+
- **`skills/security-and-hardening`** + **`skills/library-review`** updated to point at the new layers.
|
|
24
|
+
- Counts: **98 → 99** total skills (**52 → 53** core; stack-collection unchanged at 46).
|
|
25
|
+
|
|
26
|
+
## [0.38.0] — 2026-06-26
|
|
27
|
+
|
|
28
|
+
**New `library-review` core skill + a property-based-testing note** (two genuinely-new ideas
|
|
29
|
+
cherry-picked, stack-agnostic, from the MIT [`wdm0006/python-skills`](https://github.com/wdm0006/python-skills);
|
|
30
|
+
the rest of that collection was skipped as redundant with existing core/collection skills).
|
|
31
|
+
|
|
32
|
+
- **`skills/library-review/`** (core — SKILL.md only, stack-agnostic) — a structured **pre-add
|
|
33
|
+
dependency-adoption evaluation**: need & fit, alternatives (stdlib/native/existing dep),
|
|
34
|
+
maintenance & bus factor, license compatibility, security/supply-chain history, transitive weight,
|
|
35
|
+
lock-in/exit cost, and a documented adopt/reject decision. Re-cast (health-signal dimensions
|
|
36
|
+
adapted from the MIT upstream's `reviewing-python-libraries`) as an *adoption* gate. Reuse-first:
|
|
37
|
+
cross-linked to and explicitly bounded against `mandatory-workflow.md` §2a.5 (whether a dep is
|
|
38
|
+
needed at all), `over-engineering-review`, the `dependency-scanner` agent (audits *installed* deps —
|
|
39
|
+
this is its pre-add counterpart), and `code-review-and-quality` (whose 5-point Dependency
|
|
40
|
+
Discipline list now points here as its full form).
|
|
41
|
+
- **`test-driven-development`** gains a **Property-Based Testing** section (count-neutral edit):
|
|
42
|
+
what it is, when to reach for it, the round-trip/idempotence/invariant/metamorphic property shapes,
|
|
43
|
+
and one-per-language ecosystem pointers (Hypothesis · fast-check · jqwik · proptest · …).
|
|
44
|
+
- Counts: **97 → 98** total skills (**51 → 52** core; stack-collection unchanged at 46). No
|
|
45
|
+
`docs/stack-skills` row (core skills aren't listed there). Version bumped across the 5 parity files.
|
|
46
|
+
|
|
7
47
|
## [0.37.0] — 2026-06-26
|
|
8
48
|
|
|
9
49
|
**New `temporal-developer` collection skill — Temporal *fundamentals*, language-agnostic** (re-derived
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-kit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.39.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
|
|
@@ -84,7 +84,7 @@ Quick start) for the full breakdown of any row.
|
|
|
84
84
|
| 🔁 **Pipeline & quality gates** | Gate-enforced progression (zero open Critical/High/Medium to advance), per-profile gate sets, a fast-track for small changes, and an anti-sycophancy `devils-advocate` pass |
|
|
85
85
|
| 🤖 **Agent roster** | **28** tiered agents + per-database overlays + **6** org personas, led by an Orchestrator that never writes code |
|
|
86
86
|
| 🔍 **Self-verification & review** | RARV green-Verify (real commands, not imagined), blind parallel review, and read-only risk classification |
|
|
87
|
-
| 📐 **Rules & skills** | **23** stack-agnostic core rules (incl. 8 agent-operation rules) + **
|
|
87
|
+
| 📐 **Rules & skills** | **23** stack-agnostic core rules (incl. 8 agent-operation rules) + **99** context-activated skills (53 core + 46 stack-collection) |
|
|
88
88
|
| 🧱 **Stacks & overlays** | Stack-agnostic core + **10** overlay rule sets (React · FastAPI · Go · Postgres · Mongo) wired to your exact commands, incl. a full React design system |
|
|
89
89
|
| 🎚️ **Profiles, scopes & org** | **3** rigor profiles · **3** scopes · **5** autonomy levels · **7** org packs + **10** policy rules |
|
|
90
90
|
| 🧠 **Memory & learning** | Working memory across context compaction + a cost-aware learnings loop (`capture_mode`) so the same mistake isn't repeated |
|
|
@@ -281,7 +281,7 @@ need.
|
|
|
281
281
|
- **23 stack-agnostic core rules** in [`rules/`](rules/) — `mandatory-workflow`, `quality-gates`,
|
|
282
282
|
`rarv-cycle`, `continuity`, plus eight agent-operation rules and `autonomy-levels` +
|
|
283
283
|
`risk-classification` (see [`docs/agentic-patterns.md`](docs/agentic-patterns.md)).
|
|
284
|
-
- **
|
|
284
|
+
- **99 on-demand skills** in [`skills/`](skills/) (53 core + 46 stack-collection) — spec-driven dev, planning, TDD, debugging, code
|
|
285
285
|
review, threat modeling, and more — activated by context and led by the `sdlc` entrypoint.
|
|
286
286
|
- **Profile-subset install** — each profile installs a strict subset of agents, skills, hooks, and
|
|
287
287
|
rules (`lean ⊂ standard ⊂ enterprise`), from fast track to full audit.
|
|
@@ -437,7 +437,7 @@ owned gates, and the rule that **no gate passes on an unproven verdict**.
|
|
|
437
437
|
| **[wshobson/agents](https://github.com/wshobson/agents)** & similar agent collections | Large libraries of individual subagent prompts you pick from | A **smaller, opinionated set wired into a sequenced pipeline with owned quality gates** — agents aren't a menu, they're stages that hand off and block on each other. Adopt-by-reuse, not by accumulation. |
|
|
438
438
|
| **[GitHub spec-kit](https://github.com/github/spec-kit)** | A spec-driven workflow (constitution → spec → tasks → analyze) | The same coverage-gate idea (the `story-planner` 1f gate + `task-tracker-sync`) **absorbed into a broader** lifecycle that also covers review, security, build, test, release, and observability gates. Complementary, wider scope. |
|
|
439
439
|
| **claude-flow / multi-agent runtimes** | Runtime orchestrators that *execute* swarms of agents | **Portable configuration**, not a running process — the orchestration is described in rules the host (Claude Code) executes. No daemon, no lock-in, no app code. |
|
|
440
|
-
| **dotfiles / `CLAUDE.md` starters** | A single rules file or settings snippet | A **catalog-driven generator**: resolves your stack/profile/scope into the right subset of 23 rules, 28 agents,
|
|
440
|
+
| **dotfiles / `CLAUDE.md` starters** | A single rules file or settings snippet | A **catalog-driven generator**: resolves your stack/profile/scope into the right subset of 23 rules, 28 agents, 99 skills, gates, and hooks, kept **upgradeable** (`claude-kit upgrade` preserves your edits via owner + checksum). |
|
|
441
441
|
|
|
442
442
|
**Choose claude-kit when** you want a consistent, reviewable, **gate-enforced** autonomous-SDLC setup
|
|
443
443
|
that's the same across every repo and stack, installs in seconds, ships nothing you have to run, and
|
|
@@ -54,7 +54,7 @@ Quick start) for the full breakdown of any row.
|
|
|
54
54
|
| 🔁 **Pipeline & quality gates** | Gate-enforced progression (zero open Critical/High/Medium to advance), per-profile gate sets, a fast-track for small changes, and an anti-sycophancy `devils-advocate` pass |
|
|
55
55
|
| 🤖 **Agent roster** | **28** tiered agents + per-database overlays + **6** org personas, led by an Orchestrator that never writes code |
|
|
56
56
|
| 🔍 **Self-verification & review** | RARV green-Verify (real commands, not imagined), blind parallel review, and read-only risk classification |
|
|
57
|
-
| 📐 **Rules & skills** | **23** stack-agnostic core rules (incl. 8 agent-operation rules) + **
|
|
57
|
+
| 📐 **Rules & skills** | **23** stack-agnostic core rules (incl. 8 agent-operation rules) + **99** context-activated skills (53 core + 46 stack-collection) |
|
|
58
58
|
| 🧱 **Stacks & overlays** | Stack-agnostic core + **10** overlay rule sets (React · FastAPI · Go · Postgres · Mongo) wired to your exact commands, incl. a full React design system |
|
|
59
59
|
| 🎚️ **Profiles, scopes & org** | **3** rigor profiles · **3** scopes · **5** autonomy levels · **7** org packs + **10** policy rules |
|
|
60
60
|
| 🧠 **Memory & learning** | Working memory across context compaction + a cost-aware learnings loop (`capture_mode`) so the same mistake isn't repeated |
|
|
@@ -251,7 +251,7 @@ need.
|
|
|
251
251
|
- **23 stack-agnostic core rules** in [`rules/`](rules/) — `mandatory-workflow`, `quality-gates`,
|
|
252
252
|
`rarv-cycle`, `continuity`, plus eight agent-operation rules and `autonomy-levels` +
|
|
253
253
|
`risk-classification` (see [`docs/agentic-patterns.md`](docs/agentic-patterns.md)).
|
|
254
|
-
- **
|
|
254
|
+
- **99 on-demand skills** in [`skills/`](skills/) (53 core + 46 stack-collection) — spec-driven dev, planning, TDD, debugging, code
|
|
255
255
|
review, threat modeling, and more — activated by context and led by the `sdlc` entrypoint.
|
|
256
256
|
- **Profile-subset install** — each profile installs a strict subset of agents, skills, hooks, and
|
|
257
257
|
rules (`lean ⊂ standard ⊂ enterprise`), from fast track to full audit.
|
|
@@ -407,7 +407,7 @@ owned gates, and the rule that **no gate passes on an unproven verdict**.
|
|
|
407
407
|
| **[wshobson/agents](https://github.com/wshobson/agents)** & similar agent collections | Large libraries of individual subagent prompts you pick from | A **smaller, opinionated set wired into a sequenced pipeline with owned quality gates** — agents aren't a menu, they're stages that hand off and block on each other. Adopt-by-reuse, not by accumulation. |
|
|
408
408
|
| **[GitHub spec-kit](https://github.com/github/spec-kit)** | A spec-driven workflow (constitution → spec → tasks → analyze) | The same coverage-gate idea (the `story-planner` 1f gate + `task-tracker-sync`) **absorbed into a broader** lifecycle that also covers review, security, build, test, release, and observability gates. Complementary, wider scope. |
|
|
409
409
|
| **claude-flow / multi-agent runtimes** | Runtime orchestrators that *execute* swarms of agents | **Portable configuration**, not a running process — the orchestration is described in rules the host (Claude Code) executes. No daemon, no lock-in, no app code. |
|
|
410
|
-
| **dotfiles / `CLAUDE.md` starters** | A single rules file or settings snippet | A **catalog-driven generator**: resolves your stack/profile/scope into the right subset of 23 rules, 28 agents,
|
|
410
|
+
| **dotfiles / `CLAUDE.md` starters** | A single rules file or settings snippet | A **catalog-driven generator**: resolves your stack/profile/scope into the right subset of 23 rules, 28 agents, 99 skills, gates, and hooks, kept **upgradeable** (`claude-kit upgrade` preserves your edits via owner + checksum). |
|
|
411
411
|
|
|
412
412
|
**Choose claude-kit when** you want a consistent, reviewable, **gate-enforced** autonomous-SDLC setup
|
|
413
413
|
that's the same across every repo and stack, installs in seconds, ships nothing you have to run, and
|
|
@@ -83,6 +83,29 @@ Backend deps: {N} · Frontend deps: {N} · Vulns: Critical {N} / High {N} / Medi
|
|
|
83
83
|
|
|
84
84
|
Return counts by severity + the finding table to `security-reviewer`. If a CVE has no patch, recommend a workaround or replacement and mark it for an allowlist-with-review-date decision (route to the human via the Orchestrator). Log durable findings to `.claude/CONTINUITY.md`.
|
|
85
85
|
|
|
86
|
+
## SUPPLY-CHAIN INTEGRITY MODE (beyond CVEs)
|
|
87
|
+
|
|
88
|
+
CVE scanning catches *known-vulnerable* versions; it does not catch a *compromised* or *impersonated*
|
|
89
|
+
package. When auditing for a supply-chain advisory, during incident response, or before a release, add
|
|
90
|
+
these checks (still report-only — never modify lockfiles):
|
|
91
|
+
|
|
92
|
+
- **Lockfile / hash integrity.** Confirm the lockfile pins integrity hashes and that resolved
|
|
93
|
+
artifacts match them (`pip`'s `--require-hashes`, `npm ci` against `package-lock.json`,
|
|
94
|
+
`cargo`'s `Cargo.lock`, `go.sum`). Flag lockfile drift (manifest and lockfile disagree) and any
|
|
95
|
+
dependency resolved from an unexpected source/registry.
|
|
96
|
+
- **Artifact scan.** Inspect what an install would actually run: post-install/lifecycle scripts
|
|
97
|
+
(`package.json` `postinstall`, `pyproject`/`setup.py` build hooks), and suspicious payload files
|
|
98
|
+
(e.g. `.pth` files that execute on interpreter start, obfuscated blobs). Report; don't execute.
|
|
99
|
+
- **Known-bad versions.** Cross-check resolved versions against a known-bad/compromised-version list
|
|
100
|
+
for the project's ecosystem (maintain the project's own list and the public advisory feeds). A
|
|
101
|
+
matched version is an **auto-Critical** finding.
|
|
102
|
+
- **Provenance signals.** Prefer packages with signed releases / 2FA-published maintainers; flag a
|
|
103
|
+
dependency that recently changed maintainer or publishing key.
|
|
104
|
+
|
|
105
|
+
This is the **post-resolve** half of the kit's supply-chain story; the **pre-install** half (verifying
|
|
106
|
+
a package *name* exists and isn't a typosquat/slopsquat, before it ever enters a lockfile) is the
|
|
107
|
+
`.claude/skills/dependency-verification` skill. Cite it; don't restate it.
|
|
108
|
+
|
|
86
109
|
## CADENCE MODE (whole-project maintenance pass)
|
|
87
110
|
|
|
88
111
|
The same audit can be dispatched **standalone** — outside any one feature — as a recurring
|
|
@@ -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.39.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"
|
|
@@ -280,6 +280,8 @@ Part of code review is dependency review:
|
|
|
280
280
|
|
|
281
281
|
**Rule:** Prefer standard library and existing utilities over new dependencies. Every dependency is a liability.
|
|
282
282
|
|
|
283
|
+
For a full pre-add evaluation of a specific candidate (maintenance/bus-factor, license, supply-chain history, transitive weight, lock-in, adopt/reject decision), use the `library-review` skill — this 5-point list is its quick form.
|
|
284
|
+
|
|
283
285
|
## The Review Checklist
|
|
284
286
|
|
|
285
287
|
```markdown
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dependency-verification
|
|
3
|
+
description: Pre-install verification that a package NAME actually exists in its registry (PyPI/npm/crates.io/…) and is not a typosquat/slopsquat, before you run an install command or write it into a manifest. Defends against LLM-hallucinated package names — a measured 5–22% of model-suggested packages do not exist, and attackers pre-register the names that recur. Use before adding, installing, or recommending any dependency. Do NOT use to judge whether a real package is worth adopting (use library-review) or to audit ALREADY-installed dependencies for known CVEs (use the dependency-scanner agent) — this is the narrower "does this name even exist" check that runs first.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Dependency Verification (pre-install name check)
|
|
7
|
+
|
|
8
|
+
> A package name the model produced is a **claim**, not a fact. The registry is the fact. Verify
|
|
9
|
+
> before you install. Adapted (stack-agnostic) from the MIT-licensed
|
|
10
|
+
> [`athola/claude-night-market`](https://github.com/athola/claude-night-market) `dependency-verification` skill.
|
|
11
|
+
|
|
12
|
+
## Why this exists
|
|
13
|
+
|
|
14
|
+
Code-generating models recommend packages that **do not exist** at a measured rate of ~5% (commercial
|
|
15
|
+
models) to ~22% (open models), and ~58% of the hallucinated names *recur* across reruns — so an
|
|
16
|
+
attacker can predict a commonly-hallucinated name, register the empty slot, and ship malware. This is
|
|
17
|
+
**"slopsquatting"** (the LLM-era cousin of typosquatting). A proof-of-concept package registered
|
|
18
|
+
against a frequently-hallucinated name drew tens of thousands of installs. The rate does *not* fall to
|
|
19
|
+
zero with a better model. The defense is cheap: **confirm the name exists in its registry before you
|
|
20
|
+
install or recommend it.**
|
|
21
|
+
|
|
22
|
+
## When to use
|
|
23
|
+
|
|
24
|
+
Before any of:
|
|
25
|
+
- running an install command — `pip install`, `uv add`, `npm install`, `pnpm add`, `yarn add`,
|
|
26
|
+
`cargo add`, `go get`, `poetry add`, `gem install`, `composer require`, …
|
|
27
|
+
- writing a dependency into a manifest — `pyproject.toml`, `requirements.txt`, `package.json`,
|
|
28
|
+
`Cargo.toml`, `go.mod`, `Gemfile`, …
|
|
29
|
+
- **recommending a package to the user in prose** (a hallucinated recommendation is still a defect).
|
|
30
|
+
|
|
31
|
+
## The two failure signals
|
|
32
|
+
|
|
33
|
+
A candidate fails verification on **either**:
|
|
34
|
+
|
|
35
|
+
1. **Nonexistent** — the name is absent from its registry (e.g. HTTP 404). Likely a hallucination.
|
|
36
|
+
Do not install; find the correct name, or confirm the package was renamed/removed.
|
|
37
|
+
2. **Typosquat / slopsquat** — the name is one or two edits from a popular package (`reqeusts` vs
|
|
38
|
+
`requests`, `python-dateutil` vs a look-alike). Either a typo or deliberate impersonation —
|
|
39
|
+
restate the exact name you intend and confirm before proceeding.
|
|
40
|
+
|
|
41
|
+
## Three states (never fail closed on a network error)
|
|
42
|
+
|
|
43
|
+
| State | Registry result | Action |
|
|
44
|
+
|-------|-----------------|--------|
|
|
45
|
+
| **exists** | 200 / found | pass |
|
|
46
|
+
| **nonexistent** | 404 / not found | block — likely hallucination |
|
|
47
|
+
| **unverified** | timeout / rate-limit / offline / non-404 error | **warn only, never block** — don't fail closed on a network problem |
|
|
48
|
+
|
|
49
|
+
## Verification procedure
|
|
50
|
+
|
|
51
|
+
1. Extract the exact names the command or manifest edit would fetch (strip version specifiers/flags).
|
|
52
|
+
2. Confirm existence in the ecosystem's registry. A common, well-known package needn't be checked;
|
|
53
|
+
verify anything unfamiliar, freshly-suggested, or near a popular name.
|
|
54
|
+
3. For any name close to a popular package, restate the intended name and confirm.
|
|
55
|
+
4. Capture the check as evidence (registry URL + HTTP status) when the install lands in a PR.
|
|
56
|
+
|
|
57
|
+
### Registry existence endpoints
|
|
58
|
+
|
|
59
|
+
| Ecosystem | URL (`{name}` = package) | Exists / Absent |
|
|
60
|
+
|-----------|--------------------------|------------------|
|
|
61
|
+
| PyPI | `https://pypi.org/pypi/{name}/json` | 200 / 404 |
|
|
62
|
+
| npm | `https://registry.npmjs.org/{name}` | 200 / 404 |
|
|
63
|
+
| crates.io | `https://crates.io/api/v1/crates/{name}` | 200 / 404 |
|
|
64
|
+
| other | the ecosystem's registry/index API | found / not-found |
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Prints the HTTP status: 200 = exists, 404 = does not. (PyPI shown; swap the URL per ecosystem.)
|
|
68
|
+
curl -s -o /dev/null -w '%{http_code}\n' "https://pypi.org/pypi/requests/json"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## A confidence signal, not a second gate
|
|
72
|
+
|
|
73
|
+
Once a name clears the two signals, real-world usage is a *softer* signal that the name is the
|
|
74
|
+
established one, not a freshly-registered impostor: GitHub dependents / code-search hits for the exact
|
|
75
|
+
name, repo stars + recent activity, download history (a popular-sounding name registered yesterday is
|
|
76
|
+
a red flag; a modest name with years of releases is reassuring). **Low usage never blocks on its own**
|
|
77
|
+
— new, niche, internal, and private packages are legitimately low-usage. Use it to build confidence
|
|
78
|
+
and disambiguate two similar names, then hand a *real* candidate to `library-review` for the full
|
|
79
|
+
adopt/reject evaluation.
|
|
80
|
+
|
|
81
|
+
## Where this sits (the supply-chain layers)
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
need a dep at all? → mandatory-workflow.md §2a.5 (Reuse & YAGNI gate)
|
|
85
|
+
which dep, is it healthy?→ library-review skill (adopt/reject evaluation)
|
|
86
|
+
does this NAME exist? → THIS skill (pre-install: hallucination/typosquat) ◄── you are here
|
|
87
|
+
install
|
|
88
|
+
installed deps: CVEs? → dependency-scanner agent (post-install CVE/outdated audit)
|
|
89
|
+
lockfile/artifact integrity? → dependency-scanner agent (supply-chain integrity mode)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Optional enforcement:** a `PreToolUse` hook on install commands can run this check automatically
|
|
93
|
+
(warn-by-default; block on nonexistent/typosquat when configured). The hook is a backstop — verify
|
|
94
|
+
deliberately when you add a dependency rather than waiting for the gate.
|
|
95
|
+
|
|
96
|
+
## Exit criteria
|
|
97
|
+
|
|
98
|
+
- [ ] Every package in the install command / manifest edit is confirmed present in its registry, or the install is abandoned
|
|
99
|
+
- [ ] Any name within ~2 edits of a popular package is restated and confirmed before install
|
|
100
|
+
- [ ] A name that couldn't be verified online is reported as *unverified* and not silently installed
|
|
101
|
+
- [ ] For PR-bound installs, the registry check is captured as evidence
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: library-review
|
|
3
|
+
description: Structured pre-add evaluation of a candidate third-party dependency before you adopt it—need & fit, alternatives (stdlib/native/existing dep), maintenance & bus factor, adoption signals, license compatibility, security & supply-chain history, install weight & transitive deps, lock-in/exit cost, and a documented adopt/reject decision. Stack-agnostic (pip, npm, cargo, go modules, maven, gems, …). Use when proposing or choosing between new libraries, or when mandatory-workflow §2a.5 rung 5 ("can an existing dependency do it?") points at pulling in a new one. Do NOT use to decide whether you need a dependency at all (use the §2a.5 reuse/YAGNI gate + over-engineering-review) or to audit ALREADY-installed dependencies for CVEs (use the dependency-scanner agent).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Library Review (pre-add dependency evaluation)
|
|
7
|
+
|
|
8
|
+
> Health-signal dimensions adapted (stack-agnostic, re-cast as an *adoption* decision) from the
|
|
9
|
+
> MIT-licensed [`wdm0006/python-skills`](https://github.com/wdm0006/python-skills)
|
|
10
|
+
> `reviewing-python-libraries` skill (© Will McGinnis). That skill audits a library's *own* quality
|
|
11
|
+
> for publishing; this one turns the same signals into a **"should we take on this dependency?"** gate.
|
|
12
|
+
|
|
13
|
+
## What this is (and is not)
|
|
14
|
+
|
|
15
|
+
Adding a dependency is a long-lived liability: it ships its bugs, its CVEs, its license, its
|
|
16
|
+
maintainer's availability, and its transitive tree into your project, and removing it later is rarely
|
|
17
|
+
free. This skill is the **structured evaluation you run before adopting a specific candidate** — or
|
|
18
|
+
when choosing between two or three.
|
|
19
|
+
|
|
20
|
+
It is deliberately scoped, and it composes with three things already in the kit — use those first /
|
|
21
|
+
alongside, don't duplicate them:
|
|
22
|
+
|
|
23
|
+
- **Do we even need a new dependency?** That is the **§2a.5 Reuse & YAGNI Gate**
|
|
24
|
+
(`.claude/rules/mandatory-workflow.md`) and the `over-engineering-review` skill — walk the ladder
|
|
25
|
+
(need it at all? → in the codebase? → stdlib? → native platform? → an *existing* dependency?) and
|
|
26
|
+
only reach this skill once a *new* dependency is genuinely on the table.
|
|
27
|
+
- **Auditing dependencies you have ALREADY installed** for known CVEs / outdated versions is the
|
|
28
|
+
`dependency-scanner` agent. This skill is its **pre-add counterpart** — it runs *before* the
|
|
29
|
+
dependency is in the lockfile.
|
|
30
|
+
- The 5-point "Before adding any dependency" list in `code-review-and-quality` is the quick form;
|
|
31
|
+
this skill is its full expansion.
|
|
32
|
+
|
|
33
|
+
## When to use
|
|
34
|
+
|
|
35
|
+
- A new third-party dependency is being proposed (by you or in review)
|
|
36
|
+
- Choosing between 2–3 candidate libraries for the same need
|
|
37
|
+
- §2a.5 rung 5 surfaced a *new* dependency as the cheapest option
|
|
38
|
+
- A dependency upgrade crosses a major version, changes its license, or changes maintainership
|
|
39
|
+
|
|
40
|
+
**When NOT to use:** deciding *whether* you need a dependency (→ §2a.5 / `over-engineering-review`);
|
|
41
|
+
scanning installed deps for CVEs (→ `dependency-scanner`); reviewing your *own* code (→
|
|
42
|
+
`code-review-and-quality`).
|
|
43
|
+
|
|
44
|
+
## Evaluation dimensions
|
|
45
|
+
|
|
46
|
+
Score each; a single hard failure (incompatible license, unpatched critical CVE, abandoned) is
|
|
47
|
+
disqualifying regardless of the rest.
|
|
48
|
+
|
|
49
|
+
| Dimension | What to check | Disqualifier |
|
|
50
|
+
|-----------|---------------|--------------|
|
|
51
|
+
| **Need & fit** | Does it solve the *actual* problem, not a superset? How much of its API will you really use? | You'd use 5% of a large lib for one function |
|
|
52
|
+
| **Alternatives** | stdlib / native platform feature / an already-installed dep / ~20 lines of your own | A cheaper rung of §2a.5 satisfies it |
|
|
53
|
+
| **Maintenance & bus factor** | Recent commits, release cadence, issue/PR responsiveness, number of active maintainers, is it archived/deprecated? | Abandoned (no commits ~1yr), sole unresponsive maintainer, archived |
|
|
54
|
+
| **Adoption & trust** | Real-world usage; downloads/dependents as *weak* signals (not popularity contests); who else relies on it | Effectively unused / no track record for critical use |
|
|
55
|
+
| **License** | Compatible with *your* project's license and distribution model. Copyleft (GPL/AGPL) vs permissive (MIT/BSD/Apache); transitive licenses too. A copyleft dep in a permissive project may mean *document, don't vendor* | Incompatible / missing license |
|
|
56
|
+
| **Security & supply chain** | CVE/advisory history *and how fast they're patched*; signed/2FA'd releases; typosquat/name-confusion check; provenance | Unpatched critical CVE; suspicious provenance |
|
|
57
|
+
| **Weight & transitive deps** | Install/bundle/binary size; count and quality of transitive deps (each is its own liability); platform/runtime support | Huge transitive blast radius for a small need |
|
|
58
|
+
| **API fit & lock-in** | Idiomatic for your stack? Type stubs/typings? How deeply would it thread through your code — i.e. exit cost? | Pervasive lock-in with no seam to swap it |
|
|
59
|
+
| **Operational fit** | Compatible version range with your runtime/other deps; maintenance burden of pinning/upgrading | Conflicts with existing pinned deps |
|
|
60
|
+
|
|
61
|
+
## Red flags 🚩 / Green flags ✅
|
|
62
|
+
|
|
63
|
+
**🚩** No tests · no license · last release long ago · single unresponsive maintainer · exact-pins
|
|
64
|
+
everything (fragile) · heavy transitive tree for a tiny need · unpatched advisories · you'd vendor
|
|
65
|
+
just one helper from it.
|
|
66
|
+
|
|
67
|
+
**✅** Active, regular releases · clear changelog + semver · permissive compatible license · security
|
|
68
|
+
scanning / signed releases · small focused surface · typings available · several reputable dependents.
|
|
69
|
+
|
|
70
|
+
## The decision
|
|
71
|
+
|
|
72
|
+
Conclude explicitly — never let a dependency slip in undecided:
|
|
73
|
+
|
|
74
|
+
1. **Adopt** — passes every dimension; pin sensibly and move on.
|
|
75
|
+
2. **Adopt behind a seam** — acceptable but with real lock-in/risk → wrap it behind a thin interface
|
|
76
|
+
so it can be swapped, and note the exit path.
|
|
77
|
+
3. **Reject** — a disqualifier fires, or a cheaper §2a.5 rung wins → record what you'll do instead.
|
|
78
|
+
|
|
79
|
+
**Adding a dependency needs user approval** (per §2a.5 rung 5 / mandatory-workflow 2a). Record the
|
|
80
|
+
decision and its rationale where future readers will find it — an ADR via `documentation-and-adrs`
|
|
81
|
+
for a consequential one, or at minimum a line in the PR / change proposal. A rejected candidate is
|
|
82
|
+
worth recording too, so the question isn't re-litigated.
|
|
83
|
+
|
|
84
|
+
## Quick checklist
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
- [ ] §2a.5 walked first — a new dependency is genuinely the cheapest rung
|
|
88
|
+
- [ ] Need & fit: solves the real problem; we use a meaningful share of it
|
|
89
|
+
- [ ] No cheaper alternative (stdlib / native / existing dep / a few lines)
|
|
90
|
+
- [ ] Actively maintained; bus factor > 1; not archived/deprecated
|
|
91
|
+
- [ ] License compatible with the project (incl. transitive)
|
|
92
|
+
- [ ] No unpatched critical/high CVEs; releases are patched promptly
|
|
93
|
+
- [ ] Transitive-dep weight acceptable for the value gained
|
|
94
|
+
- [ ] Lock-in understood; seam added if exit cost is high
|
|
95
|
+
- [ ] User approval obtained; decision + rationale recorded
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Related
|
|
99
|
+
|
|
100
|
+
- `.claude/rules/mandatory-workflow.md` (§2a.5 Reuse & YAGNI Gate) — the gate that decides *whether* a dep is needed
|
|
101
|
+
- `over-engineering-review` — reactive twin of §2a.5; stdlib/native/yagni lenses
|
|
102
|
+
- `dependency-verification` — the *pre-install* name check (does this package name even exist / is it a typosquat) that runs before this evaluation
|
|
103
|
+
- `dependency-scanner` agent — audits *already-installed* deps for CVEs + lockfile/artifact integrity (this skill's post-add counterpart)
|
|
104
|
+
- `code-review-and-quality` (Dependency Discipline) — the quick 5-point form of this evaluation
|
|
105
|
+
- `documentation-and-adrs` — record a consequential adopt/reject as an ADR
|
|
@@ -322,6 +322,12 @@ def validate_upload(content_type: str, size: int) -> None:
|
|
|
322
322
|
|
|
323
323
|
## Triaging Dependency Audit Results
|
|
324
324
|
|
|
325
|
+
> **Supply-chain layers.** A CVE audit catches *known-vulnerable* versions — it does not catch a
|
|
326
|
+
> *hallucinated*, *typosquatted*, or *compromised* package. Pair it with the `dependency-verification`
|
|
327
|
+
> skill (pre-install: confirm the package name exists and isn't a typosquat/slopsquat) and the
|
|
328
|
+
> `dependency-scanner` agent's supply-chain integrity mode (post-resolve: lockfile-hash + artifact
|
|
329
|
+
> scanning + known-bad versions). Pre-install name check → install → CVE + integrity audit.
|
|
330
|
+
|
|
325
331
|
Not every finding is an emergency. Decision tree:
|
|
326
332
|
|
|
327
333
|
```
|
|
@@ -171,6 +171,35 @@ Is it a critical user flow that must work end-to-end?
|
|
|
171
171
|
→ E2E test (large) — limit these to critical paths
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
+
## Property-Based Testing
|
|
175
|
+
|
|
176
|
+
Example-based tests (everything above) check the cases *you* thought of. **Property-based testing**
|
|
177
|
+
checks a *property* that must hold for **all** inputs, by generating hundreds of randomized cases —
|
|
178
|
+
including the boundary and adversarial inputs you'd never enumerate by hand — and shrinking any
|
|
179
|
+
failure to a minimal reproducer. It complements, never replaces, example-based TDD: keep your
|
|
180
|
+
hand-written cases as living documentation, and add properties where the input space is large and a
|
|
181
|
+
general invariant exists.
|
|
182
|
+
|
|
183
|
+
**Reach for it when** the input space is wide (parsers, serializers, numeric/data transforms,
|
|
184
|
+
collection logic, state machines) and you can state a rule that should *always* be true.
|
|
185
|
+
|
|
186
|
+
Common property shapes:
|
|
187
|
+
|
|
188
|
+
| Property | The invariant | Example |
|
|
189
|
+
|----------|---------------|---------|
|
|
190
|
+
| **Round-trip** | `decode(encode(x)) == x` | serialize→deserialize, parse→format, compress→decompress |
|
|
191
|
+
| **Idempotence** | `f(f(x)) == f(x)` | normalize, dedupe, sort, saturating clamp |
|
|
192
|
+
| **Invariant / oracle** | a cheaper or known-correct implementation agrees | optimized vs naive; sorted output is a permutation of input and ordered |
|
|
193
|
+
| **Metamorphic** | a transformed input changes the output predictably | `sort(reverse(xs)) == sort(xs)`; adding an item grows the count by one |
|
|
194
|
+
|
|
195
|
+
The point isn't more assertions — it's letting the generator *find the input that breaks your
|
|
196
|
+
mental model*. When it shrinks to a tiny failing case, that case becomes a permanent example-based
|
|
197
|
+
regression test (the Prove-It Pattern).
|
|
198
|
+
|
|
199
|
+
Ecosystem (one per language; the project's own runner/conventions live in `testing-conventions`):
|
|
200
|
+
**Python** → Hypothesis · **JS/TS** → fast-check · **Java/Kotlin** → jqwik · **Rust** → proptest ·
|
|
201
|
+
**Go** → built-in `testing/quick` or rapid · **Haskell/Scala** → QuickCheck/ScalaCheck.
|
|
202
|
+
|
|
174
203
|
## Writing Good Tests
|
|
175
204
|
|
|
176
205
|
### Test State, Not Interactions
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|