@chankov/agent-skills 0.2.0 → 0.3.2

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 (332) hide show
  1. package/.claude/commands/{doctor.md → doctor-agent-skills.md} +1 -1
  2. package/.pi/extensions/agent-skills-update-check/README.md +4 -4
  3. package/.pi/prompts/{doctor.md → doctor-agent-skills.md} +1 -1
  4. package/.versions/0.2.0/.claude/commands/{doctor.md → doctor-agent-skills.md} +1 -1
  5. package/.versions/0.2.0/.pi/extensions/agent-skills-update-check/README.md +4 -4
  6. package/.versions/0.2.0/.pi/prompts/{doctor.md → doctor-agent-skills.md} +1 -1
  7. package/.versions/0.2.0/skills/guided-workspace-setup/SKILL.md +40 -2
  8. package/.versions/0.3.0/.claude/commands/build.md +18 -0
  9. package/.versions/0.3.0/.claude/commands/code-simplify.md +22 -0
  10. package/.versions/0.3.0/.claude/commands/design-agent.md +14 -0
  11. package/.versions/0.3.0/.claude/commands/doctor-agent-skills.md +13 -0
  12. package/.versions/0.3.0/.claude/commands/plan.md +16 -0
  13. package/.versions/0.3.0/.claude/commands/prime.md +22 -0
  14. package/.versions/0.3.0/.claude/commands/review.md +16 -0
  15. package/.versions/0.3.0/.claude/commands/setup-agent-skills.md +19 -0
  16. package/.versions/0.3.0/.claude/commands/ship.md +17 -0
  17. package/.versions/0.3.0/.claude/commands/spec.md +15 -0
  18. package/.versions/0.3.0/.claude/commands/test.md +19 -0
  19. package/.versions/0.3.0/.opencode/commands/as-build.md +17 -0
  20. package/.versions/0.3.0/.opencode/commands/as-code-simplify.md +16 -0
  21. package/.versions/0.3.0/.opencode/commands/as-design-agent.md +15 -0
  22. package/.versions/0.3.0/.opencode/commands/as-doctor-agent-skills.md +11 -0
  23. package/.versions/0.3.0/.opencode/commands/as-plan.md +16 -0
  24. package/.versions/0.3.0/.opencode/commands/as-prime.md +22 -0
  25. package/.versions/0.3.0/.opencode/commands/as-review.md +15 -0
  26. package/.versions/0.3.0/.opencode/commands/as-setup-agent-skills.md +11 -0
  27. package/.versions/0.3.0/.opencode/commands/as-ship.md +16 -0
  28. package/.versions/0.3.0/.opencode/commands/as-spec.md +16 -0
  29. package/.versions/0.3.0/.opencode/commands/as-test.md +21 -0
  30. package/.versions/0.3.0/.pi/agents/agent-chain.yaml +49 -0
  31. package/.versions/0.3.0/.pi/agents/bowser.md +19 -0
  32. package/.versions/0.3.0/.pi/agents/pi-pi/agent-expert.md +98 -0
  33. package/.versions/0.3.0/.pi/agents/pi-pi/cli-expert.md +41 -0
  34. package/.versions/0.3.0/.pi/agents/pi-pi/config-expert.md +63 -0
  35. package/.versions/0.3.0/.pi/agents/pi-pi/ext-expert.md +43 -0
  36. package/.versions/0.3.0/.pi/agents/pi-pi/keybinding-expert.md +134 -0
  37. package/.versions/0.3.0/.pi/agents/pi-pi/pi-orchestrator.md +57 -0
  38. package/.versions/0.3.0/.pi/agents/pi-pi/prompt-expert.md +70 -0
  39. package/.versions/0.3.0/.pi/agents/pi-pi/skill-expert.md +42 -0
  40. package/.versions/0.3.0/.pi/agents/pi-pi/theme-expert.md +40 -0
  41. package/.versions/0.3.0/.pi/agents/pi-pi/tui-expert.md +85 -0
  42. package/.versions/0.3.0/.pi/agents/teams.yaml +31 -0
  43. package/.versions/0.3.0/.pi/damage-control-rules.yaml +278 -0
  44. package/.versions/0.3.0/.pi/extensions/agent-skills-update-check/README.md +58 -0
  45. package/.versions/0.3.0/.pi/extensions/agent-skills-update-check/index.ts +161 -0
  46. package/.versions/0.3.0/.pi/extensions/agent-skills-update-check/package.json +6 -0
  47. package/.versions/0.3.0/.pi/extensions/chrome-devtools-mcp/README.md +39 -0
  48. package/.versions/0.3.0/.pi/extensions/chrome-devtools-mcp/index.ts +61 -0
  49. package/.versions/0.3.0/.pi/extensions/chrome-devtools-mcp/package.json +6 -0
  50. package/.versions/0.3.0/.pi/extensions/compact-and-continue/README.md +42 -0
  51. package/.versions/0.3.0/.pi/extensions/compact-and-continue/index.ts +120 -0
  52. package/.versions/0.3.0/.pi/extensions/compact-and-continue/package.json +6 -0
  53. package/.versions/0.3.0/.pi/extensions/mcp-bridge/README.md +46 -0
  54. package/.versions/0.3.0/.pi/extensions/mcp-bridge/index.ts +206 -0
  55. package/.versions/0.3.0/.pi/extensions/mcp-bridge/package.json +6 -0
  56. package/.versions/0.3.0/.pi/extensions/package-lock.json +1143 -0
  57. package/.versions/0.3.0/.pi/extensions/package.json +9 -0
  58. package/.versions/0.3.0/.pi/harnesses/agent-chain/README.md +37 -0
  59. package/.versions/0.3.0/.pi/harnesses/agent-chain/index.ts +795 -0
  60. package/.versions/0.3.0/.pi/harnesses/agent-chain/package.json +6 -0
  61. package/.versions/0.3.0/.pi/harnesses/agent-team/README.md +38 -0
  62. package/.versions/0.3.0/.pi/harnesses/agent-team/index.ts +732 -0
  63. package/.versions/0.3.0/.pi/harnesses/agent-team/package.json +6 -0
  64. package/.versions/0.3.0/.pi/harnesses/coms/README.md +36 -0
  65. package/.versions/0.3.0/.pi/harnesses/coms/index.ts +1595 -0
  66. package/.versions/0.3.0/.pi/harnesses/coms/package.json +6 -0
  67. package/.versions/0.3.0/.pi/harnesses/coms-net/README.md +46 -0
  68. package/.versions/0.3.0/.pi/harnesses/coms-net/index.ts +1637 -0
  69. package/.versions/0.3.0/.pi/harnesses/coms-net/package.json +6 -0
  70. package/.versions/0.3.0/.pi/harnesses/damage-control/README.md +38 -0
  71. package/.versions/0.3.0/.pi/harnesses/damage-control/index.ts +207 -0
  72. package/.versions/0.3.0/.pi/harnesses/damage-control/package.json +6 -0
  73. package/.versions/0.3.0/.pi/harnesses/damage-control-continue/README.md +37 -0
  74. package/.versions/0.3.0/.pi/harnesses/damage-control-continue/index.ts +234 -0
  75. package/.versions/0.3.0/.pi/harnesses/damage-control-continue/package.json +6 -0
  76. package/.versions/0.3.0/.pi/harnesses/minimal/README.md +27 -0
  77. package/.versions/0.3.0/.pi/harnesses/minimal/index.ts +32 -0
  78. package/.versions/0.3.0/.pi/harnesses/minimal/package.json +6 -0
  79. package/.versions/0.3.0/.pi/harnesses/package-lock.json +35 -0
  80. package/.versions/0.3.0/.pi/harnesses/package.json +9 -0
  81. package/.versions/0.3.0/.pi/harnesses/pi-pi/README.md +39 -0
  82. package/.versions/0.3.0/.pi/harnesses/pi-pi/index.ts +631 -0
  83. package/.versions/0.3.0/.pi/harnesses/pi-pi/package.json +6 -0
  84. package/.versions/0.3.0/.pi/harnesses/purpose-gate/README.md +27 -0
  85. package/.versions/0.3.0/.pi/harnesses/purpose-gate/index.ts +82 -0
  86. package/.versions/0.3.0/.pi/harnesses/purpose-gate/package.json +6 -0
  87. package/.versions/0.3.0/.pi/harnesses/session-replay/README.md +28 -0
  88. package/.versions/0.3.0/.pi/harnesses/session-replay/index.ts +214 -0
  89. package/.versions/0.3.0/.pi/harnesses/session-replay/package.json +6 -0
  90. package/.versions/0.3.0/.pi/harnesses/subagent-widget/README.md +36 -0
  91. package/.versions/0.3.0/.pi/harnesses/subagent-widget/index.ts +479 -0
  92. package/.versions/0.3.0/.pi/harnesses/subagent-widget/package.json +6 -0
  93. package/.versions/0.3.0/.pi/harnesses/system-select/README.md +39 -0
  94. package/.versions/0.3.0/.pi/harnesses/system-select/index.ts +165 -0
  95. package/.versions/0.3.0/.pi/harnesses/system-select/package.json +6 -0
  96. package/.versions/0.3.0/.pi/harnesses/tilldone/README.md +35 -0
  97. package/.versions/0.3.0/.pi/harnesses/tilldone/index.ts +724 -0
  98. package/.versions/0.3.0/.pi/harnesses/tilldone/package.json +6 -0
  99. package/.versions/0.3.0/.pi/harnesses/tool-counter/README.md +31 -0
  100. package/.versions/0.3.0/.pi/harnesses/tool-counter/index.ts +100 -0
  101. package/.versions/0.3.0/.pi/harnesses/tool-counter/package.json +6 -0
  102. package/.versions/0.3.0/.pi/harnesses/tool-counter-widget/README.md +27 -0
  103. package/.versions/0.3.0/.pi/harnesses/tool-counter-widget/index.ts +66 -0
  104. package/.versions/0.3.0/.pi/harnesses/tool-counter-widget/package.json +6 -0
  105. package/.versions/0.3.0/.pi/prompts/build.md +24 -0
  106. package/.versions/0.3.0/.pi/prompts/code-simplify.md +22 -0
  107. package/.versions/0.3.0/.pi/prompts/doctor-agent-skills.md +13 -0
  108. package/.versions/0.3.0/.pi/prompts/plan.md +16 -0
  109. package/.versions/0.3.0/.pi/prompts/review.md +16 -0
  110. package/.versions/0.3.0/.pi/prompts/setup-agent-skills.md +19 -0
  111. package/.versions/0.3.0/.pi/prompts/ship.md +17 -0
  112. package/.versions/0.3.0/.pi/prompts/spec.md +15 -0
  113. package/.versions/0.3.0/.pi/prompts/test.md +19 -0
  114. package/.versions/0.3.0/.pi/skills/bowser/SKILL.md +114 -0
  115. package/.versions/0.3.0/.version +1 -0
  116. package/.versions/0.3.0/agents/builder.md +6 -0
  117. package/.versions/0.3.0/agents/code-reviewer.md +93 -0
  118. package/.versions/0.3.0/agents/documenter.md +6 -0
  119. package/.versions/0.3.0/agents/plan-reviewer.md +22 -0
  120. package/.versions/0.3.0/agents/planner.md +6 -0
  121. package/.versions/0.3.0/agents/scout.md +6 -0
  122. package/.versions/0.3.0/agents/security-auditor.md +97 -0
  123. package/.versions/0.3.0/agents/test-engineer.md +89 -0
  124. package/.versions/0.3.0/hooks/SIMPLIFY-IGNORE.md +90 -0
  125. package/.versions/0.3.0/hooks/hooks.json +14 -0
  126. package/.versions/0.3.0/hooks/session-start.sh +74 -0
  127. package/.versions/0.3.0/hooks/simplify-ignore-test.sh +247 -0
  128. package/.versions/0.3.0/hooks/simplify-ignore.sh +302 -0
  129. package/.versions/0.3.0/references/accessibility-checklist.md +159 -0
  130. package/.versions/0.3.0/references/performance-checklist.md +121 -0
  131. package/.versions/0.3.0/references/prompting-patterns.md +380 -0
  132. package/.versions/0.3.0/references/security-checklist.md +134 -0
  133. package/.versions/0.3.0/references/testing-patterns.md +236 -0
  134. package/.versions/0.3.0/skills/api-and-interface-design/SKILL.md +294 -0
  135. package/.versions/0.3.0/skills/browser-testing-with-devtools/SKILL.md +335 -0
  136. package/.versions/0.3.0/skills/ci-cd-and-automation/SKILL.md +390 -0
  137. package/.versions/0.3.0/skills/code-review-and-quality/SKILL.md +347 -0
  138. package/.versions/0.3.0/skills/code-simplification/SKILL.md +331 -0
  139. package/.versions/0.3.0/skills/context-engineering/SKILL.md +291 -0
  140. package/.versions/0.3.0/skills/debugging-and-error-recovery/SKILL.md +300 -0
  141. package/.versions/0.3.0/skills/deprecation-and-migration/SKILL.md +206 -0
  142. package/.versions/0.3.0/skills/designing-agents/SKILL.md +394 -0
  143. package/.versions/0.3.0/skills/designing-agents/pi-harness-authoring.md +213 -0
  144. package/.versions/0.3.0/skills/documentation-and-adrs/SKILL.md +278 -0
  145. package/.versions/0.3.0/skills/frontend-ui-engineering/SKILL.md +322 -0
  146. package/.versions/0.3.0/skills/git-workflow-and-versioning/SKILL.md +316 -0
  147. package/.versions/0.3.0/skills/guided-workspace-setup/SKILL.md +331 -0
  148. package/.versions/0.3.0/skills/idea-refine/SKILL.md +178 -0
  149. package/.versions/0.3.0/skills/idea-refine/examples.md +238 -0
  150. package/.versions/0.3.0/skills/idea-refine/frameworks.md +99 -0
  151. package/.versions/0.3.0/skills/idea-refine/refinement-criteria.md +113 -0
  152. package/.versions/0.3.0/skills/idea-refine/scripts/idea-refine.sh +15 -0
  153. package/.versions/0.3.0/skills/incremental-implementation/SKILL.md +279 -0
  154. package/.versions/0.3.0/skills/performance-optimization/SKILL.md +350 -0
  155. package/.versions/0.3.0/skills/planning-and-task-breakdown/SKILL.md +237 -0
  156. package/.versions/0.3.0/skills/security-and-hardening/SKILL.md +349 -0
  157. package/.versions/0.3.0/skills/shipping-and-launch/SKILL.md +309 -0
  158. package/.versions/0.3.0/skills/source-driven-development/SKILL.md +194 -0
  159. package/.versions/0.3.0/skills/spec-driven-development/SKILL.md +237 -0
  160. package/.versions/0.3.0/skills/test-driven-development/SKILL.md +379 -0
  161. package/.versions/0.3.0/skills/using-agent-skills/SKILL.md +176 -0
  162. package/.versions/0.3.2/.claude/commands/build.md +18 -0
  163. package/.versions/0.3.2/.claude/commands/code-simplify.md +22 -0
  164. package/.versions/0.3.2/.claude/commands/design-agent.md +14 -0
  165. package/.versions/0.3.2/.claude/commands/doctor-agent-skills.md +13 -0
  166. package/.versions/0.3.2/.claude/commands/plan.md +16 -0
  167. package/.versions/0.3.2/.claude/commands/prime.md +22 -0
  168. package/.versions/0.3.2/.claude/commands/review.md +16 -0
  169. package/.versions/0.3.2/.claude/commands/setup-agent-skills.md +19 -0
  170. package/.versions/0.3.2/.claude/commands/ship.md +17 -0
  171. package/.versions/0.3.2/.claude/commands/spec.md +15 -0
  172. package/.versions/0.3.2/.claude/commands/test.md +19 -0
  173. package/.versions/0.3.2/.opencode/commands/as-build.md +17 -0
  174. package/.versions/0.3.2/.opencode/commands/as-code-simplify.md +16 -0
  175. package/.versions/0.3.2/.opencode/commands/as-design-agent.md +15 -0
  176. package/.versions/0.3.2/.opencode/commands/as-doctor-agent-skills.md +11 -0
  177. package/.versions/0.3.2/.opencode/commands/as-plan.md +16 -0
  178. package/.versions/0.3.2/.opencode/commands/as-prime.md +22 -0
  179. package/.versions/0.3.2/.opencode/commands/as-review.md +15 -0
  180. package/.versions/0.3.2/.opencode/commands/as-setup-agent-skills.md +11 -0
  181. package/.versions/0.3.2/.opencode/commands/as-ship.md +16 -0
  182. package/.versions/0.3.2/.opencode/commands/as-spec.md +16 -0
  183. package/.versions/0.3.2/.opencode/commands/as-test.md +21 -0
  184. package/.versions/0.3.2/.pi/agents/agent-chain.yaml +49 -0
  185. package/.versions/0.3.2/.pi/agents/bowser.md +19 -0
  186. package/.versions/0.3.2/.pi/agents/pi-pi/agent-expert.md +98 -0
  187. package/.versions/0.3.2/.pi/agents/pi-pi/cli-expert.md +41 -0
  188. package/.versions/0.3.2/.pi/agents/pi-pi/config-expert.md +63 -0
  189. package/.versions/0.3.2/.pi/agents/pi-pi/ext-expert.md +43 -0
  190. package/.versions/0.3.2/.pi/agents/pi-pi/keybinding-expert.md +134 -0
  191. package/.versions/0.3.2/.pi/agents/pi-pi/pi-orchestrator.md +57 -0
  192. package/.versions/0.3.2/.pi/agents/pi-pi/prompt-expert.md +70 -0
  193. package/.versions/0.3.2/.pi/agents/pi-pi/skill-expert.md +42 -0
  194. package/.versions/0.3.2/.pi/agents/pi-pi/theme-expert.md +40 -0
  195. package/.versions/0.3.2/.pi/agents/pi-pi/tui-expert.md +85 -0
  196. package/.versions/0.3.2/.pi/agents/teams.yaml +31 -0
  197. package/.versions/0.3.2/.pi/damage-control-rules.yaml +278 -0
  198. package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/README.md +58 -0
  199. package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/index.ts +161 -0
  200. package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/package.json +6 -0
  201. package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/README.md +39 -0
  202. package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/index.ts +61 -0
  203. package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/package.json +6 -0
  204. package/.versions/0.3.2/.pi/extensions/compact-and-continue/README.md +42 -0
  205. package/.versions/0.3.2/.pi/extensions/compact-and-continue/index.ts +120 -0
  206. package/.versions/0.3.2/.pi/extensions/compact-and-continue/package.json +6 -0
  207. package/.versions/0.3.2/.pi/extensions/mcp-bridge/README.md +46 -0
  208. package/.versions/0.3.2/.pi/extensions/mcp-bridge/index.ts +206 -0
  209. package/.versions/0.3.2/.pi/extensions/mcp-bridge/package.json +6 -0
  210. package/.versions/0.3.2/.pi/extensions/package-lock.json +1143 -0
  211. package/.versions/0.3.2/.pi/extensions/package.json +9 -0
  212. package/.versions/0.3.2/.pi/harnesses/agent-chain/README.md +37 -0
  213. package/.versions/0.3.2/.pi/harnesses/agent-chain/index.ts +795 -0
  214. package/.versions/0.3.2/.pi/harnesses/agent-chain/package.json +6 -0
  215. package/.versions/0.3.2/.pi/harnesses/agent-team/README.md +38 -0
  216. package/.versions/0.3.2/.pi/harnesses/agent-team/index.ts +732 -0
  217. package/.versions/0.3.2/.pi/harnesses/agent-team/package.json +6 -0
  218. package/.versions/0.3.2/.pi/harnesses/coms/README.md +36 -0
  219. package/.versions/0.3.2/.pi/harnesses/coms/index.ts +1595 -0
  220. package/.versions/0.3.2/.pi/harnesses/coms/package.json +6 -0
  221. package/.versions/0.3.2/.pi/harnesses/coms-net/README.md +46 -0
  222. package/.versions/0.3.2/.pi/harnesses/coms-net/index.ts +1637 -0
  223. package/.versions/0.3.2/.pi/harnesses/coms-net/package.json +6 -0
  224. package/.versions/0.3.2/.pi/harnesses/damage-control/README.md +38 -0
  225. package/.versions/0.3.2/.pi/harnesses/damage-control/index.ts +207 -0
  226. package/.versions/0.3.2/.pi/harnesses/damage-control/package.json +6 -0
  227. package/.versions/0.3.2/.pi/harnesses/damage-control-continue/README.md +37 -0
  228. package/.versions/0.3.2/.pi/harnesses/damage-control-continue/index.ts +234 -0
  229. package/.versions/0.3.2/.pi/harnesses/damage-control-continue/package.json +6 -0
  230. package/.versions/0.3.2/.pi/harnesses/minimal/README.md +27 -0
  231. package/.versions/0.3.2/.pi/harnesses/minimal/index.ts +32 -0
  232. package/.versions/0.3.2/.pi/harnesses/minimal/package.json +6 -0
  233. package/.versions/0.3.2/.pi/harnesses/package-lock.json +35 -0
  234. package/.versions/0.3.2/.pi/harnesses/package.json +9 -0
  235. package/.versions/0.3.2/.pi/harnesses/pi-pi/README.md +39 -0
  236. package/.versions/0.3.2/.pi/harnesses/pi-pi/index.ts +631 -0
  237. package/.versions/0.3.2/.pi/harnesses/pi-pi/package.json +6 -0
  238. package/.versions/0.3.2/.pi/harnesses/purpose-gate/README.md +27 -0
  239. package/.versions/0.3.2/.pi/harnesses/purpose-gate/index.ts +82 -0
  240. package/.versions/0.3.2/.pi/harnesses/purpose-gate/package.json +6 -0
  241. package/.versions/0.3.2/.pi/harnesses/session-replay/README.md +28 -0
  242. package/.versions/0.3.2/.pi/harnesses/session-replay/index.ts +214 -0
  243. package/.versions/0.3.2/.pi/harnesses/session-replay/package.json +6 -0
  244. package/.versions/0.3.2/.pi/harnesses/subagent-widget/README.md +36 -0
  245. package/.versions/0.3.2/.pi/harnesses/subagent-widget/index.ts +479 -0
  246. package/.versions/0.3.2/.pi/harnesses/subagent-widget/package.json +6 -0
  247. package/.versions/0.3.2/.pi/harnesses/system-select/README.md +39 -0
  248. package/.versions/0.3.2/.pi/harnesses/system-select/index.ts +165 -0
  249. package/.versions/0.3.2/.pi/harnesses/system-select/package.json +6 -0
  250. package/.versions/0.3.2/.pi/harnesses/tilldone/README.md +35 -0
  251. package/.versions/0.3.2/.pi/harnesses/tilldone/index.ts +724 -0
  252. package/.versions/0.3.2/.pi/harnesses/tilldone/package.json +6 -0
  253. package/.versions/0.3.2/.pi/harnesses/tool-counter/README.md +31 -0
  254. package/.versions/0.3.2/.pi/harnesses/tool-counter/index.ts +100 -0
  255. package/.versions/0.3.2/.pi/harnesses/tool-counter/package.json +6 -0
  256. package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/README.md +27 -0
  257. package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/index.ts +66 -0
  258. package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/package.json +6 -0
  259. package/.versions/0.3.2/.pi/prompts/build.md +24 -0
  260. package/.versions/0.3.2/.pi/prompts/code-simplify.md +22 -0
  261. package/.versions/0.3.2/.pi/prompts/doctor-agent-skills.md +13 -0
  262. package/.versions/0.3.2/.pi/prompts/plan.md +16 -0
  263. package/.versions/0.3.2/.pi/prompts/review.md +16 -0
  264. package/.versions/0.3.2/.pi/prompts/setup-agent-skills.md +19 -0
  265. package/.versions/0.3.2/.pi/prompts/ship.md +17 -0
  266. package/.versions/0.3.2/.pi/prompts/spec.md +15 -0
  267. package/.versions/0.3.2/.pi/prompts/test.md +19 -0
  268. package/.versions/0.3.2/.pi/skills/bowser/SKILL.md +114 -0
  269. package/.versions/0.3.2/.version +1 -0
  270. package/.versions/0.3.2/agents/builder.md +6 -0
  271. package/.versions/0.3.2/agents/code-reviewer.md +93 -0
  272. package/.versions/0.3.2/agents/documenter.md +6 -0
  273. package/.versions/0.3.2/agents/plan-reviewer.md +22 -0
  274. package/.versions/0.3.2/agents/planner.md +6 -0
  275. package/.versions/0.3.2/agents/scout.md +6 -0
  276. package/.versions/0.3.2/agents/security-auditor.md +97 -0
  277. package/.versions/0.3.2/agents/test-engineer.md +89 -0
  278. package/.versions/0.3.2/hooks/SIMPLIFY-IGNORE.md +90 -0
  279. package/.versions/0.3.2/hooks/hooks.json +14 -0
  280. package/.versions/0.3.2/hooks/session-start.sh +74 -0
  281. package/.versions/0.3.2/hooks/simplify-ignore-test.sh +247 -0
  282. package/.versions/0.3.2/hooks/simplify-ignore.sh +302 -0
  283. package/.versions/0.3.2/references/accessibility-checklist.md +159 -0
  284. package/.versions/0.3.2/references/performance-checklist.md +121 -0
  285. package/.versions/0.3.2/references/prompting-patterns.md +380 -0
  286. package/.versions/0.3.2/references/security-checklist.md +134 -0
  287. package/.versions/0.3.2/references/testing-patterns.md +236 -0
  288. package/.versions/0.3.2/skills/api-and-interface-design/SKILL.md +294 -0
  289. package/.versions/0.3.2/skills/browser-testing-with-devtools/SKILL.md +335 -0
  290. package/.versions/0.3.2/skills/ci-cd-and-automation/SKILL.md +390 -0
  291. package/.versions/0.3.2/skills/code-review-and-quality/SKILL.md +347 -0
  292. package/.versions/0.3.2/skills/code-simplification/SKILL.md +331 -0
  293. package/.versions/0.3.2/skills/context-engineering/SKILL.md +291 -0
  294. package/.versions/0.3.2/skills/debugging-and-error-recovery/SKILL.md +300 -0
  295. package/.versions/0.3.2/skills/deprecation-and-migration/SKILL.md +206 -0
  296. package/.versions/0.3.2/skills/designing-agents/SKILL.md +394 -0
  297. package/.versions/0.3.2/skills/designing-agents/pi-harness-authoring.md +213 -0
  298. package/.versions/0.3.2/skills/documentation-and-adrs/SKILL.md +278 -0
  299. package/.versions/0.3.2/skills/frontend-ui-engineering/SKILL.md +322 -0
  300. package/.versions/0.3.2/skills/git-workflow-and-versioning/SKILL.md +316 -0
  301. package/.versions/0.3.2/skills/guided-workspace-setup/SKILL.md +345 -0
  302. package/.versions/0.3.2/skills/idea-refine/SKILL.md +178 -0
  303. package/.versions/0.3.2/skills/idea-refine/examples.md +238 -0
  304. package/.versions/0.3.2/skills/idea-refine/frameworks.md +99 -0
  305. package/.versions/0.3.2/skills/idea-refine/refinement-criteria.md +113 -0
  306. package/.versions/0.3.2/skills/idea-refine/scripts/idea-refine.sh +15 -0
  307. package/.versions/0.3.2/skills/incremental-implementation/SKILL.md +279 -0
  308. package/.versions/0.3.2/skills/performance-optimization/SKILL.md +350 -0
  309. package/.versions/0.3.2/skills/planning-and-task-breakdown/SKILL.md +237 -0
  310. package/.versions/0.3.2/skills/security-and-hardening/SKILL.md +349 -0
  311. package/.versions/0.3.2/skills/shipping-and-launch/SKILL.md +309 -0
  312. package/.versions/0.3.2/skills/source-driven-development/SKILL.md +194 -0
  313. package/.versions/0.3.2/skills/spec-driven-development/SKILL.md +237 -0
  314. package/.versions/0.3.2/skills/test-driven-development/SKILL.md +379 -0
  315. package/.versions/0.3.2/skills/using-agent-skills/SKILL.md +176 -0
  316. package/CHANGELOG.md +108 -0
  317. package/README.md +5 -5
  318. package/bin/cli.js +100 -24
  319. package/bin/lib/bootstrap.js +309 -0
  320. package/bin/lib/doctor.js +1 -1
  321. package/docs/getting-started.md +2 -2
  322. package/docs/npm-install.md +64 -11
  323. package/package.json +1 -1
  324. package/skills/guided-workspace-setup/SKILL.md +56 -4
  325. /package/.claude/commands/{setup.md → setup-agent-skills.md} +0 -0
  326. /package/.opencode/commands/{as-doctor.md → as-doctor-agent-skills.md} +0 -0
  327. /package/.opencode/commands/{as-setup.md → as-setup-agent-skills.md} +0 -0
  328. /package/.pi/prompts/{setup.md → setup-agent-skills.md} +0 -0
  329. /package/.versions/0.2.0/.claude/commands/{setup.md → setup-agent-skills.md} +0 -0
  330. /package/.versions/0.2.0/.opencode/commands/{as-doctor.md → as-doctor-agent-skills.md} +0 -0
  331. /package/.versions/0.2.0/.opencode/commands/{as-setup.md → as-setup-agent-skills.md} +0 -0
  332. /package/.versions/0.2.0/.pi/prompts/{setup.md → setup-agent-skills.md} +0 -0
