claude-code-kit 0.17.1__tar.gz → 0.17.3__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.17.1 → claude_code_kit-0.17.3}/.claude-plugin/marketplace.json +1 -1
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/.claude-plugin/plugin.json +2 -3
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/CHANGELOG.md +60 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/PKG-INFO +10 -1
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/README.md +9 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/catalog/capture.yaml +2 -2
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/catalog/profiles.yaml +1 -1
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/docs/agentic-patterns.md +1 -1
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/docs/coverage-audit.md +1 -1
- claude_code_kit-0.17.3/hooks/hooks.json +57 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/pyproject.toml +1 -1
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/agent-memory.md +1 -1
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/remember/SKILL.md +1 -1
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/__init__.py +1 -1
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/hooks.py +0 -33
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/models.py +2 -2
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/settings.json +0 -15
- claude_code_kit-0.17.1/hooks/hooks.json +0 -72
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/.gitignore +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/CLAUDE.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/CONTRIBUTING.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/LICENSE +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/acceptance-reviewer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/auditor.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/dependency-scanner.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/developer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/devils-advocate.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/devops-engineer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/e2e-tester.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/em-reviewer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/incident-responder.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/merge-reviewer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/observability-engineer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/orchestrator.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/owasp-reviewer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/policy-validator.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/pr-raiser.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/risk-classifier.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/sdlc-code-reviewer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/secret-scanner.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/security-reviewer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/senior-backend-dev.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/senior-frontend-dev.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/senior-tester.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/spec-doc-writer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/story-planner.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/technical-architect.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/tester.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/ui-designer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/agents/unit-tester.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/catalog/mcp.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/catalog/org.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/catalog/stacks.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/commands/abort.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/commands/init.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/commands/sdlc.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/commands/status.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/docs/agents.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/docs/architecture.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/docs/eval-harness.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/docs/org-capabilities.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/audit-log.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/capture-learnings.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/guard-destructive-git.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/guard-secrets.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/lint-fix.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/load-autonomy.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/load-continuity.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/load-learnings.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/type-check.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/validate-frontmatter.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/validate-settings.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/warn-large-edits.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/warn-llm-io.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/warn-missing-tests.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/warn-sensitive-files.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/hooks/scripts/warn-shared-modules.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/agent-guardrails.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/agent-resilience.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/autonomy-levels.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/code-organization.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/continuity.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/design-patterns.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/devops-observability.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/documentation.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/evals.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/frontend-best-practices.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/goal-setting-and-monitoring.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/human-in-the-loop.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/linting-and-formatting.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/mandatory-workflow.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/model-tiers.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/quality-gates.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/rarv-cycle.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/reasoning-techniques.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/responsive-and-accessibility.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/risk-classification.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/testing.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/rules/tool-design.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/scripts/init.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/_references/accessibility-checklist.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/_references/orchestration-patterns.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/_references/performance-checklist.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/_references/security-checklist.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/_references/testing-patterns.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/accessibility-review/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/api-and-interface-design/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/api-integration/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/archive-sprint/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/backlog/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/backlog/item-template.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/browser-testing-with-devtools/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/bug-hunt/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/ci-cd-and-automation/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/code-review-and-quality/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/code-simplification/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/component-design/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/consolidate-learnings/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/context-engineering/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/debugging-and-error-recovery/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/decision/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/decision/adr-template.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/deprecation-and-migration/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/documentation-and-adrs/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/doubt-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/execute/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/frontend-ui-engineering/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/git-workflow-and-versioning/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/idea-refine/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/idea-refine/examples.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/idea-refine/frameworks.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/idea-refine/refinement-criteria.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/idea-refine/scripts/idea-refine.sh +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/incident-postmortem/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/incremental-implementation/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/interview-me/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/load-testing/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/manual-test/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/over-engineering-review/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/performance-optimization/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/planning-and-task-breakdown/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/playwright-verification/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/refresh-docs/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/scope/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/scope/scope-template.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/sdlc/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/security-and-hardening/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/security-verification/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/shipping-and-launch/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/simplification-debt/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/smoke-test/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/source-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/spec-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/sprint/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/sprint/sprint-template.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/task-tracker-sync/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/test-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/test-plan-review/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/threat-model/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/triage/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/ui-ux-design/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/unit-test/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/skills/using-agent-skills/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/__main__.py +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/catalog.py +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/cli.py +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/prompts.py +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/render.py +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/scaffold.py +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/upgrader.py +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/src/claude_kit/validator.py +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/CLAUDE.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/CLAUDE.stack.md.tmpl +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/CONTINUITY.template.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/README.claude-sdlc.md.tmpl +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/agent-memory/MEMORY.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/agent-memory/api/.gitkeep +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/agent-memory/architecture/.gitkeep +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/agent-memory/debugging/.gitkeep +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/agent-memory/gotchas/.gitkeep +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/agent-memory/patterns/.gitkeep +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/agent-memory/performance/.gitkeep +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/artifacts/adr.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/artifacts/api-change-report.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/artifacts/feature-spec.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/artifacts/release-plan.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/artifacts/runbook.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/artifacts/security-review.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/artifacts/test-plan.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/README.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/agents/data-workflow-agent.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/agents/founder-prototype-agent.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/agents/internal-tools-builder.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/agents/pm-copilot.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/agents/staff-pm-reviewer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/agents/support-ticket-engineer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/devops-and-release/README.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/devops-and-release/pack.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/engineering-core/README.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/engineering-core/pack.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/non-engineer-builder/README.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/non-engineer-builder/pack.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/onboarding-and-docs/README.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/onboarding-and-docs/pack.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/product-to-code/README.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/product-to-code/pack.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/quality-and-review/README.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/quality-and-review/pack.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/security-and-compliance/README.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/packs/security-and-compliance/pack.yaml +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/ai-working-agreement.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/ambiguity-resolution.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/branch-and-pr-policy.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/compliance-policy.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/non-engineer-safe-coding.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/pii-policy.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/production-data-policy.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/prompt-to-task-conversion.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/prototype-boundaries.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/rules/secrets-policy.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/customer-issue-to-fix/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/feature-from-idea/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/prompt-to-safe-task/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/prototype-to-production/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/repo-onboarding/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/review-scope/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/review-sprint/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/review-sprint-plan/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/org/skills/review-ux-flow/SKILL.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/backend/go/net-http/rules/go-patterns.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/backend/python/fastapi/rules/fastapi-patterns.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/db/mongodb/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/db/mongodb/agents/mongodb-specialist.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/db/mongodb/rules/mongodb-patterns.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/db/postgres/agents/db-performance-reviewer.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/db/postgres/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/db/postgres/agents/postgres-specialist.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/db/postgres/rules/database-performance.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/db/postgres/rules/postgres-patterns.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/frontend/react/rules/design-system-compliance.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/frontend/react/rules/mobile-design-guidelines.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/frontend/react/rules/react-patterns.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/templates/stacks/frontend/react/rules/ui-design-system.md +0 -0
- {claude_code_kit-0.17.1 → claude_code_kit-0.17.3}/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.17.
|
|
13
|
+
"version": "0.17.3",
|
|
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.17.
|
|
3
|
+
"version": "0.17.3",
|
|
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",
|
|
@@ -20,6 +20,5 @@
|
|
|
20
20
|
"automation",
|
|
21
21
|
"scaffold",
|
|
22
22
|
"cookiecutter"
|
|
23
|
-
]
|
|
24
|
-
"hooks": "./hooks/hooks.json"
|
|
23
|
+
]
|
|
25
24
|
}
|
|
@@ -4,6 +4,66 @@ 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.17.3] — 2026-06-17
|
|
8
|
+
|
|
9
|
+
**Fix: remove the two `UserPromptSubmit` prompt hooks that errored on every prompt.** Once the plugin's
|
|
10
|
+
hooks actually loaded (0.17.2), `skill-routing` and `learning-detection` — both `type: "prompt"` —
|
|
11
|
+
failed on every user message with `Schema validation failed` / `JSON validation failed`. Root cause: a
|
|
12
|
+
Claude Code **prompt hook may only return a yes/no decision** (`{ ok, reason?, impossible? }`); it
|
|
13
|
+
cannot inject context. Those two hooks told the model to return `{"continue": true, "systemMessage":
|
|
14
|
+
"<hint>"}` to *inject* a routing/learning hint — a shape the prompt-hook validator rejects, and a
|
|
15
|
+
capability prompt hooks don't have (context injection on `UserPromptSubmit` belongs to **command**
|
|
16
|
+
hooks via stdout / `hookSpecificOutput`). They had never worked — they didn't even load before 0.17.2.
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
- **`skill-routing`** and **`learning-detection`** (`UserPromptSubmit` prompt hooks) from **both**
|
|
20
|
+
channels — the plugin `hooks/hooks.json`, the CLI `HOOK_REGISTRY` (`src/claude_kit/hooks.py`),
|
|
21
|
+
`templates/settings.json`, and the `standard` profile (`catalog/profiles.yaml`). Their function is
|
|
22
|
+
already covered: Claude auto-selects skills from their descriptions, and durable learnings are
|
|
23
|
+
recorded by the background `capture-learnings` job (verified working in 0.17.x) plus `/remember`.
|
|
24
|
+
|
|
25
|
+
### Docs
|
|
26
|
+
- Dropped the "two-sided capture" / learning-detection references from `docs/coverage-audit.md`,
|
|
27
|
+
`docs/agentic-patterns.md`, `rules/agent-memory.md`, `skills/remember/SKILL.md`, `catalog/capture.yaml`,
|
|
28
|
+
and `src/claude_kit/models.py`.
|
|
29
|
+
|
|
30
|
+
### Not adopted (deliberately)
|
|
31
|
+
- **Re-implementing them as deterministic command hooks** (keyword match → stdout hint) — skill
|
|
32
|
+
auto-selection + background capture already cover the need, and a per-prompt hint adds noise; kept
|
|
33
|
+
the kit simpler (reuse-first).
|
|
34
|
+
|
|
35
|
+
## [0.17.2] — 2026-06-17
|
|
36
|
+
|
|
37
|
+
**Fix: the plugin's hooks load (for real this time).** 0.17.1 wrapped `hooks/hooks.json` under a
|
|
38
|
+
top-level `hooks` key — necessary, but it uncovered a second problem the flat file had masked. Claude
|
|
39
|
+
Code **auto-discovers** `hooks/hooks.json` from the plugin root, yet `.claude-plugin/plugin.json` *also*
|
|
40
|
+
pointed its `hooks` field at the same `./hooks/hooks.json`. The loader then read the file twice and
|
|
41
|
+
failed with **`Hook load failed: Duplicate hooks file detected`** — so, again, none of the plugin's
|
|
42
|
+
hooks loaded. The manifest `hooks` field is reserved for *additional* hook files; the standard one is
|
|
43
|
+
loaded automatically and must not be re-declared. Every other Claude Code plugin (superpowers, hookify,
|
|
44
|
+
vercel, …) relies purely on auto-discovery. This affected only the **plugin** channel; the pip CLI was
|
|
45
|
+
always fine (it builds `.claude/settings.json` from `HOOK_REGISTRY`, `src/claude_kit/hooks.py`). After
|
|
46
|
+
upgrading, run `/plugin marketplace update claude-kit` → `/plugin update claude-kit@claude-kit` →
|
|
47
|
+
`/reload-plugins`, then `/doctor`, to confirm the error is gone.
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
- **`.claude-plugin/plugin.json`** no longer sets `hooks: "./hooks/hooks.json"`. The file is
|
|
51
|
+
auto-discovered from the plugin root (and stays wrapped, per 0.17.1), so it now loads exactly once.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
- **`tests/test_plugin.py`** now reads the auto-discovered `hooks/hooks.json` directly (not via the
|
|
55
|
+
manifest) and adds `test_manifest_does_not_redeclare_standard_hooks`, so the duplicate-load
|
|
56
|
+
regression can't come back.
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
- **README** — a "Updating the plugin" snippet (`/plugin marketplace update` → `/plugin update` →
|
|
60
|
+
`/reload-plugins`) in the plugin Quick-start section.
|
|
61
|
+
|
|
62
|
+
### Not adopted (deliberately)
|
|
63
|
+
- **Inlining the hooks into `plugin.json`** (the object form, which would also avoid the collision) —
|
|
64
|
+
still kept external; the `UserPromptSubmit` routing and learning-detection prompts read far better in
|
|
65
|
+
a dedicated file than inlined in the manifest.
|
|
66
|
+
|
|
7
67
|
## [0.17.1] — 2026-06-17
|
|
8
68
|
|
|
9
69
|
**Fix: the plugin's hooks now load.** `.claude-plugin/plugin.json` points its `hooks` field at a file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-kit
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.3
|
|
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
|
|
@@ -113,6 +113,15 @@ Then, inside any project you want the pipeline to manage:
|
|
|
113
113
|
> `/sdlc` is a **project skill** installed by `init`, so it becomes available after the restart. The
|
|
114
114
|
> plugin also exposes `/claude-kit:sdlc <task>`, which works immediately (no restart needed).
|
|
115
115
|
|
|
116
|
+
**Updating the plugin** to a newer release later (the plugin is cached, so a plain `/reload-plugins`
|
|
117
|
+
won't fetch new code — refresh the marketplace snapshot first):
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
/plugin marketplace update claude-kit # refresh the marketplace snapshot from the repo
|
|
121
|
+
/plugin update claude-kit@claude-kit # install the newer version into the cache
|
|
122
|
+
/reload-plugins # load it into the running session
|
|
123
|
+
```
|
|
124
|
+
|
|
116
125
|
</details>
|
|
117
126
|
|
|
118
127
|
<details>
|
|
@@ -86,6 +86,15 @@ Then, inside any project you want the pipeline to manage:
|
|
|
86
86
|
> `/sdlc` is a **project skill** installed by `init`, so it becomes available after the restart. The
|
|
87
87
|
> plugin also exposes `/claude-kit:sdlc <task>`, which works immediately (no restart needed).
|
|
88
88
|
|
|
89
|
+
**Updating the plugin** to a newer release later (the plugin is cached, so a plain `/reload-plugins`
|
|
90
|
+
won't fetch new code — refresh the marketplace snapshot first):
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
/plugin marketplace update claude-kit # refresh the marketplace snapshot from the repo
|
|
94
|
+
/plugin update claude-kit@claude-kit # install the newer version into the cache
|
|
95
|
+
/reload-plugins # load it into the running session
|
|
96
|
+
```
|
|
97
|
+
|
|
89
98
|
</details>
|
|
90
99
|
|
|
91
100
|
<details>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
# The kit closes the self-improving loop two ways: RECALL (`load-learnings` SessionStart hook injects
|
|
4
4
|
# `.claude/agent-memory/MEMORY.md`) and CAPTURE (a detached background `claude` job records what the
|
|
5
5
|
# agent itself changed/learned). This file governs ONLY the agent-side CAPTURE trigger — how often /
|
|
6
|
-
# when it fires — because that is where token cost accrues and preferences differ. RECALL
|
|
7
|
-
#
|
|
6
|
+
# when it fires — because that is where token cost accrues and preferences differ. RECALL stays
|
|
7
|
+
# profile-driven.
|
|
8
8
|
#
|
|
9
9
|
# One script (`hooks/scripts/capture-learnings.sh`) backs every mode, dispatched by an argument
|
|
10
10
|
# (`end` / `stop` / `catchup`); the registry in `src/claude_kit/hooks.py` maps each hook id below to
|
|
@@ -91,7 +91,7 @@ profiles:
|
|
|
91
91
|
# NOTE: the agent-side capture hooks (capture-learnings / -catchup / -stop) are deliberately NOT
|
|
92
92
|
# listed here — they are installed by the init-time `capture_mode` choice via catalog/capture.yaml
|
|
93
93
|
# (see catalog._apply_capture_mode), not by profile membership. load-learnings (recall) stays.
|
|
94
|
-
hooks: [load-continuity, load-learnings, load-autonomy,
|
|
94
|
+
hooks: [load-continuity, load-learnings, load-autonomy, guard-rm-rf, guard-push-main, guard-destructive-git, protect-secrets, guard-commit-secrets, warn-shared-modules, warn-llm-io, lint-fix, type-check]
|
|
95
95
|
|
|
96
96
|
enterprise:
|
|
97
97
|
label: "Enterprise — adds DevOps, Observability, full audit + acceptance"
|
|
@@ -25,7 +25,7 @@ they are already embodied in its rules, agents, skills, and the orchestration mo
|
|
|
25
25
|
| 6 | Planning | `agents/spec-doc-writer`, `story-planner`, `technical-architect`; `skills/spec-driven-development`, `planning-and-task-breakdown`, `scope`, `sprint` | covered (strong) |
|
|
26
26
|
| 7 | Multi-Agent Collaboration | 28 agents; subagents + Agent-Teams worked example in orchestration-patterns | covered (strong) |
|
|
27
27
|
| 8 | Memory Management | `rules/continuity.md` (working) + `rules/agent-memory.md` (durable, now with the **working/episodic/semantic/procedural** taxonomy); `skills/remember`, `consolidate-learnings`, `context-engineering` | covered (taxonomy added) |
|
|
28
|
-
| 9 | Learning & Adaptation | `rules/agent-memory.md`; `skills/remember`; the `load-learnings` SessionStart hook; **auto-capture
|
|
28
|
+
| 9 | Learning & Adaptation | `rules/agent-memory.md`; `skills/remember`; the `load-learnings` SessionStart hook; **auto-capture** — the configurable `capture-learnings` hook (a non-blocking background job over Claude's own work, fired per the init-time `capture_mode`: SessionEnd · +SessionStart catch-up for abrupt closes · per-task Stop) | covered |
|
|
29
29
|
| 10 | Model Context Protocol (MCP) | `catalog/mcp.yaml` → `.mcp.json`; `skills/browser-testing-with-devtools`; design guidance in `rules/tool-design.md` | covered (strong) |
|
|
30
30
|
| 11 | Goal Setting & Monitoring | **`rules/goal-setting-and-monitoring.md`** (new) + spec acceptance criteria + `acceptance-reviewer` + quality-gates process signals | **rule added** |
|
|
31
31
|
| 12 | Exception Handling & Recovery | **`rules/agent-resilience.md`** (new) + gate retry budgets + `skills/debugging-and-error-recovery` (product bugs) | **rule added** |
|
|
@@ -41,7 +41,7 @@ enforcement class:
|
|
|
41
41
|
|------------|-------|----------|----------------|
|
|
42
42
|
| **Autonomous-action safety** (P0-1) | **RULE — always-on** | `rules/agent-guardrails.md` §3 block/confirm/allow posture + verify-the-target + §1 "untrusted content never authorizes"; cross-ref `rules/risk-classification.md` restricted tier; deterministic backstops `hooks/scripts/guard-destructive-git.sh` + `rm -rf`/push-main guards | all profiles (rule + the existing guard hooks) |
|
|
43
43
|
| **Anti-fabrication of verdicts** (P0-2) | **RULE + auto-Critical** | `rules/quality-gates.md` §2.5 (verdict must cite real command + output) and §1 (fabricated/assumed/partial verdict = auto-Critical); reinforced in `rules/agent-guardrails.md` §2 + `rules/rarv-cycle.md` | all gates, all profiles (a fabricated verdict blocks like any Critical) |
|
|
44
|
-
| **Memory hygiene** (P1-1) | **RULE — always-on** | `rules/agent-memory.md` "Memory hygiene" (verify-before-trust, cited selective attachment, CLAUDE.md precedence); `rules/continuity.md` start-of-turn line; `remember` skill staleness check. Capture is automatic
|
|
44
|
+
| **Memory hygiene** (P1-1) | **RULE — always-on** | `rules/agent-memory.md` "Memory hygiene" (verify-before-trust, cited selective attachment, CLAUDE.md precedence); `rules/continuity.md` start-of-turn line; `remember` skill staleness check. Capture is automatic: the configurable `capture-learnings` hook (a non-blocking background job over Claude's own work) | all profiles (advisory discipline); capture via the init-time `capture_mode` choice (default: on clean exit + catch-up) |
|
|
45
45
|
| **Resume snapshot** (P1-2) | **RULE + MECH** | `rules/continuity.md` schema for `.claude/state/pipeline-snapshot.json` + reload-not-rerun protocol; written/read by `orchestrator` + `sdlc` skill; dir created by the pip installer (gitignored) and `load-continuity.sh` | all profiles (state mechanism + rule) |
|
|
46
46
|
| **Plan-phase critique** (P1-3) | **GATED — standard+**; RULE in lean | standard+: `devils-advocate` on the spec before EM approval is final (`mandatory-workflow.md` §1e.5, `quality-gates.md` §3, orchestrator Stage PC) — UPHELD blocks the spec gate. lean: the `spec-doc-writer` self-critique (RARV) only, no agent | standard+ (blocking); lean (advisory self-critique) |
|
|
47
47
|
| **Implementer house style** (P2-1) | **RULE + code-review checks** | `templates/CLAUDE.md` "Surgical Changes" (delete-vs-shim, validate-at-boundary, cite `path:line`; no-narration cross-ref `documentation.md` §6); `sdlc-code-reviewer` Change-Hygiene checks (shim = Medium, redundant validation = Low, narration = Low) | all profiles (rule); the code-review gate enforces the checks |
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-continuity.sh\"" },
|
|
8
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-learnings.sh\"" },
|
|
9
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-autonomy.sh\"" },
|
|
10
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/capture-learnings.sh\" catchup" }
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"PreToolUse": [
|
|
15
|
+
{
|
|
16
|
+
"matcher": "Bash",
|
|
17
|
+
"hooks": [
|
|
18
|
+
{ "type": "command", "command": "CMD=$(jq -r '.tool_input.command'); if echo \"$CMD\" | grep -qE 'rm[[:space:]]+-[^[:space:]]*r[^[:space:]]*f'; then echo 'BLOCKED: rm -rf is disabled by claude-kit. Move to trash or delete specific paths explicitly.' >&2; exit 2; fi" },
|
|
19
|
+
{ "type": "command", "command": "CMD=$(jq -r '.tool_input.command'); if echo \"$CMD\" | grep -qE 'git[[:space:]]+push.*[[:space:]:](main|master)([[:space:]]|$)'; then echo 'BLOCKED: refusing to push to main/master — use a feature branch and a PR.' >&2; exit 2; fi" },
|
|
20
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-destructive-git.sh\"" },
|
|
21
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-secrets.sh\"" }
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"matcher": "Edit|Write",
|
|
26
|
+
"hooks": [
|
|
27
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-shared-modules.sh\"" },
|
|
28
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-llm-io.sh\"" },
|
|
29
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-sensitive-files.sh\"" }
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"matcher": "Write",
|
|
34
|
+
"hooks": [
|
|
35
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate-settings.sh\"" }
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"Stop": [
|
|
40
|
+
{
|
|
41
|
+
"matcher": "",
|
|
42
|
+
"hooks": [
|
|
43
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/lint-fix.sh\"" },
|
|
44
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/type-check.sh\"" }
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"SessionEnd": [
|
|
49
|
+
{
|
|
50
|
+
"matcher": "",
|
|
51
|
+
"hooks": [
|
|
52
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/capture-learnings.sh\" end" }
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "claude-code-kit"
|
|
7
|
-
version = "0.17.
|
|
7
|
+
version = "0.17.3"
|
|
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"
|
|
@@ -13,7 +13,7 @@ Agents use four kinds of memory; this kit splits them across two systems — don
|
|
|
13
13
|
| **Semantic** | Durable facts & decisions — conventions, architecture, API behavior | `agent-memory/architecture/`, `api/`, `patterns/`, `performance/` |
|
|
14
14
|
| **Procedural** | How to do things — repeatable workflows and disciplines | the `.claude/rules/*` and `.claude/skills/*` themselves |
|
|
15
15
|
|
|
16
|
-
Working memory is the scratchpad (overwritten constantly); the rest is the notebook (accumulates). Promote a durable CONTINUITY learning into the right `agent-memory/` category via the `remember` skill. Capture is automatic
|
|
16
|
+
Working memory is the scratchpad (overwritten constantly); the rest is the notebook (accumulates). Promote a durable CONTINUITY learning into the right `agent-memory/` category via the `remember` skill. Capture is automatic — the `capture-learnings` hook records (in a non-blocking background job) what Claude changed/learned from its own work. How often it fires is the init-time `capture_mode` choice (off · on clean exit · + a SessionStart catch-up for sessions closed abruptly · per task); it routes through the `remember` skill.
|
|
17
17
|
|
|
18
18
|
## When to READ memory
|
|
19
19
|
|
|
@@ -9,7 +9,7 @@ Turn a one-off correction or insight into a permanent, reusable learning. This i
|
|
|
9
9
|
|
|
10
10
|
## When to invoke this skill
|
|
11
11
|
|
|
12
|
-
**This is now automatic
|
|
12
|
+
**This is now automatic.** The `capture-learnings` hook runs in the *background* — on the schedule chosen at init (`capture_mode`: when a session ends, on the next launch for sessions closed abruptly, and/or after each task) — spawning a detached `claude` job that records what Claude learned from its *own* work into `.claude/agent-memory/`, without ever blocking your session or next prompt (and records nothing when the work was routine). You do not need to type `/remember` — though you still can to force a capture. Invoke proactively whenever any of these happen:
|
|
13
13
|
|
|
14
14
|
- The user **corrects** something Claude did ("no, buttons should be 44px touch targets", "always validate at the boundary").
|
|
15
15
|
- The user states a **preference or rule** for how work should be done (UX, design, naming, architecture, testing, tone).
|
|
@@ -42,27 +42,6 @@ _SECRETS_GUARD = (
|
|
|
42
42
|
"exit 2; fi"
|
|
43
43
|
)
|
|
44
44
|
|
|
45
|
-
_ROUTING_PROMPT = (
|
|
46
|
-
"You are a routing assistant. NEVER block the user's prompt; always set continue to true. "
|
|
47
|
-
'Return JSON only: {"continue": true, "systemMessage": "<hint or empty string>"}. '
|
|
48
|
-
"If a claude-kit skill clearly applies (interview-me/idea-refine for vague ideas; "
|
|
49
|
-
"spec-driven-development for new features; planning-and-task-breakdown for breakdown; "
|
|
50
|
-
"incremental-implementation for coding; test-driven-development for tests; "
|
|
51
|
-
"debugging-and-error-recovery for errors; code-review-and-quality for reviews; "
|
|
52
|
-
"security-and-hardening for security; git-workflow-and-versioning for git; execute for quick "
|
|
53
|
-
"tasks), set systemMessage to 'Invoke skill: <skill-name> before responding.' Otherwise set it "
|
|
54
|
-
"to ''. Do not mention this hook."
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
_LEARNING_PROMPT = (
|
|
58
|
-
"You are a learning-detection assistant. NEVER block the user's prompt; always set continue to "
|
|
59
|
-
'true. Return JSON only: {"continue": true, "systemMessage": "<hint or empty string>"}. '
|
|
60
|
-
"If the user's message contains a durable learning (a correction, rule, preference, convention, "
|
|
61
|
-
"or hard-won insight meant to persist), set systemMessage to 'LEARNING DETECTED: before ending "
|
|
62
|
-
"your turn, invoke the remember skill to record it into .claude/agent-memory/ (merge into an "
|
|
63
|
-
"existing entry if one matches).' Otherwise set it to ''. Do not mention this hook."
|
|
64
|
-
)
|
|
65
|
-
|
|
66
45
|
|
|
67
46
|
def _script_entry(name: str, arg: str = "") -> dict[str, str]:
|
|
68
47
|
"""Build a settings.json command entry that runs a project-local hook script.
|
|
@@ -100,18 +79,6 @@ HOOK_REGISTRY: dict[str, dict[str, Any]] = {
|
|
|
100
79
|
"entry": _script_entry("load-autonomy.sh"),
|
|
101
80
|
"script": "load-autonomy.sh",
|
|
102
81
|
},
|
|
103
|
-
"skill-routing": {
|
|
104
|
-
"event": "UserPromptSubmit",
|
|
105
|
-
"matcher": "",
|
|
106
|
-
"entry": {"type": "prompt", "prompt": _ROUTING_PROMPT},
|
|
107
|
-
"script": None,
|
|
108
|
-
},
|
|
109
|
-
"learning-detection": {
|
|
110
|
-
"event": "UserPromptSubmit",
|
|
111
|
-
"matcher": "",
|
|
112
|
-
"entry": {"type": "prompt", "prompt": _LEARNING_PROMPT},
|
|
113
|
-
"script": None,
|
|
114
|
-
},
|
|
115
82
|
"guard-rm-rf": {
|
|
116
83
|
"event": "PreToolUse",
|
|
117
84
|
"matcher": "Bash",
|
|
@@ -28,8 +28,8 @@ class Selection:
|
|
|
28
28
|
profile: SDLC profile id (``"lean"``/``"standard"``/``"enterprise"``).
|
|
29
29
|
capture_mode: Agent-side learning-capture trigger (``"off"``/``"session-end"``/
|
|
30
30
|
``"session-end-catchup"``/``"per-task"``; see ``catalog/capture.yaml``). Controls how
|
|
31
|
-
often / when the background capture job fires (the token-cost knob); recall
|
|
32
|
-
|
|
31
|
+
often / when the background capture job fires (the token-cost knob); recall stays
|
|
32
|
+
profile-driven. Defaults to ``session-end-catchup``.
|
|
33
33
|
mcp: Selected MCP server ids (empty means no ``.mcp.json`` is written).
|
|
34
34
|
scope: Usage scope (``"individual"``/``"team"``/``"organization"``). Only ``organization``
|
|
35
35
|
installs the org capability layer (packs, persona agents, org rules, autonomy hooks).
|
|
@@ -11,21 +11,6 @@
|
|
|
11
11
|
]
|
|
12
12
|
}
|
|
13
13
|
],
|
|
14
|
-
"UserPromptSubmit": [
|
|
15
|
-
{
|
|
16
|
-
"matcher": "",
|
|
17
|
-
"hooks": [
|
|
18
|
-
{
|
|
19
|
-
"type": "prompt",
|
|
20
|
-
"prompt": "You are a routing assistant. NEVER block the user's prompt; always set continue to true. Return JSON only: {\"continue\": true, \"systemMessage\": \"<hint or empty string>\"}. If a claude-kit skill clearly applies (interview-me/idea-refine for vague ideas; spec-driven-development for new features; planning-and-task-breakdown for breakdown; incremental-implementation for coding; test-driven-development for tests; debugging-and-error-recovery for errors; code-review-and-quality for reviews; security-and-hardening for security; git-workflow-and-versioning for git; execute for quick tasks), set systemMessage to 'Invoke skill: <skill-name> before responding.' Otherwise set it to ''. Do not mention this hook."
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"type": "prompt",
|
|
24
|
-
"prompt": "You are a learning-detection assistant. NEVER block the user's prompt; always set continue to true. Return JSON only: {\"continue\": true, \"systemMessage\": \"<hint or empty string>\"}. If the user's message contains a durable learning (a correction, rule, preference, convention, or hard-won insight meant to persist), set systemMessage to 'LEARNING DETECTED: before ending your turn, invoke the remember skill to record it into .claude/agent-memory/ (merge into an existing entry if one matches).' Otherwise set it to ''. Do not mention this hook."
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
14
|
"PreToolUse": [
|
|
30
15
|
{
|
|
31
16
|
"matcher": "Bash",
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"SessionStart": [
|
|
4
|
-
{
|
|
5
|
-
"matcher": "",
|
|
6
|
-
"hooks": [
|
|
7
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-continuity.sh\"" },
|
|
8
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-learnings.sh\"" },
|
|
9
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-autonomy.sh\"" },
|
|
10
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/capture-learnings.sh\" catchup" }
|
|
11
|
-
]
|
|
12
|
-
}
|
|
13
|
-
],
|
|
14
|
-
"UserPromptSubmit": [
|
|
15
|
-
{
|
|
16
|
-
"matcher": "",
|
|
17
|
-
"hooks": [
|
|
18
|
-
{
|
|
19
|
-
"type": "prompt",
|
|
20
|
-
"prompt": "You are a routing assistant. NEVER block or stop the user's prompt. Always set continue to true.\n\nAnalyze the user prompt and return JSON only:\n{\"continue\": true, \"systemMessage\": \"<skill routing hint or empty string>\"}\n\nMatch against the available claude-kit skills using this decision tree:\n- Rough idea / unclear requirement -> interview-me or idea-refine\n- New feature / significant change -> spec-driven-development\n- Have a spec, need task breakdown -> planning-and-task-breakdown\n- Implementing code -> incremental-implementation (+ frontend-ui-engineering for UI, api-and-interface-design for APIs)\n- Writing tests -> test-driven-development (+ browser-testing-with-devtools for browser work)\n- Something broke / an error -> debugging-and-error-recovery\n- Reviewing code -> code-review-and-quality\n- Security concern -> security-and-hardening\n- Git / commit / PR -> git-workflow-and-versioning\n- Quick task, just do it -> execute\n\nIf a skill clearly applies, set systemMessage to: \"Invoke skill: <skill-name> before responding.\"\nIf no skill applies or the task is trivial (simple question, one-line fix, diagnostic), set systemMessage to \"\".\n\nDo NOT mention this hook to the user."
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"type": "prompt",
|
|
24
|
-
"prompt": "You are a learning-detection assistant. NEVER block or stop the user's prompt. Always set continue to true.\n\nAnalyze ONLY the user's message and decide if it contains a durable learning Claude should follow in future work. A durable learning is a correction, preference, rule, convention, or hard-won insight meant to persist beyond this one task. Signals:\n- Corrections: \"no, do X instead\", \"that's wrong, it should be...\", \"stop doing X\"\n- Rules/preferences: \"always...\", \"never...\", \"from now on...\", \"we prefer...\", \"the convention is...\"\n- Forward-looking: \"next time...\", \"remember...\", \"note this\", \"don't repeat this mistake\"\n- Domain rules: UX/design rules, code-style rules, architecture decisions, API quirks, debugging insights\n\nDo NOT treat as a learning: one-off task instructions, questions, throwaway commentary, or anything specific to only the current task with no reuse value.\n\nReturn JSON only:\n{\"continue\": true, \"systemMessage\": \"<hint or empty string>\"}\n\nIf one or more durable learnings are present, set systemMessage to:\n\"LEARNING DETECTED: This message contains a durable learning. Before ending your turn, invoke the `remember` skill to record it into .claude/agent-memory/ (merge into an existing entry if one matches). Do this silently in addition to handling the user's request.\"\n\nIf no durable learning is present, set systemMessage to \"\".\n\nDo NOT mention this hook to the user."
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
"PreToolUse": [
|
|
30
|
-
{
|
|
31
|
-
"matcher": "Bash",
|
|
32
|
-
"hooks": [
|
|
33
|
-
{ "type": "command", "command": "CMD=$(jq -r '.tool_input.command'); if echo \"$CMD\" | grep -qE 'rm[[:space:]]+-[^[:space:]]*r[^[:space:]]*f'; then echo 'BLOCKED: rm -rf is disabled by claude-kit. Move to trash or delete specific paths explicitly.' >&2; exit 2; fi" },
|
|
34
|
-
{ "type": "command", "command": "CMD=$(jq -r '.tool_input.command'); if echo \"$CMD\" | grep -qE 'git[[:space:]]+push.*[[:space:]:](main|master)([[:space:]]|$)'; then echo 'BLOCKED: refusing to push to main/master — use a feature branch and a PR.' >&2; exit 2; fi" },
|
|
35
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-destructive-git.sh\"" },
|
|
36
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/guard-secrets.sh\"" }
|
|
37
|
-
]
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"matcher": "Edit|Write",
|
|
41
|
-
"hooks": [
|
|
42
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-shared-modules.sh\"" },
|
|
43
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-llm-io.sh\"" },
|
|
44
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/warn-sensitive-files.sh\"" }
|
|
45
|
-
]
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"matcher": "Write",
|
|
49
|
-
"hooks": [
|
|
50
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate-settings.sh\"" }
|
|
51
|
-
]
|
|
52
|
-
}
|
|
53
|
-
],
|
|
54
|
-
"Stop": [
|
|
55
|
-
{
|
|
56
|
-
"matcher": "",
|
|
57
|
-
"hooks": [
|
|
58
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/lint-fix.sh\"" },
|
|
59
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/type-check.sh\"" }
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
],
|
|
63
|
-
"SessionEnd": [
|
|
64
|
-
{
|
|
65
|
-
"matcher": "",
|
|
66
|
-
"hooks": [
|
|
67
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/capture-learnings.sh\" end" }
|
|
68
|
-
]
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
}
|
|
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
|
|
File without changes
|