claude-code-kit 0.7.1__tar.gz → 0.9.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.7.1 → claude_code_kit-0.9.0}/.claude-plugin/marketplace.json +1 -1
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/.claude-plugin/plugin.json +1 -1
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/CHANGELOG.md +74 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/PKG-INFO +5 -4
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/README.md +4 -3
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/orchestrator.md +24 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/story-planner.md +3 -1
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/catalog/profiles.yaml +4 -1
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/docs/architecture.md +3 -2
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/hooks.json +2 -1
- claude_code_kit-0.9.0/hooks/scripts/load-autonomy.sh +21 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/pyproject.toml +1 -1
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/documentation.md +4 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/evals.md +21 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/mandatory-workflow.md +25 -5
- claude_code_kit-0.9.0/skills/over-engineering-review/SKILL.md +99 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/planning-and-task-breakdown/SKILL.md +6 -0
- claude_code_kit-0.9.0/skills/simplification-debt/SKILL.md +71 -0
- claude_code_kit-0.9.0/skills/task-tracker-sync/SKILL.md +72 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/__init__.py +1 -1
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/hooks.py +6 -0
- claude_code_kit-0.9.0/templates/artifacts/feature-spec.md +44 -0
- claude_code_kit-0.7.1/templates/artifacts/feature-spec.md +0 -29
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/.gitignore +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/CLAUDE.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/CONTRIBUTING.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/LICENSE +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/acceptance-reviewer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/auditor.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/dependency-scanner.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/developer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/devils-advocate.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/devops-engineer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/e2e-tester.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/em-reviewer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/incident-responder.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/merge-reviewer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/observability-engineer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/owasp-reviewer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/policy-validator.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/pr-raiser.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/risk-classifier.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/sdlc-code-reviewer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/secret-scanner.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/security-reviewer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/senior-backend-dev.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/senior-frontend-dev.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/senior-tester.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/spec-doc-writer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/technical-architect.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/tester.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/ui-designer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/agents/unit-tester.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/catalog/mcp.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/catalog/org.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/catalog/stacks.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/commands/init.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/commands/sdlc.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/commands/status.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/docs/agentic-patterns.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/docs/agents.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/docs/org-capabilities.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/audit-log.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/guard-secrets.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/lint-fix.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/load-continuity.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/load-learnings.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/type-check.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/validate-frontmatter.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/validate-settings.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/warn-large-edits.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/warn-missing-tests.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/warn-sensitive-files.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/hooks/scripts/warn-shared-modules.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/agent-guardrails.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/agent-memory.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/agent-resilience.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/autonomy-levels.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/code-organization.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/continuity.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/design-patterns.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/devops-observability.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/frontend-best-practices.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/goal-setting-and-monitoring.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/human-in-the-loop.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/linting-and-formatting.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/model-tiers.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/quality-gates.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/rarv-cycle.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/reasoning-techniques.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/responsive-and-accessibility.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/risk-classification.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/testing.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/rules/tool-design.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/scripts/init.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/_references/accessibility-checklist.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/_references/orchestration-patterns.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/_references/performance-checklist.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/_references/security-checklist.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/_references/testing-patterns.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/accessibility-review/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/api-and-interface-design/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/api-integration/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/archive-sprint/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/backlog/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/backlog/item-template.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/browser-testing-with-devtools/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/ci-cd-and-automation/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/code-review-and-quality/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/code-simplification/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/component-design/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/consolidate-learnings/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/context-engineering/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/debugging-and-error-recovery/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/decision/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/decision/adr-template.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/deprecation-and-migration/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/documentation-and-adrs/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/doubt-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/execute/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/frontend-ui-engineering/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/git-workflow-and-versioning/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/idea-refine/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/idea-refine/examples.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/idea-refine/frameworks.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/idea-refine/refinement-criteria.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/idea-refine/scripts/idea-refine.sh +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/incident-postmortem/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/incremental-implementation/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/interview-me/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/load-testing/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/manual-test/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/performance-optimization/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/playwright-verification/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/refresh-docs/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/remember/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/scope/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/scope/scope-template.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/sdlc/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/security-and-hardening/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/security-verification/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/shipping-and-launch/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/smoke-test/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/source-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/spec-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/sprint/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/sprint/sprint-template.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/test-driven-development/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/threat-model/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/triage/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/ui-ux-design/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/unit-test/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/skills/using-agent-skills/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/__main__.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/catalog.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/cli.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/models.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/prompts.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/render.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/scaffold.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/upgrader.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/src/claude_kit/validator.py +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/CLAUDE.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/CLAUDE.stack.md.tmpl +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/CONTINUITY.template.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/README.claude-sdlc.md.tmpl +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/agent-memory/MEMORY.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/agent-memory/api/.gitkeep +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/agent-memory/architecture/.gitkeep +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/agent-memory/debugging/.gitkeep +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/agent-memory/gotchas/.gitkeep +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/agent-memory/patterns/.gitkeep +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/agent-memory/performance/.gitkeep +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/artifacts/adr.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/artifacts/release-plan.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/artifacts/runbook.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/artifacts/security-review.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/artifacts/test-plan.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/README.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/agents/data-workflow-agent.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/agents/founder-prototype-agent.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/agents/internal-tools-builder.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/agents/pm-copilot.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/agents/support-ticket-engineer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/devops-and-release/README.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/devops-and-release/pack.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/engineering-core/README.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/engineering-core/pack.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/non-engineer-builder/README.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/non-engineer-builder/pack.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/onboarding-and-docs/README.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/onboarding-and-docs/pack.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/product-to-code/README.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/product-to-code/pack.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/quality-and-review/README.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/quality-and-review/pack.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/security-and-compliance/README.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/packs/security-and-compliance/pack.yaml +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/ai-working-agreement.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/ambiguity-resolution.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/branch-and-pr-policy.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/compliance-policy.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/non-engineer-safe-coding.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/pii-policy.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/production-data-policy.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/prompt-to-task-conversion.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/prototype-boundaries.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/rules/secrets-policy.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/skills/customer-issue-to-fix/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/skills/feature-from-idea/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/skills/prompt-to-safe-task/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/skills/prototype-to-production/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/org/skills/repo-onboarding/SKILL.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/settings.json +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/backend/python/fastapi/rules/fastapi-patterns.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/db/mongodb/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/db/mongodb/agents/mongodb-specialist.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/db/mongodb/rules/mongodb-patterns.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/db/postgres/agents/db-performance-reviewer.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/db/postgres/agents/migration-specialist.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/db/postgres/agents/postgres-specialist.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/db/postgres/rules/database-performance.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/db/postgres/rules/postgres-patterns.md +0 -0
- {claude_code_kit-0.7.1 → claude_code_kit-0.9.0}/templates/stacks/frontend/react/rules/react-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.9.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.9.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,80 @@ 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.9.0] — 2026-06-15
|
|
8
|
+
|
|
9
|
+
Distils a field review of GitHub's [spec-kit](https://github.com/github/spec-kit) (Spec-Driven
|
|
10
|
+
Development). An adversarial map→verify pass cross-checked spec-kit's seven distinctive features
|
|
11
|
+
against claude-kit's existing spec-driven machinery; most were already covered (the `/constitution`
|
|
12
|
+
artifact by `CLAUDE.md` "Project-specific rules" + the org `ai-working-agreement`; `/clarify` by
|
|
13
|
+
`interview-me`; `/checklist` by `em-reviewer` + the spec-driven reframe + workflow §1b). Per golden
|
|
14
|
+
rule #1 (reuse, don't duplicate), those were **not** re-implemented. The genuine gaps were a
|
|
15
|
+
**built-but-unwired capability** and a **missing mechanism** — both addressed without new spec
|
|
16
|
+
machinery, no application code, and no Docker.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- **`skills/task-tracker-sync`** (`standard`+): a thin, **tracker-agnostic** skill that mirrors an
|
|
20
|
+
existing task/story breakdown into the project's configured issue tracker (GitHub / Linear / Jira
|
|
21
|
+
via whichever MCP is set up), one issue per task, dependencies carried across, idempotent
|
|
22
|
+
(match-then-update, never blind-create). This implements spec-kit's `/taskstoissues` as the real
|
|
23
|
+
mechanism behind what was previously only a permission — `story-planner` said tasks *may* be
|
|
24
|
+
created, but nothing did it. It syncs a breakdown; it does not create one.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
- **Wired the orphaned `story-planner` agent into the pipeline as a coverage gate** — the headline
|
|
28
|
+
reuse. `story-planner` already decomposes an approved spec into ordered stories and verifies that
|
|
29
|
+
*every acceptance criterion maps to ≥1 story* (gaps and scope creep flagged), but it appeared in
|
|
30
|
+
neither `rules/mandatory-workflow.md` nor `agents/orchestrator.md`. It is now **stage 1f — Story
|
|
31
|
+
Breakdown & Coverage Gate**, between EM approval (1e) and the Developer (2a): implementation cannot
|
|
32
|
+
start until acceptance-criterion coverage is complete. This is spec-kit's tasks→analyze→implement
|
|
33
|
+
discipline, fulfilled with an existing component instead of a new one. Flow diagrams, the gating
|
|
34
|
+
table, and the orchestrator pipeline/spawn-reference/state-tracking were updated to match.
|
|
35
|
+
- **`templates/artifacts/feature-spec.md`** now gives requirements stable ids (R1, R2 …) nesting
|
|
36
|
+
their Given/When/Then acceptance criteria, and adds an explicit **Assumptions** section — aligning
|
|
37
|
+
the artifact with the spec shape `mandatory-workflow.md` §1c already mandates and making the new
|
|
38
|
+
coverage gate concrete (stories and tests trace back to R-ids).
|
|
39
|
+
- `agents/story-planner.md` and `skills/planning-and-task-breakdown` now point at `task-tracker-sync`
|
|
40
|
+
for pushing a plan to a tracker.
|
|
41
|
+
|
|
42
|
+
## [0.8.0] — 2026-06-15
|
|
43
|
+
|
|
44
|
+
Adds a **minimalism / anti-over-engineering** layer distilled from a field review of the
|
|
45
|
+
[ponytail](https://github.com/DietrichGebert/ponytail) plugin. Most of ponytail's philosophy (YAGNI,
|
|
46
|
+
stdlib-first, surgical diffs) was already enforced by `templates/CLAUDE.md` "Simplicity First",
|
|
47
|
+
`skills/code-simplification`, and `rules/rarv-cycle`, so — per golden rule #1 (reuse, don't duplicate)
|
|
48
|
+
— only the genuinely-missing *mechanisms* were added. No application code, no Docker; new components
|
|
49
|
+
are wired through the catalog.
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- **`skills/over-engineering-review`** (`standard`+): a complexity-**only**, report-**only** scan that
|
|
53
|
+
returns a terse delete-list (`delete:/stdlib:/native:/yagni:/shrink:` tags, each naming the
|
|
54
|
+
replacement) over a diff or a whole repo, ending with `net: -N lines possible` or `Lean already.
|
|
55
|
+
Ship.`. Complements the multi-axis `code-review-and-quality` (it isolates the complexity axis) and
|
|
56
|
+
stops short of the behavior-preserving refactor that `code-simplification` performs. Never flags the
|
|
57
|
+
kit's required test or the safety carve-outs.
|
|
58
|
+
- **`skills/simplification-debt`** (`standard`+): harvests deliberately-deferred shortcuts
|
|
59
|
+
(`TODO(TICKET)`, `FIXME`, and inline `shortcut: ceiling — upgrade` markers) into one ledger grouped
|
|
60
|
+
by file, and flags any marker that names **no upgrade trigger** as a silent-rot risk. Report-only;
|
|
61
|
+
persists to a file only when asked.
|
|
62
|
+
- **`load-autonomy` hook** (`SessionStart`, `standard`+): surfaces the repo's active autonomy level
|
|
63
|
+
(read from the install snapshot) into context each session, so `rules/autonomy-levels.md` is visible
|
|
64
|
+
and persistent rather than purely instructional. Degrades to a no-op without `jq`. Registered in the
|
|
65
|
+
hook registry and the plugin `hooks/hooks.json`.
|
|
66
|
+
|
|
67
|
+
### Changed
|
|
68
|
+
- **`rules/evals.md`** gains section 6: run repeated trials and report the **median of N**, and
|
|
69
|
+
**separate measurement metrics** (record-and-pass: LOC, cost, latency) **from gate metrics**
|
|
70
|
+
(execute-and-fail: run the output, assert it) — with the ponytail benchmark cited as a worked example.
|
|
71
|
+
- **`rules/documentation.md`** now blesses an inline upgrade-path shortcut marker
|
|
72
|
+
(`# shortcut: ceiling — upgrade path`) as an alternative to a ticketed `TODO`, and points at the
|
|
73
|
+
`simplification-debt` skill that harvests them.
|
|
74
|
+
- **CI now publishes on merge to `main`, gated by a version check.** `publish.yml` also triggers on
|
|
75
|
+
every push to `main` (in addition to version tags, releases, and manual dispatch). A `version-check`
|
|
76
|
+
job compares `pyproject.toml`'s version against PyPI and only builds/publishes when the version is
|
|
77
|
+
new; an unchanged version is skipped cleanly (PyPI versions are immutable). The publisher also passes
|
|
78
|
+
`skip-existing: true` as a race guard. Net effect: bump the version in a PR, merge it, and the
|
|
79
|
+
release ships automatically — no manual tag required.
|
|
80
|
+
|
|
7
81
|
## [0.7.1] — 2026-06-09
|
|
8
82
|
|
|
9
83
|
A parity fix for the no-pip fallback scaffolder so the plugin's `/claude-kit:init` command works
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-kit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.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
|
|
@@ -198,9 +198,10 @@ See [`docs/architecture.md`](docs/architecture.md) for the full diagrams.
|
|
|
198
198
|
```mermaid
|
|
199
199
|
flowchart TD
|
|
200
200
|
REQ(["/sdlc request"]) --> CLS{"Classify"}
|
|
201
|
-
CLS -->|"feature"| SPEC["Spec & Dev Docs
|
|
201
|
+
CLS -->|"feature"| SPEC["Spec & Dev Docs"]
|
|
202
202
|
SPEC --> EM{{"Gate: EM approved"}}
|
|
203
|
-
EM -->|"pass"|
|
|
203
|
+
EM -->|"pass"| STORY["Story breakdown + coverage gate<br/>story-planner"]
|
|
204
|
+
STORY --> LANES["Parallel lanes:<br/>Senior Dev → Architect → Developer → Code Review"]
|
|
204
205
|
LANES --> MR{{"Gate: Merge Reviewer"}}
|
|
205
206
|
MR --> TEST["Unit · E2E · Integration + Senior verification"]
|
|
206
207
|
TEST --> TCG{{"Gate: Test coverage<br/>+ Devil's Advocate"}}
|
|
@@ -231,7 +232,7 @@ your chosen DB, and **org persona agents** added only in organization scope. See
|
|
|
231
232
|
|-------|------|
|
|
232
233
|
| `orchestrator` | Pipeline controller — decomposes, delegates, runs lanes in parallel, gates progression (never writes code) |
|
|
233
234
|
| `spec-doc-writer` | Turns requirements into a spec + developer documentation in one pass |
|
|
234
|
-
| `story-planner` | Decomposes an approved spec into ordered, parallelizable stories |
|
|
235
|
+
| `story-planner` | Decomposes an approved spec into ordered, parallelizable stories; verifies every acceptance criterion maps to a story (workflow gate 1f) |
|
|
235
236
|
| `ui-designer` | Drafts and self-reviews UI/UX design specs |
|
|
236
237
|
| `senior-backend-dev` · `senior-frontend-dev` | Senior review of a work stream's spec (the two-lane example) |
|
|
237
238
|
| `technical-architect` | Cross-system architecture, scalability, integration review |
|
|
@@ -171,9 +171,10 @@ See [`docs/architecture.md`](docs/architecture.md) for the full diagrams.
|
|
|
171
171
|
```mermaid
|
|
172
172
|
flowchart TD
|
|
173
173
|
REQ(["/sdlc request"]) --> CLS{"Classify"}
|
|
174
|
-
CLS -->|"feature"| SPEC["Spec & Dev Docs
|
|
174
|
+
CLS -->|"feature"| SPEC["Spec & Dev Docs"]
|
|
175
175
|
SPEC --> EM{{"Gate: EM approved"}}
|
|
176
|
-
EM -->|"pass"|
|
|
176
|
+
EM -->|"pass"| STORY["Story breakdown + coverage gate<br/>story-planner"]
|
|
177
|
+
STORY --> LANES["Parallel lanes:<br/>Senior Dev → Architect → Developer → Code Review"]
|
|
177
178
|
LANES --> MR{{"Gate: Merge Reviewer"}}
|
|
178
179
|
MR --> TEST["Unit · E2E · Integration + Senior verification"]
|
|
179
180
|
TEST --> TCG{{"Gate: Test coverage<br/>+ Devil's Advocate"}}
|
|
@@ -204,7 +205,7 @@ your chosen DB, and **org persona agents** added only in organization scope. See
|
|
|
204
205
|
|-------|------|
|
|
205
206
|
| `orchestrator` | Pipeline controller — decomposes, delegates, runs lanes in parallel, gates progression (never writes code) |
|
|
206
207
|
| `spec-doc-writer` | Turns requirements into a spec + developer documentation in one pass |
|
|
207
|
-
| `story-planner` | Decomposes an approved spec into ordered, parallelizable stories |
|
|
208
|
+
| `story-planner` | Decomposes an approved spec into ordered, parallelizable stories; verifies every acceptance criterion maps to a story (workflow gate 1f) |
|
|
208
209
|
| `ui-designer` | Drafts and self-reviews UI/UX design specs |
|
|
209
210
|
| `senior-backend-dev` · `senior-frontend-dev` | Senior review of a work stream's spec (the two-lane example) |
|
|
210
211
|
| `technical-architect` | Cross-system architecture, scalability, integration review |
|
|
@@ -79,6 +79,9 @@ Human PRD
|
|
|
79
79
|
[MR1] Merge Reviewer ──── verifies spec consistency across lanes
|
|
80
80
|
│
|
|
81
81
|
▼
|
|
82
|
+
[SP] Story Planner ───── decomposes spec into ordered stories + verifies every
|
|
83
|
+
│ acceptance criterion maps to a story (coverage gate)
|
|
84
|
+
▼
|
|
82
85
|
┌─────── FORK POINT 2 (implementation) ───────────────────────┐
|
|
83
86
|
│ │
|
|
84
87
|
│ LANE A — FRONTEND LANE B — BACKEND │
|
|
@@ -139,6 +142,7 @@ Done
|
|
|
139
142
|
```
|
|
140
143
|
Spec-Doc Writer → [UI Designer if UI]
|
|
141
144
|
→ Senior Dev → Technical Architect → EM
|
|
145
|
+
→ Story Planner (coverage gate)
|
|
142
146
|
→ Developer → SDLC Code Reviewer → Unit Tests
|
|
143
147
|
→ Tester (full) → Senior Tester (full)
|
|
144
148
|
→ PR Raiser
|
|
@@ -240,6 +244,24 @@ For full-stack work, **spawn these lanes in parallel**:
|
|
|
240
244
|
|
|
241
245
|
---
|
|
242
246
|
|
|
247
|
+
### Stage SP: Story Breakdown & Coverage Gate (after the spec is approved + consistent)
|
|
248
|
+
|
|
249
|
+
The bridge between an approved spec and implementation: decompose, then prove coverage before any
|
|
250
|
+
code is written.
|
|
251
|
+
|
|
252
|
+
- **Spawn**: `story-planner` with the approved spec (+ design spec and architecture notes, if any).
|
|
253
|
+
- It decomposes the spec into the smallest independently-shippable stories, orders them with an
|
|
254
|
+
acyclic `blockedBy`/`blocks` graph, identifies the immediately-startable parallel set per lane,
|
|
255
|
+
and builds a traceability map of **every acceptance criterion → ≥1 story**.
|
|
256
|
+
- **Gate**: every acceptance criterion is covered (no **gap**), no story maps to no criterion (no
|
|
257
|
+
**scope creep**), the graph is acyclic, and the parallel set is genuinely unblocked. A gap or
|
|
258
|
+
scope-creep finding routes back to the **Spec Writer** (fix the spec) — never silently into a
|
|
259
|
+
lane. The story breakdown then drives lane assignment at Fork Point 2.
|
|
260
|
+
- For **single-stack** work (Mode A), this runs after EM approval and before the Developer; there
|
|
261
|
+
is no merge-reviewer, so the Story Planner runs directly on the EM-approved spec.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
243
265
|
### FORK POINT 2: Implementation (Mode B only)
|
|
244
266
|
|
|
245
267
|
#### Lane A (Frontend Implementation):
|
|
@@ -438,6 +460,7 @@ PIPELINE: [FORK 1] Lane A: Tech Architect (iteration 1/3) | Lane B: Sr BE Dev Re
|
|
|
438
460
|
PIPELINE: [FORK 1] Lane A: EM Review (in progress) | Lane B: Tech Architect (in progress)
|
|
439
461
|
PIPELINE: [FORK 1] Lane A: DONE ✓ | Lane B: EM Review (in progress)
|
|
440
462
|
PIPELINE: [JOIN 1] Merge Reviewer (verifying spec consistency)
|
|
463
|
+
PIPELINE: [SP] Story Planner — acceptance-criterion coverage verified ✓
|
|
441
464
|
PIPELINE: [FORK 2] Lane A: FE Developer (in progress) | Lane B: BE Developer (in progress)
|
|
442
465
|
PIPELINE: [FORK 2] Lane A: FE Code Review (iteration 2/5) | Lane B: BE Unit Tests (running)
|
|
443
466
|
PIPELINE: [FORK 2] Lane A: FE Unit Tests (running) | Lane B: DONE ✓
|
|
@@ -478,6 +501,7 @@ PIPELINE: DEFECT LOOP (cycle 1/2) - Backend lane re-entered, re-test API lane on
|
|
|
478
501
|
| 3c-FE | `em-reviewer` | EM review of frontend | Yes — Lane A |
|
|
479
502
|
| 3c-BE | `em-reviewer` | EM review of backend | Yes — Lane B |
|
|
480
503
|
| JOIN | `merge-reviewer` | Verifies spec consistency | No — gate |
|
|
504
|
+
| SP | `story-planner` | Decomposes spec → ordered stories + acceptance-criterion coverage gate | No — gate |
|
|
481
505
|
| 4a-FE | `developer` (FE mode) | Frontend implementation | Yes — Lane A |
|
|
482
506
|
| 4a-BE | `developer` (BE mode) | Backend implementation | Yes — Lane B |
|
|
483
507
|
| 4b-FE | `sdlc-code-reviewer` | Frontend code review | Yes — Lane A |
|
|
@@ -35,7 +35,9 @@ A story breakdown (write it where the spec lives, or to `.claude/state/` for the
|
|
|
35
35
|
5. **Traceability** — every acceptance criterion in the spec maps to at least one story; flag any
|
|
36
36
|
criterion with no story (a gap) and any story with no criterion (scope creep).
|
|
37
37
|
|
|
38
|
-
When
|
|
38
|
+
When a task tracker is configured, mirror the stories to it (one issue per story, dependencies
|
|
39
|
+
carried across) using the `task-tracker-sync` skill (`.claude/skills/task-tracker-sync/SKILL.md`) —
|
|
40
|
+
it is tracker-agnostic (GitHub / Linear / Jira) and idempotent. Sync after the coverage gate passes.
|
|
39
41
|
|
|
40
42
|
## Constraints
|
|
41
43
|
|
|
@@ -79,8 +79,11 @@ profiles:
|
|
|
79
79
|
- incident-postmortem
|
|
80
80
|
- threat-model
|
|
81
81
|
- accessibility-review
|
|
82
|
+
- over-engineering-review
|
|
83
|
+
- simplification-debt
|
|
84
|
+
- task-tracker-sync
|
|
82
85
|
gates: [spec-complete, em-approved, code-review, build-green, test-coverage, security-clear]
|
|
83
|
-
hooks: [load-continuity, load-learnings, skill-routing, learning-detection, guard-rm-rf, guard-push-main, protect-secrets, guard-commit-secrets, warn-shared-modules, lint-fix, type-check]
|
|
86
|
+
hooks: [load-continuity, load-learnings, load-autonomy, skill-routing, learning-detection, guard-rm-rf, guard-push-main, protect-secrets, guard-commit-secrets, warn-shared-modules, lint-fix, type-check]
|
|
84
87
|
|
|
85
88
|
enterprise:
|
|
86
89
|
label: "Enterprise — adds DevOps, Observability, full audit + acceptance"
|
|
@@ -87,10 +87,11 @@ independent, and enforces a quality gate between phases. **Only the active profi
|
|
|
87
87
|
flowchart TD
|
|
88
88
|
REQ(["/sdlc request"]) --> CLS{"Classify:<br/>bug · feature · fast-track"}
|
|
89
89
|
|
|
90
|
-
CLS -->|"feature"| SPEC["1. Spec & Dev Docs
|
|
90
|
+
CLS -->|"feature"| SPEC["1. Spec & Dev Docs<br/>spec-doc-writer (+ ui-designer if UI)"]
|
|
91
91
|
SPEC --> EM{{"Gate: EM approved<br/>em-reviewer"}}
|
|
92
92
|
|
|
93
|
-
EM -->|"pass"|
|
|
93
|
+
EM -->|"pass"| STORY["2. Story breakdown + coverage gate<br/>story-planner: every acceptance criterion → a story"]
|
|
94
|
+
STORY --> FORK["Fork independent work streams"]
|
|
94
95
|
subgraph LANES["Parallel lanes (canonical example: backend + frontend)"]
|
|
95
96
|
direction LR
|
|
96
97
|
L1["Senior Dev → Tech Architect → Developer → Code Reviewer"]
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
"matcher": "",
|
|
5
5
|
"hooks": [
|
|
6
6
|
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-continuity.sh\"" },
|
|
7
|
-
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-learnings.sh\"" }
|
|
7
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-learnings.sh\"" },
|
|
8
|
+
{ "type": "command", "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/scripts/load-autonomy.sh\"" }
|
|
8
9
|
]
|
|
9
10
|
}
|
|
10
11
|
],
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# SessionStart hook: surface the repo's active autonomy level so every session operates within it
|
|
3
|
+
# instead of forgetting the dial. The level is chosen at install time and recorded in the config
|
|
4
|
+
# snapshot; this just makes it visible each session. See .claude/rules/autonomy-levels.md.
|
|
5
|
+
#
|
|
6
|
+
# Degrades to a no-op when jq isn't present or no level is recorded (never blocks startup).
|
|
7
|
+
|
|
8
|
+
ROOT="${CLAUDE_PROJECT_DIR:-$PWD}"
|
|
9
|
+
OPTS="$ROOT/.claude/config/init-options.json"
|
|
10
|
+
|
|
11
|
+
[ -f "$OPTS" ] || exit 0
|
|
12
|
+
command -v jq >/dev/null 2>&1 || exit 0
|
|
13
|
+
|
|
14
|
+
LEVEL=$(jq -r '.selection.autonomy // empty' "$OPTS" 2>/dev/null)
|
|
15
|
+
[ -n "$LEVEL" ] || exit 0
|
|
16
|
+
|
|
17
|
+
echo "## Active autonomy level: $LEVEL"
|
|
18
|
+
echo
|
|
19
|
+
echo "Operate within the \`$LEVEL\` autonomy level for this repo: it bounds how much you may do before a human acts. See .claude/rules/autonomy-levels.md for what this level permits and what still needs human sign-off."
|
|
20
|
+
|
|
21
|
+
exit 0
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "claude-code-kit"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.9.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"
|
|
@@ -260,6 +260,10 @@ class UserCreate(BaseModel):
|
|
|
260
260
|
- **Performance decisions**: `# Eager-load to prevent N+1 on the list page`
|
|
261
261
|
- **Security decisions**: `# Rate limit to 5 req/min to prevent credential stuffing`
|
|
262
262
|
- **TODO with ticket**: `# TODO(PROJ-123): Replace with proper RBAC once permissions service is built`
|
|
263
|
+
- **Deliberate shortcut with an upgrade path**: name the ceiling and the trigger inline, as an
|
|
264
|
+
alternative to an external ticket: `# shortcut: global lock — per-account locks if throughput matters`.
|
|
265
|
+
A deferral with no trigger is the kind that silently rots; the `simplification-debt` skill harvests
|
|
266
|
+
these markers into a ledger and flags any that name no upgrade path.
|
|
263
267
|
|
|
264
268
|
### Do NOT Comment
|
|
265
269
|
- What the code does when it's obvious from the code itself
|
|
@@ -47,6 +47,27 @@ the one that matches how the feature is actually used.
|
|
|
47
47
|
(`.claude/rules/quality-gates.md`).
|
|
48
48
|
- **Capability** — pushes the frontier; tracks progress on hard cases you don't pass yet.
|
|
49
49
|
|
|
50
|
+
## 6. Run repeated trials, and split measurement from gate
|
|
51
|
+
|
|
52
|
+
A single run of a non-deterministic feature tells you almost nothing. Two practices keep the numbers
|
|
53
|
+
honest:
|
|
54
|
+
|
|
55
|
+
- **Repeat and aggregate.** Run each case **N times** (commonly 5–10) and report the **median**, not
|
|
56
|
+
the mean — the median is robust to the occasional wild outlier a model produces. Report N alongside
|
|
57
|
+
the result; a "90%" from one run and from twenty runs are not the same claim.
|
|
58
|
+
- **Separate metrics that *measure* from metrics that *gate*.** A **measurement** metric records a
|
|
59
|
+
number and always passes (lines of code, token cost, latency, output length) — it's there to track a
|
|
60
|
+
trend, not to block. A **gate** metric actually exercises the output and **fails** when it breaks
|
|
61
|
+
(run the generated code, assert the result, check the file state). Don't let a measurement masquerade
|
|
62
|
+
as a gate: a solution that scores beautifully on "fewer lines" but doesn't run must still **fail**,
|
|
63
|
+
because the correctness gate executed it. Wire only gate metrics into `.claude/rules/quality-gates.md`;
|
|
64
|
+
keep measurements as dashboards.
|
|
65
|
+
|
|
66
|
+
> Worked example: the [ponytail](https://github.com/DietrichGebert/ponytail) benchmark runs 3 arms ×
|
|
67
|
+
> 3 models × 5 tasks at 10 runs each (median reported), with a line-count *measurement* that always
|
|
68
|
+
> passes beside a *correctness gate* that spawns the runtime to actually execute the generated code.
|
|
69
|
+
> A concrete instance of this section's two practices.
|
|
70
|
+
|
|
50
71
|
## Rules
|
|
51
72
|
|
|
52
73
|
1. **No prompt/rule/tool/model change ships without an eval run** that covers the affected behavior.
|
|
@@ -107,13 +107,13 @@ handled by a dedicated agent in `.claude/agents/`.
|
|
|
107
107
|
```
|
|
108
108
|
Phase 1 — Planning (Stages 0-3) ║ Phase 2 — Development (4-5) ║ Phase 3 — Testing & Delivery (6-7)
|
|
109
109
|
[0] Orchestrator receives request ║ [4] Developer writes code ║ [6a] Unit Tester ─┐
|
|
110
|
-
1a→1b→1c→1d→1e
|
|
110
|
+
1a→1b→1c→1d→1e→1f ─────────────────╬──► 2a→2b→2c→2d ────────────────╬──► [6b] E2E Tester ─┤ (parallel)
|
|
111
111
|
Understand→Clarify→Spec→Dev docs ║ Read→Implement→Quality gate ║ 3a→3b→3c→3d
|
|
112
|
-
→ EM review
|
|
112
|
+
→ EM review → Story breakdown ║ → Code review ║ → Security → DevOps/Obs → PR → Human
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
**Pipeline rules:**
|
|
116
|
-
- No code is written until Phase 1 is complete (EM approval required).
|
|
116
|
+
- No code is written until Phase 1 is complete (EM approval + story-coverage gate required).
|
|
117
117
|
- No testing starts until Phase 2 code review passes.
|
|
118
118
|
- No PR is created until all tests pass (unit + E2E).
|
|
119
119
|
- No task is marked done until the user has reviewed and accepted.
|
|
@@ -151,7 +151,25 @@ table (each requirement → implementation approach → files).
|
|
|
151
151
|
A skeptical Engineering Manager reviews the dev docs for completeness, quality (simplest
|
|
152
152
|
approach, no over/under-engineering), non-functional concerns, and architecture fit.
|
|
153
153
|
Feedback loops with the Dev Doc Writer, **max 3 iterations**, then escalate.
|
|
154
|
-
**Gate:** EM signals `APPROVED`.
|
|
154
|
+
**Gate:** EM signals `APPROVED`. The story breakdown CANNOT start without it.
|
|
155
|
+
|
|
156
|
+
## 1f — Story Breakdown & Coverage Gate `[Story Planner]`
|
|
157
|
+
With the EM-approved spec, the **Story Planner** decomposes it into the smallest set of
|
|
158
|
+
independently shippable stories, ordered by dependency, and identifies which can run in parallel
|
|
159
|
+
(per lane). It builds a **traceability map**: every acceptance criterion → at least one story.
|
|
160
|
+
|
|
161
|
+
This is the spec↔stories coverage check *before* any code is written — the gate that catches an
|
|
162
|
+
acceptance criterion no story covers (a **gap**) and a story that maps to no criterion (**scope
|
|
163
|
+
creep**), so both are fixed on paper rather than discovered mid-implementation. A gap or
|
|
164
|
+
scope-creep finding routes back to the Spec Writer (fix the spec), never silently into the code.
|
|
165
|
+
|
|
166
|
+
**Output:** a story breakdown (written where the spec lives, or to `.claude/state/`) with stable
|
|
167
|
+
story ids, the criteria each satisfies, an acyclic `blockedBy`/`blocks` dependency graph, and the
|
|
168
|
+
immediately-startable parallel set. When a task tracker is configured, the stories can be mirrored
|
|
169
|
+
to it — see `.claude/skills/task-tracker-sync/SKILL.md`.
|
|
170
|
+
**Gate:** every acceptance criterion is covered by ≥1 story (no gaps), no story lacks a criterion
|
|
171
|
+
(no scope creep), the graph is acyclic, and the parallel set is genuinely unblocked. Implementation
|
|
172
|
+
CANNOT start until coverage is complete.
|
|
155
173
|
|
|
156
174
|
---
|
|
157
175
|
|
|
@@ -270,6 +288,7 @@ B1 understand → B2 failing test → B3 root cause → B4 fix → B5 quality ga
|
|
|
270
288
|
```
|
|
271
289
|
Phase 1: 1a Understand [Orchestrator] → 1b Clarify → 1c Spec [Spec Writer]
|
|
272
290
|
→ 1d Dev docs [Dev Doc Writer] → 1e EM review [EM Reviewer, max 3]
|
|
291
|
+
→ 1f Story breakdown + coverage gate [Story Planner]
|
|
273
292
|
Phase 2: 2a Read code [Developer] → 2b Implement → 2c Code review [Code Reviewer, max 5] → 2d Impact check
|
|
274
293
|
Phase 3: 3a Unit tests ─┐ 3b E2E tests ─┘ (parallel)
|
|
275
294
|
→ 3b.5 Test-coverage gate (blind review + Devil's Advocate)
|
|
@@ -282,7 +301,8 @@ Phase 3: 3a Unit tests ─┐ 3b E2E tests ─┘ (parallel)
|
|
|
282
301
|
|------|-----------------|
|
|
283
302
|
| Requirements clarified (1b) | Spec Writer starts |
|
|
284
303
|
| Spec approved by user (1c) | Dev Doc Writer starts |
|
|
285
|
-
| EM `APPROVED` (1e) |
|
|
304
|
+
| EM `APPROVED` (1e) | Story Planner starts |
|
|
305
|
+
| Story coverage complete — every criterion mapped, no scope creep (1f) | Developer starts coding |
|
|
286
306
|
| Code Reviewer `APPROVED` (2c) | Testing starts |
|
|
287
307
|
| Both testers pass (3a+3b) | Test-coverage gate |
|
|
288
308
|
| Test-coverage PASS/CONFIRMED (3b.5) | Security review |
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: over-engineering-review
|
|
3
|
+
description: Scans code for over-engineering ONLY and returns a terse delete-list — what to cut and what replaces it — without applying any change. Use when the user asks "what can we delete", "is this over-engineered", "find the bloat", "lean review", "trim this", or wants a complexity-only pass over a diff or a whole repo. Complements (does not replace) the multi-axis code-review-and-quality skill, and stops short of the refactoring that code-simplification performs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Over-Engineering Review
|
|
7
|
+
|
|
8
|
+
> A single-lens scan inspired by the [ponytail](https://github.com/DietrichGebert/ponytail) plugin's
|
|
9
|
+
> review/audit commands. Adapted as a stack-agnostic, report-only skill. It is deliberately **narrow**:
|
|
10
|
+
> it hunts complexity and nothing else.
|
|
11
|
+
|
|
12
|
+
## What this is (and is not)
|
|
13
|
+
|
|
14
|
+
- **This skill:** one lens — over-engineering. Output is a **delete-list**: one line per finding,
|
|
15
|
+
naming what to cut and the leaner replacement. It **reports; it does not edit**.
|
|
16
|
+
- **Not `code-review-and-quality`:** that is the full multi-axis gate (correctness, security,
|
|
17
|
+
performance, architecture, readability) you run before merge. Use it for the real review. Use *this*
|
|
18
|
+
when you want the complexity axis alone, in a scannable form, with no other noise.
|
|
19
|
+
- **Not `code-simplification`:** that skill *applies* the refactor and preserves behavior step by step.
|
|
20
|
+
This skill produces the list; hand the list to `code-simplification` (or a developer) to execute.
|
|
21
|
+
|
|
22
|
+
## When to use
|
|
23
|
+
|
|
24
|
+
- "What can we delete from this?" / "Is this over-engineered?" / "Find the bloat."
|
|
25
|
+
- A pre-merge lean pass on a diff, before the full review.
|
|
26
|
+
- A periodic whole-repo audit for accreted complexity.
|
|
27
|
+
|
|
28
|
+
## Scope
|
|
29
|
+
|
|
30
|
+
- **Diff mode (default):** scan the current change (`git diff`, staged, or a PR). Prefix findings with
|
|
31
|
+
the line; for multi-file diffs prefix with `file:line`.
|
|
32
|
+
- **Repo mode:** scan the whole tree. Rank findings biggest-cut-first.
|
|
33
|
+
|
|
34
|
+
State which mode you ran in one line at the top.
|
|
35
|
+
|
|
36
|
+
## The five tags
|
|
37
|
+
|
|
38
|
+
Every finding carries exactly one tag and names its replacement:
|
|
39
|
+
|
|
40
|
+
- `delete:` — dead code, unused flexibility, a speculative feature. Replacement: nothing.
|
|
41
|
+
- `stdlib:` — a hand-rolled thing the language's standard library already ships. Name the function.
|
|
42
|
+
- `native:` — a dependency or code doing what the platform already does (a built-in input type, a CSS
|
|
43
|
+
feature, a DB constraint, a framework primitive). Name the feature.
|
|
44
|
+
- `yagni:` — an abstraction with one implementation, a config nobody sets, a layer with one caller,
|
|
45
|
+
a factory with one product, a wrapper that only delegates.
|
|
46
|
+
- `shrink:` — same logic, fewer lines. Show the shorter form.
|
|
47
|
+
|
|
48
|
+
## What to hunt (repo mode checklist)
|
|
49
|
+
|
|
50
|
+
Dependencies the stdlib or platform already ships · single-implementation interfaces · factories with
|
|
51
|
+
one product · wrappers that only delegate · modules exporting one thing · dead flags and config ·
|
|
52
|
+
hand-rolled stdlib · speculative "for later" scaffolding.
|
|
53
|
+
|
|
54
|
+
## Output format
|
|
55
|
+
|
|
56
|
+
One line per finding. Diff mode:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
L<line>: <tag> <what>. <replacement>.
|
|
60
|
+
file:L<line>: <tag> <what>. <replacement>. # multi-file
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Repo mode, ranked biggest-cut-first:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
<tag> <what to cut>. <replacement>. [path]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
End with the only metric that matters:
|
|
70
|
+
|
|
71
|
+
- diff mode: `net: -<N> lines possible.`
|
|
72
|
+
- repo mode: `net: -<N> lines, -<M> deps possible.`
|
|
73
|
+
|
|
74
|
+
If there is nothing worth cutting, say `Lean already. Ship.` and stop. Do not invent findings to look
|
|
75
|
+
thorough — a clean report is a valid report.
|
|
76
|
+
|
|
77
|
+
### Examples (stack-neutral)
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
L12-38: stdlib: 27-line e-mail validator. An "@"/structure check is one line; real validation is the confirmation step.
|
|
81
|
+
L4: native: a date-picker dependency for one field. The platform's built-in date input, 0 deps.
|
|
82
|
+
repo/store.*:L88: yagni: AbstractRepository with one implementation. Inline it until a second exists. [src/store]
|
|
83
|
+
L52-71: delete: retry wrapper around an idempotent local call. Nothing replaces it.
|
|
84
|
+
L30-44: shrink: manual loop building a map. The stdlib zip/dict constructor, 1 line.
|
|
85
|
+
net: -120 lines, -1 dep possible.
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Boundaries (do not over-cut)
|
|
89
|
+
|
|
90
|
+
- **Complexity only.** Correctness bugs, security holes, and performance go to a normal review pass
|
|
91
|
+
(`code-review-and-quality`) — not this one. If you spot one, note it in a single line under a
|
|
92
|
+
`# out of scope:` heading; don't fold it into the delete-list.
|
|
93
|
+
- **Never flag the required check.** This kit mandates a runnable test/verification for non-trivial
|
|
94
|
+
logic (`.claude/rules/testing.md`, `quality-gates.md`). The smallest test that proves the logic is
|
|
95
|
+
**not** bloat — never list it for deletion.
|
|
96
|
+
- **Never flag the carve-outs.** Input validation at trust boundaries, error handling that prevents
|
|
97
|
+
data loss, security controls, and accessibility are not over-engineering. Leave them.
|
|
98
|
+
- **Report only.** This skill lists findings and applies nothing. Approving and executing the cuts is a
|
|
99
|
+
separate, deliberate step (`code-simplification` for behavior-preserving edits).
|
|
@@ -193,6 +193,12 @@ When multiple agents or sessions are available:
|
|
|
193
193
|
- **Must be sequential:** Database migrations, shared state changes, dependency chains
|
|
194
194
|
- **Needs coordination:** Features that share an API contract (define the contract first, then parallelize)
|
|
195
195
|
|
|
196
|
+
## Pushing the plan to a tracker
|
|
197
|
+
|
|
198
|
+
Once the breakdown is approved and you want it tracked, the `task-tracker-sync` skill mirrors it into
|
|
199
|
+
the project's configured issue tracker (GitHub / Linear / Jira) — one issue per task, dependencies
|
|
200
|
+
preserved, idempotent. It syncs an existing breakdown; it does not create one.
|
|
201
|
+
|
|
196
202
|
## Common Rationalizations
|
|
197
203
|
|
|
198
204
|
| Rationalization | Reality |
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: simplification-debt
|
|
3
|
+
description: Harvests deliberately-deferred shortcuts from the codebase into one debt ledger, so "later" does not quietly become "never". Greps for TODO/FIXME/HACK markers and inline upgrade-path notes, groups them by file, and flags any shortcut that names no upgrade trigger as a silent-rot risk. Use when the user says "what did we defer", "list the shortcuts", "tech-debt ledger", "what's marked to do later", or "simplification debt". Reports only — changes nothing unless asked to persist the ledger.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Simplification Debt
|
|
7
|
+
|
|
8
|
+
> Inspired by the [ponytail](https://github.com/DietrichGebert/ponytail) plugin's debt-harvest idea.
|
|
9
|
+
> A deliberate shortcut is fine — an *untracked* one rots. This skill collects them into one place so a
|
|
10
|
+
> deferral stays visible until someone revisits it.
|
|
11
|
+
|
|
12
|
+
## The convention it harvests
|
|
13
|
+
|
|
14
|
+
A deliberate shortcut should record two things at the point it's taken: its **ceiling** (the limit it
|
|
15
|
+
hits) and its **upgrade path** (the trigger to revisit). claude-kit recognizes two equivalent forms
|
|
16
|
+
(see `.claude/rules/documentation.md`):
|
|
17
|
+
|
|
18
|
+
- **Ticketed:** `TODO(PROJ-123): naive O(n²) scan; switch to an index if the list grows.`
|
|
19
|
+
- **Inline upgrade path:** `# shortcut: global lock — per-account locks if throughput matters.`
|
|
20
|
+
|
|
21
|
+
Both are legitimate. A shortcut with **no** trigger ("TODO: fix later") is the one that rots.
|
|
22
|
+
|
|
23
|
+
## Scan
|
|
24
|
+
|
|
25
|
+
Grep the repo for shortcut markers, skipping vendored and build output (`node_modules`, `.git`,
|
|
26
|
+
`dist`, `build`, `vendor`, `target`, etc.). The pattern is language-neutral — markers live in comments,
|
|
27
|
+
so match common comment prefixes (`#`, `//`, `--`, `;`, `<!--`):
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
grep -rniE '(#|//|--|;|<!--)[[:space:]]*(TODO|FIXME|HACK|XXX|shortcut|ponytail):' . \
|
|
31
|
+
--exclude-dir={.git,node_modules,dist,build,vendor,target,.venv}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Add your stack's comment prefix if it differs. Each hit is one ledger row. Matching on the comment
|
|
35
|
+
prefix keeps prose that merely *mentions* the convention out of the ledger.
|
|
36
|
+
|
|
37
|
+
## Output
|
|
38
|
+
|
|
39
|
+
One row per marker, grouped by file:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
<file>:<line> — <what was simplified>. ceiling: <the limit named>. upgrade: <the trigger to revisit>.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Pull the ceiling and trigger straight from the comment when the `<ceiling>, <upgrade>` form is used.
|
|
46
|
+
Want an owner per row? add `git blame -L<line>,<line> <file>`.
|
|
47
|
+
|
|
48
|
+
**Flag the rot risk:** any marker that names no upgrade path or trigger gets a `no-trigger` tag — those
|
|
49
|
+
are the deferrals that silently become permanent.
|
|
50
|
+
|
|
51
|
+
End with a one-line tally:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
<N> markers, <M> with no trigger.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Nothing found: `No deferred shortcuts. Clean ledger.`
|
|
58
|
+
|
|
59
|
+
## Persisting (only if asked)
|
|
60
|
+
|
|
61
|
+
By default this reports to the conversation and changes nothing. If the user wants it tracked, write the
|
|
62
|
+
ledger to a file they choose (e.g. `SIMPLIFICATION-DEBT.md` at the repo root, or an entry under the
|
|
63
|
+
artifacts dir). Don't create the file unprompted.
|
|
64
|
+
|
|
65
|
+
## Boundaries
|
|
66
|
+
|
|
67
|
+
- **Reads and reports only.** It never edits code or removes markers.
|
|
68
|
+
- **Not a linter.** It surfaces *intentional* shortcuts to keep them honest; it does not judge code it
|
|
69
|
+
wasn't told about.
|
|
70
|
+
- Pairs with `over-engineering-review` (find complexity to cut now) and `code-simplification` (perform
|
|
71
|
+
the cut). This skill is about the shortcuts you *chose* to leave behind.
|