@@ -0,0 +1,309 @@
1
+ // bootstrap.js — drop the minimum installer artifacts a coding agent needs
2
+ // to recognize `/setup-agent-skills` and `/doctor-agent-skills`.
3
+ //
4
+ // The CLI's `init` calls this before the handoff message. Without it, a
5
+ // fresh workspace has no `.claude/commands/setup-agent-skills.md`, `.pi/prompts/setup-agent-skills.md`,
6
+ // etc., so the agent has no idea what `/setup-agent-skills` is and the whole hand-off
7
+ // breaks silently.
8
+ //
9
+ // What we bootstrap (per agent):
10
+ // - The `setup` slash command (so the user can invoke it)
11
+ // - The `doctor` slash command (same)
12
+ // - The `guided-workspace-setup` skill body (the slash command says
13
+ // "load this skill" — the skill must be present somewhere the agent
14
+ // auto-discovers)
15
+ //
16
+ // What we do NOT bootstrap:
17
+ // - Any of the user-facing skills (spec-driven-development,
18
+ // test-driven-development, …). Those are picked by the user inside
19
+ // /setup-agent-skills, by design. The CLI never decides the workspace's catalogue
20
+ // for the user.
21
+ //
22
+ // Method:
23
+ // `copy` — safe default; works for npx caches that may be cleaned
24
+ // `symlink` — leaner; only safe when the source root is stable
25
+ // (global install / git clone). Warning printed if the
26
+ // source path looks like an npx cache.
27
+
28
+ import { existsSync, mkdirSync, copyFileSync, symlinkSync, unlinkSync, lstatSync, rmSync, readdirSync, rmdirSync, writeFileSync, readFileSync } from "node:fs";
29
+ import { dirname, join, relative } from "node:path";
30
+
31
+ // Marker file the skill reads to find the authoritative source root. Written
32
+ // by bootstrap, deleted by cleanupInstaller. Without this, the skill would
33
+ // have to guess the source root from its own SKILL.md location — but bootstrap
34
+ // copies SKILL.md into the workspace, so that heuristic always lies.
35
+ const BOOTSTRAP_MARKER = join(".ai", ".agent-skills-bootstrap.json");
36
+
37
+ function writeMarker({ workspace, sourceRoot, agent, method }) {
38
+ const path = join(workspace, BOOTSTRAP_MARKER);
39
+ const version = readPackageVersion(sourceRoot);
40
+ const payload = {
41
+ sourceRoot,
42
+ version,
43
+ agent,
44
+ method,
45
+ bootstrappedAt: new Date().toISOString(),
46
+ _comment: "Written by `npx @chankov/agent-skills init`. Read by the guided-workspace-setup skill to locate the source package. Safe to delete; will be regenerated on next init.",
47
+ };
48
+ mkdirSync(dirname(path), { recursive: true });
49
+ writeFileSync(path, JSON.stringify(payload, null, 2) + "\n", "utf8");
50
+ return path;
51
+ }
52
+
53
+ function readPackageVersion(sourceRoot) {
54
+ try {
55
+ const pkg = JSON.parse(readFileSync(join(sourceRoot, "package.json"), "utf8"));
56
+ return pkg.version;
57
+ } catch { return null; }
58
+ }
59
+
60
+ // (agent → list of {kind, src, dest}) — kind is just for the report.
61
+ //
62
+ // All installer slash commands are namespaced with `-agent-skills` so they
63
+ // don't collide with workspace-defined or other-tool slash commands. The
64
+ // short names (setup, doctor, as-setup, as-doctor) were used in 0.2.0 and
65
+ // earlier — cleanupLegacyNames() removes those if found.
66
+ function plan({ agent, sourceRoot, workspace }) {
67
+ const skillSrc = join(sourceRoot, "skills", "guided-workspace-setup", "SKILL.md");
68
+
69
+ switch (agent) {
70
+ case "claude-code":
71
+ return [
72
+ { kind: "command", src: join(sourceRoot, ".claude/commands/setup-agent-skills.md"),
73
+ dest: join(workspace, ".claude/commands/setup-agent-skills.md") },
74
+ { kind: "command", src: join(sourceRoot, ".claude/commands/doctor-agent-skills.md"),
75
+ dest: join(workspace, ".claude/commands/doctor-agent-skills.md") },
76
+ { kind: "skill", src: skillSrc,
77
+ dest: join(workspace, ".claude/skills/guided-workspace-setup/SKILL.md") },
78
+ ];
79
+
80
+ case "pi":
81
+ return [
82
+ { kind: "prompt", src: join(sourceRoot, ".pi/prompts/setup-agent-skills.md"),
83
+ dest: join(workspace, ".pi/prompts/setup-agent-skills.md") },
84
+ { kind: "prompt", src: join(sourceRoot, ".pi/prompts/doctor-agent-skills.md"),
85
+ dest: join(workspace, ".pi/prompts/doctor-agent-skills.md") },
86
+ // pi auto-discovers skills from .pi/skills/ and .agents/skills/ —
87
+ // we use .pi/skills/ to avoid polluting a shared .agents/ dir if
88
+ // the user has other tools there.
89
+ { kind: "skill", src: skillSrc,
90
+ dest: join(workspace, ".pi/skills/guided-workspace-setup/SKILL.md") },
91
+ ];
92
+
93
+ case "opencode":
94
+ // OpenCode discovers skills + commands from ~/.config/opencode/ (global)
95
+ // and references AGENTS.md. A project-local bootstrap is awkward — we
96
+ // drop the command file into .opencode/commands/ (which OpenCode does
97
+ // load from the project) and the skill alongside it, then flag the
98
+ // AGENTS.md gap for the user.
99
+ return [
100
+ { kind: "command", src: join(sourceRoot, ".opencode/commands/as-setup-agent-skills.md"),
101
+ dest: join(workspace, ".opencode/commands/as-setup-agent-skills.md") },
102
+ { kind: "command", src: join(sourceRoot, ".opencode/commands/as-doctor-agent-skills.md"),
103
+ dest: join(workspace, ".opencode/commands/as-doctor-agent-skills.md") },
104
+ { kind: "skill", src: skillSrc,
105
+ dest: join(workspace, ".opencode/skills/guided-workspace-setup/SKILL.md") },
106
+ ];
107
+
108
+ default:
109
+ throw new Error(`bootstrap: unknown agent "${agent}"`);
110
+ }
111
+ }
112
+
113
+ // Files that were the bootstrap targets in 0.2.0 and earlier (pre-rename).
114
+ // Removed during bootstrap so a workspace upgraded from 0.2.0 doesn't end
115
+ // up with both the old and new slash commands.
116
+ function legacyPaths({ agent, workspace }) {
117
+ switch (agent) {
118
+ case "claude-code":
119
+ return [
120
+ join(workspace, ".claude/commands/setup.md"),
121
+ join(workspace, ".claude/commands/doctor.md"),
122
+ ];
123
+ case "pi":
124
+ return [
125
+ join(workspace, ".pi/prompts/setup.md"),
126
+ join(workspace, ".pi/prompts/doctor.md"),
127
+ ];
128
+ case "opencode":
129
+ return [
130
+ join(workspace, ".opencode/commands/as-setup.md"),
131
+ join(workspace, ".opencode/commands/as-doctor.md"),
132
+ ];
133
+ default:
134
+ return [];
135
+ }
136
+ }
137
+
138
+ /**
139
+ * Run the bootstrap.
140
+ *
141
+ * @param {object} opts
142
+ * @param {string} opts.agent claude-code | opencode | pi
143
+ * @param {string} opts.sourceRoot Absolute path to the installed package
144
+ * @param {string} opts.workspace Absolute path to the target workspace
145
+ * @param {"copy"|"symlink"} opts.method
146
+ * @param {boolean} [opts.dryRun]
147
+ * @returns {{written:Array, skipped:Array, warnings:Array}}
148
+ */
149
+ export function bootstrap({ agent, sourceRoot, workspace, method, dryRun = false }) {
150
+ const items = plan({ agent, sourceRoot, workspace });
151
+ const written = [], skipped = [], removed = [], warnings = [];
152
+
153
+ // Warn if the user asked for symlink against an unstable source.
154
+ if (method === "symlink" && /\/\.npm\/_npx\//.test(sourceRoot)) {
155
+ warnings.push(
156
+ "--method symlink against an npx cache path: links will break when " +
157
+ "the cache is cleaned. Consider --method copy or install globally " +
158
+ "with `npm install -g @chankov/agent-skills`.",
159
+ );
160
+ }
161
+
162
+ // Clean up pre-0.3.0 file names if present — they were renamed to
163
+ // *-agent-skills so they don't collide with other slash commands.
164
+ for (const oldPath of legacyPaths({ agent, workspace })) {
165
+ if (!existsSync(oldPath) && !isSymlink(oldPath)) continue;
166
+ if (dryRun) {
167
+ removed.push(oldPath);
168
+ continue;
169
+ }
170
+ try {
171
+ unlinkSync(oldPath);
172
+ removed.push(oldPath);
173
+ } catch (err) {
174
+ warnings.push(`could not remove legacy file ${relative(workspace, oldPath)}: ${err.message}`);
175
+ }
176
+ }
177
+
178
+ for (const item of items) {
179
+ if (!existsSync(item.src)) {
180
+ warnings.push(`missing source: ${relative(sourceRoot, item.src)} (skipping ${item.kind})`);
181
+ continue;
182
+ }
183
+
184
+ if (dryRun) {
185
+ written.push({ ...item, method });
186
+ continue;
187
+ }
188
+
189
+ try {
190
+ mkdirSync(dirname(item.dest), { recursive: true });
191
+
192
+ // Always replace — the bootstrap is installer scaffolding, not user
193
+ // data. If we left it stale, an upgraded package would still hand off
194
+ // to the old /setup-agent-skills command. Step 6 of guided-workspace-setup explicitly
195
+ // never offers these files in the install menu, so we are the only
196
+ // mechanism that refreshes them.
197
+ if (existsSync(item.dest) || isSymlink(item.dest)) {
198
+ unlinkSync(item.dest);
199
+ }
200
+
201
+ if (method === "symlink") {
202
+ symlinkSync(item.src, item.dest);
203
+ } else {
204
+ // copyFileSync handles plain files; for the SKILL.md case the source
205
+ // may have sibling support files in some skills — but
206
+ // guided-workspace-setup is a single-file skill, so copyFileSync is
207
+ // fine. Switch to cpSync if that ever changes.
208
+ copyFileSync(item.src, item.dest);
209
+ }
210
+ written.push({ ...item, method });
211
+ } catch (err) {
212
+ skipped.push({ ...item, error: err.message });
213
+ }
214
+ }
215
+
216
+ // Write the marker file as the LAST step — only after all the bootstrap
217
+ // files landed successfully. If the marker exists, the skill trusts it
218
+ // absolutely; if it does not, the skill falls back to safer paths.
219
+ if (!dryRun && written.length > 0) {
220
+ try {
221
+ const markerPath = writeMarker({ workspace, sourceRoot, agent, method });
222
+ written.push({ kind: "marker", dest: markerPath, method: "write" });
223
+ } catch (err) {
224
+ warnings.push(`could not write bootstrap marker: ${err.message}`);
225
+ }
226
+ } else if (dryRun) {
227
+ written.push({ kind: "marker", dest: join(workspace, BOOTSTRAP_MARKER), method: "write" });
228
+ }
229
+
230
+ return { written, skipped, removed, warnings };
231
+ }
232
+
233
+ /**
234
+ * Remove every bootstrap artifact this module knows how to write. Called
235
+ * by guided-workspace-setup at the end of Step 10 unless the user chose
236
+ * to keep the installer commands. After cleanup, the only way back to
237
+ * /setup-agent-skills is to re-run `npx @chankov/agent-skills init`.
238
+ *
239
+ * The same `agent` value must be supplied that was used at bootstrap time —
240
+ * we don't have a tracking file, so we delete based on the plan map.
241
+ *
242
+ * @param {object} opts
243
+ * @param {string} opts.agent
244
+ * @param {string} opts.workspace
245
+ * @param {boolean} [opts.dryRun]
246
+ * @returns {{removed:string[], kept:string[], warnings:string[]}}
247
+ */
248
+ export function cleanupInstaller({ agent, workspace, dryRun = false }) {
249
+ const planned = plan({ agent, sourceRoot: workspace, workspace });
250
+ const removed = [], kept = [], warnings = [];
251
+
252
+ // Marker file goes too — it pointed at a source root that no longer
253
+ // matters once the install is done.
254
+ const markerPath = join(workspace, BOOTSTRAP_MARKER);
255
+ if (existsSync(markerPath)) {
256
+ if (dryRun) {
257
+ removed.push(markerPath);
258
+ } else {
259
+ try { unlinkSync(markerPath); removed.push(markerPath); }
260
+ catch (err) { warnings.push(`could not remove ${relative(workspace, markerPath)}: ${err.message}`); }
261
+ }
262
+ }
263
+
264
+ for (const item of planned) {
265
+ if (!existsSync(item.dest) && !isSymlink(item.dest)) {
266
+ kept.push(item.dest); // already gone — count it as a no-op, not an error
267
+ continue;
268
+ }
269
+ if (dryRun) {
270
+ removed.push(item.dest);
271
+ continue;
272
+ }
273
+ try {
274
+ const lst = lstatSync(item.dest);
275
+ if (lst.isDirectory() && !lst.isSymbolicLink()) {
276
+ rmSync(item.dest, { recursive: true });
277
+ } else {
278
+ unlinkSync(item.dest);
279
+ }
280
+ removed.push(item.dest);
281
+
282
+ // If we removed the only file in a parent directory we created
283
+ // (.claude/skills/guided-workspace-setup/), prune the directory too.
284
+ pruneEmptyDirsUpTo(dirname(item.dest), workspace);
285
+ } catch (err) {
286
+ warnings.push(`could not remove ${relative(workspace, item.dest)}: ${err.message}`);
287
+ }
288
+ }
289
+
290
+ return { removed, kept, warnings };
291
+ }
292
+
293
+ function pruneEmptyDirsUpTo(dir, workspace) {
294
+ // Walk upward removing empty parent dirs until we hit a non-empty one or
295
+ // the workspace root. Never delete the workspace itself.
296
+ try {
297
+ while (dir !== workspace && dir.startsWith(workspace)) {
298
+ const entries = readdirSync(dir);
299
+ if (entries.length > 0) return;
300
+ rmdirSync(dir);
301
+ dir = dirname(dir);
302
+ }
303
+ } catch { /* prune is best-effort */ }
304
+ }
305
+
306
+ function isSymlink(path) {
307
+ try { return lstatSync(path).isSymbolicLink(); }
308
+ catch { return false; }
309
+ }
package/bin/lib/doctor.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // Doctor scan — deterministic preflight extracted from
2
2
  // guided-workspace-setup Step 5. Both `agent-skills doctor` (CLI) and the
