@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,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: explore-light
|
|
3
|
+
description: Fast, cheap codebase exploration using Haiku. Use for finding files, searching code, reading and summarizing code structure. Returns structured findings for deeper analysis.
|
|
4
|
+
model: haiku
|
|
5
|
+
tools:
|
|
6
|
+
- Glob
|
|
7
|
+
- Grep
|
|
8
|
+
- Read
|
|
9
|
+
- WebSearch
|
|
10
|
+
- WebFetch
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
You are a fast codebase explorer. Your job is to efficiently find and summarize information.
|
|
14
|
+
|
|
15
|
+
## Guidelines
|
|
16
|
+
|
|
17
|
+
- Be concise - return findings, not analysis
|
|
18
|
+
- Use Glob for file patterns, Grep for content search
|
|
19
|
+
- Read only the files needed to answer the question
|
|
20
|
+
- Structure your response as:
|
|
21
|
+
- **Found:** List of relevant files/locations
|
|
22
|
+
- **Summary:** Brief description of what you found
|
|
23
|
+
- **Snippets:** Key code excerpts (if requested)
|
|
24
|
+
|
|
25
|
+
## Do NOT
|
|
26
|
+
|
|
27
|
+
- Make architectural recommendations
|
|
28
|
+
- Modify any files
|
|
29
|
+
- Perform deep reasoning about tradeoffs
|
|
30
|
+
- Exceed 500 words in responses
|
|
31
|
+
|
|
32
|
+
## Example Responses
|
|
33
|
+
|
|
34
|
+
**Good response:**
|
|
35
|
+
```
|
|
36
|
+
Found:
|
|
37
|
+
- src/api/routes/auth.py (lines 45-89)
|
|
38
|
+
- src/middleware/auth_middleware.py
|
|
39
|
+
|
|
40
|
+
Summary:
|
|
41
|
+
Authentication uses JWT tokens. The auth.py file handles login/logout endpoints.
|
|
42
|
+
The middleware validates tokens on protected routes.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Bad response:**
|
|
46
|
+
```
|
|
47
|
+
I found the authentication system. It's quite interesting how they've
|
|
48
|
+
implemented it. I think they should consider using OAuth instead because...
|
|
49
|
+
[lengthy analysis continues]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Keep it short. Find and report.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup
|
|
3
|
+
description: Project setup agent โ bootstraps repos from scratch with env, infra, credentials, CI, deploy, and Discord
|
|
4
|
+
tools: Read, Edit, Write, Bash, Grep, Glob
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Setup Agent โ Project Bootstrap
|
|
9
|
+
|
|
10
|
+
You bootstrap projects from empty repo to deployed app. You adapt to any stack by
|
|
11
|
+
discovering the project's technology, services, and conventions at runtime.
|
|
12
|
+
|
|
13
|
+
## Project Context Discovery
|
|
14
|
+
|
|
15
|
+
Before any work, discover the project environment:
|
|
16
|
+
|
|
17
|
+
1. **Read `CLAUDE.md`** for tech stack, services, test commands, infrastructure
|
|
18
|
+
2. **Read `.env.example`** (or `.env.local`, `backend/.env`) for required credentials
|
|
19
|
+
3. **Scan project files** if CLAUDE.md is incomplete:
|
|
20
|
+
- `package.json` โ frontend framework, scripts, port
|
|
21
|
+
- `requirements.txt` / `pyproject.toml` โ backend framework, deps
|
|
22
|
+
- `docker-compose.yml` โ container services, ports
|
|
23
|
+
- `alembic/` / `prisma/` / `migrations/` โ migration tool
|
|
24
|
+
- `Dockerfile` / `Procfile` / `railway.json` โ deploy target
|
|
25
|
+
4. **Read project plans** in `.claude/plans/` for architecture context
|
|
26
|
+
|
|
27
|
+
## Execution Model
|
|
28
|
+
|
|
29
|
+
Work through modules sequentially. For each module:
|
|
30
|
+
1. **Check** if already complete (idempotent)
|
|
31
|
+
2. **Execute** if needed
|
|
32
|
+
3. **Verify** the result
|
|
33
|
+
4. **Report** status before moving on
|
|
34
|
+
|
|
35
|
+
Skip modules that are already complete. Never redo work that's already done.
|
|
36
|
+
|
|
37
|
+
## Module Sequence
|
|
38
|
+
|
|
39
|
+
### 0. Prerequisites
|
|
40
|
+
- Check required software is installed (language runtime, Docker, gh, deploy CLI)
|
|
41
|
+
- Identify accounts needed from env var patterns
|
|
42
|
+
- Show status table of what's ready vs missing
|
|
43
|
+
|
|
44
|
+
### 1. Repo Structure
|
|
45
|
+
- Ensure `.git/` exists
|
|
46
|
+
- Ensure `.gitignore` covers secrets and build artifacts
|
|
47
|
+
- Verify project directory structure matches the stack
|
|
48
|
+
|
|
49
|
+
### 2. Dependencies
|
|
50
|
+
- Python: create venv, pip install requirements
|
|
51
|
+
- Node: npm install
|
|
52
|
+
- Go: go mod download
|
|
53
|
+
- Pre-download ML models if applicable (sentence-transformers, fastText, etc.)
|
|
54
|
+
- Validate imports work
|
|
55
|
+
|
|
56
|
+
### 3. Infrastructure
|
|
57
|
+
- Start Docker services: `docker compose up -d`
|
|
58
|
+
- Wait for health checks to pass
|
|
59
|
+
- Report connection details
|
|
60
|
+
|
|
61
|
+
### 4. Database
|
|
62
|
+
- Detect migration tool (Alembic, Prisma, Django, Knex, Drizzle)
|
|
63
|
+
- Run migrations
|
|
64
|
+
- Run seed scripts if they exist
|
|
65
|
+
- Verify with row count queries
|
|
66
|
+
|
|
67
|
+
### 5. Credentials
|
|
68
|
+
- Detect env file convention from project config
|
|
69
|
+
- Create from template if missing
|
|
70
|
+
- Auto-generate what's possible (SECRET_KEY, webhook secrets)
|
|
71
|
+
- Identify placeholders that need real values
|
|
72
|
+
- Guide user through each missing credential with validation commands
|
|
73
|
+
- Final check: import project settings to verify all loads
|
|
74
|
+
|
|
75
|
+
### 6. Profiles (if applicable)
|
|
76
|
+
- Bot profiles (Twitter/X, Telegram, Discord)
|
|
77
|
+
- Only if project has bot/service integrations
|
|
78
|
+
|
|
79
|
+
### 7. Local Verify
|
|
80
|
+
- Start the application
|
|
81
|
+
- Hit health endpoints
|
|
82
|
+
- Run test suite
|
|
83
|
+
- Report pass/fail
|
|
84
|
+
|
|
85
|
+
### 8. Claude Agents
|
|
86
|
+
- Install toolkit: `~/.claude-agents/install.sh --init .`
|
|
87
|
+
- Run `/scan` to populate CLAUDE.md
|
|
88
|
+
- Check for remaining TODO placeholders
|
|
89
|
+
|
|
90
|
+
### 9. Arth
|
|
91
|
+
- Run `/arth add` if `.arth.json` missing
|
|
92
|
+
|
|
93
|
+
### 10. GitHub CI
|
|
94
|
+
- Generate CI workflow based on detected stack
|
|
95
|
+
- Include service containers matching docker-compose
|
|
96
|
+
- Use fake env vars for external APIs (tests should mock)
|
|
97
|
+
|
|
98
|
+
### 11. Discord
|
|
99
|
+
- Guide through server + channel creation
|
|
100
|
+
- Guide through bot creation
|
|
101
|
+
- Set up GitHub webhook to #deployments
|
|
102
|
+
- Configure discord-mcp for ChatOps
|
|
103
|
+
|
|
104
|
+
### 12. Secrets Sync
|
|
105
|
+
- Identify real values in env file (skip placeholders)
|
|
106
|
+
- Sync to GitHub Secrets
|
|
107
|
+
- Sync to cloud provider (Railway, Vercel, etc.)
|
|
108
|
+
- Confirm before pushing
|
|
109
|
+
|
|
110
|
+
### 13. Deploy
|
|
111
|
+
- Detect deploy target (Railway, Vercel, AWS, etc.)
|
|
112
|
+
- Set up project on platform
|
|
113
|
+
- Deploy
|
|
114
|
+
- Run post-deploy tasks (migrations, seeds, webhook registration)
|
|
115
|
+
|
|
116
|
+
### 14. Prod Verify
|
|
117
|
+
- Health checks against production URL
|
|
118
|
+
- End-to-end smoke tests
|
|
119
|
+
- Check logs for errors
|
|
120
|
+
|
|
121
|
+
### 15. Monitoring
|
|
122
|
+
- Set up Sentry if SENTRY_DSN is in env template
|
|
123
|
+
- Optional, skip if not needed
|
|
124
|
+
|
|
125
|
+
## Rules
|
|
126
|
+
|
|
127
|
+
- **Never store credentials yourself** โ ask the user to paste values
|
|
128
|
+
- **Never echo credentials back** to the user
|
|
129
|
+
- **Always verify before reporting success** โ check the command output, hit the endpoint, query the table
|
|
130
|
+
- **Detect, don't assume** โ always discover the stack from project files, never hardcode frameworks
|
|
131
|
+
- **Idempotent** โ every module can be re-run safely
|
|
132
|
+
- **Skip what's done** โ check before executing, don't redo work
|
|
133
|
+
- **Ask when blocked** โ if 2-3 attempts fail, ask the user for guidance
|
|
134
|
+
- **Show progress** โ report status after each module completes
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# SessionStart hook: Gather project context and inject a compact briefing.
|
|
3
|
+
# Runs once when Claude Code opens. Outputs 2-5 lines of context.
|
|
4
|
+
# Non-blocking โ degrades gracefully if tools are missing.
|
|
5
|
+
#
|
|
6
|
+
# stdout is injected as context into the conversation.
|
|
7
|
+
|
|
8
|
+
set -euo pipefail
|
|
9
|
+
|
|
10
|
+
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
|
|
11
|
+
|
|
12
|
+
# ---------------------------------------------------------------------------
|
|
13
|
+
# Clear triage marker โ forces full routing table on first message
|
|
14
|
+
# ---------------------------------------------------------------------------
|
|
15
|
+
rm -f "$PROJECT_DIR/.claude/.triage-full-emitted" 2>/dev/null || true
|
|
16
|
+
|
|
17
|
+
# ---------------------------------------------------------------------------
|
|
18
|
+
# Helpers
|
|
19
|
+
# ---------------------------------------------------------------------------
|
|
20
|
+
|
|
21
|
+
# Check if a command exists silently
|
|
22
|
+
has_cmd() { command -v "$1" &>/dev/null; }
|
|
23
|
+
|
|
24
|
+
# Run a command with timeout, return empty on failure
|
|
25
|
+
# Uses perl fallback on macOS where GNU timeout doesn't exist
|
|
26
|
+
safe_run() {
|
|
27
|
+
local timeout_s="${1:-3}"
|
|
28
|
+
shift
|
|
29
|
+
if command -v timeout &>/dev/null; then
|
|
30
|
+
timeout "$timeout_s" "$@" 2>/dev/null || true
|
|
31
|
+
else
|
|
32
|
+
# macOS fallback: run directly (no timeout protection, but at least it works)
|
|
33
|
+
"$@" 2>/dev/null || true
|
|
34
|
+
fi
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# ---------------------------------------------------------------------------
|
|
38
|
+
# 1. Project detection
|
|
39
|
+
# ---------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
project_name=$(basename "$PROJECT_DIR")
|
|
42
|
+
claude_md_exists=false
|
|
43
|
+
[ -f "$PROJECT_DIR/CLAUDE.md" ] && claude_md_exists=true
|
|
44
|
+
|
|
45
|
+
# Detect greenfield vs brownfield
|
|
46
|
+
is_greenfield=true
|
|
47
|
+
if $claude_md_exists; then
|
|
48
|
+
is_greenfield=false
|
|
49
|
+
elif [ -f "$PROJECT_DIR/package.json" ] || [ -f "$PROJECT_DIR/requirements.txt" ] || \
|
|
50
|
+
[ -f "$PROJECT_DIR/go.mod" ] || [ -f "$PROJECT_DIR/Cargo.toml" ] || \
|
|
51
|
+
[ -d "$PROJECT_DIR/src" ] || [ -d "$PROJECT_DIR/app" ]; then
|
|
52
|
+
is_greenfield=false
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# ---------------------------------------------------------------------------
|
|
56
|
+
# 2. Git context (fast โ local only)
|
|
57
|
+
# ---------------------------------------------------------------------------
|
|
58
|
+
|
|
59
|
+
branch=""
|
|
60
|
+
uncommitted=0
|
|
61
|
+
ahead_behind=""
|
|
62
|
+
last_commit=""
|
|
63
|
+
stash_count=0
|
|
64
|
+
has_git=false
|
|
65
|
+
|
|
66
|
+
if [ -d "$PROJECT_DIR/.git" ]; then
|
|
67
|
+
has_git=true
|
|
68
|
+
cd "$PROJECT_DIR"
|
|
69
|
+
|
|
70
|
+
branch=$(safe_run 2 git rev-parse --abbrev-ref HEAD)
|
|
71
|
+
uncommitted=$(safe_run 2 git status --short | wc -l | tr -d ' ')
|
|
72
|
+
|
|
73
|
+
# Ahead/behind remote
|
|
74
|
+
upstream=$(safe_run 2 git rev-parse --abbrev-ref '@{upstream}') || true
|
|
75
|
+
if [ -n "$upstream" ]; then
|
|
76
|
+
local_rev=$(safe_run 2 git rev-parse HEAD)
|
|
77
|
+
remote_rev=$(safe_run 2 git rev-parse "$upstream")
|
|
78
|
+
if [ "$local_rev" != "$remote_rev" ]; then
|
|
79
|
+
ahead=$(safe_run 2 git rev-list --count "$upstream..HEAD")
|
|
80
|
+
behind=$(safe_run 2 git rev-list --count "HEAD..$upstream")
|
|
81
|
+
parts=()
|
|
82
|
+
[ "${ahead:-0}" -gt 0 ] && parts+=("${ahead} ahead")
|
|
83
|
+
[ "${behind:-0}" -gt 0 ] && parts+=("${behind} behind")
|
|
84
|
+
if [ ${#parts[@]} -gt 0 ]; then
|
|
85
|
+
ahead_behind=$(IFS=', '; echo "${parts[*]}")
|
|
86
|
+
fi
|
|
87
|
+
fi
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
# Last commit (short)
|
|
91
|
+
last_commit=$(safe_run 2 git log -1 --format='%s (%cr)' 2>/dev/null) || true
|
|
92
|
+
|
|
93
|
+
# Stash count
|
|
94
|
+
stash_count=$(safe_run 2 git stash list | wc -l | tr -d ' ')
|
|
95
|
+
|
|
96
|
+
cd - >/dev/null 2>&1 || true
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
# ---------------------------------------------------------------------------
|
|
100
|
+
# 3. Environment health (from CLAUDE.md + docker + alembic)
|
|
101
|
+
# ---------------------------------------------------------------------------
|
|
102
|
+
|
|
103
|
+
docker_status=""
|
|
104
|
+
alembic_status=""
|
|
105
|
+
mcp_status=""
|
|
106
|
+
|
|
107
|
+
# Docker container health (if docker is available and CLAUDE.md mentions docker)
|
|
108
|
+
if has_cmd docker && docker info &>/dev/null 2>&1; then
|
|
109
|
+
running_containers=$(safe_run 3 docker ps --format '{{.Names}}' | tr '\n' ' ')
|
|
110
|
+
# Check common DB containers
|
|
111
|
+
for svc in postgres redis mysql mongo; do
|
|
112
|
+
if echo "$running_containers" | grep -qi "$svc"; then
|
|
113
|
+
docker_status="${docker_status}${svc} โ "
|
|
114
|
+
else
|
|
115
|
+
# Only flag if the project likely uses this service
|
|
116
|
+
if [ -f "$PROJECT_DIR/docker-compose.yml" ] && grep -qi "$svc" "$PROJECT_DIR/docker-compose.yml" 2>/dev/null; then
|
|
117
|
+
docker_status="${docker_status}${svc} โ "
|
|
118
|
+
fi
|
|
119
|
+
fi
|
|
120
|
+
done
|
|
121
|
+
docker_status=$(echo "$docker_status" | sed 's/ $//')
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
# Alembic migration status (if alembic dir exists)
|
|
125
|
+
if [ -d "$PROJECT_DIR/backend/migrations" ] || [ -d "$PROJECT_DIR/migrations" ] || [ -d "$PROJECT_DIR/alembic" ]; then
|
|
126
|
+
# Find the venv
|
|
127
|
+
venv_activate=""
|
|
128
|
+
for v in "$PROJECT_DIR/backend/.venv/bin/activate" "$PROJECT_DIR/.venv/bin/activate" "$PROJECT_DIR/venv/bin/activate"; do
|
|
129
|
+
if [ -f "$v" ]; then
|
|
130
|
+
venv_activate="$v"
|
|
131
|
+
break
|
|
132
|
+
fi
|
|
133
|
+
done
|
|
134
|
+
|
|
135
|
+
if [ -n "$venv_activate" ]; then
|
|
136
|
+
alembic_dir=""
|
|
137
|
+
for d in "$PROJECT_DIR/backend" "$PROJECT_DIR"; do
|
|
138
|
+
if [ -f "$d/alembic.ini" ]; then
|
|
139
|
+
alembic_dir="$d"
|
|
140
|
+
break
|
|
141
|
+
fi
|
|
142
|
+
done
|
|
143
|
+
|
|
144
|
+
if [ -n "$alembic_dir" ]; then
|
|
145
|
+
current=$(cd "$alembic_dir" && source "$venv_activate" && safe_run 3 alembic current 2>/dev/null | head -1 | awk '{print $1}') || true
|
|
146
|
+
head_rev=$(cd "$alembic_dir" && source "$venv_activate" && safe_run 3 alembic heads 2>/dev/null | head -1 | awk '{print $1}') || true
|
|
147
|
+
if [ -n "$current" ] && [ -n "$head_rev" ]; then
|
|
148
|
+
if [ "$current" = "$head_rev" ]; then
|
|
149
|
+
alembic_status="โ"
|
|
150
|
+
else
|
|
151
|
+
alembic_status="โ pending migrations"
|
|
152
|
+
fi
|
|
153
|
+
fi
|
|
154
|
+
fi
|
|
155
|
+
fi
|
|
156
|
+
fi
|
|
157
|
+
|
|
158
|
+
# Railway MCP check (if configured)
|
|
159
|
+
if has_cmd railway; then
|
|
160
|
+
railway_check=$(safe_run 3 railway whoami 2>&1) || true
|
|
161
|
+
if echo "$railway_check" | grep -qi "error\|not logged\|unauthenticated"; then
|
|
162
|
+
mcp_status="Railway: expired (run railway login)"
|
|
163
|
+
fi
|
|
164
|
+
fi
|
|
165
|
+
|
|
166
|
+
# ---------------------------------------------------------------------------
|
|
167
|
+
# 4. GitHub context (if gh available โ PRs, issues)
|
|
168
|
+
# ---------------------------------------------------------------------------
|
|
169
|
+
|
|
170
|
+
pr_summary=""
|
|
171
|
+
issue_summary=""
|
|
172
|
+
|
|
173
|
+
if has_cmd gh && $has_git; then
|
|
174
|
+
cd "$PROJECT_DIR"
|
|
175
|
+
|
|
176
|
+
# My open PRs
|
|
177
|
+
my_prs=$(safe_run 5 gh pr list --author @me --json number,title,reviewDecision,comments --limit 5 2>/dev/null) || true
|
|
178
|
+
if [ -n "$my_prs" ] && [ "$my_prs" != "[]" ]; then
|
|
179
|
+
pr_count=$(echo "$my_prs" | python3 -c "import json,sys; print(len(json.load(sys.stdin)))" 2>/dev/null) || true
|
|
180
|
+
if [ "${pr_count:-0}" -gt 0 ]; then
|
|
181
|
+
pr_summary="${pr_count} open PR(s)"
|
|
182
|
+
# Check for unresolved review comments
|
|
183
|
+
needs_review=$(echo "$my_prs" | python3 -c "
|
|
184
|
+
import json,sys
|
|
185
|
+
prs=json.load(sys.stdin)
|
|
186
|
+
needs=sum(1 for p in prs if p.get('reviewDecision') in ('CHANGES_REQUESTED',None) and p.get('comments',0)>0)
|
|
187
|
+
if needs: print(f', {needs} need attention')
|
|
188
|
+
" 2>/dev/null) || true
|
|
189
|
+
pr_summary="${pr_summary}${needs_review}"
|
|
190
|
+
fi
|
|
191
|
+
fi
|
|
192
|
+
|
|
193
|
+
# My assigned issues
|
|
194
|
+
my_issues=$(safe_run 5 gh issue list --assignee @me --json number,title --limit 5 2>/dev/null) || true
|
|
195
|
+
if [ -n "$my_issues" ] && [ "$my_issues" != "[]" ]; then
|
|
196
|
+
issue_count=$(echo "$my_issues" | python3 -c "import json,sys; print(len(json.load(sys.stdin)))" 2>/dev/null) || true
|
|
197
|
+
if [ "${issue_count:-0}" -gt 0 ]; then
|
|
198
|
+
issue_summary="${issue_count} assigned issue(s)"
|
|
199
|
+
fi
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
cd - >/dev/null 2>&1 || true
|
|
203
|
+
fi
|
|
204
|
+
|
|
205
|
+
# ---------------------------------------------------------------------------
|
|
206
|
+
# 5. Active plans
|
|
207
|
+
# ---------------------------------------------------------------------------
|
|
208
|
+
|
|
209
|
+
active_plan=""
|
|
210
|
+
if [ -d "$PROJECT_DIR/.claude/plans" ]; then
|
|
211
|
+
plan_files=$(find "$PROJECT_DIR/.claude/plans" -name "*.md" -newer "$PROJECT_DIR/.claude" 2>/dev/null | head -1) || true
|
|
212
|
+
if [ -n "$plan_files" ]; then
|
|
213
|
+
active_plan=$(basename "$plan_files")
|
|
214
|
+
fi
|
|
215
|
+
fi
|
|
216
|
+
|
|
217
|
+
# ---------------------------------------------------------------------------
|
|
218
|
+
# 6. Session continuity (previous session detection)
|
|
219
|
+
# ---------------------------------------------------------------------------
|
|
220
|
+
|
|
221
|
+
session_hint=""
|
|
222
|
+
|
|
223
|
+
# Check for existing session-state summary (written by /continue skill)
|
|
224
|
+
if [ -f "$PROJECT_DIR/.claude/session-state/latest.md" ]; then
|
|
225
|
+
# Check if it's less than 7 days old
|
|
226
|
+
if [ "$(uname)" = "Darwin" ]; then
|
|
227
|
+
file_age=$(( $(date +%s) - $(stat -f%m "$PROJECT_DIR/.claude/session-state/latest.md") ))
|
|
228
|
+
else
|
|
229
|
+
file_age=$(( $(date +%s) - $(stat -c%Y "$PROJECT_DIR/.claude/session-state/latest.md") ))
|
|
230
|
+
fi
|
|
231
|
+
if [ "$file_age" -lt 604800 ]; then
|
|
232
|
+
# Extract first "What Was Done" bullet for a preview
|
|
233
|
+
preview=$(grep -m1 "^- " "$PROJECT_DIR/.claude/session-state/latest.md" 2>/dev/null | head -c 80) || true
|
|
234
|
+
if [ -n "$preview" ]; then
|
|
235
|
+
session_hint="Previous session: ${preview}... โ /continue for details"
|
|
236
|
+
else
|
|
237
|
+
session_hint="Previous session summary available โ /continue for details"
|
|
238
|
+
fi
|
|
239
|
+
fi
|
|
240
|
+
fi
|
|
241
|
+
|
|
242
|
+
# If no session-state, check for recent transcript JSONL
|
|
243
|
+
if [ -z "$session_hint" ]; then
|
|
244
|
+
TRANSCRIPT_DIR_NAME=$(echo "$PROJECT_DIR" | sed 's|/|-|g')
|
|
245
|
+
TRANSCRIPT_DIR="$HOME/.claude/projects/${TRANSCRIPT_DIR_NAME}"
|
|
246
|
+
if [ -d "$TRANSCRIPT_DIR" ]; then
|
|
247
|
+
# Find the 2nd newest JSONL (newest is current session)
|
|
248
|
+
prev_transcript=$(ls -t "$TRANSCRIPT_DIR"/*.jsonl 2>/dev/null | sed -n '2p') || true
|
|
249
|
+
if [ -n "$prev_transcript" ]; then
|
|
250
|
+
# Check if it's less than 3 days old
|
|
251
|
+
if [ "$(uname)" = "Darwin" ]; then
|
|
252
|
+
t_age=$(( $(date +%s) - $(stat -f%m "$prev_transcript") ))
|
|
253
|
+
else
|
|
254
|
+
t_age=$(( $(date +%s) - $(stat -c%Y "$prev_transcript") ))
|
|
255
|
+
fi
|
|
256
|
+
if [ "$t_age" -lt 259200 ]; then
|
|
257
|
+
session_hint="Recent session detected โ /continue to pick up where you left off"
|
|
258
|
+
fi
|
|
259
|
+
fi
|
|
260
|
+
fi
|
|
261
|
+
fi
|
|
262
|
+
|
|
263
|
+
# ---------------------------------------------------------------------------
|
|
264
|
+
# 7. Output โ compact briefing (max 6 lines)
|
|
265
|
+
# ---------------------------------------------------------------------------
|
|
266
|
+
|
|
267
|
+
# Line 1: Project + branch
|
|
268
|
+
line1="๐ ${project_name}"
|
|
269
|
+
if $is_greenfield; then
|
|
270
|
+
line1="${line1} โ new project (no code detected)"
|
|
271
|
+
elif $has_git && [ -n "$branch" ]; then
|
|
272
|
+
line1="${line1} โ ${branch}"
|
|
273
|
+
[ -n "$ahead_behind" ] && line1="${line1} (${ahead_behind})"
|
|
274
|
+
fi
|
|
275
|
+
echo "$line1"
|
|
276
|
+
|
|
277
|
+
# Line 2: Red flags (only if there are problems)
|
|
278
|
+
flags=()
|
|
279
|
+
[ -n "$docker_status" ] && echo "$docker_status" | grep -q "โ" && flags+=("Docker: ${docker_status}")
|
|
280
|
+
[ "$alembic_status" = "โ pending migrations" ] && flags+=("Alembic: ${alembic_status}")
|
|
281
|
+
[ -n "$mcp_status" ] && flags+=("โ ${mcp_status}")
|
|
282
|
+
|
|
283
|
+
if [ ${#flags[@]} -gt 0 ]; then
|
|
284
|
+
echo " $(IFS=' ยท '; echo "${flags[*]}")"
|
|
285
|
+
fi
|
|
286
|
+
|
|
287
|
+
# Line 3: Context (uncommitted, plan, last commit)
|
|
288
|
+
context_parts=()
|
|
289
|
+
[ "${uncommitted:-0}" -gt 0 ] && context_parts+=("${uncommitted} uncommitted files")
|
|
290
|
+
[ -n "$active_plan" ] && context_parts+=("Plan: ${active_plan}")
|
|
291
|
+
[ "${stash_count:-0}" -gt 0 ] && context_parts+=("${stash_count} stash(es)")
|
|
292
|
+
|
|
293
|
+
if [ ${#context_parts[@]} -gt 0 ]; then
|
|
294
|
+
echo " $(IFS=' ยท '; echo "${context_parts[*]}")"
|
|
295
|
+
fi
|
|
296
|
+
|
|
297
|
+
# Line 4: GitHub context (PRs, issues)
|
|
298
|
+
gh_parts=()
|
|
299
|
+
[ -n "$pr_summary" ] && gh_parts+=("$pr_summary")
|
|
300
|
+
[ -n "$issue_summary" ] && gh_parts+=("$issue_summary")
|
|
301
|
+
|
|
302
|
+
if [ ${#gh_parts[@]} -gt 0 ]; then
|
|
303
|
+
echo " $(IFS=' ยท '; echo "${gh_parts[*]}")"
|
|
304
|
+
fi
|
|
305
|
+
|
|
306
|
+
# Line 5: Toolkit status (show what's active)
|
|
307
|
+
toolkit_parts=()
|
|
308
|
+
if [ -f "$PROJECT_DIR/.claude/hooks/triage-router.sh" ] || [ -L "$PROJECT_DIR/.claude/hooks/triage-router.sh" ]; then
|
|
309
|
+
toolkit_parts+=("Triage router: active")
|
|
310
|
+
fi
|
|
311
|
+
if [ -f "$PROJECT_DIR/.claude/hooks/pre-bash-guard.sh" ] || [ -L "$PROJECT_DIR/.claude/hooks/pre-bash-guard.sh" ]; then
|
|
312
|
+
toolkit_parts+=("Guard rails: on")
|
|
313
|
+
fi
|
|
314
|
+
if [ ${#toolkit_parts[@]} -gt 0 ]; then
|
|
315
|
+
echo " $(IFS=' ยท '; echo "${toolkit_parts[*]}")"
|
|
316
|
+
fi
|
|
317
|
+
|
|
318
|
+
# Session continuity hint (if not greenfield)
|
|
319
|
+
if ! $is_greenfield && [ -n "$session_hint" ]; then
|
|
320
|
+
echo " $session_hint"
|
|
321
|
+
fi
|
|
322
|
+
|
|
323
|
+
# Greenfield hint
|
|
324
|
+
if $is_greenfield; then
|
|
325
|
+
echo " Tip: describe what you're building, or type /onboard for guided setup"
|
|
326
|
+
fi
|
|
327
|
+
|
|
328
|
+
# Calibration hint โ show for brownfield projects that haven't been calibrated
|
|
329
|
+
if ! $is_greenfield; then
|
|
330
|
+
if [ ! -f "$PROJECT_DIR/.claude/project-profile.md" ]; then
|
|
331
|
+
# Only show if calibrate skill is installed
|
|
332
|
+
if [ -d "$PROJECT_DIR/.claude/skills/calibrate" ] || [ -L "$PROJECT_DIR/.claude/skills/calibrate" ]; then
|
|
333
|
+
echo " Tip: run /calibrate to deep-learn your project and configure MCP servers + agents"
|
|
334
|
+
fi
|
|
335
|
+
else
|
|
336
|
+
# Check knowledge base change detection for drift
|
|
337
|
+
CHANGE_DETECT="$PROJECT_DIR/.claude/knowledge/meta/change-detection.md"
|
|
338
|
+
if [ -f "$CHANGE_DETECT" ]; then
|
|
339
|
+
drift_found=false
|
|
340
|
+
for keyfile in package.json requirements.txt pyproject.toml docker-compose.yml Podfile Package.swift build.gradle pubspec.yaml; do
|
|
341
|
+
if [ -f "$PROJECT_DIR/$keyfile" ]; then
|
|
342
|
+
current_hash=$(shasum -a 256 "$PROJECT_DIR/$keyfile" 2>/dev/null | cut -c1-8)
|
|
343
|
+
stored_hash=$(grep "$keyfile" "$CHANGE_DETECT" 2>/dev/null | awk '{print $4}' | head -1)
|
|
344
|
+
if [ -n "$stored_hash" ] && [ -n "$current_hash" ] && [ "$stored_hash" != "$current_hash" ]; then
|
|
345
|
+
drift_found=true
|
|
346
|
+
break
|
|
347
|
+
fi
|
|
348
|
+
fi
|
|
349
|
+
done
|
|
350
|
+
if $drift_found; then
|
|
351
|
+
echo " โ Project files changed since last calibration โ run /calibrate rescan"
|
|
352
|
+
fi
|
|
353
|
+
fi
|
|
354
|
+
fi
|
|
355
|
+
fi
|
|
356
|
+
|
|
357
|
+
# ---------------------------------------------------------------------------
|
|
358
|
+
# 8. Write project state cache (other hooks read this instead of re-computing)
|
|
359
|
+
# ---------------------------------------------------------------------------
|
|
360
|
+
|
|
361
|
+
CACHE_FILE="$PROJECT_DIR/.claude/.project-state-cache.json"
|
|
362
|
+
_cache_json=$(cat <<CACHE_EOF
|
|
363
|
+
{
|
|
364
|
+
"timestamp": $(date +%s),
|
|
365
|
+
"project_name": "$project_name",
|
|
366
|
+
"is_greenfield": $is_greenfield,
|
|
367
|
+
"has_git": $has_git,
|
|
368
|
+
"branch": "${branch:-}",
|
|
369
|
+
"uncommitted": ${uncommitted:-0},
|
|
370
|
+
"ahead_behind": "${ahead_behind:-}",
|
|
371
|
+
"stash_count": ${stash_count:-0},
|
|
372
|
+
"docker_status": "${docker_status:-}",
|
|
373
|
+
"alembic_status": "${alembic_status:-}",
|
|
374
|
+
"mcp_status": "${mcp_status:-}",
|
|
375
|
+
"active_plan": "${active_plan:-}"
|
|
376
|
+
}
|
|
377
|
+
CACHE_EOF
|
|
378
|
+
)
|
|
379
|
+
echo "$_cache_json" > "$CACHE_FILE" 2>/dev/null || true
|