@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,125 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# PostToolUse hook (Bash): Auto-compare test results against /fix baseline.
|
|
3
|
+
# When a /fix is in progress (baseline files exist), any test run is automatically
|
|
4
|
+
# compared against the pre-fix baseline to detect regressions.
|
|
5
|
+
#
|
|
6
|
+
# Detects: pytest, jest, vitest, go test, cargo test, npm test
|
|
7
|
+
# Compares: pass/fail counts + specific test name changes
|
|
8
|
+
#
|
|
9
|
+
# stdout is injected as context — flags PASS→FAIL regressions immediately.
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
COMMAND="${CLAUDE_TOOL_INPUT_COMMAND:-}"
|
|
14
|
+
if [ -z "$COMMAND" ] && [ -n "${CLAUDE_TOOL_INPUT:-}" ]; then
|
|
15
|
+
COMMAND=$(echo "$CLAUDE_TOOL_INPUT" | python3 -c "import json,sys; print(json.load(sys.stdin).get('command',''))" 2>/dev/null) || true
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
OUTPUT="${CLAUDE_TOOL_OUTPUT:-}"
|
|
19
|
+
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
|
|
20
|
+
|
|
21
|
+
[ -z "$COMMAND" ] && exit 0
|
|
22
|
+
[ -z "$OUTPUT" ] && exit 0
|
|
23
|
+
|
|
24
|
+
# ---------------------------------------------------------------------------
|
|
25
|
+
# Only run if a /fix baseline exists
|
|
26
|
+
# ---------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
BASELINE_BACKEND="$PROJECT_DIR/.claude/.fix-baseline-backend.txt"
|
|
29
|
+
BASELINE_FRONTEND="$PROJECT_DIR/.claude/.fix-baseline-frontend.txt"
|
|
30
|
+
|
|
31
|
+
# No baselines = no /fix in progress = nothing to compare
|
|
32
|
+
[ -f "$BASELINE_BACKEND" ] || [ -f "$BASELINE_FRONTEND" ] || exit 0
|
|
33
|
+
|
|
34
|
+
# ---------------------------------------------------------------------------
|
|
35
|
+
# Detect test runner
|
|
36
|
+
# ---------------------------------------------------------------------------
|
|
37
|
+
|
|
38
|
+
IS_TEST=false
|
|
39
|
+
BASELINE_FILE=""
|
|
40
|
+
|
|
41
|
+
# Python (pytest)
|
|
42
|
+
if echo "$COMMAND" | grep -qE '\bpytest\b|python\s+-m\s+pytest'; then
|
|
43
|
+
IS_TEST=true
|
|
44
|
+
BASELINE_FILE="$BASELINE_BACKEND"
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# Node (jest, vitest, npm test)
|
|
48
|
+
if echo "$COMMAND" | grep -qE '\bjest\b|\bvitest\b|npm\s+test|npx\s+(jest|vitest)'; then
|
|
49
|
+
IS_TEST=true
|
|
50
|
+
BASELINE_FILE="$BASELINE_FRONTEND"
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# Go
|
|
54
|
+
if echo "$COMMAND" | grep -qE '\bgo\s+test\b'; then
|
|
55
|
+
IS_TEST=true
|
|
56
|
+
BASELINE_FILE="$BASELINE_BACKEND"
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Rust
|
|
60
|
+
if echo "$COMMAND" | grep -qE '\bcargo\s+test\b'; then
|
|
61
|
+
IS_TEST=true
|
|
62
|
+
BASELINE_FILE="$BASELINE_BACKEND"
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
$IS_TEST || exit 0
|
|
66
|
+
[ -f "$BASELINE_FILE" ] || exit 0
|
|
67
|
+
|
|
68
|
+
# ---------------------------------------------------------------------------
|
|
69
|
+
# Extract pass/fail from current run
|
|
70
|
+
# ---------------------------------------------------------------------------
|
|
71
|
+
|
|
72
|
+
extract_counts() {
|
|
73
|
+
local text="$1"
|
|
74
|
+
local passed=0 failed=0
|
|
75
|
+
|
|
76
|
+
# pytest: "X passed, Y failed"
|
|
77
|
+
passed=$(echo "$text" | grep -oE '[0-9]+ passed' | grep -oE '[0-9]+' | head -1) || true
|
|
78
|
+
failed=$(echo "$text" | grep -oE '[0-9]+ failed' | grep -oE '[0-9]+' | head -1) || true
|
|
79
|
+
|
|
80
|
+
# jest/vitest: "Tests: X passed, Y failed"
|
|
81
|
+
if [ -z "$passed" ]; then
|
|
82
|
+
passed=$(echo "$text" | grep -oE 'Tests:.*[0-9]+ passed' | grep -oE '[0-9]+ passed' | grep -oE '[0-9]+') || true
|
|
83
|
+
failed=$(echo "$text" | grep -oE 'Tests:.*[0-9]+ failed' | grep -oE '[0-9]+ failed' | grep -oE '[0-9]+') || true
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
# go test: "ok" lines = passed, "FAIL" lines = failed
|
|
87
|
+
if [ -z "$passed" ]; then
|
|
88
|
+
passed=$(echo "$text" | grep -c "^ok" 2>/dev/null) || true
|
|
89
|
+
failed=$(echo "$text" | grep -c "^FAIL" 2>/dev/null) || true
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
echo "${passed:-0} ${failed:-0}"
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
# Extract from baseline
|
|
96
|
+
read BASELINE_PASSED BASELINE_FAILED <<< "$(extract_counts "$(cat "$BASELINE_FILE")")"
|
|
97
|
+
|
|
98
|
+
# Extract from current run
|
|
99
|
+
read CURRENT_PASSED CURRENT_FAILED <<< "$(extract_counts "$OUTPUT")"
|
|
100
|
+
|
|
101
|
+
# ---------------------------------------------------------------------------
|
|
102
|
+
# Compare and report
|
|
103
|
+
# ---------------------------------------------------------------------------
|
|
104
|
+
|
|
105
|
+
# Calculate changes
|
|
106
|
+
NEW_FAILURES=$((${CURRENT_FAILED:-0} - ${BASELINE_FAILED:-0}))
|
|
107
|
+
NEW_PASSES=$((${CURRENT_PASSED:-0} - ${BASELINE_PASSED:-0}))
|
|
108
|
+
|
|
109
|
+
if [ "${NEW_FAILURES:-0}" -gt 0 ]; then
|
|
110
|
+
echo "⚠️ DIFFERENTIAL TEST WARNING: ${NEW_FAILURES} new failure(s) detected vs pre-fix baseline"
|
|
111
|
+
echo " Baseline: ${BASELINE_PASSED} passed, ${BASELINE_FAILED} failed"
|
|
112
|
+
echo " Current: ${CURRENT_PASSED} passed, ${CURRENT_FAILED} failed"
|
|
113
|
+
echo " → ${NEW_FAILURES} test(s) went from PASS → FAIL — fix may have side effects"
|
|
114
|
+
echo " Check the behavior contract: are these expected changes or regressions?"
|
|
115
|
+
elif [ "${NEW_PASSES:-0}" -gt 0 ] && [ "${NEW_FAILURES:-0}" -le 0 ]; then
|
|
116
|
+
echo "✓ Differential test: ${NEW_PASSES} new pass(es), 0 new failures (fix looks clean)"
|
|
117
|
+
echo " Baseline: ${BASELINE_PASSED} passed, ${BASELINE_FAILED} failed"
|
|
118
|
+
echo " Current: ${CURRENT_PASSED} passed, ${CURRENT_FAILED} failed"
|
|
119
|
+
elif [ "${CURRENT_PASSED:-0}" -eq "${BASELINE_PASSED:-0}" ] && [ "${CURRENT_FAILED:-0}" -eq "${BASELINE_FAILED:-0}" ]; then
|
|
120
|
+
echo "ℹ️ Differential test: no change from baseline (${CURRENT_PASSED} passed, ${CURRENT_FAILED} failed)"
|
|
121
|
+
echo " If this is after applying the fix, the bug-related tests should have changed."
|
|
122
|
+
echo " Check: did the fix actually change the test outcomes?"
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
exit 0
|
|
@@ -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
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa
|
|
3
|
+
description: "Run QA checks. Usage: /qa (commit), /qa full (comprehensive), /qa staging (deployed), /qa prod (read-only)."
|
|
4
|
+
user-invocable: true
|
|
5
|
+
arguments: "<mode>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Universal QA Framework
|
|
9
|
+
|
|
10
|
+
## Mode Detection
|
|
11
|
+
|
|
12
|
+
Parse the mode from the argument:
|
|
13
|
+
- No argument / empty / "commit" → **commit** mode
|
|
14
|
+
- "full" → **full** mode
|
|
15
|
+
- "staging" → **staging** deployment verification
|
|
16
|
+
- "prod" / "production" → **prod** deployment verification
|
|
17
|
+
|
|
18
|
+
## Mode: {{ mode }}
|
|
19
|
+
|
|
20
|
+
You are the Chief QA Agent. Execute the QA framework in **{{ mode }}** mode.
|
|
21
|
+
|
|
22
|
+
### Quick Reference
|
|
23
|
+
- **commit mode**: Analyze `git diff HEAD~1`, run targeted checks on changed files only, spawn 2-4 agents, generate 5-8 test scenarios, produce targeted report (~1-3 min)
|
|
24
|
+
- **full mode**: Analyze `git diff main...HEAD`, run ALL checks across full codebase, spawn ALL worker agents, generate 10-15 test scenarios, comprehensive report (~10-20 min)
|
|
25
|
+
- **staging mode**: Resolve staging URLs from CLAUDE.md Infrastructure table, run health + smoke + E2E against deployed staging
|
|
26
|
+
- **prod mode**: Resolve production URLs from CLAUDE.md, READ-ONLY health + smoke (NO mutations)
|
|
27
|
+
|
|
28
|
+
### Execution Steps
|
|
29
|
+
|
|
30
|
+
1. **Read configuration**: Load `CLAUDE.md` for test commands, services, infrastructure. Also load `qa-manifest.yml` if it exists.
|
|
31
|
+
|
|
32
|
+
2. **Analyze changes**:
|
|
33
|
+
- commit mode: `git diff HEAD~1 --name-only`
|
|
34
|
+
- full mode: `git diff main...HEAD --name-only` + `git log --oneline -10`
|
|
35
|
+
- staging/prod: `git log --oneline -1` (just for commit hash in report)
|
|
36
|
+
|
|
37
|
+
2b. **Find related test files with explore-light** (cost: 1x Haiku):
|
|
38
|
+
|
|
39
|
+
Before planning which agents to spawn, find what tests already exist for the changed files:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
subagent_type: "explore-light"
|
|
43
|
+
prompt: "For each of these changed files, find:
|
|
44
|
+
1. Existing test files that test this code (by import, naming convention, or directory)
|
|
45
|
+
2. Whether the test file has been updated in this diff (or is stale)
|
|
46
|
+
3. Related files that SHOULD be tested but might not have tests
|
|
47
|
+
|
|
48
|
+
Changed files: {from step 2}
|
|
49
|
+
Return: mapping of source file → test file (or 'NO TEST' if missing)"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Use the results to:
|
|
53
|
+
- Skip spawning test agents for files that have no tests (flag as coverage gap instead)
|
|
54
|
+
- Focus test agents on files that DO have tests (verify they still pass)
|
|
55
|
+
- Identify new code without tests (recommend adding them)
|
|
56
|
+
|
|
57
|
+
3. **Plan test strategy** using the directory heuristic:
|
|
58
|
+
| Changed files in... | Spawn agent... |
|
|
59
|
+
|---------------------|----------------|
|
|
60
|
+
| Backend directory | backend-qa (Haiku): lint, type check, tests |
|
|
61
|
+
| Frontend directory | frontend-qa (Haiku): lint, type check, tests, build |
|
|
62
|
+
| Frontend pages/routes or E2E tests | e2e-qa (Sonnet): Playwright/Cypress |
|
|
63
|
+
| Schema/type files (both sides) | contract-qa (Haiku): schema diff |
|
|
64
|
+
| Migration files | contract-qa: migration validation |
|
|
65
|
+
| Domain-specific files | domain-qa (Sonnet): business logic checks |
|
|
66
|
+
| 5+ files changed (commit) or full mode | code-review (Sonnet): architectural review |
|
|
67
|
+
|
|
68
|
+
4. **Generate test scenarios**: Think like real users. What user-facing behavior changed? What edge cases matter? What could break elsewhere?
|
|
69
|
+
|
|
70
|
+
5. **Create team and spawn agents**: Use TeamCreate + TaskCreate + Task tool. Spawn ALL agents in ONE message for maximum parallelism.
|
|
71
|
+
|
|
72
|
+
6. **Collect results**: Monitor TaskList, collect SendMessage results from all agents.
|
|
73
|
+
|
|
74
|
+
7. **Run coverage audit**: Review if existing tests still match the codebase. Flag new code without tests, stale tests, dead tests.
|
|
75
|
+
|
|
76
|
+
8. **Produce report**: Structured QA report with change analysis, check results, failures, warnings, coverage, E2E results, domain quality, code review, scenario results, and actionable next steps.
|
|
77
|
+
|
|
78
|
+
9. **Cleanup**: Shutdown all agents, TeamDelete, stop QA-started servers.
|
|
79
|
+
|
|
80
|
+
### Three-Layer Test Strategy
|
|
81
|
+
Every QA run uses three complementary layers:
|
|
82
|
+
1. **Baseline Tests** — existing test suites (regression anchor, same every run)
|
|
83
|
+
2. **Generated Scenarios** — fresh every run, thinks like real users based on diff
|
|
84
|
+
3. **Coverage Audit** — reviews if existing tests still match the codebase
|
|
85
|
+
|
|
86
|
+
### Important Notes
|
|
87
|
+
- Read CLAUDE.md for ALL project-specific paths, commands, ports, and conventions
|
|
88
|
+
- Generated scenarios are NOT persisted as test files — they're one-off explorations
|
|
89
|
+
- If a generated scenario catches a bug, recommend adding a permanent baseline test
|
|
90
|
+
- Domain validation Tier 3 is ADVISORY ONLY — never gates deployment
|
|
91
|
+
- Use 600000ms timeout for E2E Bash calls
|
|
92
|
+
|
|
93
|
+
## Continuation (Workflow Chaining)
|
|
94
|
+
|
|
95
|
+
After QA completes:
|
|
96
|
+
|
|
97
|
+
**If autopilot is active** (check `.claude/.workflow-state.json` mode == "autopilot"):
|
|
98
|
+
- If QA **passed**: proceed to `/review-pr` then `/pr`
|
|
99
|
+
- Detect change type: if `.claude/.fix-scope-lock.json` exists → bug fix, else → feature
|
|
100
|
+
- Run `/review-pr --type {bug|feature}` for automated review
|
|
101
|
+
- If review passes → update workflow state: `phase: "pr"`, create PR
|
|
102
|
+
- If review has blocking issues → attempt fix, re-run QA + review
|
|
103
|
+
- If QA **failed**: attempt fix (max 2 rounds), then re-run QA
|
|
104
|
+
- If still failing after 2 attempts: STOP, report failures, wait for human
|
|
105
|
+
- Update workflow state: `phase: "blocked"`, increment `attempts.qa_fixes`
|
|
106
|
+
|
|
107
|
+
**If guided mode** (no autopilot or mode != "autopilot"):
|
|
108
|
+
- If QA **passed**:
|
|
109
|
+
- Detect change type:
|
|
110
|
+
- `.claude/.fix-scope-lock.json` exists → this is a **bug fix**
|
|
111
|
+
- `.claude/plans/*.md` was referenced → this is a **feature**
|
|
112
|
+
- Neither → ask user or default to feature
|
|
113
|
+
- Present:
|
|
114
|
+
```
|
|
115
|
+
QA passed. Next step: code review before creating PR.
|
|
116
|
+
|
|
117
|
+
Detected: {bug fix | feature}
|
|
118
|
+
Recommended: /review-pr {--type bug | --type feature}
|
|
119
|
+
|
|
120
|
+
This will check: {scope compliance + regression test (bug) | plan completeness + test coverage (feature)}
|
|
121
|
+
Then: /pr to create the pull request.
|
|
122
|
+
|
|
123
|
+
Run /review-pr now? Or skip to /pr?
|
|
124
|
+
```
|
|
125
|
+
- If user says "skip" → proceed to `/pr` directly
|
|
126
|
+
- If user approves → run `/review-pr`, then suggest `/pr`
|
|
127
|
+
- If QA **failed**: "QA found N failures. Here's what went wrong: [details]. Should I fix and re-run?"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-incident
|
|
3
|
+
description: "Manually create a QA incident from a known issue. Usage: /qa-incident <description>"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
arguments: "<description>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Create QA Incident
|
|
9
|
+
|
|
10
|
+
Manually log a production incident or known issue to the QA knowledge base, so the next `/qa` run generates a regression test for it.
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
1. **Parse the description** from the argument.
|
|
15
|
+
|
|
16
|
+
2. **Ask clarifying questions** (use AskUserQuestion):
|
|
17
|
+
- Severity: high / medium / low
|
|
18
|
+
- Affected files (if known)
|
|
19
|
+
- Root cause (if known)
|
|
20
|
+
|
|
21
|
+
3. **Create incident file** at `.claude/qa-knowledge/incidents/{date}-{slug}.md`:
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
---
|
|
25
|
+
date: {today YYYY-MM-DD}
|
|
26
|
+
severity: {from user}
|
|
27
|
+
status: uncovered
|
|
28
|
+
affected_files:
|
|
29
|
+
- {from user, or "unknown"}
|
|
30
|
+
---
|
|
31
|
+
# {Title from description}
|
|
32
|
+
|
|
33
|
+
## Root Cause
|
|
34
|
+
{From user, or "To be investigated"}
|
|
35
|
+
|
|
36
|
+
## How QA Missed It
|
|
37
|
+
{Infer from context, or "Unknown -- needs investigation"}
|
|
38
|
+
|
|
39
|
+
## Regression Test Recommendation
|
|
40
|
+
{Suggest based on description and affected files}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
4. **Confirm to user**: "Incident logged. Next `/qa` run will generate a regression test targeting this issue."
|
|
44
|
+
|
|
45
|
+
## If No Description Provided
|
|
46
|
+
|
|
47
|
+
Ask: "Describe the issue you want to log (e.g., 'admin page crashes when user has no sessions')"
|
|
48
|
+
|
|
49
|
+
## If Knowledge Base Doesn't Exist
|
|
50
|
+
|
|
51
|
+
Create the directory structure first:
|
|
52
|
+
```bash
|
|
53
|
+
mkdir -p .claude/qa-knowledge/incidents
|
|
54
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-learn
|
|
3
|
+
description: "Review QA knowledge base stats, prune stale entries, show learning metrics. Usage: /qa-learn [prune]"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
arguments: "<command>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# QA Learning Review
|
|
9
|
+
|
|
10
|
+
Review the self-improving QA system's accumulated knowledge.
|
|
11
|
+
|
|
12
|
+
## Default: Show Stats
|
|
13
|
+
|
|
14
|
+
Read and summarize the QA knowledge base:
|
|
15
|
+
|
|
16
|
+
1. **Incidents**: Count files in `.claude/qa-knowledge/incidents/`. Show covered vs uncovered.
|
|
17
|
+
2. **Promoted tests**: Count files in `.claude/qa-knowledge/promoted-tests/`. List test file paths.
|
|
18
|
+
3. **Bug patterns**: Count patterns in `.claude/qa-knowledge/bug-patterns.md`.
|
|
19
|
+
4. **Coverage gaps**: Count gaps in `.claude/qa-knowledge/coverage-gaps.md`.
|
|
20
|
+
5. **Challenger log**: Count entries in `.claude/qa-knowledge/challenger-log.md`. Show hit rate (attacks that found issues / total attacks).
|
|
21
|
+
|
|
22
|
+
Present as a structured table:
|
|
23
|
+
|
|
24
|
+
| Metric | Count | Details |
|
|
25
|
+
|--------|-------|---------|
|
|
26
|
+
| Incidents (uncovered) | N | {list titles} |
|
|
27
|
+
| Incidents (covered) | N | {list titles} |
|
|
28
|
+
| Promoted tests | N | {list file paths} |
|
|
29
|
+
| Bug patterns | N | |
|
|
30
|
+
| Coverage gaps | N | |
|
|
31
|
+
| Challenger attacks (total) | N | |
|
|
32
|
+
| Challenger hit rate | X% | {found issues / total} |
|
|
33
|
+
|
|
34
|
+
## `/qa-learn prune`
|
|
35
|
+
|
|
36
|
+
Remove stale entries:
|
|
37
|
+
1. Incidents with `status: covered` older than 30 days -> archive or delete
|
|
38
|
+
2. Promoted tests whose source test file no longer exists -> remove provenance
|
|
39
|
+
3. Coverage gaps that now have test coverage -> remove
|
|
40
|
+
4. Challenger log entries older than 90 days -> truncate
|
|
41
|
+
|
|
42
|
+
Report what was pruned.
|
|
43
|
+
|
|
44
|
+
## If Knowledge Base Doesn't Exist
|
|
45
|
+
|
|
46
|
+
If `.claude/qa-knowledge/` doesn't exist, report:
|
|
47
|
+
"QA knowledge base not initialized. Run `/qa commit` or `/qa full` to start accumulating knowledge."
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-reviewer
|
|
3
|
+
description: |
|
|
4
|
+
Use this agent when a major project step has been completed and needs to be reviewed against the original plan and coding standards. Examples: <example>Context: The user is creating a code-review agent that should be called after a logical chunk of code is written. user: "I've finished implementing the user authentication system as outlined in step 3 of our plan" assistant: "Great work! Now let me use the code-reviewer agent to review the implementation against our plan and coding standards" <commentary>Since a major project step has been completed, use the code-reviewer agent to validate the work against the plan and identify any issues.</commentary></example> <example>Context: User has completed a significant feature implementation. user: "The API endpoints for the task management system are now complete - that covers step 2 from our architecture document" assistant: "Excellent! Let me have the code-reviewer agent examine this implementation to ensure it aligns with our plan and follows best practices" <commentary>A numbered step from the planning document has been completed, so the code-reviewer agent should review the work.</commentary></example>
|
|
5
|
+
model: inherit
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Senior Code Reviewer with expertise in software architecture, design patterns, and best practices. Your role is to review completed project steps against original plans and ensure code quality standards are met.
|
|
9
|
+
|
|
10
|
+
## Project Context Discovery
|
|
11
|
+
|
|
12
|
+
### Project Context Sources
|
|
13
|
+
|
|
14
|
+
Read these before reviewing ANY code:
|
|
15
|
+
1. `.claude/project-profile.md` — architecture, conventions, domain model (from /calibrate)
|
|
16
|
+
2. `.claude/knowledge/shared/conventions.md` — coding rules learned from corrections
|
|
17
|
+
3. `.claude/knowledge/shared/patterns.md` — established architecture patterns
|
|
18
|
+
4. `.claude/knowledge/skills/review-pr.md` — past review patterns for this project
|
|
19
|
+
5. `.claude/qa-knowledge/bug-patterns.md` — known bug patterns to watch for
|
|
20
|
+
|
|
21
|
+
Use these to calibrate your review:
|
|
22
|
+
- Match code quality checks to the project's ACTUAL conventions (not generic best practices)
|
|
23
|
+
- Flag violations of established patterns from the knowledge base
|
|
24
|
+
- Check if changed files have had past bugs (from incidents/)
|
|
25
|
+
- Apply project-specific review criteria from the profile
|
|
26
|
+
|
|
27
|
+
Before reviewing, read `CLAUDE.md` in the project root for:
|
|
28
|
+
- Tech stack, frameworks, and conventions
|
|
29
|
+
- Security requirements and auth patterns
|
|
30
|
+
- Testing standards and coverage thresholds
|
|
31
|
+
|
|
32
|
+
## CRITICAL: Always Produce Structured Output
|
|
33
|
+
|
|
34
|
+
Your review MUST ALWAYS include a structured findings section with explicit severity labels.
|
|
35
|
+
Even if no issues are found, output the structure with "No issues found" under each category.
|
|
36
|
+
|
|
37
|
+
**Required output format:**
|
|
38
|
+
```
|
|
39
|
+
## Security Review
|
|
40
|
+
- **[CRITICAL]** / **[HIGH]** / **[MEDIUM]** / **[LOW]** — description of finding
|
|
41
|
+
- File: path/to/file.py:line
|
|
42
|
+
- Risk: what could go wrong
|
|
43
|
+
- Fix: specific remediation
|
|
44
|
+
|
|
45
|
+
## Code Quality Review
|
|
46
|
+
- **[severity]** — description
|
|
47
|
+
...
|
|
48
|
+
|
|
49
|
+
## Summary
|
|
50
|
+
- Security issues: N (X critical, Y high, Z medium)
|
|
51
|
+
- Code quality issues: N
|
|
52
|
+
- Recommendation: APPROVE / REQUEST CHANGES / BLOCK
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
When reviewing for security specifically, ALWAYS check for:
|
|
56
|
+
- Missing authentication on endpoints (especially DELETE, PUT, PATCH)
|
|
57
|
+
- SQL injection via string interpolation/f-strings in queries
|
|
58
|
+
- Missing input validation/sanitization
|
|
59
|
+
- Hardcoded secrets or credentials
|
|
60
|
+
- Missing authorization checks (ownership, role-based access)
|
|
61
|
+
|
|
62
|
+
When reviewing completed work, you will:
|
|
63
|
+
|
|
64
|
+
1. **Plan Alignment Analysis**:
|
|
65
|
+
- Compare the implementation against the original planning document or step description
|
|
66
|
+
- Identify any deviations from the planned approach, architecture, or requirements
|
|
67
|
+
- Assess whether deviations are justified improvements or problematic departures
|
|
68
|
+
- Verify that all planned functionality has been implemented
|
|
69
|
+
|
|
70
|
+
2. **Code Quality Assessment**:
|
|
71
|
+
- Review code for adherence to established patterns and conventions
|
|
72
|
+
- Check for proper error handling, type safety, and defensive programming
|
|
73
|
+
- Evaluate code organization, naming conventions, and maintainability
|
|
74
|
+
- Assess test coverage and quality of test implementations
|
|
75
|
+
- Look for potential security vulnerabilities or performance issues
|
|
76
|
+
|
|
77
|
+
3. **Architecture and Design Review**:
|
|
78
|
+
- Ensure the implementation follows SOLID principles and established architectural patterns
|
|
79
|
+
- Check for proper separation of concerns and loose coupling
|
|
80
|
+
- Verify that the code integrates well with existing systems
|
|
81
|
+
- Assess scalability and extensibility considerations
|
|
82
|
+
|
|
83
|
+
4. **Documentation and Standards**:
|
|
84
|
+
- Verify that code includes appropriate comments and documentation
|
|
85
|
+
- Check that file headers, function documentation, and inline comments are present and accurate
|
|
86
|
+
- Ensure adherence to project-specific coding standards and conventions
|
|
87
|
+
|
|
88
|
+
5. **Issue Identification and Recommendations**:
|
|
89
|
+
- Clearly categorize issues as: Critical (must fix), Important (should fix), or Suggestions (nice to have)
|
|
90
|
+
- For each issue, provide specific examples and actionable recommendations
|
|
91
|
+
- When you identify plan deviations, explain whether they're problematic or beneficial
|
|
92
|
+
- Suggest specific improvements with code examples when helpful
|
|
93
|
+
|
|
94
|
+
6. **Communication Protocol**:
|
|
95
|
+
- If you find significant deviations from the plan, ask the coding agent to review and confirm the changes
|
|
96
|
+
- If you identify issues with the original plan itself, recommend plan updates
|
|
97
|
+
- For implementation problems, provide clear guidance on fixes needed
|
|
98
|
+
- Always acknowledge what was done well before highlighting issues
|
|
99
|
+
|
|
100
|
+
Your output should be structured, actionable, and focused on helping maintain high code quality while ensuring project goals are met. Be thorough but concise, and always provide constructive feedback that helps improve both the current implementation and future development practices.
|
|
101
|
+
|
|
102
|
+
## Knowledge Base Integration
|
|
103
|
+
|
|
104
|
+
### On every review:
|
|
105
|
+
1. Read `knowledge/shared/conventions.md` — review against actual project conventions
|
|
106
|
+
2. Read `knowledge/skills/review-pr.md` — check for recurring review patterns
|
|
107
|
+
3. Read `qa-knowledge/bug-patterns.md` — flag code in areas with known bugs
|
|
108
|
+
|
|
109
|
+
### After review:
|
|
110
|
+
- Append recurring findings to `knowledge/skills/review-pr.md`
|
|
111
|
+
- If you discover a convention not in the knowledge base, append to `knowledge/shared/conventions.md`
|
|
112
|
+
|
|
113
|
+
### /calibrate Integration
|
|
114
|
+
If project-profile.md exists, use its conventions for review criteria.
|
|
115
|
+
If it doesn't, recommend running /calibrate for better code review accuracy.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PreToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "Edit",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/pre-edit-guard.sh",
|
|
10
|
+
"timeout": 5
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"matcher": "Write",
|
|
16
|
+
"hooks": [
|
|
17
|
+
{
|
|
18
|
+
"type": "command",
|
|
19
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/pre-edit-guard.sh",
|
|
20
|
+
"timeout": 5
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|