3
- // `/doctor` slash command call into this so behaviour cannot drift.
3
+ // `/doctor-agent-skills` slash command call into this so behaviour cannot drift.
4
4
  //
5
5
  // Two classes of findings:
6
6
  // 1. Broken symlinks — links whose source has been moved, renamed, or deleted
@@ -14,7 +14,7 @@ Each skill is a Markdown file (`SKILL.md`) that describes a specific engineering
14
14
  |---|---|---|
15
15
  | **Most users** — you want to use the skills in your projects | `npx @chankov/agent-skills init` | One command; semver updates; cross-platform; no source dir to babysit. See [docs/npm-install.md](npm-install.md). |
16
16
  | **Claude Code users** — you live in Claude Code and want plugin-managed updates | `/plugin marketplace add chankov/agent-skills` | Best UX inside Claude Code; marketplace handles the lifecycle. |
17
- | **Skill authors / contributors** — you want to edit the skills and have changes flow into every connected workspace | `git clone` + `symlink` mode in `/setup` | Edit-in-place; every connected workspace sees the change instantly. |
17
+ | **Skill authors / contributors** — you want to edit the skills and have changes flow into every connected workspace | `git clone` + `symlink` mode in `/setup-agent-skills` | Edit-in-place; every connected workspace sees the change instantly. |
18
18
 
