@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.
Files changed (390) hide show
  1. package/README.md +123 -0
  2. package/VERSION +1 -0
  3. package/agents/ai-consultant.md +999 -0
  4. package/agents/architect.md +174 -0
  5. package/agents/code-reviewer.md +115 -0
  6. package/agents/competitive-analyst.md +688 -0
  7. package/agents/content-strategist.md +607 -0
  8. package/agents/design-studio-create.md +304 -0
  9. package/agents/design-studio-critique.md +258 -0
  10. package/agents/design-studio-think.md +79 -0
  11. package/agents/domain-hunter.md +519 -0
  12. package/agents/explore-light.md +52 -0
  13. package/agents/frontend.md +261 -0
  14. package/agents/gtm-expert.md +811 -0
  15. package/agents/meeting-prep.md +318 -0
  16. package/agents/ops.md +149 -0
  17. package/agents/product-manager.md +563 -0
  18. package/agents/python-backend.md +286 -0
  19. package/agents/qa-baseline-updater.md +45 -0
  20. package/agents/qa-challenger.md +97 -0
  21. package/agents/qa-domain.md +145 -0
  22. package/agents/qa-e2e.md +184 -0
  23. package/agents/qa-test-promoter.md +97 -0
  24. package/agents/qa.md +226 -0
  25. package/agents/setup.md +134 -0
  26. package/agents/sre.md +165 -0
  27. package/agents/stakeholder-reporter.md +94 -0
  28. package/agents/user-researcher.md +602 -0
  29. package/bin/cli.js +322 -0
  30. package/bundles/canvas.json +16 -0
  31. package/bundles/compass.json +16 -0
  32. package/bundles/counsel.json +31 -0
  33. package/bundles/cruise.json +11 -0
  34. package/bundles/forge.json +26 -0
  35. package/bundles/prime.json +10 -0
  36. package/bundles/prism.json +23 -0
  37. package/bundles/scalpel.json +17 -0
  38. package/bundles/sentinel.json +19 -0
  39. package/bundles/shield.json +14 -0
  40. package/bundles/spark.json +19 -0
  41. package/compiler.sh +305 -0
  42. package/dist/plugins/canvas/.claude-plugin/plugin.json +6 -0
  43. package/dist/plugins/canvas/agents/design-studio-create.md +304 -0
  44. package/dist/plugins/canvas/agents/design-studio-critique.md +258 -0
  45. package/dist/plugins/canvas/agents/design-studio-think.md +79 -0
  46. package/dist/plugins/canvas/agents/frontend.md +261 -0
  47. package/dist/plugins/canvas/skills/planning/SKILL.md +436 -0
  48. package/dist/plugins/compass/.claude-plugin/plugin.json +6 -0
  49. package/dist/plugins/compass/agents/content-strategist.md +607 -0
  50. package/dist/plugins/compass/agents/gtm-expert.md +811 -0
  51. package/dist/plugins/compass/agents/product-manager.md +563 -0
  52. package/dist/plugins/compass/agents/user-researcher.md +602 -0
  53. package/dist/plugins/compass/skills/planning/SKILL.md +436 -0
  54. package/dist/plugins/counsel/.claude-plugin/plugin.json +6 -0
  55. package/dist/plugins/counsel/agents/ai-consultant.md +999 -0
  56. package/dist/plugins/counsel/agents/competitive-analyst.md +688 -0
  57. package/dist/plugins/counsel/agents/meeting-prep.md +318 -0
  58. package/dist/plugins/counsel/agents/stakeholder-reporter.md +94 -0
  59. package/dist/plugins/counsel/hooks/check-deliverable.sh +65 -0
  60. package/dist/plugins/counsel/hooks/ensure-client-dir.sh +59 -0
  61. package/dist/plugins/counsel/hooks/hooks.json +28 -0
  62. package/dist/plugins/counsel/skills/client-discovery/SKILL.md +266 -0
  63. package/dist/plugins/counsel/skills/consulting/SKILL.md +282 -0
  64. package/dist/plugins/counsel/skills/deliverable-builder/SKILL.md +928 -0
  65. package/dist/plugins/counsel/skills/engagement-tracker/SKILL.md +380 -0
  66. package/dist/plugins/counsel/skills/market-research/SKILL.md +300 -0
  67. package/dist/plugins/counsel/skills/opportunity-map/SKILL.md +307 -0
  68. package/dist/plugins/counsel/skills/pitch-generator/SKILL.md +378 -0
  69. package/dist/plugins/counsel/skills/roi-calculator/SKILL.md +469 -0
  70. package/dist/plugins/counsel/skills/share/SKILL.md +211 -0
  71. package/dist/plugins/counsel/skills/solution-architect/SKILL.md +566 -0
  72. package/dist/plugins/counsel/skills/templates/SKILL.md +194 -0
  73. package/dist/plugins/counsel/skills/welcome/SKILL.md +136 -0
  74. package/dist/plugins/counsel/skills/wizard/SKILL.md +411 -0
  75. package/dist/plugins/cruise/.claude-plugin/plugin.json +6 -0
  76. package/dist/plugins/cruise/skills/autopilot/SKILL.md +425 -0
  77. package/dist/plugins/forge/.claude-plugin/plugin.json +6 -0
  78. package/dist/plugins/forge/agents/architect.md +174 -0
  79. package/dist/plugins/forge/agents/code-reviewer.md +115 -0
  80. package/dist/plugins/forge/agents/frontend.md +261 -0
  81. package/dist/plugins/forge/agents/product-manager.md +563 -0
  82. package/dist/plugins/forge/agents/python-backend.md +286 -0
  83. package/dist/plugins/forge/agents/qa.md +226 -0
  84. package/dist/plugins/forge/hooks/hooks.json +28 -0
  85. package/dist/plugins/forge/hooks/post-test-summary.sh +115 -0
  86. package/dist/plugins/forge/hooks/triage-router.sh +740 -0
  87. package/dist/plugins/forge/skills/implement/SKILL.md +532 -0
  88. package/dist/plugins/forge/skills/planning/SKILL.md +436 -0
  89. package/dist/plugins/forge/skills/pr/SKILL.md +275 -0
  90. package/dist/plugins/forge/skills/precheck/SKILL.md +159 -0
  91. package/dist/plugins/forge/skills/qa/SKILL.md +127 -0
  92. package/dist/plugins/forge/skills/review-pr/SKILL.md +367 -0
  93. package/dist/plugins/prime/.claude-plugin/plugin.json +6 -0
  94. package/dist/plugins/prime/agents/ai-consultant.md +999 -0
  95. package/dist/plugins/prime/agents/architect.md +174 -0
  96. package/dist/plugins/prime/agents/code-reviewer.md +115 -0
  97. package/dist/plugins/prime/agents/competitive-analyst.md +688 -0
  98. package/dist/plugins/prime/agents/content-strategist.md +607 -0
  99. package/dist/plugins/prime/agents/design-studio-create.md +304 -0
  100. package/dist/plugins/prime/agents/design-studio-critique.md +258 -0
  101. package/dist/plugins/prime/agents/design-studio-think.md +79 -0
  102. package/dist/plugins/prime/agents/explore-light.md +52 -0
  103. package/dist/plugins/prime/agents/frontend.md +261 -0
  104. package/dist/plugins/prime/agents/gtm-expert.md +811 -0
  105. package/dist/plugins/prime/agents/meeting-prep.md +318 -0
  106. package/dist/plugins/prime/agents/ops.md +149 -0
  107. package/dist/plugins/prime/agents/product-manager.md +563 -0
  108. package/dist/plugins/prime/agents/python-backend.md +286 -0
  109. package/dist/plugins/prime/agents/qa-baseline-updater.md +45 -0
  110. package/dist/plugins/prime/agents/qa-challenger.md +97 -0
  111. package/dist/plugins/prime/agents/qa-domain.md +145 -0
  112. package/dist/plugins/prime/agents/qa-e2e.md +184 -0
  113. package/dist/plugins/prime/agents/qa-test-promoter.md +97 -0
  114. package/dist/plugins/prime/agents/qa.md +226 -0
  115. package/dist/plugins/prime/agents/setup.md +134 -0
  116. package/dist/plugins/prime/agents/sre.md +165 -0
  117. package/dist/plugins/prime/agents/stakeholder-reporter.md +94 -0
  118. package/dist/plugins/prime/agents/user-researcher.md +602 -0
  119. package/dist/plugins/prime/hooks/check-deliverable.sh +65 -0
  120. package/dist/plugins/prime/hooks/ensure-client-dir.sh +59 -0
  121. package/dist/plugins/prime/hooks/hooks.json +184 -0
  122. package/dist/plugins/prime/hooks/post-deploy-health.sh +83 -0
  123. package/dist/plugins/prime/hooks/post-diff-test-compare.sh +125 -0
  124. package/dist/plugins/prime/hooks/post-edit-lint.sh +92 -0
  125. package/dist/plugins/prime/hooks/post-git-state.sh +54 -0
  126. package/dist/plugins/prime/hooks/post-merge-cleanup.sh +101 -0
  127. package/dist/plugins/prime/hooks/post-test-summary.sh +115 -0
  128. package/dist/plugins/prime/hooks/pre-bash-guard.sh +142 -0
  129. package/dist/plugins/prime/hooks/pre-edit-guard.sh +121 -0
  130. package/dist/plugins/prime/hooks/pre-task-context.sh +113 -0
  131. package/dist/plugins/prime/hooks/session-bootstrap.sh +379 -0
  132. package/dist/plugins/prime/hooks/session-end.sh +107 -0
  133. package/dist/plugins/prime/hooks/session-summary.sh +97 -0
  134. package/dist/plugins/prime/hooks/sync-agents.sh +269 -0
  135. package/dist/plugins/prime/hooks/triage-router.sh +740 -0
  136. package/dist/plugins/prime/skills/arth/SKILL.md +165 -0
  137. package/dist/plugins/prime/skills/autopilot/SKILL.md +425 -0
  138. package/dist/plugins/prime/skills/calibrate/SKILL.md +1807 -0
  139. package/dist/plugins/prime/skills/ci-fix/SKILL.md +293 -0
  140. package/dist/plugins/prime/skills/client-discovery/SKILL.md +266 -0
  141. package/dist/plugins/prime/skills/consulting/SKILL.md +282 -0
  142. package/dist/plugins/prime/skills/custom-domain/SKILL.md +261 -0
  143. package/dist/plugins/prime/skills/deliverable-builder/SKILL.md +928 -0
  144. package/dist/plugins/prime/skills/discord-ops/SKILL.md +125 -0
  145. package/dist/plugins/prime/skills/engagement-tracker/SKILL.md +380 -0
  146. package/dist/plugins/prime/skills/explore.md +43 -0
  147. package/dist/plugins/prime/skills/fix/SKILL.md +1058 -0
  148. package/dist/plugins/prime/skills/implement/SKILL.md +532 -0
  149. package/dist/plugins/prime/skills/incident/SKILL.md +910 -0
  150. package/dist/plugins/prime/skills/issue/SKILL.md +134 -0
  151. package/dist/plugins/prime/skills/market-research/SKILL.md +300 -0
  152. package/dist/plugins/prime/skills/onboard/SKILL.md +344 -0
  153. package/dist/plugins/prime/skills/opportunity-map/SKILL.md +307 -0
  154. package/dist/plugins/prime/skills/pitch-generator/SKILL.md +378 -0
  155. package/dist/plugins/prime/skills/planning/SKILL.md +436 -0
  156. package/dist/plugins/prime/skills/pr/SKILL.md +275 -0
  157. package/dist/plugins/prime/skills/precheck/SKILL.md +159 -0
  158. package/dist/plugins/prime/skills/qa/SKILL.md +127 -0
  159. package/dist/plugins/prime/skills/qa-incident/SKILL.md +54 -0
  160. package/dist/plugins/prime/skills/qa-learn/SKILL.md +47 -0
  161. package/dist/plugins/prime/skills/restart/SKILL.md +70 -0
  162. package/dist/plugins/prime/skills/review-pr/SKILL.md +367 -0
  163. package/dist/plugins/prime/skills/roi-calculator/SKILL.md +469 -0
  164. package/dist/plugins/prime/skills/scan/SKILL.md +232 -0
  165. package/dist/plugins/prime/skills/setup/SKILL.md +691 -0
  166. package/dist/plugins/prime/skills/share/SKILL.md +211 -0
  167. package/dist/plugins/prime/skills/solution-architect/SKILL.md +566 -0
  168. package/dist/plugins/prime/skills/sre/SKILL.md +362 -0
  169. package/dist/plugins/prime/skills/sync/SKILL.md +188 -0
  170. package/dist/plugins/prime/skills/templates/SKILL.md +194 -0
  171. package/dist/plugins/prime/skills/welcome/SKILL.md +136 -0
  172. package/dist/plugins/prime/skills/wizard/SKILL.md +411 -0
  173. package/dist/plugins/prism/.claude-plugin/plugin.json +6 -0
  174. package/dist/plugins/prism/agents/qa-baseline-updater.md +45 -0
  175. package/dist/plugins/prism/agents/qa-challenger.md +97 -0
  176. package/dist/plugins/prism/agents/qa-domain.md +145 -0
  177. package/dist/plugins/prism/agents/qa-e2e.md +184 -0
  178. package/dist/plugins/prism/agents/qa-test-promoter.md +97 -0
  179. package/dist/plugins/prism/agents/qa.md +226 -0
  180. package/dist/plugins/prism/hooks/hooks.json +26 -0
  181. package/dist/plugins/prism/hooks/post-diff-test-compare.sh +125 -0
  182. package/dist/plugins/prism/hooks/post-test-summary.sh +115 -0
  183. package/dist/plugins/prism/skills/qa/SKILL.md +127 -0
  184. package/dist/plugins/prism/skills/qa-incident/SKILL.md +54 -0
  185. package/dist/plugins/prism/skills/qa-learn/SKILL.md +47 -0
  186. package/dist/plugins/scalpel/.claude-plugin/plugin.json +6 -0
  187. package/dist/plugins/scalpel/agents/code-reviewer.md +115 -0
  188. package/dist/plugins/scalpel/hooks/hooks.json +26 -0
  189. package/dist/plugins/scalpel/hooks/pre-edit-guard.sh +121 -0
  190. package/dist/plugins/scalpel/skills/ci-fix/SKILL.md +293 -0
  191. package/dist/plugins/scalpel/skills/fix/SKILL.md +1058 -0
  192. package/dist/plugins/scalpel/skills/issue/SKILL.md +134 -0
  193. package/dist/plugins/sentinel/.claude-plugin/plugin.json +6 -0
  194. package/dist/plugins/sentinel/agents/ops.md +149 -0
  195. package/dist/plugins/sentinel/agents/sre.md +165 -0
  196. package/dist/plugins/sentinel/hooks/hooks.json +26 -0
  197. package/dist/plugins/sentinel/hooks/post-deploy-health.sh +83 -0
  198. package/dist/plugins/sentinel/hooks/post-git-state.sh +54 -0
  199. package/dist/plugins/sentinel/skills/incident/SKILL.md +910 -0
  200. package/dist/plugins/sentinel/skills/restart/SKILL.md +70 -0
  201. package/dist/plugins/sentinel/skills/sre/SKILL.md +362 -0
  202. package/dist/plugins/shield/.claude-plugin/plugin.json +6 -0
  203. package/dist/plugins/shield/hooks/hooks.json +60 -0
  204. package/dist/plugins/shield/hooks/pre-bash-guard.sh +142 -0
  205. package/dist/plugins/shield/hooks/pre-edit-guard.sh +121 -0
  206. package/dist/plugins/shield/hooks/session-bootstrap.sh +379 -0
  207. package/dist/plugins/shield/hooks/triage-router.sh +740 -0
  208. package/dist/plugins/spark/.claude-plugin/plugin.json +6 -0
  209. package/dist/plugins/spark/agents/explore-light.md +52 -0
  210. package/dist/plugins/spark/agents/setup.md +134 -0
  211. package/dist/plugins/spark/hooks/hooks.json +16 -0
  212. package/dist/plugins/spark/hooks/session-bootstrap.sh +379 -0
  213. package/dist/plugins/spark/skills/calibrate/SKILL.md +1807 -0
  214. package/dist/plugins/spark/skills/onboard/SKILL.md +344 -0
  215. package/dist/plugins/spark/skills/scan/SKILL.md +232 -0
  216. package/dist/plugins/spark/skills/setup/SKILL.md +691 -0
  217. package/hook-defs.json +104 -0
  218. package/hooks/check-deliverable.sh +65 -0
  219. package/hooks/ensure-client-dir.sh +59 -0
  220. package/hooks/hooks.json +16 -0
  221. package/hooks/post-deploy-health.sh +83 -0
  222. package/hooks/post-diff-test-compare.sh +125 -0
  223. package/hooks/post-edit-lint.sh +92 -0
  224. package/hooks/post-git-state.sh +54 -0
  225. package/hooks/post-merge-cleanup.sh +101 -0
  226. package/hooks/post-test-summary.sh +115 -0
  227. package/hooks/pre-bash-guard.sh +142 -0
  228. package/hooks/pre-edit-guard.sh +121 -0
  229. package/hooks/pre-task-context.sh +113 -0
  230. package/hooks/session-bootstrap.sh +379 -0
  231. package/hooks/session-end.sh +107 -0
  232. package/hooks/session-start.sh +46 -0
  233. package/hooks/session-summary.sh +97 -0
  234. package/hooks/sync-agents.sh +269 -0
  235. package/hooks/triage-router.sh +740 -0
  236. package/install.sh +3185 -0
  237. package/package.json +40 -0
  238. package/portable.manifest +112 -0
  239. package/skills/arth/SKILL.md +165 -0
  240. package/skills/autopilot/SKILL.md +425 -0
  241. package/skills/calibrate/SKILL.md +1807 -0
  242. package/skills/ci-fix/SKILL.md +293 -0
  243. package/skills/client-discovery/SKILL.md +266 -0
  244. package/skills/consulting/SKILL.md +282 -0
  245. package/skills/continue/SKILL.md +174 -0
  246. package/skills/custom-domain/SKILL.md +261 -0
  247. package/skills/deliverable-builder/SKILL.md +928 -0
  248. package/skills/discord-ops/SKILL.md +125 -0
  249. package/skills/engagement-tracker/SKILL.md +380 -0
  250. package/skills/explore.md +43 -0
  251. package/skills/fix/SKILL.md +1058 -0
  252. package/skills/implement/SKILL.md +532 -0
  253. package/skills/incident/SKILL.md +910 -0
  254. package/skills/issue/SKILL.md +134 -0
  255. package/skills/market-research/SKILL.md +300 -0
  256. package/skills/onboard/SKILL.md +344 -0
  257. package/skills/opportunity-map/SKILL.md +307 -0
  258. package/skills/pitch-generator/SKILL.md +378 -0
  259. package/skills/planning/SKILL.md +436 -0
  260. package/skills/pr/SKILL.md +275 -0
  261. package/skills/precheck/SKILL.md +159 -0
  262. package/skills/qa/SKILL.md +127 -0
  263. package/skills/qa-incident/SKILL.md +54 -0
  264. package/skills/qa-learn/SKILL.md +47 -0
  265. package/skills/railway/central-station/SKILL.md +226 -0
  266. package/skills/railway/central-station/references/environment-config.md +183 -0
  267. package/skills/railway/central-station/references/monorepo.md +216 -0
  268. package/skills/railway/central-station/references/railpack.md +257 -0
  269. package/skills/railway/central-station/references/variables.md +170 -0
  270. package/skills/railway/database/SKILL.md +284 -0
  271. package/skills/railway/database/references/environment-config.md +183 -0
  272. package/skills/railway/database/references/monorepo.md +216 -0
  273. package/skills/railway/database/references/railpack.md +257 -0
  274. package/skills/railway/database/references/variables.md +170 -0
  275. package/skills/railway/database/scripts/railway-api.sh +41 -0
  276. package/skills/railway/deploy/SKILL.md +128 -0
  277. package/skills/railway/deploy/references/environment-config.md +183 -0
  278. package/skills/railway/deploy/references/monorepo.md +216 -0
  279. package/skills/railway/deploy/references/railpack.md +257 -0
  280. package/skills/railway/deploy/references/variables.md +170 -0
  281. package/skills/railway/deployment/SKILL.md +222 -0
  282. package/skills/railway/deployment/references/environment-config.md +183 -0
  283. package/skills/railway/deployment/references/monorepo.md +216 -0
  284. package/skills/railway/deployment/references/railpack.md +257 -0
  285. package/skills/railway/deployment/references/variables.md +170 -0
  286. package/skills/railway/domain/SKILL.md +137 -0
  287. package/skills/railway/domain/references/environment-config.md +183 -0
  288. package/skills/railway/domain/references/monorepo.md +216 -0
  289. package/skills/railway/domain/references/railpack.md +257 -0
  290. package/skills/railway/domain/references/variables.md +170 -0
  291. package/skills/railway/environment/SKILL.md +266 -0
  292. package/skills/railway/environment/references/environment-config.md +183 -0
  293. package/skills/railway/environment/references/monorepo.md +216 -0
  294. package/skills/railway/environment/references/railpack.md +257 -0
  295. package/skills/railway/environment/references/variables.md +170 -0
  296. package/skills/railway/metrics/SKILL.md +211 -0
  297. package/skills/railway/metrics/references/environment-config.md +183 -0
  298. package/skills/railway/metrics/references/monorepo.md +216 -0
  299. package/skills/railway/metrics/references/railpack.md +257 -0
  300. package/skills/railway/metrics/references/variables.md +170 -0
  301. package/skills/railway/metrics/scripts/railway-api.sh +41 -0
  302. package/skills/railway/new/SKILL.md +489 -0
  303. package/skills/railway/new/references/environment-config.md +183 -0
  304. package/skills/railway/new/references/monorepo.md +216 -0
  305. package/skills/railway/new/references/railpack.md +257 -0
  306. package/skills/railway/new/references/variables.md +170 -0
  307. package/skills/railway/projects/SKILL.md +142 -0
  308. package/skills/railway/projects/references/environment-config.md +183 -0
  309. package/skills/railway/projects/references/monorepo.md +216 -0
  310. package/skills/railway/projects/references/railpack.md +257 -0
  311. package/skills/railway/projects/references/variables.md +170 -0
  312. package/skills/railway/projects/scripts/railway-api.sh +41 -0
  313. package/skills/railway/railway-docs/SKILL.md +47 -0
  314. package/skills/railway/railway-docs/references/environment-config.md +183 -0
  315. package/skills/railway/railway-docs/references/monorepo.md +216 -0
  316. package/skills/railway/railway-docs/references/railpack.md +257 -0
  317. package/skills/railway/railway-docs/references/variables.md +170 -0
  318. package/skills/railway/service/SKILL.md +249 -0
  319. package/skills/railway/service/references/environment-config.md +183 -0
  320. package/skills/railway/service/references/monorepo.md +216 -0
  321. package/skills/railway/service/references/railpack.md +257 -0
  322. package/skills/railway/service/references/variables.md +170 -0
  323. package/skills/railway/service/scripts/railway-api.sh +41 -0
  324. package/skills/railway/status/SKILL.md +91 -0
  325. package/skills/railway/status/references/environment-config.md +183 -0
  326. package/skills/railway/status/references/monorepo.md +216 -0
  327. package/skills/railway/status/references/railpack.md +257 -0
  328. package/skills/railway/status/references/variables.md +170 -0
  329. package/skills/railway/templates/SKILL.md +275 -0
  330. package/skills/railway/templates/references/environment-config.md +183 -0
  331. package/skills/railway/templates/references/monorepo.md +216 -0
  332. package/skills/railway/templates/references/railpack.md +257 -0
  333. package/skills/railway/templates/references/variables.md +170 -0
  334. package/skills/railway/templates/scripts/railway-api.sh +41 -0
  335. package/skills/restart/SKILL.md +70 -0
  336. package/skills/review-pr/SKILL.md +367 -0
  337. package/skills/roi-calculator/SKILL.md +469 -0
  338. package/skills/scan/SKILL.md +232 -0
  339. package/skills/setup/SKILL.md +691 -0
  340. package/skills/share/SKILL.md +211 -0
  341. package/skills/solution-architect/SKILL.md +566 -0
  342. package/skills/sre/SKILL.md +362 -0
  343. package/skills/superpowers/brainstorming/SKILL.md +96 -0
  344. package/skills/superpowers/dispatching-parallel-agents/SKILL.md +180 -0
  345. package/skills/superpowers/executing-plans/SKILL.md +84 -0
  346. package/skills/superpowers/finishing-a-development-branch/SKILL.md +200 -0
  347. package/skills/superpowers/receiving-code-review/SKILL.md +213 -0
  348. package/skills/superpowers/requesting-code-review/SKILL.md +105 -0
  349. package/skills/superpowers/requesting-code-review/code-reviewer.md +146 -0
  350. package/skills/superpowers/subagent-driven-development/SKILL.md +242 -0
  351. package/skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
  352. package/skills/superpowers/subagent-driven-development/implementer-prompt.md +78 -0
  353. package/skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  354. package/skills/superpowers/systematic-debugging/CREATION-LOG.md +119 -0
  355. package/skills/superpowers/systematic-debugging/SKILL.md +296 -0
  356. package/skills/superpowers/systematic-debugging/condition-based-waiting-example.ts +158 -0
  357. package/skills/superpowers/systematic-debugging/condition-based-waiting.md +115 -0
  358. package/skills/superpowers/systematic-debugging/defense-in-depth.md +122 -0
  359. package/skills/superpowers/systematic-debugging/find-polluter.sh +63 -0
  360. package/skills/superpowers/systematic-debugging/root-cause-tracing.md +169 -0
  361. package/skills/superpowers/systematic-debugging/test-academic.md +14 -0
  362. package/skills/superpowers/systematic-debugging/test-pressure-1.md +58 -0
  363. package/skills/superpowers/systematic-debugging/test-pressure-2.md +68 -0
  364. package/skills/superpowers/systematic-debugging/test-pressure-3.md +69 -0
  365. package/skills/superpowers/test-driven-development/SKILL.md +371 -0
  366. package/skills/superpowers/test-driven-development/testing-anti-patterns.md +299 -0
  367. package/skills/superpowers/using-git-worktrees/SKILL.md +218 -0
  368. package/skills/superpowers/using-superpowers/SKILL.md +95 -0
  369. package/skills/superpowers/verification-before-completion/SKILL.md +139 -0
  370. package/skills/superpowers/writing-plans/SKILL.md +116 -0
  371. package/skills/superpowers/writing-skills/SKILL.md +655 -0
  372. package/skills/superpowers/writing-skills/anthropic-best-practices.md +1150 -0
  373. package/skills/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  374. package/skills/superpowers/writing-skills/graphviz-conventions.dot +172 -0
  375. package/skills/superpowers/writing-skills/persuasion-principles.md +187 -0
  376. package/skills/superpowers/writing-skills/render-graphs.js +168 -0
  377. package/skills/superpowers/writing-skills/testing-skills-with-subagents.md +384 -0
  378. package/skills/sync/SKILL.md +188 -0
  379. package/skills/templates/SKILL.md +194 -0
  380. package/skills/welcome/SKILL.md +136 -0
  381. package/skills/wizard/SKILL.md +411 -0
  382. package/templates/CLAUDE.md.managed-block +123 -0
  383. package/templates/CLAUDE.md.template +111 -0
  384. package/templates/consulting/engagement-tracker-template.md +181 -0
  385. package/templates/consulting/executive-summary-template.md +83 -0
  386. package/templates/consulting/maturity-assessment-template.md +182 -0
  387. package/templates/consulting/proposal-template.md +209 -0
  388. package/templates/consulting/roi-model-template.md +139 -0
  389. package/templates/consulting/solution-architecture-template.md +313 -0
  390. package/templates/settings.json +130 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "spark",
3
+ "description": "Project setup and onboarding โ€” calibrate, scan, bootstrap",
4
+ "version": "1.0.0",
5
+ "author": "Arth AI"
6
+ }
@@ -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,16 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/session-bootstrap.sh",
10
+ "timeout": 15
11
+ }
12
+ ]
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -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