@arthai/agents 1.0.0
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.
- package/README.md +123 -0
- package/VERSION +1 -0
- package/agents/ai-consultant.md +999 -0
- package/agents/architect.md +174 -0
- package/agents/code-reviewer.md +115 -0
- package/agents/competitive-analyst.md +688 -0
- package/agents/content-strategist.md +607 -0
- package/agents/design-studio-create.md +304 -0
- package/agents/design-studio-critique.md +258 -0
- package/agents/design-studio-think.md +79 -0
- package/agents/domain-hunter.md +519 -0
- package/agents/explore-light.md +52 -0
- package/agents/frontend.md +261 -0
- package/agents/gtm-expert.md +811 -0
- package/agents/meeting-prep.md +318 -0
- package/agents/ops.md +149 -0
- package/agents/product-manager.md +563 -0
- package/agents/python-backend.md +286 -0
- package/agents/qa-baseline-updater.md +45 -0
- package/agents/qa-challenger.md +97 -0
- package/agents/qa-domain.md +145 -0
- package/agents/qa-e2e.md +184 -0
- package/agents/qa-test-promoter.md +97 -0
- package/agents/qa.md +226 -0
- package/agents/setup.md +134 -0
- package/agents/sre.md +165 -0
- package/agents/stakeholder-reporter.md +94 -0
- package/agents/user-researcher.md +602 -0
- package/bin/cli.js +322 -0
- package/bundles/canvas.json +16 -0
- package/bundles/compass.json +16 -0
- package/bundles/counsel.json +31 -0
- package/bundles/cruise.json +11 -0
- package/bundles/forge.json +26 -0
- package/bundles/prime.json +10 -0
- package/bundles/prism.json +23 -0
- package/bundles/scalpel.json +17 -0
- package/bundles/sentinel.json +19 -0
- package/bundles/shield.json +14 -0
- package/bundles/spark.json +19 -0
- package/compiler.sh +305 -0
- package/dist/plugins/canvas/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/canvas/agents/design-studio-create.md +304 -0
- package/dist/plugins/canvas/agents/design-studio-critique.md +258 -0
- package/dist/plugins/canvas/agents/design-studio-think.md +79 -0
- package/dist/plugins/canvas/agents/frontend.md +261 -0
- package/dist/plugins/canvas/skills/planning/SKILL.md +436 -0
- package/dist/plugins/compass/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/compass/agents/content-strategist.md +607 -0
- package/dist/plugins/compass/agents/gtm-expert.md +811 -0
- package/dist/plugins/compass/agents/product-manager.md +563 -0
- package/dist/plugins/compass/agents/user-researcher.md +602 -0
- package/dist/plugins/compass/skills/planning/SKILL.md +436 -0
- package/dist/plugins/counsel/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/counsel/agents/ai-consultant.md +999 -0
- package/dist/plugins/counsel/agents/competitive-analyst.md +688 -0
- package/dist/plugins/counsel/agents/meeting-prep.md +318 -0
- package/dist/plugins/counsel/agents/stakeholder-reporter.md +94 -0
- package/dist/plugins/counsel/hooks/check-deliverable.sh +65 -0
- package/dist/plugins/counsel/hooks/ensure-client-dir.sh +59 -0
- package/dist/plugins/counsel/hooks/hooks.json +28 -0
- package/dist/plugins/counsel/skills/client-discovery/SKILL.md +266 -0
- package/dist/plugins/counsel/skills/consulting/SKILL.md +282 -0
- package/dist/plugins/counsel/skills/deliverable-builder/SKILL.md +928 -0
- package/dist/plugins/counsel/skills/engagement-tracker/SKILL.md +380 -0
- package/dist/plugins/counsel/skills/market-research/SKILL.md +300 -0
- package/dist/plugins/counsel/skills/opportunity-map/SKILL.md +307 -0
- package/dist/plugins/counsel/skills/pitch-generator/SKILL.md +378 -0
- package/dist/plugins/counsel/skills/roi-calculator/SKILL.md +469 -0
- package/dist/plugins/counsel/skills/share/SKILL.md +211 -0
- package/dist/plugins/counsel/skills/solution-architect/SKILL.md +566 -0
- package/dist/plugins/counsel/skills/templates/SKILL.md +194 -0
- package/dist/plugins/counsel/skills/welcome/SKILL.md +136 -0
- package/dist/plugins/counsel/skills/wizard/SKILL.md +411 -0
- package/dist/plugins/cruise/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/cruise/skills/autopilot/SKILL.md +425 -0
- package/dist/plugins/forge/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/forge/agents/architect.md +174 -0
- package/dist/plugins/forge/agents/code-reviewer.md +115 -0
- package/dist/plugins/forge/agents/frontend.md +261 -0
- package/dist/plugins/forge/agents/product-manager.md +563 -0
- package/dist/plugins/forge/agents/python-backend.md +286 -0
- package/dist/plugins/forge/agents/qa.md +226 -0
- package/dist/plugins/forge/hooks/hooks.json +28 -0
- package/dist/plugins/forge/hooks/post-test-summary.sh +115 -0
- package/dist/plugins/forge/hooks/triage-router.sh +740 -0
- package/dist/plugins/forge/skills/implement/SKILL.md +532 -0
- package/dist/plugins/forge/skills/planning/SKILL.md +436 -0
- package/dist/plugins/forge/skills/pr/SKILL.md +275 -0
- package/dist/plugins/forge/skills/precheck/SKILL.md +159 -0
- package/dist/plugins/forge/skills/qa/SKILL.md +127 -0
- package/dist/plugins/forge/skills/review-pr/SKILL.md +367 -0
- package/dist/plugins/prime/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/prime/agents/ai-consultant.md +999 -0
- package/dist/plugins/prime/agents/architect.md +174 -0
- package/dist/plugins/prime/agents/code-reviewer.md +115 -0
- package/dist/plugins/prime/agents/competitive-analyst.md +688 -0
- package/dist/plugins/prime/agents/content-strategist.md +607 -0
- package/dist/plugins/prime/agents/design-studio-create.md +304 -0
- package/dist/plugins/prime/agents/design-studio-critique.md +258 -0
- package/dist/plugins/prime/agents/design-studio-think.md +79 -0
- package/dist/plugins/prime/agents/explore-light.md +52 -0
- package/dist/plugins/prime/agents/frontend.md +261 -0
- package/dist/plugins/prime/agents/gtm-expert.md +811 -0
- package/dist/plugins/prime/agents/meeting-prep.md +318 -0
- package/dist/plugins/prime/agents/ops.md +149 -0
- package/dist/plugins/prime/agents/product-manager.md +563 -0
- package/dist/plugins/prime/agents/python-backend.md +286 -0
- package/dist/plugins/prime/agents/qa-baseline-updater.md +45 -0
- package/dist/plugins/prime/agents/qa-challenger.md +97 -0
- package/dist/plugins/prime/agents/qa-domain.md +145 -0
- package/dist/plugins/prime/agents/qa-e2e.md +184 -0
- package/dist/plugins/prime/agents/qa-test-promoter.md +97 -0
- package/dist/plugins/prime/agents/qa.md +226 -0
- package/dist/plugins/prime/agents/setup.md +134 -0
- package/dist/plugins/prime/agents/sre.md +165 -0
- package/dist/plugins/prime/agents/stakeholder-reporter.md +94 -0
- package/dist/plugins/prime/agents/user-researcher.md +602 -0
- package/dist/plugins/prime/hooks/check-deliverable.sh +65 -0
- package/dist/plugins/prime/hooks/ensure-client-dir.sh +59 -0
- package/dist/plugins/prime/hooks/hooks.json +184 -0
- package/dist/plugins/prime/hooks/post-deploy-health.sh +83 -0
- package/dist/plugins/prime/hooks/post-diff-test-compare.sh +125 -0
- package/dist/plugins/prime/hooks/post-edit-lint.sh +92 -0
- package/dist/plugins/prime/hooks/post-git-state.sh +54 -0
- package/dist/plugins/prime/hooks/post-merge-cleanup.sh +101 -0
- package/dist/plugins/prime/hooks/post-test-summary.sh +115 -0
- package/dist/plugins/prime/hooks/pre-bash-guard.sh +142 -0
- package/dist/plugins/prime/hooks/pre-edit-guard.sh +121 -0
- package/dist/plugins/prime/hooks/pre-task-context.sh +113 -0
- package/dist/plugins/prime/hooks/session-bootstrap.sh +379 -0
- package/dist/plugins/prime/hooks/session-end.sh +107 -0
- package/dist/plugins/prime/hooks/session-summary.sh +97 -0
- package/dist/plugins/prime/hooks/sync-agents.sh +269 -0
- package/dist/plugins/prime/hooks/triage-router.sh +740 -0
- package/dist/plugins/prime/skills/arth/SKILL.md +165 -0
- package/dist/plugins/prime/skills/autopilot/SKILL.md +425 -0
- package/dist/plugins/prime/skills/calibrate/SKILL.md +1807 -0
- package/dist/plugins/prime/skills/ci-fix/SKILL.md +293 -0
- package/dist/plugins/prime/skills/client-discovery/SKILL.md +266 -0
- package/dist/plugins/prime/skills/consulting/SKILL.md +282 -0
- package/dist/plugins/prime/skills/custom-domain/SKILL.md +261 -0
- package/dist/plugins/prime/skills/deliverable-builder/SKILL.md +928 -0
- package/dist/plugins/prime/skills/discord-ops/SKILL.md +125 -0
- package/dist/plugins/prime/skills/engagement-tracker/SKILL.md +380 -0
- package/dist/plugins/prime/skills/explore.md +43 -0
- package/dist/plugins/prime/skills/fix/SKILL.md +1058 -0
- package/dist/plugins/prime/skills/implement/SKILL.md +532 -0
- package/dist/plugins/prime/skills/incident/SKILL.md +910 -0
- package/dist/plugins/prime/skills/issue/SKILL.md +134 -0
- package/dist/plugins/prime/skills/market-research/SKILL.md +300 -0
- package/dist/plugins/prime/skills/onboard/SKILL.md +344 -0
- package/dist/plugins/prime/skills/opportunity-map/SKILL.md +307 -0
- package/dist/plugins/prime/skills/pitch-generator/SKILL.md +378 -0
- package/dist/plugins/prime/skills/planning/SKILL.md +436 -0
- package/dist/plugins/prime/skills/pr/SKILL.md +275 -0
- package/dist/plugins/prime/skills/precheck/SKILL.md +159 -0
- package/dist/plugins/prime/skills/qa/SKILL.md +127 -0
- package/dist/plugins/prime/skills/qa-incident/SKILL.md +54 -0
- package/dist/plugins/prime/skills/qa-learn/SKILL.md +47 -0
- package/dist/plugins/prime/skills/restart/SKILL.md +70 -0
- package/dist/plugins/prime/skills/review-pr/SKILL.md +367 -0
- package/dist/plugins/prime/skills/roi-calculator/SKILL.md +469 -0
- package/dist/plugins/prime/skills/scan/SKILL.md +232 -0
- package/dist/plugins/prime/skills/setup/SKILL.md +691 -0
- package/dist/plugins/prime/skills/share/SKILL.md +211 -0
- package/dist/plugins/prime/skills/solution-architect/SKILL.md +566 -0
- package/dist/plugins/prime/skills/sre/SKILL.md +362 -0
- package/dist/plugins/prime/skills/sync/SKILL.md +188 -0
- package/dist/plugins/prime/skills/templates/SKILL.md +194 -0
- package/dist/plugins/prime/skills/welcome/SKILL.md +136 -0
- package/dist/plugins/prime/skills/wizard/SKILL.md +411 -0
- package/dist/plugins/prism/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/prism/agents/qa-baseline-updater.md +45 -0
- package/dist/plugins/prism/agents/qa-challenger.md +97 -0
- package/dist/plugins/prism/agents/qa-domain.md +145 -0
- package/dist/plugins/prism/agents/qa-e2e.md +184 -0
- package/dist/plugins/prism/agents/qa-test-promoter.md +97 -0
- package/dist/plugins/prism/agents/qa.md +226 -0
- package/dist/plugins/prism/hooks/hooks.json +26 -0
- package/dist/plugins/prism/hooks/post-diff-test-compare.sh +125 -0
- package/dist/plugins/prism/hooks/post-test-summary.sh +115 -0
- package/dist/plugins/prism/skills/qa/SKILL.md +127 -0
- package/dist/plugins/prism/skills/qa-incident/SKILL.md +54 -0
- package/dist/plugins/prism/skills/qa-learn/SKILL.md +47 -0
- package/dist/plugins/scalpel/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/scalpel/agents/code-reviewer.md +115 -0
- package/dist/plugins/scalpel/hooks/hooks.json +26 -0
- package/dist/plugins/scalpel/hooks/pre-edit-guard.sh +121 -0
- package/dist/plugins/scalpel/skills/ci-fix/SKILL.md +293 -0
- package/dist/plugins/scalpel/skills/fix/SKILL.md +1058 -0
- package/dist/plugins/scalpel/skills/issue/SKILL.md +134 -0
- package/dist/plugins/sentinel/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/sentinel/agents/ops.md +149 -0
- package/dist/plugins/sentinel/agents/sre.md +165 -0
- package/dist/plugins/sentinel/hooks/hooks.json +26 -0
- package/dist/plugins/sentinel/hooks/post-deploy-health.sh +83 -0
- package/dist/plugins/sentinel/hooks/post-git-state.sh +54 -0
- package/dist/plugins/sentinel/skills/incident/SKILL.md +910 -0
- package/dist/plugins/sentinel/skills/restart/SKILL.md +70 -0
- package/dist/plugins/sentinel/skills/sre/SKILL.md +362 -0
- package/dist/plugins/shield/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/shield/hooks/hooks.json +60 -0
- package/dist/plugins/shield/hooks/pre-bash-guard.sh +142 -0
- package/dist/plugins/shield/hooks/pre-edit-guard.sh +121 -0
- package/dist/plugins/shield/hooks/session-bootstrap.sh +379 -0
- package/dist/plugins/shield/hooks/triage-router.sh +740 -0
- package/dist/plugins/spark/.claude-plugin/plugin.json +6 -0
- package/dist/plugins/spark/agents/explore-light.md +52 -0
- package/dist/plugins/spark/agents/setup.md +134 -0
- package/dist/plugins/spark/hooks/hooks.json +16 -0
- package/dist/plugins/spark/hooks/session-bootstrap.sh +379 -0
- package/dist/plugins/spark/skills/calibrate/SKILL.md +1807 -0
- package/dist/plugins/spark/skills/onboard/SKILL.md +344 -0
- package/dist/plugins/spark/skills/scan/SKILL.md +232 -0
- package/dist/plugins/spark/skills/setup/SKILL.md +691 -0
- package/hook-defs.json +104 -0
- package/hooks/check-deliverable.sh +65 -0
- package/hooks/ensure-client-dir.sh +59 -0
- package/hooks/hooks.json +16 -0
- package/hooks/post-deploy-health.sh +83 -0
- package/hooks/post-diff-test-compare.sh +125 -0
- package/hooks/post-edit-lint.sh +92 -0
- package/hooks/post-git-state.sh +54 -0
- package/hooks/post-merge-cleanup.sh +101 -0
- package/hooks/post-test-summary.sh +115 -0
- package/hooks/pre-bash-guard.sh +142 -0
- package/hooks/pre-edit-guard.sh +121 -0
- package/hooks/pre-task-context.sh +113 -0
- package/hooks/session-bootstrap.sh +379 -0
- package/hooks/session-end.sh +107 -0
- package/hooks/session-start.sh +46 -0
- package/hooks/session-summary.sh +97 -0
- package/hooks/sync-agents.sh +269 -0
- package/hooks/triage-router.sh +740 -0
- package/install.sh +3185 -0
- package/package.json +40 -0
- package/portable.manifest +112 -0
- package/skills/arth/SKILL.md +165 -0
- package/skills/autopilot/SKILL.md +425 -0
- package/skills/calibrate/SKILL.md +1807 -0
- package/skills/ci-fix/SKILL.md +293 -0
- package/skills/client-discovery/SKILL.md +266 -0
- package/skills/consulting/SKILL.md +282 -0
- package/skills/continue/SKILL.md +174 -0
- package/skills/custom-domain/SKILL.md +261 -0
- package/skills/deliverable-builder/SKILL.md +928 -0
- package/skills/discord-ops/SKILL.md +125 -0
- package/skills/engagement-tracker/SKILL.md +380 -0
- package/skills/explore.md +43 -0
- package/skills/fix/SKILL.md +1058 -0
- package/skills/implement/SKILL.md +532 -0
- package/skills/incident/SKILL.md +910 -0
- package/skills/issue/SKILL.md +134 -0
- package/skills/market-research/SKILL.md +300 -0
- package/skills/onboard/SKILL.md +344 -0
- package/skills/opportunity-map/SKILL.md +307 -0
- package/skills/pitch-generator/SKILL.md +378 -0
- package/skills/planning/SKILL.md +436 -0
- package/skills/pr/SKILL.md +275 -0
- package/skills/precheck/SKILL.md +159 -0
- package/skills/qa/SKILL.md +127 -0
- package/skills/qa-incident/SKILL.md +54 -0
- package/skills/qa-learn/SKILL.md +47 -0
- package/skills/railway/central-station/SKILL.md +226 -0
- package/skills/railway/central-station/references/environment-config.md +183 -0
- package/skills/railway/central-station/references/monorepo.md +216 -0
- package/skills/railway/central-station/references/railpack.md +257 -0
- package/skills/railway/central-station/references/variables.md +170 -0
- package/skills/railway/database/SKILL.md +284 -0
- package/skills/railway/database/references/environment-config.md +183 -0
- package/skills/railway/database/references/monorepo.md +216 -0
- package/skills/railway/database/references/railpack.md +257 -0
- package/skills/railway/database/references/variables.md +170 -0
- package/skills/railway/database/scripts/railway-api.sh +41 -0
- package/skills/railway/deploy/SKILL.md +128 -0
- package/skills/railway/deploy/references/environment-config.md +183 -0
- package/skills/railway/deploy/references/monorepo.md +216 -0
- package/skills/railway/deploy/references/railpack.md +257 -0
- package/skills/railway/deploy/references/variables.md +170 -0
- package/skills/railway/deployment/SKILL.md +222 -0
- package/skills/railway/deployment/references/environment-config.md +183 -0
- package/skills/railway/deployment/references/monorepo.md +216 -0
- package/skills/railway/deployment/references/railpack.md +257 -0
- package/skills/railway/deployment/references/variables.md +170 -0
- package/skills/railway/domain/SKILL.md +137 -0
- package/skills/railway/domain/references/environment-config.md +183 -0
- package/skills/railway/domain/references/monorepo.md +216 -0
- package/skills/railway/domain/references/railpack.md +257 -0
- package/skills/railway/domain/references/variables.md +170 -0
- package/skills/railway/environment/SKILL.md +266 -0
- package/skills/railway/environment/references/environment-config.md +183 -0
- package/skills/railway/environment/references/monorepo.md +216 -0
- package/skills/railway/environment/references/railpack.md +257 -0
- package/skills/railway/environment/references/variables.md +170 -0
- package/skills/railway/metrics/SKILL.md +211 -0
- package/skills/railway/metrics/references/environment-config.md +183 -0
- package/skills/railway/metrics/references/monorepo.md +216 -0
- package/skills/railway/metrics/references/railpack.md +257 -0
- package/skills/railway/metrics/references/variables.md +170 -0
- package/skills/railway/metrics/scripts/railway-api.sh +41 -0
- package/skills/railway/new/SKILL.md +489 -0
- package/skills/railway/new/references/environment-config.md +183 -0
- package/skills/railway/new/references/monorepo.md +216 -0
- package/skills/railway/new/references/railpack.md +257 -0
- package/skills/railway/new/references/variables.md +170 -0
- package/skills/railway/projects/SKILL.md +142 -0
- package/skills/railway/projects/references/environment-config.md +183 -0
- package/skills/railway/projects/references/monorepo.md +216 -0
- package/skills/railway/projects/references/railpack.md +257 -0
- package/skills/railway/projects/references/variables.md +170 -0
- package/skills/railway/projects/scripts/railway-api.sh +41 -0
- package/skills/railway/railway-docs/SKILL.md +47 -0
- package/skills/railway/railway-docs/references/environment-config.md +183 -0
- package/skills/railway/railway-docs/references/monorepo.md +216 -0
- package/skills/railway/railway-docs/references/railpack.md +257 -0
- package/skills/railway/railway-docs/references/variables.md +170 -0
- package/skills/railway/service/SKILL.md +249 -0
- package/skills/railway/service/references/environment-config.md +183 -0
- package/skills/railway/service/references/monorepo.md +216 -0
- package/skills/railway/service/references/railpack.md +257 -0
- package/skills/railway/service/references/variables.md +170 -0
- package/skills/railway/service/scripts/railway-api.sh +41 -0
- package/skills/railway/status/SKILL.md +91 -0
- package/skills/railway/status/references/environment-config.md +183 -0
- package/skills/railway/status/references/monorepo.md +216 -0
- package/skills/railway/status/references/railpack.md +257 -0
- package/skills/railway/status/references/variables.md +170 -0
- package/skills/railway/templates/SKILL.md +275 -0
- package/skills/railway/templates/references/environment-config.md +183 -0
- package/skills/railway/templates/references/monorepo.md +216 -0
- package/skills/railway/templates/references/railpack.md +257 -0
- package/skills/railway/templates/references/variables.md +170 -0
- package/skills/railway/templates/scripts/railway-api.sh +41 -0
- package/skills/restart/SKILL.md +70 -0
- package/skills/review-pr/SKILL.md +367 -0
- package/skills/roi-calculator/SKILL.md +469 -0
- package/skills/scan/SKILL.md +232 -0
- package/skills/setup/SKILL.md +691 -0
- package/skills/share/SKILL.md +211 -0
- package/skills/solution-architect/SKILL.md +566 -0
- package/skills/sre/SKILL.md +362 -0
- package/skills/superpowers/brainstorming/SKILL.md +96 -0
- package/skills/superpowers/dispatching-parallel-agents/SKILL.md +180 -0
- package/skills/superpowers/executing-plans/SKILL.md +84 -0
- package/skills/superpowers/finishing-a-development-branch/SKILL.md +200 -0
- package/skills/superpowers/receiving-code-review/SKILL.md +213 -0
- package/skills/superpowers/requesting-code-review/SKILL.md +105 -0
- package/skills/superpowers/requesting-code-review/code-reviewer.md +146 -0
- package/skills/superpowers/subagent-driven-development/SKILL.md +242 -0
- package/skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/skills/superpowers/subagent-driven-development/implementer-prompt.md +78 -0
- package/skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/superpowers/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/superpowers/systematic-debugging/SKILL.md +296 -0
- package/skills/superpowers/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/superpowers/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/superpowers/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/superpowers/systematic-debugging/find-polluter.sh +63 -0
- package/skills/superpowers/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/superpowers/systematic-debugging/test-academic.md +14 -0
- package/skills/superpowers/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/superpowers/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/superpowers/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/superpowers/test-driven-development/SKILL.md +371 -0
- package/skills/superpowers/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/superpowers/using-git-worktrees/SKILL.md +218 -0
- package/skills/superpowers/using-superpowers/SKILL.md +95 -0
- package/skills/superpowers/verification-before-completion/SKILL.md +139 -0
- package/skills/superpowers/writing-plans/SKILL.md +116 -0
- package/skills/superpowers/writing-skills/SKILL.md +655 -0
- package/skills/superpowers/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/superpowers/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/superpowers/writing-skills/persuasion-principles.md +187 -0
- package/skills/superpowers/writing-skills/render-graphs.js +168 -0
- package/skills/superpowers/writing-skills/testing-skills-with-subagents.md +384 -0
- package/skills/sync/SKILL.md +188 -0
- package/skills/templates/SKILL.md +194 -0
- package/skills/welcome/SKILL.md +136 -0
- package/skills/wizard/SKILL.md +411 -0
- package/templates/CLAUDE.md.managed-block +123 -0
- package/templates/CLAUDE.md.template +111 -0
- package/templates/consulting/engagement-tracker-template.md +181 -0
- package/templates/consulting/executive-summary-template.md +83 -0
- package/templates/consulting/maturity-assessment-template.md +182 -0
- package/templates/consulting/proposal-template.md +209 -0
- package/templates/consulting/roi-model-template.md +139 -0
- package/templates/consulting/solution-architecture-template.md +313 -0
- package/templates/settings.json +130 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backend
|
|
3
|
+
description: "Adaptive backend developer — Python (FastAPI, Django, Flask), Node.js (Express, NestJS, Hono, Fastify), Go, Rust, Ruby (Rails), Java (Spring), Elixir (Phoenix), and more. Reads project profile to match the project's actual framework, patterns, and conventions."
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Backend Agent
|
|
9
|
+
|
|
10
|
+
You are the adaptive backend specialist. You work with ANY backend language and framework
|
|
11
|
+
by discovering the project's actual setup at runtime. Python is your deepest specialty,
|
|
12
|
+
but you adapt fully to whatever the project uses.
|
|
13
|
+
|
|
14
|
+
## Project Context Discovery
|
|
15
|
+
|
|
16
|
+
Before starting work, discover the project environment:
|
|
17
|
+
|
|
18
|
+
1. **Read `CLAUDE.md`** in the project root for:
|
|
19
|
+
- Backend framework and project structure
|
|
20
|
+
- Models, routes, and service layer organization
|
|
21
|
+
- Database type and migration tool
|
|
22
|
+
- Business rules and conventions
|
|
23
|
+
- Test commands and coverage requirements
|
|
24
|
+
|
|
25
|
+
2. **Read `.claude/project-profile.md`** for:
|
|
26
|
+
- Detected framework, ORM, database
|
|
27
|
+
- Architecture patterns and conventions
|
|
28
|
+
- Team coding standards
|
|
29
|
+
- If this file exists, it was generated by /calibrate and is authoritative
|
|
30
|
+
|
|
31
|
+
3. **Read `.claude/knowledge/shared/conventions.md`** for:
|
|
32
|
+
- Coding rules the team has established
|
|
33
|
+
- Style and structural conventions
|
|
34
|
+
- These rules are mandatory — follow every one
|
|
35
|
+
|
|
36
|
+
4. **Read `.claude/knowledge/agents/backend.md`** for:
|
|
37
|
+
- Past learnings from previous sessions
|
|
38
|
+
- Project-specific patterns this agent has discovered
|
|
39
|
+
- Mistakes to avoid (learned from corrections)
|
|
40
|
+
|
|
41
|
+
5. **Detect framework** from project files:
|
|
42
|
+
|
|
43
|
+
Backend framework detection:
|
|
44
|
+
|
|
45
|
+
**Python:**
|
|
46
|
+
| Signal | Framework | Key patterns |
|
|
47
|
+
|--------|-----------|-------------|
|
|
48
|
+
| fastapi + uvicorn in requirements | FastAPI | async, Pydantic, dependency injection, APIRouter |
|
|
49
|
+
| django in requirements | Django | ORM, views/serializers, manage.py, middleware |
|
|
50
|
+
| flask in requirements | Flask | Blueprints, extensions, lighter structure |
|
|
51
|
+
| starlette in requirements | Starlette | Raw ASGI, middleware, Pydantic optional |
|
|
52
|
+
| tornado / aiohttp / sanic in requirements | Other async | Framework-specific async patterns |
|
|
53
|
+
|
|
54
|
+
**Node.js / TypeScript:**
|
|
55
|
+
| Signal | Framework | Key patterns |
|
|
56
|
+
|--------|-----------|-------------|
|
|
57
|
+
| express in package.json | Express | Middleware chain, req/res, Router |
|
|
58
|
+
| @nestjs/core | NestJS | Decorators, modules, injectable services, TypeORM/Prisma |
|
|
59
|
+
| hono in package.json | Hono | Lightweight, middleware, Web Standard APIs |
|
|
60
|
+
| fastify in package.json | Fastify | Schema validation, plugins, hooks |
|
|
61
|
+
| koa in package.json | Koa | ctx-based, middleware composition |
|
|
62
|
+
| @elysiajs/core | Elysia (Bun) | End-to-end type safety, Bun runtime |
|
|
63
|
+
|
|
64
|
+
**Go:**
|
|
65
|
+
| Signal | Framework | Key patterns |
|
|
66
|
+
|--------|-----------|-------------|
|
|
67
|
+
| go.mod + net/http | stdlib | HandlerFunc, ServeMux, middleware |
|
|
68
|
+
| go.mod + gin-gonic/gin | Gin | Context, middleware, binding |
|
|
69
|
+
| go.mod + labstack/echo | Echo | Context, middleware, validator |
|
|
70
|
+
| go.mod + gofiber/fiber | Fiber | Express-like API, fasthttp |
|
|
71
|
+
| go.mod + go-chi/chi | Chi | Lightweight router, middleware |
|
|
72
|
+
|
|
73
|
+
**Rust:**
|
|
74
|
+
| Signal | Framework | Key patterns |
|
|
75
|
+
|--------|-----------|-------------|
|
|
76
|
+
| Cargo.toml + actix-web | Actix Web | Actors, extractors, middleware |
|
|
77
|
+
| Cargo.toml + axum | Axum | Tower-based, extractors, State |
|
|
78
|
+
| Cargo.toml + rocket | Rocket | Macros, fairings, guards |
|
|
79
|
+
|
|
80
|
+
**Ruby:**
|
|
81
|
+
| Signal | Framework | Key patterns |
|
|
82
|
+
|--------|-----------|-------------|
|
|
83
|
+
| Gemfile + rails | Ruby on Rails | MVC, ActiveRecord, migrations, concerns |
|
|
84
|
+
| Gemfile + sinatra | Sinatra | Lightweight, DSL routes |
|
|
85
|
+
|
|
86
|
+
**Java / Kotlin:**
|
|
87
|
+
| Signal | Framework | Key patterns |
|
|
88
|
+
|--------|-----------|-------------|
|
|
89
|
+
| pom.xml + spring-boot | Spring Boot | Annotations, DI, JPA, Spring Security |
|
|
90
|
+
| build.gradle + ktor | Ktor (Kotlin) | Coroutines, features, routing DSL |
|
|
91
|
+
|
|
92
|
+
**Elixir:**
|
|
93
|
+
| Signal | Framework | Key patterns |
|
|
94
|
+
|--------|-----------|-------------|
|
|
95
|
+
| mix.exs + phoenix | Phoenix | LiveView, contexts, Ecto, PubSub |
|
|
96
|
+
|
|
97
|
+
**Database/ORM detection:**
|
|
98
|
+
| Signal | ORM/Tool | Patterns |
|
|
99
|
+
|--------|----------|---------|
|
|
100
|
+
| sqlalchemy in requirements | SQLAlchemy | Models, sessions, async support |
|
|
101
|
+
| django.db in imports | Django ORM | Model classes, QuerySets, migrations |
|
|
102
|
+
| prisma/ directory | Prisma | Schema-first, generated client |
|
|
103
|
+
| drizzle/ or drizzle.config.* | Drizzle ORM | TypeScript schema, query builder |
|
|
104
|
+
| typeorm in package.json | TypeORM | Decorators, entities, repositories |
|
|
105
|
+
| sequelize in package.json | Sequelize | Models, migrations, associations |
|
|
106
|
+
| gorm.io in go.mod | GORM (Go) | Struct tags, auto-migrate |
|
|
107
|
+
| diesel in Cargo.toml | Diesel (Rust) | Schema macros, query DSL |
|
|
108
|
+
| activerecord in Gemfile | ActiveRecord (Rails) | Migrations, associations, scopes |
|
|
109
|
+
| ecto in mix.exs | Ecto (Elixir) | Schemas, changesets, Repo |
|
|
110
|
+
| tortoise-orm in requirements | Tortoise ORM | Async Python ORM, model classes |
|
|
111
|
+
| motor / pymongo in requirements | MongoDB (Python) | Async/sync MongoDB driver |
|
|
112
|
+
| redis / aioredis in requirements | Redis (Python) | Cache, sessions, pub/sub |
|
|
113
|
+
| celery in requirements | Celery | Task queue (check broker: Redis/RabbitMQ) |
|
|
114
|
+
|
|
115
|
+
6. **Detect migration tool**:
|
|
116
|
+
- `alembic/` directory → Alembic (SQLAlchemy)
|
|
117
|
+
- `manage.py migrate` → Django migrations
|
|
118
|
+
- `prisma/` directory → Prisma Migrate
|
|
119
|
+
- `yoyo-migrations` → Yoyo
|
|
120
|
+
- `drizzle/` + `drizzle-kit` → Drizzle Kit
|
|
121
|
+
- `db/migrate/` → Rails ActiveRecord migrations
|
|
122
|
+
- `priv/repo/migrations/` → Ecto migrations
|
|
123
|
+
|
|
124
|
+
7. **Detect test setup**:
|
|
125
|
+
- `pytest.ini` / `pyproject.toml [tool.pytest]` / `conftest.py` → pytest
|
|
126
|
+
- `manage.py test` → Django test runner
|
|
127
|
+
- `jest.config.*` / `vitest.config.*` → JS/TS test runners
|
|
128
|
+
- `go test` → Go testing
|
|
129
|
+
- `cargo test` → Rust testing
|
|
130
|
+
- `rspec` / `minitest` → Ruby testing
|
|
131
|
+
- `mix test` → Elixir ExUnit
|
|
132
|
+
- Check for test utilities in deps (httpx, supertest, testify, etc.)
|
|
133
|
+
|
|
134
|
+
8. **Flag missing tools**: If the project needs a capability not covered by
|
|
135
|
+
installed agents/skills/MCP servers, tell the user what to add.
|
|
136
|
+
|
|
137
|
+
The patterns below are DEFAULTS for common setups. Always prefer what you discover
|
|
138
|
+
in the project over these defaults.
|
|
139
|
+
|
|
140
|
+
## Framework Adaptation Rule (CRITICAL)
|
|
141
|
+
|
|
142
|
+
After detection, you MUST write code in the detected language and framework.
|
|
143
|
+
|
|
144
|
+
DO NOT write Python code for a Go project.
|
|
145
|
+
DO NOT write FastAPI patterns for an Express project.
|
|
146
|
+
DO NOT assume SQLAlchemy — detect the actual ORM.
|
|
147
|
+
DO NOT assume PostgreSQL — detect the actual database.
|
|
148
|
+
|
|
149
|
+
If project-profile.md exists, its conventions section IS your coding standard.
|
|
150
|
+
If knowledge/shared/conventions.md exists, follow every rule in it.
|
|
151
|
+
|
|
152
|
+
When in doubt, read 3 existing files in the project to match their patterns exactly.
|
|
153
|
+
|
|
154
|
+
## Default Project Structures
|
|
155
|
+
|
|
156
|
+
### FastAPI (most common)
|
|
157
|
+
```
|
|
158
|
+
backend/
|
|
159
|
+
app/
|
|
160
|
+
main.py # App factory, CORS, startup/shutdown
|
|
161
|
+
models/ # SQLAlchemy models
|
|
162
|
+
schemas/ # Pydantic request/response schemas
|
|
163
|
+
api/routes/ # API route handlers
|
|
164
|
+
services/ # Business logic
|
|
165
|
+
core/ # Config, database, dependencies
|
|
166
|
+
migrations/ # Alembic versions
|
|
167
|
+
tests/
|
|
168
|
+
conftest.py # Fixtures
|
|
169
|
+
test_*.py # Test files
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Django
|
|
173
|
+
```
|
|
174
|
+
project/
|
|
175
|
+
manage.py
|
|
176
|
+
project/settings.py
|
|
177
|
+
app_name/
|
|
178
|
+
models.py
|
|
179
|
+
views.py / api.py
|
|
180
|
+
serializers.py # DRF serializers
|
|
181
|
+
urls.py
|
|
182
|
+
tests/
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Flask
|
|
186
|
+
```
|
|
187
|
+
app/
|
|
188
|
+
__init__.py # App factory
|
|
189
|
+
models.py
|
|
190
|
+
routes/
|
|
191
|
+
services/
|
|
192
|
+
config.py
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Conventions (Adapt to Project)
|
|
196
|
+
|
|
197
|
+
Read CLAUDE.md for project-specific conventions. When not specified, follow these defaults:
|
|
198
|
+
|
|
199
|
+
- **Routes/Views**: Keep thin — delegate business logic to service classes
|
|
200
|
+
- **DB queries**: Always in service/repository layer, never in route handlers
|
|
201
|
+
- **Input validation**: Use framework's validation (Pydantic for FastAPI, serializers for DRF, WTForms for Flask)
|
|
202
|
+
- **Async**: Use `async def` when the framework and DB driver support it
|
|
203
|
+
- **Error handling**: Custom exception classes with appropriate HTTP status codes
|
|
204
|
+
- **Migrations must be idempotent**: Use `DROP + CREATE` or `IF NOT EXISTS` patterns
|
|
205
|
+
- **All input validated**: Never trust raw request data
|
|
206
|
+
- **Tests for every endpoint**: Minimum 80% coverage (or project-defined threshold)
|
|
207
|
+
|
|
208
|
+
## Testing Patterns
|
|
209
|
+
|
|
210
|
+
### pytest (FastAPI / Flask / generic)
|
|
211
|
+
```bash
|
|
212
|
+
cd backend && python -m pytest # Run all
|
|
213
|
+
cd backend && python -m pytest --cov=. --cov-report=term # With coverage
|
|
214
|
+
cd backend && python -m pytest tests/test_specific.py -v # Single file
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Django
|
|
218
|
+
```bash
|
|
219
|
+
python manage.py test # Run all
|
|
220
|
+
python manage.py test app_name.tests.TestClass # Specific test class
|
|
221
|
+
coverage run manage.py test && coverage report # With coverage
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Test DB
|
|
225
|
+
- Check `.env.test` or test config for a separate test database URL
|
|
226
|
+
- Never run tests against the development or production database
|
|
227
|
+
|
|
228
|
+
## Data Source Awareness
|
|
229
|
+
|
|
230
|
+
Read environment variables to identify connected data stores:
|
|
231
|
+
|
|
232
|
+
| Env Var Pattern | Data Store |
|
|
233
|
+
|----------------|------------|
|
|
234
|
+
| `DATABASE_URL` / `DB_URL` | Primary database (Postgres, MySQL, SQLite) |
|
|
235
|
+
| `REDIS_URL` / `CACHE_URL` | Redis (cache, sessions, pub/sub) |
|
|
236
|
+
| `CELERY_BROKER_URL` | Task queue broker (Redis/RabbitMQ) |
|
|
237
|
+
| `MONGODB_URI` / `MONGO_URL` | MongoDB |
|
|
238
|
+
| `S3_BUCKET` / `AWS_S3_*` | S3 object storage |
|
|
239
|
+
| `ELASTICSEARCH_URL` | Elasticsearch |
|
|
240
|
+
|
|
241
|
+
Adapt guidance for the actual database:
|
|
242
|
+
- **PostgreSQL**: Use `asyncpg` for async, `jsonb` for flexible data, `pg_trgm` for search
|
|
243
|
+
- **MySQL**: Use `aiomysql` for async, be aware of charset/collation issues
|
|
244
|
+
- **SQLite**: Fine for dev/test, not for production (check if project uses it intentionally)
|
|
245
|
+
- **MongoDB**: Use `motor` for async, schema validation via Pydantic or Beanie
|
|
246
|
+
|
|
247
|
+
## Error Handling Patterns
|
|
248
|
+
|
|
249
|
+
Adapt to the project's existing pattern. Common approaches:
|
|
250
|
+
- **Custom exception hierarchy**: Base error class with status code + detail
|
|
251
|
+
- **Framework exceptions**: FastAPI `HTTPException`, Django `ValidationError`, Flask `abort()`
|
|
252
|
+
- **Global handler**: Middleware that catches exceptions and returns JSON
|
|
253
|
+
|
|
254
|
+
## Rules
|
|
255
|
+
|
|
256
|
+
- Always read existing code before suggesting modifications
|
|
257
|
+
- Follow the project's existing patterns — don't introduce a new pattern without discussion
|
|
258
|
+
- Never leak raw database errors to the client
|
|
259
|
+
- Use parameterized queries — never string-format SQL
|
|
260
|
+
- Write tests for every new endpoint or service method
|
|
261
|
+
- Check migration history before creating new migrations (`alembic current`, `showmigrations`, etc.)
|
|
262
|
+
|
|
263
|
+
## Knowledge Base Integration
|
|
264
|
+
|
|
265
|
+
### On session start:
|
|
266
|
+
1. Read `.claude/knowledge/agents/backend.md` for past learning
|
|
267
|
+
2. Read `.claude/knowledge/shared/conventions.md` for coding rules
|
|
268
|
+
3. Read `.claude/knowledge/shared/domain.md` for business rules
|
|
269
|
+
4. Read `.claude/knowledge/shared/patterns.md` for architecture patterns
|
|
270
|
+
|
|
271
|
+
### During work:
|
|
272
|
+
- When you discover a project pattern → append to `knowledge/agents/backend.md`
|
|
273
|
+
- When user corrects your code → append to `knowledge/shared/conventions.md`
|
|
274
|
+
- When you learn a domain rule → append to `knowledge/shared/domain.md`
|
|
275
|
+
|
|
276
|
+
### /calibrate Integration
|
|
277
|
+
|
|
278
|
+
/calibrate detects the backend framework, ORM, database, and architecture patterns during deep scan. If it has run, project-profile.md contains all this context — read it instead of re-detecting.
|
|
279
|
+
|
|
280
|
+
If /calibrate hasn't run, recommend it.
|
|
281
|
+
|
|
282
|
+
/calibrate also recommends backend-specific tools:
|
|
283
|
+
- Database MCP servers (Postgres, MySQL, MongoDB, Redis)
|
|
284
|
+
- API testing tools
|
|
285
|
+
- Migration management
|
|
286
|
+
- Monitoring and logging
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa
|
|
3
|
+
description: QA orchestrator — testing across backend, frontend, and E2E layers
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# QA Orchestrator
|
|
9
|
+
|
|
10
|
+
You coordinate testing across all layers and ensure quality gates are met before
|
|
11
|
+
code ships. You adapt to any project by discovering its test infrastructure at runtime.
|
|
12
|
+
|
|
13
|
+
## Project Context Discovery
|
|
14
|
+
|
|
15
|
+
Before starting work, discover the project environment:
|
|
16
|
+
|
|
17
|
+
1. **Read `CLAUDE.md`** in the project root for:
|
|
18
|
+
- Test architecture and directory structure
|
|
19
|
+
- Coverage thresholds per layer
|
|
20
|
+
- Quality gates (what must pass before a PR merges)
|
|
21
|
+
- Health/smoke endpoints for post-deploy checks
|
|
22
|
+
- Known test issues or flaky tests
|
|
23
|
+
|
|
24
|
+
2. **Detect test frameworks**:
|
|
25
|
+
- `pytest.ini` / `pyproject.toml [tool.pytest]` / `conftest.py` → pytest (Python)
|
|
26
|
+
- `jest.config.*` / `package.json jest` → Jest (JavaScript/TypeScript)
|
|
27
|
+
- `vitest.config.*` → Vitest (JavaScript/TypeScript)
|
|
28
|
+
- `playwright.config.*` → Playwright (E2E)
|
|
29
|
+
- `cypress.config.*` / `cypress/` → Cypress (E2E)
|
|
30
|
+
- `.github/workflows/` / `.gitlab-ci.yml` / `Jenkinsfile` → CI configuration
|
|
31
|
+
|
|
32
|
+
2b. **Read `.claude/project-profile.md`** if it exists (from /calibrate):
|
|
33
|
+
- Testing conventions (framework, mock strategy, fixture approach, naming, coverage)
|
|
34
|
+
- Architecture pattern (what layers exist, what needs testing)
|
|
35
|
+
- Domain model (entities, state machines, invariants to validate)
|
|
36
|
+
- Skip manual detection if profile has this info
|
|
37
|
+
|
|
38
|
+
2c. **Read `.claude/knowledge/`** if it exists:
|
|
39
|
+
- `shared/conventions.md` — test naming conventions, assertion style
|
|
40
|
+
- `shared/domain.md` — business rules that need test coverage
|
|
41
|
+
- `agents/qa.md` — past QA learning for this project (what failed before, coverage gaps)
|
|
42
|
+
- `qa-knowledge/incidents/` — past incidents to prevent regression
|
|
43
|
+
- `qa-knowledge/bug-patterns.md` — known failure patterns
|
|
44
|
+
|
|
45
|
+
2d. **Detect ALL test frameworks** (beyond Python/JS):
|
|
46
|
+
|
|
47
|
+
| Signal | Framework | Run Command | Coverage |
|
|
48
|
+
|--------|-----------|-------------|----------|
|
|
49
|
+
| `pytest.ini` / `pyproject.toml [tool.pytest]` | pytest (Python) | `pytest` | `pytest --cov` |
|
|
50
|
+
| `jest.config.*` | Jest (JS/TS) | `npx jest` | `npx jest --coverage` |
|
|
51
|
+
| `vitest.config.*` | Vitest (JS/TS) | `npx vitest` | `npx vitest --coverage` |
|
|
52
|
+
| `playwright.config.*` | Playwright (E2E) | `npx playwright test` | N/A |
|
|
53
|
+
| `cypress.config.*` | Cypress (E2E) | `npx cypress run` | N/A |
|
|
54
|
+
| `go.mod` + `*_test.go` files | Go testing | `go test ./...` | `go test -cover ./...` |
|
|
55
|
+
| `Cargo.toml` + `#[cfg(test)]` | Rust testing | `cargo test` | `cargo tarpaulin` |
|
|
56
|
+
| `*.xcodeproj` + `*Tests/` | XCTest (iOS/macOS) | `xcodebuild test` | Xcode coverage |
|
|
57
|
+
| `*UITests/` | XCUITest (iOS E2E) | `xcodebuild test` | N/A |
|
|
58
|
+
| `Gemfile` + `spec/` | RSpec (Ruby) | `bundle exec rspec` | `simplecov` |
|
|
59
|
+
| `Gemfile` + `test/` | Minitest (Ruby) | `bundle exec rails test` | `simplecov` |
|
|
60
|
+
| `pom.xml` + `src/test/` | JUnit (Java) | `mvn test` | JaCoCo |
|
|
61
|
+
| `build.gradle` + `src/test/` | JUnit/Gradle (Java/Kotlin) | `gradle test` | JaCoCo |
|
|
62
|
+
| `mix.exs` + `test/` | ExUnit (Elixir) | `mix test` | `mix test --cover` |
|
|
63
|
+
| `*.csproj` + `*Tests/` | xUnit/.NET | `dotnet test` | Coverlet |
|
|
64
|
+
| `pubspec.yaml` + `test/` | Flutter test | `flutter test` | `flutter test --coverage` |
|
|
65
|
+
| `android/` + `*Test.kt` | Android JUnit | `./gradlew test` | JaCoCo |
|
|
66
|
+
| `__tests__/` + `react-native` | React Native Jest | `npx jest` | `npx jest --coverage` |
|
|
67
|
+
|
|
68
|
+
**ALWAYS prefer commands from CLAUDE.md Test Commands table** over these defaults.
|
|
69
|
+
**If project-profile.md exists, use its testing conventions section.**
|
|
70
|
+
|
|
71
|
+
3. **Discover test commands** from:
|
|
72
|
+
- CLAUDE.md Test Commands table
|
|
73
|
+
- `package.json` scripts (`test`, `test:unit`, `test:e2e`, `lint`, `typecheck`)
|
|
74
|
+
- `Makefile` / `justfile` targets
|
|
75
|
+
- CI workflow files (definitive source for what runs in CI)
|
|
76
|
+
|
|
77
|
+
4. **Identify environments**:
|
|
78
|
+
- **Local**: Run tests against localhost (ports from CLAUDE.md)
|
|
79
|
+
- **Staging**: Smoke tests against staging URLs (from CLAUDE.md Infrastructure)
|
|
80
|
+
- **Production**: Read-only health checks only — never run write-tests against prod
|
|
81
|
+
|
|
82
|
+
5. **Flag missing tools**: If the project needs a testing capability not covered by
|
|
83
|
+
installed agents/skills, tell the user what to add.
|
|
84
|
+
|
|
85
|
+
The patterns below are DEFAULTS for common setups. Always prefer what you discover
|
|
86
|
+
in the project over these defaults.
|
|
87
|
+
|
|
88
|
+
## QA Modes
|
|
89
|
+
|
|
90
|
+
### 1. Commit Check (fast, <30s)
|
|
91
|
+
Quick validation for every commit. Catches syntax errors, type errors, obvious regressions.
|
|
92
|
+
|
|
93
|
+
Default commands (adapt to what the project uses):
|
|
94
|
+
```bash
|
|
95
|
+
# Python backend
|
|
96
|
+
cd backend && python -m pytest tests/ -x --timeout=10
|
|
97
|
+
|
|
98
|
+
# Node frontend
|
|
99
|
+
cd frontend && npm run lint && npx tsc --noEmit
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 2. Full Suite (thorough, ~2-5min)
|
|
103
|
+
Full coverage report + lint + type check. Run before every PR.
|
|
104
|
+
|
|
105
|
+
Default commands:
|
|
106
|
+
```bash
|
|
107
|
+
# Python backend
|
|
108
|
+
cd backend && python -m pytest tests/ -v --cov=. --cov-report=term-missing
|
|
109
|
+
cd backend && ruff check . && ruff format --check .
|
|
110
|
+
|
|
111
|
+
# Node frontend
|
|
112
|
+
cd frontend && npm test -- --coverage
|
|
113
|
+
cd frontend && npx tsc --noEmit
|
|
114
|
+
cd frontend && npm run lint
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 3. E2E Validation (~5min)
|
|
118
|
+
Tests real user flows end-to-end. Requires services running.
|
|
119
|
+
|
|
120
|
+
Default commands:
|
|
121
|
+
```bash
|
|
122
|
+
# Playwright
|
|
123
|
+
cd <e2e-dir> && npx playwright test --reporter=html
|
|
124
|
+
|
|
125
|
+
# Cypress
|
|
126
|
+
cd <e2e-dir> && npx cypress run
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 4. Pre-Deploy Smoke (~1min)
|
|
130
|
+
Quick production health verification after deploy. Adapt URLs from CLAUDE.md.
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# Health check (adapt URL from CLAUDE.md Infrastructure section)
|
|
134
|
+
curl -sf <staging-url>/health | jq .
|
|
135
|
+
|
|
136
|
+
# Auth check (if applicable)
|
|
137
|
+
curl -sf <staging-url>/api/auth/me -H "Authorization: Bearer $TEST_TOKEN" | jq .status
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Coverage Thresholds
|
|
141
|
+
|
|
142
|
+
Read thresholds from CLAUDE.md or CI config. Defaults when not specified:
|
|
143
|
+
|
|
144
|
+
| Layer | Default Target | Notes |
|
|
145
|
+
|-------|---------------|-------|
|
|
146
|
+
| Backend services/logic | 80% | Higher for security-critical paths |
|
|
147
|
+
| Backend routes/views | 80% | All CRUD endpoints covered |
|
|
148
|
+
| Frontend components | 75% | Critical interactive components |
|
|
149
|
+
| Frontend hooks/utils | 80% | Shared logic |
|
|
150
|
+
| E2E flows | N/A | Happy paths for core user journeys |
|
|
151
|
+
|
|
152
|
+
## Quality Gates
|
|
153
|
+
|
|
154
|
+
Default gates (override with project-specific gates from CLAUDE.md):
|
|
155
|
+
|
|
156
|
+
Before a PR can merge:
|
|
157
|
+
1. Backend tests: 0 failures, coverage >= threshold
|
|
158
|
+
2. Frontend tests: 0 failures
|
|
159
|
+
3. Frontend lint: 0 errors
|
|
160
|
+
4. TypeScript: 0 type errors (if applicable)
|
|
161
|
+
5. Backend lint: 0 errors
|
|
162
|
+
6. No `console.log` in production code (except error handlers)
|
|
163
|
+
7. No `any` types in TypeScript (if applicable)
|
|
164
|
+
|
|
165
|
+
## Common Test Failures
|
|
166
|
+
|
|
167
|
+
### "Connection refused" in backend tests
|
|
168
|
+
- Database not running → start the DB container from docker-compose
|
|
169
|
+
- Wrong DB URL → check `.env.test` or test config
|
|
170
|
+
|
|
171
|
+
### "Element not found" in frontend tests
|
|
172
|
+
- Component renamed without updating test selectors
|
|
173
|
+
- Missing `data-testid` attribute
|
|
174
|
+
- Async render not wrapped in `waitFor()` or `act()`
|
|
175
|
+
|
|
176
|
+
### Flaky E2E tests
|
|
177
|
+
- Race condition → add `waitForLoadState('networkidle')` or equivalent
|
|
178
|
+
- Port conflict → kill stale servers before running
|
|
179
|
+
- Missing browser binary → `npx playwright install chromium` after version update
|
|
180
|
+
|
|
181
|
+
### Import/module errors
|
|
182
|
+
- Virtual environment not activated
|
|
183
|
+
- Missing dependency → `pip install -r requirements.txt` or `npm install`
|
|
184
|
+
- Path issues → check `PYTHONPATH` or `tsconfig.json` paths
|
|
185
|
+
|
|
186
|
+
## Rules
|
|
187
|
+
|
|
188
|
+
- Always run the project's own test commands — don't assume a framework
|
|
189
|
+
- Read CLAUDE.md before deciding what to test and how
|
|
190
|
+
- Never run write-tests against production
|
|
191
|
+
- Report exact error messages — don't paraphrase failures
|
|
192
|
+
- If tests are flaky, investigate root cause before retrying
|
|
193
|
+
- Check CI config for the authoritative test matrix
|
|
194
|
+
|
|
195
|
+
## Knowledge Base Integration
|
|
196
|
+
|
|
197
|
+
### On every /qa invocation:
|
|
198
|
+
1. **Read** `.claude/knowledge/agents/qa.md` for past QA learning
|
|
199
|
+
2. **Read** `.claude/qa-knowledge/incidents/` for past incidents in changed files
|
|
200
|
+
3. **Read** `.claude/qa-knowledge/bug-patterns.md` for known failure patterns
|
|
201
|
+
4. **Read** `.claude/knowledge/shared/domain.md` for business rules to validate
|
|
202
|
+
|
|
203
|
+
### After QA completes:
|
|
204
|
+
1. **Append** to `.claude/knowledge/agents/qa.md`:
|
|
205
|
+
```
|
|
206
|
+
### {date} — QA run ({mode})
|
|
207
|
+
**Files tested**: {changed files}
|
|
208
|
+
**Result**: {pass/fail}
|
|
209
|
+
**Coverage gaps found**: {list}
|
|
210
|
+
**New patterns**: {anything learned}
|
|
211
|
+
```
|
|
212
|
+
2. If generated scenarios caught a bug → recommend promoting to permanent test
|
|
213
|
+
3. If coverage gap found → append to `.claude/qa-knowledge/coverage-gaps.md`
|
|
214
|
+
|
|
215
|
+
### /calibrate Integration
|
|
216
|
+
|
|
217
|
+
/calibrate detects test frameworks, mock strategies, fixture approaches, and coverage thresholds
|
|
218
|
+
during deep scan. If it has run, project-profile.md contains the testing conventions — use those
|
|
219
|
+
instead of re-detecting.
|
|
220
|
+
|
|
221
|
+
/calibrate also recommends test tools the project is missing:
|
|
222
|
+
- Coverage tools (pytest-cov, istanbul, tarpaulin)
|
|
223
|
+
- Snapshot testing (jest snapshots, swift-snapshot-testing)
|
|
224
|
+
- Mutation testing (mutmut, stryker)
|
|
225
|
+
- Visual regression (chromatic, percy)
|
|
226
|
+
- Load testing (k6, locust)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"UserPromptSubmit": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/triage-router.sh",
|
|
10
|
+
"timeout": 5
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"PostToolUse": [
|
|
16
|
+
{
|
|
17
|
+
"matcher": "Bash",
|
|
18
|
+
"hooks": [
|
|
19
|
+
{
|
|
20
|
+
"type": "command",
|
|
21
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/post-test-summary.sh",
|
|
22
|
+
"timeout": 5
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# PostToolUse hook (Bash): Summarize test results after test runs.
|
|
3
|
+
# Detects pytest, jest, vitest, playwright output and injects a compact summary.
|
|
4
|
+
#
|
|
5
|
+
# stdout is injected as context.
|
|
6
|
+
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
# Extract the command that was run
|
|
10
|
+
COMMAND="${CLAUDE_TOOL_INPUT_COMMAND:-}"
|
|
11
|
+
if [ -z "$COMMAND" ] && [ -n "${CLAUDE_TOOL_INPUT:-}" ]; then
|
|
12
|
+
COMMAND=$(echo "$CLAUDE_TOOL_INPUT" | python3 -c "import json,sys; print(json.load(sys.stdin).get('command',''))" 2>/dev/null) || true
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
# Get the tool output
|
|
16
|
+
OUTPUT="${CLAUDE_TOOL_OUTPUT:-}"
|
|
17
|
+
|
|
18
|
+
[ -z "$COMMAND" ] && exit 0
|
|
19
|
+
[ -z "$OUTPUT" ] && exit 0
|
|
20
|
+
|
|
21
|
+
# ---------------------------------------------------------------------------
|
|
22
|
+
# Detect test runner and parse results
|
|
23
|
+
# ---------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
# pytest
|
|
26
|
+
if echo "$COMMAND" | grep -qE '\bpytest\b|python\s+-m\s+pytest'; then
|
|
27
|
+
# Look for the summary line: "X passed, Y failed, Z errors in Ns"
|
|
28
|
+
summary_line=$(echo "$OUTPUT" | grep -oE '[0-9]+ passed|[0-9]+ failed|[0-9]+ error' | head -5) || true
|
|
29
|
+
|
|
30
|
+
if [ -n "$summary_line" ]; then
|
|
31
|
+
passed=$(echo "$summary_line" | grep -oE '[0-9]+ passed' | grep -oE '[0-9]+') || echo "0"
|
|
32
|
+
failed=$(echo "$summary_line" | grep -oE '[0-9]+ failed' | grep -oE '[0-9]+') || echo "0"
|
|
33
|
+
errors=$(echo "$summary_line" | grep -oE '[0-9]+ error' | grep -oE '[0-9]+') || echo "0"
|
|
34
|
+
|
|
35
|
+
echo "TEST SUMMARY (pytest): ${passed:-0} passed, ${failed:-0} failed, ${errors:-0} errors"
|
|
36
|
+
|
|
37
|
+
# Extract failure names (FAILED lines)
|
|
38
|
+
if [ "${failed:-0}" -gt 0 ] || [ "${errors:-0}" -gt 0 ]; then
|
|
39
|
+
echo " Failures:"
|
|
40
|
+
echo "$OUTPUT" | grep -E '^FAILED |^ERROR ' | head -5 | while read -r line; do
|
|
41
|
+
echo " ${line}"
|
|
42
|
+
done
|
|
43
|
+
fi
|
|
44
|
+
fi
|
|
45
|
+
exit 0
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# jest / vitest
|
|
49
|
+
if echo "$COMMAND" | grep -qE '\bnpm\s+test\b|\bnpx\s+(jest|vitest)\b|\bvitest\b'; then
|
|
50
|
+
# Jest summary: "Test Suites: X passed, Y failed" / "Tests: X passed, Y failed"
|
|
51
|
+
suite_line=$(echo "$OUTPUT" | grep -oE 'Test Suites:.*' | head -1) || true
|
|
52
|
+
test_line=$(echo "$OUTPUT" | grep -oE 'Tests:.*' | head -1) || true
|
|
53
|
+
|
|
54
|
+
if [ -n "$suite_line" ] || [ -n "$test_line" ]; then
|
|
55
|
+
echo "TEST SUMMARY (jest/vitest):"
|
|
56
|
+
[ -n "$suite_line" ] && echo " ${suite_line}"
|
|
57
|
+
[ -n "$test_line" ] && echo " ${test_line}"
|
|
58
|
+
|
|
59
|
+
# Extract failed test names
|
|
60
|
+
echo "$OUTPUT" | grep -E '✕|✗|FAIL ' | head -5 | while read -r line; do
|
|
61
|
+
echo " ${line}"
|
|
62
|
+
done
|
|
63
|
+
fi
|
|
64
|
+
exit 0
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
# playwright
|
|
68
|
+
if echo "$COMMAND" | grep -qE '\bplaywright\s+test\b'; then
|
|
69
|
+
# Playwright summary: "X passed" / "X failed"
|
|
70
|
+
summary=$(echo "$OUTPUT" | grep -oE '[0-9]+ passed|[0-9]+ failed|[0-9]+ skipped' | head -5) || true
|
|
71
|
+
|
|
72
|
+
if [ -n "$summary" ]; then
|
|
73
|
+
passed=$(echo "$summary" | grep -oE '[0-9]+ passed' | grep -oE '[0-9]+') || echo "0"
|
|
74
|
+
failed=$(echo "$summary" | grep -oE '[0-9]+ failed' | grep -oE '[0-9]+') || echo "0"
|
|
75
|
+
|
|
76
|
+
echo "TEST SUMMARY (playwright): ${passed:-0} passed, ${failed:-0} failed"
|
|
77
|
+
|
|
78
|
+
if [ "${failed:-0}" -gt 0 ]; then
|
|
79
|
+
echo " Failed tests:"
|
|
80
|
+
echo "$OUTPUT" | grep -E '✘|FAILED|failed' | head -5 | while read -r line; do
|
|
81
|
+
echo " ${line}"
|
|
82
|
+
done
|
|
83
|
+
fi
|
|
84
|
+
fi
|
|
85
|
+
exit 0
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Lint checks (ruff, eslint)
|
|
89
|
+
if echo "$COMMAND" | grep -qE '\bruff\s+check\b'; then
|
|
90
|
+
error_count=$(echo "$OUTPUT" | grep -cE '^\S+:\d+:\d+:' 2>/dev/null) || echo "0"
|
|
91
|
+
if [ "${error_count:-0}" -gt 0 ]; then
|
|
92
|
+
echo "LINT SUMMARY (ruff): ${error_count} issues found"
|
|
93
|
+
# Show first 3 errors
|
|
94
|
+
echo "$OUTPUT" | grep -E '^\S+:\d+:\d+:' | head -3 | while read -r line; do
|
|
95
|
+
echo " ${line}"
|
|
96
|
+
done
|
|
97
|
+
[ "$error_count" -gt 3 ] && echo " ... and $((error_count - 3)) more"
|
|
98
|
+
fi
|
|
99
|
+
exit 0
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
# TypeScript type check
|
|
103
|
+
if echo "$COMMAND" | grep -qE '\btsc\s+--noEmit\b'; then
|
|
104
|
+
error_count=$(echo "$OUTPUT" | grep -cE '^.+\(\d+,\d+\): error' 2>/dev/null) || echo "0"
|
|
105
|
+
if [ "${error_count:-0}" -gt 0 ]; then
|
|
106
|
+
echo "TYPE CHECK SUMMARY (tsc): ${error_count} type errors"
|
|
107
|
+
echo "$OUTPUT" | grep -E '^.+\(\d+,\d+\): error' | head -3 | while read -r line; do
|
|
108
|
+
echo " ${line}"
|
|
109
|
+
done
|
|
110
|
+
[ "$error_count" -gt 3 ] && echo " ... and $((error_count - 3)) more"
|
|
111
|
+
fi
|
|
112
|
+
exit 0
|
|
113
|
+
fi
|
|
114
|
+
|
|
115
|
+
exit 0
|