19
19
  All three converge on the same `guided-workspace-setup` skill — they only differ in how the source files reach your workspace. None is being deprecated.
20
20
 
@@ -124,7 +124,7 @@ The `.claude/commands/` directory contains slash commands for Claude Code:
124
124
 
125
125
  | Command | Skill Invoked |
126
126
  |---------|---------------|
127
- | `/setup` | guided-workspace-setup |
127
+ | `/setup-agent-skills` | guided-workspace-setup |
128
128
  | `/spec` | spec-driven-development |
129
129
  | `/plan` | planning-and-task-breakdown |
130
130
  | `/build` | incremental-implementation + test-driven-development |
@@ -31,18 +31,71 @@ So:
31
31
  # In the workspace you want to configure:
32
32
  npx @chankov/agent-skills init
33
33
  # Then open your coding agent in this directory and run:
34
- # /setup
34
+ # /setup-agent-skills
35
35
  ```
36
36
 
37
37
  That's it. `npx` fetches the package, the CLI detects your coding agent and
38
- prints the next-step command, and `/setup` runs the full guided install
38
+ prints the next-step command, and `/setup-agent-skills` runs the full guided install
39
39
  inside your agent.
40
40
 
41
41
  ## Commands
42
42
 
43
43
  ### `npx @chankov/agent-skills init`
44
44
 
45
- Materializes the package and hands off to `/setup`.
45
+ Materializes the package, **bootstraps the installer artifacts** into the
46
+ workspace (so the agent has a `/setup-agent-skills` and `/doctor-agent-skills` command to invoke),
47
+ and hands off to `/setup-agent-skills`.
48
+
49
+ What `init` writes per agent:
50
+
51
+ | Agent | Files written to the workspace |
52
+ |---|---|
53
+ | `claude-code` | `.claude/commands/setup-agent-skills.md`, `.claude/commands/doctor-agent-skills.md`, `.claude/skills/guided-workspace-setup/SKILL.md` |
54
+ | `pi` | `.pi/prompts/setup-agent-skills.md`, `.pi/prompts/doctor-agent-skills.md`, `.pi/skills/guided-workspace-setup/SKILL.md` |
55
+ | `opencode` | `.opencode/commands/as-setup-agent-skills.md`, `.opencode/commands/as-doctor-agent-skills.md`, `.opencode/skills/guided-workspace-setup/SKILL.md` |
56
+
57
+ These are **just the plumbing** — the slash commands, plus the skill they
58
+ invoke. The actual catalogue (spec-driven-development, code-reviewer,
59
+ test-engineer, pi extensions, …) is picked by you inside `/setup-agent-skills`. Re-run
60
+ `init` to refresh the plumbing after a package upgrade; bootstrap files
61
+ are always overwritten because they're scaffolding, not user data.
62
+
63
+ After `/setup-agent-skills` finishes its install pass, **the bootstrap files
64
+ are removed by default** so they don't clutter your agent's slash-command
65
+ list. Re-run `npx @chankov/agent-skills init` whenever you want
66
+ `/setup-agent-skills` back. To keep them in place across runs, reply `keep`
67
+ to the Step 9 confirmation prompt — the skill will record
68
+ `keep-installer: true` in `.ai/agent-skills-setup.md`.
69
+
70
+ ### How the skill finds the source package
71
+
72
+ `init` writes one extra file alongside the bootstrap: `.ai/.agent-skills-bootstrap.json`.
73
+ This is the **authoritative** record of where the npm package lives:
74
+
75
+ ```json
76
+ {
77
+ "sourceRoot": "/home/you/.npm/_npx/<hash>/node_modules/@chankov/agent-skills",
78
+ "version": "0.3.0",
79
+ "agent": "pi",
80
+ "method": "copy",
81
+ "bootstrappedAt": "2026-05-24T..."
82
+ }
83
+ ```
84
+
85
+ When `/setup-agent-skills` runs inside your agent, it reads this marker
86
+ *first* to find the source package. This matters on dev machines where you
87
+ may also have a git clone of `agent-skills` elsewhere — the marker prevents
88
+ the skill from accidentally using that clone instead of the version the
89
+ user just installed via npm.
90
+
91
+ If the marker is missing or its `sourceRoot` no longer exists (e.g. npx
92
+ cleaned its cache), the skill **asks you explicitly** for the path. It
93
+ never scans your filesystem for other agent-skills repos — that would
94
+ silently pick up forks, stale checkouts, or dev clones that aren't what
95
+ you installed.
96
+
97
+ The marker is removed by the same Step 10b cleanup that removes the
98
+ slash commands.
46
99
 
47
100
  | Flag | Default | Purpose |
48
101
  |------|---------|---------|
@@ -60,7 +113,7 @@ npx @chankov/agent-skills init --workspace ~/projects/foo --method symlink
60
113
 
61
114
  Deterministic preflight scan — walks every install-target directory, lists
62
115
  broken symlinks and stale persona references, and offers fixes. Same scan
63
- that `/doctor` runs inside the agent.
116
+ that `/doctor-agent-skills` runs inside the agent.
64
117
 
65
118
  | Flag | Default | Purpose |
66
119
  |------|---------|---------|
@@ -78,13 +131,13 @@ npx @chankov/agent-skills doctor -y
78
131
  Reads the workspace's `.ai/agent-skills-setup.md`, compares the recorded
79
132
  package version against the installed package version, and prints the next
80
133
  step. The actual diff-aware refresh runs inside the coding agent via
81
- `/setup`.
134
+ `/setup-agent-skills`.
82
135
 
83
136
  ```bash
84
137
  # Upgrade the package itself first, then check the delta:
85
138
  npm install -g @chankov/agent-skills@latest
86
139
  npx agent-skills update --workspace .
87
- # Then open your agent and run /setup to review per-artifact diffs.
140
+ # Then open your agent and run /setup-agent-skills to review per-artifact diffs.
88
141
  ```
89
142
 
90
143
  ## Versioning
@@ -137,7 +190,7 @@ npm is the recommended path for most users. The other two stay supported:
137
190
  - **[Claude Code plugin marketplace](../README.md#quick-start)** — best UX
138
191
  inside Claude Code. Same skills, marketplace-managed updates.
139
192
  - **Git clone + symlinks** — best for skill authors and contributors. Clone
140
- the repo, run `/setup` from there, choose `symlink` in Step 8. Updates
193
+ the repo, run `/setup-agent-skills` from there, choose `symlink` in Step 8. Updates
141
194
  flow through `git pull`. Symlinks need Developer Mode on Windows.
142
195
 
143
196
  All three paths converge on the same `guided-workspace-setup` skill — the
@@ -153,7 +206,7 @@ npx --yes @chankov/agent-skills@latest init --agent claude-code --method copy --
153
206
  ```
154
207
 
155
208
  `doctor` accepts `--yes` for non-interactive repair. Note that the
156
- LLM-driven `/setup` flow is not CI-runnable by design — confirmation gates
209
+ LLM-driven `/setup-agent-skills` flow is not CI-runnable by design — confirmation gates
157
210
  exist precisely so a human approves every write.
158
211
 
159
212
  ## Receiving update notifications
@@ -182,15 +235,15 @@ If the cache is stale, a detached background process refreshes it for the
182
235
 
183
236
  ### 2. Claude Code session-start hook
184
237
 
185
- When `hooks/session-start.sh` is installed (offered in Group 18 of `/setup`),
238
+ When `hooks/session-start.sh` is installed (offered in Group 18 of `/setup-agent-skills`),
186
239
  every new Claude Code session runs the check with a 3-second wall-clock cap.
187
240
  If an upgrade is available, the banner is injected into the session context
188
241
  so Claude can mention it on its first turn — e.g. *"Note: agent-skills 0.2.0
189
- is available; want me to apply it via `/setup`?"*
242
+ is available; want me to apply it via `/setup-agent-skills`?"*
190
243
 
191
244
  ### 3. pi extension (`agent-skills-update-check`)
192
245
 
193
- When installed (offered in Group 10 of `/setup`), the extension fires on the
246
+ When installed (offered in Group 10 of `/setup-agent-skills`), the extension fires on the
194
247
  first `agent_start` event of each pi session and emits a `ctx.ui.notify`
195
248
  message in the pi UI if a newer version is published. Reads the same cache
196
249
  as the CLI — no double-fetching.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chankov/agent-skills",
3
- "version": "0.2.0",
3
+ "version": "0.3.2",
4
4
  "description": "Production-grade engineering skills for AI coding agents. Ships skills, agent personas, slash commands, and pi extensions, with a thin CLI that hands off to the LLM-driven guided setup.",
5
5
  "keywords": [
6
6
  "ai",
@@ -34,9 +34,16 @@ Determine which interaction mode this runtime supports, in order of preference:
34
34
 
35
35
  ### 2. Resolve inputs
36
36
 
37
- Resolve four things. Accept any already supplied in the invocation (the `npx agent-skills init` CLI passes the first three as flags); otherwise ask.
37
+ Resolve four things. Accept any already supplied in the invocation (the `npx @chankov/agent-skills init` CLI passes the first three as flags); otherwise ask.
38
+
39
+ - **Source root** — the agent-skills package. **Resolution priority (use the first that works; never fall through silently):**
40
+
41
+ 1. **Bootstrap marker** — read `<workspace>/.ai/.agent-skills-bootstrap.json` if present. Its `sourceRoot` field is authoritative; the CLI wrote it during `init` and it points at the exact package the user's install came from (npm cache, global install, or symlinked clone). Verify the path still exists and contains a `package.json` whose `name` is `@chankov/agent-skills`; if so, use it and **stop**. If the path no longer exists (e.g. npx cache was cleaned), warn the user and continue to step 2.
42
+ 2. **SKILL.md realpath** — only if the marker is missing. If this `SKILL.md` is a symlink, follow it with `readlink`/`realpath` and use the resolved package root. **Do not** use the SKILL.md's *workspace* location (e.g. `.pi/skills/guided-workspace-setup/`) — bootstrap copies the file there, so that path is the workspace, not the source. The realpath only helps in symlink mode.
43
+ 3. **Ask the user explicitly.** Print: *"Source root not found. Run `npx @chankov/agent-skills@latest init` to bootstrap, or paste an absolute path to the package."* Verify the answer is a directory whose `package.json#name` is `@chankov/agent-skills`. **Do not scan the user's filesystem** for other agent-skills repos — that is invasive and produces wrong answers (it will pick up dev clones, forks, or stale copies).
44
+
45
+ The install record's `## install-status` may *also* mention an older source root from a previous setup pass; ignore it for resolution. The bootstrap marker overrides it because it reflects what the user just ran. Note the divergence in the Step 9 summary so the user sees the change.
38
46
 
39
- - **Source root** — the agent-skills package. Derive it from this `SKILL.md`'s own location: `skills/guided-workspace-setup/` sits two levels below the package root. When installed via npm, the package root is `node_modules/agent-skills/` or the `npx` cache.
40
47
  - **Workspace path** — the target project to configure. Confirm the path exists and is a directory; stop and ask again if it does not.
41
48
  - **Coding agent** — `claude-code`, `opencode`, or `pi`. Detect the running agent from the runtime, show it to the user, and let them choose a different one.
42
49
  - **Package version** — read `version` from the source root's `package.json`. This is the version that will be stamped into the install record in Step 10, and the right-hand side of every version-aware diff in Step 6.
@@ -108,7 +115,7 @@ Present findings in a single table:
108
115
 
109
116
  Then ask, multi-select: which fixes to apply now. Apply only the picked ones; record skipped items so the install menu can surface them again. Append a `## doctor-runs` line to `.ai/agent-skills-setup.md` with the date, agent, phase (`preflight`), and `repaired` / `deleted` / `skipped` counts.
110
117
 
111
- The doctor scan is also exposed standalone as `/doctor` — running it outside a setup pass is this same scan-and-repair flow without the rest of the install menu.
118
+ The doctor scan is also exposed standalone as `/doctor-agent-skills` — running it outside a setup pass is this same scan-and-repair flow without the rest of the install menu.
112
119
 
113
120
  ### 6. Present the install menu
114
121
 
@@ -207,6 +214,8 @@ Ask `copy` or `symlink` for this run.
207
214
 
208
215
  Present the full set as one summary table — artifacts to add, update, and remove; their resolved target paths; the chosen install method; and the changes to both `.ai/` files. When the version delta from Step 4 is non-empty, lead the summary with a one-line "Changes since `v<recorded>` → `v<current>`" block sourced from `CHANGELOG.md` (only the entries between the two versions, not the full file). Ask the user to confirm, and write nothing until they do.
209
216
 
217
+ **Installer cleanup line.** The summary always ends with one line stating that the installer slash commands (`/setup-agent-skills`, `/doctor-agent-skills` — or `/as-*-agent-skills` for OpenCode — plus the `guided-workspace-setup` skill body) will be removed after apply, so they do not pollute the user's slash-command list. Add the verbatim suffix: *"Reply `keep` to leave them in place; re-run `npx @chankov/agent-skills init` later if removed."* If the user replies `keep`, record `keep-installer: true` in `## workspace-summary` and skip Step 10b. Otherwise the default is to remove them.
218
+
210
219
  ### 10. Apply the setup
211
220
 
212
221
  Apply the changes: create directories, add or update selected artifacts, and remove deselected ones — **bound by the removal-scope rule from Step 6**. Before deleting any target, verify both conditions: (a) the name is in the agent-skills inventory and (b) the item is either listed in `## install-status` or is a symlink resolving into the source repo. If either check fails, skip the deletion silently and log the path under a "Skipped — not owned by agent-skills" line in the final report.
@@ -217,10 +226,36 @@ For settings files (`.claude/settings.json` and equivalents), edit only the agen
217
226
 
218
227
  Then write both `.ai/` files: the agreed override sections from Step 7 into `.ai/agent-skills-overrides.md`, and the install record — artifacts, target paths, method, **package version**, date — into `.ai/agent-skills-setup.md`. The `version:` line in `## workspace-summary` is set to the package version from Step 2; this is what the next re-run will compare against to compute the version delta.
219
228
 
229
+ ### 10b. Remove the installer artifacts (unless the user said `keep`)
230
+
231
+ After Step 10 has written the catalogue + the `.ai/` files, the installer files dropped by `npx @chankov/agent-skills init` — the `setup-agent-skills` / `doctor-agent-skills` slash commands and the `guided-workspace-setup` skill body itself — are no longer needed in the workspace. They were bootstrap plumbing, not part of the user's permanent install. Leaving them in place pollutes the agent's slash-command list and confuses re-runs (which should always go through `init`, not a stale local copy).
232
+
233
+ Default behaviour:
234
+
235
+ - **`keep-installer: true` in `## workspace-summary`** → skip this step. The files stay.
236
+ - **Otherwise** → run the cleanup. Delete every file the bootstrap wrote for the chosen agent:
237
+
238
+ | Agent | Files removed |
239
+ |---|---|
240
+ | `claude-code` | `.claude/commands/setup-agent-skills.md`, `.claude/commands/doctor-agent-skills.md`, `.claude/skills/guided-workspace-setup/SKILL.md` |
241
+ | `pi` | `.pi/prompts/setup-agent-skills.md`, `.pi/prompts/doctor-agent-skills.md`, `.pi/skills/guided-workspace-setup/SKILL.md` |
242
+ | `opencode` | `.opencode/commands/as-setup-agent-skills.md`, `.opencode/commands/as-doctor-agent-skills.md`, `.opencode/skills/guided-workspace-setup/SKILL.md` |
243
+
244
+ After deleting, prune any directories that were created solely for these files (e.g. `.claude/skills/guided-workspace-setup/`) — never prune a directory that contains other files.
245
+
246
+ Note: the skill body file you are removing here is the same file the agent is *currently executing*. Filesystem removal does not interrupt the in-memory copy — finish this step, then Step 11, then return as normal.
247
+
248
+ If `cleanupInstaller` is available via the CLI (`npx @chankov/agent-skills cleanup-installer --agent <agent> --workspace <path>`), invoking it is equivalent to the manual deletions above; either path is acceptable. Failures (permission denied, file already gone) are logged but do not abort the apply.
249
+
220
250
  ### 11. Verify and report
221
251
 
222
252
  Re-scan the install-target directories one more time and confirm: every selected artifact exists at its target path, every deselected one is gone, and zero broken symlinks remain. Also re-read `.ai/agent-skills-setup.md` and verify the `version:` line matches the package version from Step 2 — a mismatch here means the apply pass did not stamp the new version, and must be corrected before the next re-run computes the wrong delta. If the post-apply scan surfaces any new breakage, treat it as a doctor finding and offer the same repair options as Step 5, then append a second `## doctor-runs` line with `phase: postflight`. List what changed, point the user at `.ai/agent-skills-overrides.md` and `.ai/agent-skills-setup.md`, and suggest loading `using-agent-skills` first in their next session.
223
253
 
254
+ Close the report with one line explaining the installer-cleanup outcome:
255
+
256
+ - If Step 10b ran: *"Installer slash commands removed from your workspace. Re-run `npx @chankov/agent-skills init` if you need `/setup-agent-skills` back."*
257
+ - If Step 10b was skipped (`keep-installer: true`): *"Installer slash commands kept in place per your choice. `/setup-agent-skills` and `/doctor-agent-skills` remain available."*
258
+
224
259
  ## Common Rationalizations
225
260
 
226
261
  | Rationalization | Reality |
@@ -237,10 +272,15 @@ Re-scan the install-target directories one more time and confirm: every selected
237
272
  | "I'll record the full install detail in the overrides file too — one place is simpler." | Other skills load the overrides file on every run. Install detail belongs only in `agent-skills-setup.md`; padding the overrides file taxes every later session. |
238
273
  | "There's an unfamiliar skill in `.claude/skills/` — the user must have forgotten to uncheck it, I'll remove it." | The removal scope rule exists exactly to prevent this. If the name is not in the agent-skills inventory or not in `## install-status`, it is user-owned; leave it alone and log it as skipped. |
239
274
  | "The user wants a clean workspace — I'll prune custom hooks and unrelated MCP entries from `settings.json` too." | Setting-file edits are limited to agent-skills' own hook registrations. Touching anything else silently deletes work that does not belong to this skill. |
240
- | "`/setup` and `/doctor` are useful — I'll install them into the workspace so the user can re-run them locally." | They are installer commands; they ship with the source agent-skills repo and act on workspaces from there. Installing them into a target duplicates the install surface and gives the target a path to manipulate itself. |
275
+ | "`/setup-agent-skills` and `/doctor-agent-skills` are useful — I'll re-install them at the end of apply so the user can re-run them locally." | They are installer commands that the CLI bootstraps and the skill itself cleans up in Step 10b by default. Keeping them is opt-in via `keep` in Step 9. Re-installing them silently undoes the cleanup the user implicitly chose. |
276
+ | "The bootstrap marker is missing — I'll search the user's `~/repos/`, `~/projects/`, and `/media/` for any clone of `agent-skills` to use as the source root." | Scanning the user's filesystem picks up dev clones, forks, half-edited working trees, and stale checkouts that are NOT the package the user installed from. The npm-installed copy is the only authoritative source after `init`. Without the marker, ask the user explicitly — never guess. |
277
+ | "This `SKILL.md` is two levels below the workspace's `.pi/skills/`, so the workspace root must be the source root." | Bootstrap copies `SKILL.md` into the workspace precisely so the slash command can load it. The workspace is the *target* of the install, not the source. Use the marker file to find the real source; resolving from `SKILL.md`'s workspace location always lies. |
241
278
  | "The recorded version differs from the current — I'll just refresh everything to the new source without showing the diff." | Conflicting upgrades (user-modified copy + source changed upstream) require the three-way diff to be shown in Step 6, with the row pre-unchecked. Refreshing silently overwrites work the user did between versions. |
242
279
  | "The `.versions/<recorded>/` snapshot is missing — I'll pretend the installed copy matches the recorded source and refresh anyway." | A missing snapshot means we cannot compute the three-way diff. The skill must fall back to "treat installed copy as canonical" and surface the missing snapshot in the row's status so the user can decide — never pretend a diff exists. |
243
280
  | "The workspace has no `version:` line — I'll silently stamp the current version and move on." | A pre-versioning workspace must be flagged in Step 4 and the user prompted: stamp the current version (assume copies match) or wipe and reinstall. Silent stamping hides a real decision. |
281
+ | "The user didn't say anything about the installer cleanup line — I'll leave the installer files in place to be safe." | The default is to remove. Step 9's confirmation line explicitly states the cleanup will happen unless the user replies `keep`. Silence is consent for the default, not opt-out from it. |
282
+ | "I'll add `setup-agent-skills` and `doctor-agent-skills` to the install menu so the user can pick whether to keep them." | They are still installer-only and excluded from the menu. The keep-vs-remove choice is the single Step 9 line, not a menu group — adding them to the menu re-opens the pollution we just fixed. |
283
+ | "The skill is currently executing; deleting its own file in Step 10b will crash mid-run." | The agent loads the skill into memory at the start of execution. Removing the file on disk does not unload the in-memory copy — Steps 10b and 11 complete normally before control returns. |
244
284
 
245
285
  ## Red Flags
246
286
 
@@ -265,6 +305,13 @@ Re-scan the install-target directories one more time and confirm: every selected
265
305
  - A `conflicting upgrade` row pre-checked, or the three-way diff omitted for it.
266
306
  - A pre-versioning workspace stamped with the current version without prompting the user first.
267
307
  - The post-apply `version:` line not matching the package version from Step 2.
308
+ - Step 9 summary missing the installer-cleanup line, or the line stated `keep` as the default.
309
+ - Source root resolved by scanning the filesystem for `agent-skills` repos (`find`, `fd`, `grep -r`, …) instead of using `.ai/.agent-skills-bootstrap.json` or asking the user.
310
+ - Source root resolved by treating `SKILL.md`'s workspace location (`.pi/skills/...` or `.claude/skills/...`) as the package root.
311
+ - The bootstrap marker file (`.ai/.agent-skills-bootstrap.json`) ignored when present, or trusted blindly when the path it names no longer exists.
312
+ - Installer files (`setup-agent-skills`, `doctor-agent-skills`, the `guided-workspace-setup` skill body) left in place without a recorded `keep-installer: true`.
313
+ - `setup-agent-skills` or `doctor-agent-skills` shown as install-menu rows.
314
+ - Step 11 report omitting the one-line installer-cleanup outcome.
268
315
 
269
316
  ## Verification
270
317
 
@@ -287,6 +334,11 @@ After completing the workflow, confirm:
287
334
  - [ ] When the version delta was non-empty, Step 9's summary led with the "Changes since v<recorded> → v<current>" block sourced from `CHANGELOG.md`.
288
335
  - [ ] Every `conflicting upgrade` row was rendered with its three-way diff in Step 6 and was not pre-checked.
289
336
  - [ ] A pre-versioning workspace was flagged in Step 4 and the user was prompted to stamp or wipe — not silently stamped.
337
+ - [ ] Source root was resolved from `.ai/.agent-skills-bootstrap.json` if present, or from `SKILL.md`'s realpath (symlink mode), or by asking the user — **never** by scanning the filesystem.
338
+ - [ ] If the bootstrap marker named a path that no longer exists, the user was warned and asked for a new path — not silently ignored.
339
+ - [ ] Step 9 summary ended with the installer-cleanup line: states remove-by-default and offers `keep` as the opt-out.
340
+ - [ ] Step 10b ran (or was explicitly skipped because `keep-installer: true`); the installer files are absent from the workspace unless the user opted to keep them.
341
+ - [ ] Step 11 report includes the one-line installer-cleanup outcome.
290
342
  - [ ] No broken symlinks remain in any of the scanned install-target directories.
291
343
  - [ ] No YAML config references a removed persona name.
292
344
  - [ ] No secrets were written to either `.ai/` file.
File without changes