compound-engineering-pi 0.2.3

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/LICENSE +21 -0
  2. package/README.md +124 -0
  3. package/bin/compound-engineering-pi +12 -0
  4. package/bin/compound-plugin +12 -0
  5. package/compound-engineering-pi +12 -0
  6. package/compound-plugin +5 -0
  7. package/docs/pi.md +152 -0
  8. package/extensions/compound-engineering-compat.ts +452 -0
  9. package/package.json +84 -0
  10. package/pi-resources/compound-engineering/mcporter.json +7 -0
  11. package/plugins/coding-tutor/.claude-plugin/plugin.json +9 -0
  12. package/plugins/coding-tutor/README.md +37 -0
  13. package/plugins/coding-tutor/commands/quiz-me.md +1 -0
  14. package/plugins/coding-tutor/commands/sync-tutorials.md +25 -0
  15. package/plugins/coding-tutor/commands/teach-me.md +1 -0
  16. package/plugins/coding-tutor/skills/coding-tutor/SKILL.md +214 -0
  17. package/plugins/coding-tutor/skills/coding-tutor/scripts/create_tutorial.py +207 -0
  18. package/plugins/coding-tutor/skills/coding-tutor/scripts/index_tutorials.py +193 -0
  19. package/plugins/coding-tutor/skills/coding-tutor/scripts/quiz_priority.py +190 -0
  20. package/plugins/coding-tutor/skills/coding-tutor/scripts/setup_tutorials.py +118 -0
  21. package/plugins/compound-engineering/.claude-plugin/plugin.json +33 -0
  22. package/plugins/compound-engineering/CHANGELOG.md +457 -0
  23. package/plugins/compound-engineering/CLAUDE.md +89 -0
  24. package/plugins/compound-engineering/LICENSE +21 -0
  25. package/plugins/compound-engineering/README.md +232 -0
  26. package/plugins/compound-engineering/agents/design/design-implementation-reviewer.md +109 -0
  27. package/plugins/compound-engineering/agents/design/design-iterator.md +224 -0
  28. package/plugins/compound-engineering/agents/design/figma-design-sync.md +190 -0
  29. package/plugins/compound-engineering/agents/docs/ankane-readme-writer.md +65 -0
  30. package/plugins/compound-engineering/agents/research/best-practices-researcher.md +126 -0
  31. package/plugins/compound-engineering/agents/research/framework-docs-researcher.md +106 -0
  32. package/plugins/compound-engineering/agents/research/git-history-analyzer.md +59 -0
  33. package/plugins/compound-engineering/agents/research/learnings-researcher.md +264 -0
  34. package/plugins/compound-engineering/agents/research/repo-research-analyst.md +135 -0
  35. package/plugins/compound-engineering/agents/review/agent-native-reviewer.md +261 -0
  36. package/plugins/compound-engineering/agents/review/architecture-strategist.md +67 -0
  37. package/plugins/compound-engineering/agents/review/code-simplicity-reviewer.md +101 -0
  38. package/plugins/compound-engineering/agents/review/data-integrity-guardian.md +85 -0
  39. package/plugins/compound-engineering/agents/review/data-migration-expert.md +112 -0
  40. package/plugins/compound-engineering/agents/review/deployment-verification-agent.md +174 -0
  41. package/plugins/compound-engineering/agents/review/dhh-rails-reviewer.md +66 -0
  42. package/plugins/compound-engineering/agents/review/julik-frontend-races-reviewer.md +221 -0
  43. package/plugins/compound-engineering/agents/review/kieran-python-reviewer.md +133 -0
  44. package/plugins/compound-engineering/agents/review/kieran-rails-reviewer.md +115 -0
  45. package/plugins/compound-engineering/agents/review/kieran-typescript-reviewer.md +124 -0
  46. package/plugins/compound-engineering/agents/review/pattern-recognition-specialist.md +72 -0
  47. package/plugins/compound-engineering/agents/review/performance-oracle.md +137 -0
  48. package/plugins/compound-engineering/agents/review/schema-drift-detector.md +154 -0
  49. package/plugins/compound-engineering/agents/review/security-sentinel.md +114 -0
  50. package/plugins/compound-engineering/agents/workflow/bug-reproduction-validator.md +82 -0
  51. package/plugins/compound-engineering/agents/workflow/every-style-editor.md +64 -0
  52. package/plugins/compound-engineering/agents/workflow/lint.md +16 -0
  53. package/plugins/compound-engineering/agents/workflow/pr-comment-resolver.md +84 -0
  54. package/plugins/compound-engineering/agents/workflow/spec-flow-analyzer.md +134 -0
  55. package/plugins/compound-engineering/commands/agent-native-audit.md +278 -0
  56. package/plugins/compound-engineering/commands/changelog.md +138 -0
  57. package/plugins/compound-engineering/commands/create-agent-skill.md +9 -0
  58. package/plugins/compound-engineering/commands/deepen-plan.md +546 -0
  59. package/plugins/compound-engineering/commands/deploy-docs.md +113 -0
  60. package/plugins/compound-engineering/commands/feature-video.md +342 -0
  61. package/plugins/compound-engineering/commands/generate_command.md +163 -0
  62. package/plugins/compound-engineering/commands/heal-skill.md +143 -0
  63. package/plugins/compound-engineering/commands/lfg.md +20 -0
  64. package/plugins/compound-engineering/commands/release-docs.md +212 -0
  65. package/plugins/compound-engineering/commands/report-bug.md +151 -0
  66. package/plugins/compound-engineering/commands/reproduce-bug.md +100 -0
  67. package/plugins/compound-engineering/commands/resolve_parallel.md +35 -0
  68. package/plugins/compound-engineering/commands/resolve_todo_parallel.md +37 -0
  69. package/plugins/compound-engineering/commands/slfg.md +32 -0
  70. package/plugins/compound-engineering/commands/technical_review.md +8 -0
  71. package/plugins/compound-engineering/commands/test-browser.md +339 -0
  72. package/plugins/compound-engineering/commands/test-xcode.md +332 -0
  73. package/plugins/compound-engineering/commands/triage.md +311 -0
  74. package/plugins/compound-engineering/commands/workflows/brainstorm.md +124 -0
  75. package/plugins/compound-engineering/commands/workflows/compound.md +239 -0
  76. package/plugins/compound-engineering/commands/workflows/plan.md +551 -0
  77. package/plugins/compound-engineering/commands/workflows/review.md +526 -0
  78. package/plugins/compound-engineering/commands/workflows/work.md +433 -0
  79. package/plugins/compound-engineering/skills/agent-browser/SKILL.md +223 -0
  80. package/plugins/compound-engineering/skills/agent-native-architecture/SKILL.md +435 -0
  81. package/plugins/compound-engineering/skills/agent-native-architecture/references/action-parity-discipline.md +409 -0
  82. package/plugins/compound-engineering/skills/agent-native-architecture/references/agent-execution-patterns.md +467 -0
  83. package/plugins/compound-engineering/skills/agent-native-architecture/references/agent-native-testing.md +582 -0
  84. package/plugins/compound-engineering/skills/agent-native-architecture/references/architecture-patterns.md +478 -0
  85. package/plugins/compound-engineering/skills/agent-native-architecture/references/dynamic-context-injection.md +338 -0
  86. package/plugins/compound-engineering/skills/agent-native-architecture/references/files-universal-interface.md +301 -0
  87. package/plugins/compound-engineering/skills/agent-native-architecture/references/from-primitives-to-domain-tools.md +359 -0
  88. package/plugins/compound-engineering/skills/agent-native-architecture/references/mcp-tool-design.md +506 -0
  89. package/plugins/compound-engineering/skills/agent-native-architecture/references/mobile-patterns.md +871 -0
  90. package/plugins/compound-engineering/skills/agent-native-architecture/references/product-implications.md +443 -0
  91. package/plugins/compound-engineering/skills/agent-native-architecture/references/refactoring-to-prompt-native.md +317 -0
  92. package/plugins/compound-engineering/skills/agent-native-architecture/references/self-modification.md +269 -0
  93. package/plugins/compound-engineering/skills/agent-native-architecture/references/shared-workspace-architecture.md +680 -0
  94. package/plugins/compound-engineering/skills/agent-native-architecture/references/system-prompt-design.md +250 -0
  95. package/plugins/compound-engineering/skills/andrew-kane-gem-writer/SKILL.md +184 -0
  96. package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/database-adapters.md +231 -0
  97. package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/module-organization.md +121 -0
  98. package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/rails-integration.md +183 -0
  99. package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/resources.md +119 -0
  100. package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
  101. package/plugins/compound-engineering/skills/brainstorming/SKILL.md +190 -0
  102. package/plugins/compound-engineering/skills/compound-docs/SKILL.md +511 -0
  103. package/plugins/compound-engineering/skills/compound-docs/assets/critical-pattern-template.md +34 -0
  104. package/plugins/compound-engineering/skills/compound-docs/assets/resolution-template.md +93 -0
  105. package/plugins/compound-engineering/skills/compound-docs/references/yaml-schema.md +65 -0
  106. package/plugins/compound-engineering/skills/compound-docs/schema.yaml +176 -0
  107. package/plugins/compound-engineering/skills/create-agent-skills/SKILL.md +275 -0
  108. package/plugins/compound-engineering/skills/create-agent-skills/references/api-security.md +226 -0
  109. package/plugins/compound-engineering/skills/create-agent-skills/references/be-clear-and-direct.md +531 -0
  110. package/plugins/compound-engineering/skills/create-agent-skills/references/best-practices.md +404 -0
  111. package/plugins/compound-engineering/skills/create-agent-skills/references/common-patterns.md +595 -0
  112. package/plugins/compound-engineering/skills/create-agent-skills/references/core-principles.md +437 -0
  113. package/plugins/compound-engineering/skills/create-agent-skills/references/executable-code.md +175 -0
  114. package/plugins/compound-engineering/skills/create-agent-skills/references/iteration-and-testing.md +474 -0
  115. package/plugins/compound-engineering/skills/create-agent-skills/references/official-spec.md +134 -0
  116. package/plugins/compound-engineering/skills/create-agent-skills/references/recommended-structure.md +168 -0
  117. package/plugins/compound-engineering/skills/create-agent-skills/references/skill-structure.md +152 -0
  118. package/plugins/compound-engineering/skills/create-agent-skills/references/using-scripts.md +113 -0
  119. package/plugins/compound-engineering/skills/create-agent-skills/references/using-templates.md +112 -0
  120. package/plugins/compound-engineering/skills/create-agent-skills/references/workflows-and-validation.md +510 -0
  121. package/plugins/compound-engineering/skills/create-agent-skills/templates/router-skill.md +73 -0
  122. package/plugins/compound-engineering/skills/create-agent-skills/templates/simple-skill.md +33 -0
  123. package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-reference.md +96 -0
  124. package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-script.md +93 -0
  125. package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-template.md +74 -0
  126. package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-workflow.md +120 -0
  127. package/plugins/compound-engineering/skills/create-agent-skills/workflows/audit-skill.md +138 -0
  128. package/plugins/compound-engineering/skills/create-agent-skills/workflows/create-domain-expertise-skill.md +605 -0
  129. package/plugins/compound-engineering/skills/create-agent-skills/workflows/create-new-skill.md +191 -0
  130. package/plugins/compound-engineering/skills/create-agent-skills/workflows/get-guidance.md +121 -0
  131. package/plugins/compound-engineering/skills/create-agent-skills/workflows/upgrade-to-router.md +161 -0
  132. package/plugins/compound-engineering/skills/create-agent-skills/workflows/verify-skill.md +204 -0
  133. package/plugins/compound-engineering/skills/dhh-rails-style/SKILL.md +185 -0
  134. package/plugins/compound-engineering/skills/dhh-rails-style/references/architecture.md +653 -0
  135. package/plugins/compound-engineering/skills/dhh-rails-style/references/controllers.md +303 -0
  136. package/plugins/compound-engineering/skills/dhh-rails-style/references/frontend.md +510 -0
  137. package/plugins/compound-engineering/skills/dhh-rails-style/references/gems.md +266 -0
  138. package/plugins/compound-engineering/skills/dhh-rails-style/references/models.md +359 -0
  139. package/plugins/compound-engineering/skills/dhh-rails-style/references/testing.md +338 -0
  140. package/plugins/compound-engineering/skills/document-review/SKILL.md +87 -0
  141. package/plugins/compound-engineering/skills/dspy-ruby/SKILL.md +737 -0
  142. package/plugins/compound-engineering/skills/dspy-ruby/assets/config-template.rb +187 -0
  143. package/plugins/compound-engineering/skills/dspy-ruby/assets/module-template.rb +300 -0
  144. package/plugins/compound-engineering/skills/dspy-ruby/assets/signature-template.rb +221 -0
  145. package/plugins/compound-engineering/skills/dspy-ruby/references/core-concepts.md +674 -0
  146. package/plugins/compound-engineering/skills/dspy-ruby/references/observability.md +366 -0
  147. package/plugins/compound-engineering/skills/dspy-ruby/references/optimization.md +603 -0
  148. package/plugins/compound-engineering/skills/dspy-ruby/references/providers.md +418 -0
  149. package/plugins/compound-engineering/skills/dspy-ruby/references/toolsets.md +502 -0
  150. package/plugins/compound-engineering/skills/every-style-editor/SKILL.md +134 -0
  151. package/plugins/compound-engineering/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
  152. package/plugins/compound-engineering/skills/file-todos/SKILL.md +252 -0
  153. package/plugins/compound-engineering/skills/file-todos/assets/todo-template.md +155 -0
  154. package/plugins/compound-engineering/skills/frontend-design/SKILL.md +42 -0
  155. package/plugins/compound-engineering/skills/gemini-imagegen/SKILL.md +237 -0
  156. package/plugins/compound-engineering/skills/gemini-imagegen/requirements.txt +2 -0
  157. package/plugins/compound-engineering/skills/gemini-imagegen/scripts/compose_images.py +157 -0
  158. package/plugins/compound-engineering/skills/gemini-imagegen/scripts/edit_image.py +144 -0
  159. package/plugins/compound-engineering/skills/gemini-imagegen/scripts/gemini_images.py +263 -0
  160. package/plugins/compound-engineering/skills/gemini-imagegen/scripts/generate_image.py +133 -0
  161. package/plugins/compound-engineering/skills/gemini-imagegen/scripts/multi_turn_chat.py +216 -0
  162. package/plugins/compound-engineering/skills/git-worktree/SKILL.md +302 -0
  163. package/plugins/compound-engineering/skills/git-worktree/scripts/worktree-manager.sh +337 -0
  164. package/plugins/compound-engineering/skills/orchestrating-swarms/SKILL.md +1718 -0
  165. package/plugins/compound-engineering/skills/rclone/SKILL.md +150 -0
  166. package/plugins/compound-engineering/skills/rclone/scripts/check_setup.sh +60 -0
  167. package/plugins/compound-engineering/skills/resolve-pr-parallel/SKILL.md +89 -0
  168. package/plugins/compound-engineering/skills/resolve-pr-parallel/scripts/get-pr-comments +68 -0
  169. package/plugins/compound-engineering/skills/resolve-pr-parallel/scripts/resolve-pr-thread +23 -0
  170. package/plugins/compound-engineering/skills/skill-creator/SKILL.md +210 -0
  171. package/plugins/compound-engineering/skills/skill-creator/scripts/init_skill.py +303 -0
  172. package/plugins/compound-engineering/skills/skill-creator/scripts/package_skill.py +110 -0
  173. package/plugins/compound-engineering/skills/skill-creator/scripts/quick_validate.py +65 -0
  174. package/prompts/deepen-plan.md +549 -0
  175. package/prompts/feature-video.md +341 -0
  176. package/prompts/resolve_todo_parallel.md +36 -0
  177. package/prompts/test-browser.md +342 -0
  178. package/prompts/workflows-brainstorm.md +123 -0
  179. package/prompts/workflows-compound.md +238 -0
  180. package/prompts/workflows-plan.md +550 -0
  181. package/prompts/workflows-review.md +529 -0
  182. package/prompts/workflows-work.md +432 -0
  183. package/skills/agent-browser/SKILL.md +223 -0
  184. package/skills/agent-native-architecture/SKILL.md +435 -0
  185. package/skills/agent-native-architecture/references/action-parity-discipline.md +409 -0
  186. package/skills/agent-native-architecture/references/agent-execution-patterns.md +467 -0
  187. package/skills/agent-native-architecture/references/agent-native-testing.md +582 -0
  188. package/skills/agent-native-architecture/references/architecture-patterns.md +478 -0
  189. package/skills/agent-native-architecture/references/dynamic-context-injection.md +338 -0
  190. package/skills/agent-native-architecture/references/files-universal-interface.md +301 -0
  191. package/skills/agent-native-architecture/references/from-primitives-to-domain-tools.md +359 -0
  192. package/skills/agent-native-architecture/references/mcp-tool-design.md +506 -0
  193. package/skills/agent-native-architecture/references/mobile-patterns.md +871 -0
  194. package/skills/agent-native-architecture/references/product-implications.md +443 -0
  195. package/skills/agent-native-architecture/references/refactoring-to-prompt-native.md +317 -0
  196. package/skills/agent-native-architecture/references/self-modification.md +269 -0
  197. package/skills/agent-native-architecture/references/shared-workspace-architecture.md +680 -0
  198. package/skills/agent-native-architecture/references/system-prompt-design.md +250 -0
  199. package/skills/agent-native-reviewer/SKILL.md +260 -0
  200. package/skills/andrew-kane-gem-writer/SKILL.md +184 -0
  201. package/skills/andrew-kane-gem-writer/references/database-adapters.md +231 -0
  202. package/skills/andrew-kane-gem-writer/references/module-organization.md +121 -0
  203. package/skills/andrew-kane-gem-writer/references/rails-integration.md +183 -0
  204. package/skills/andrew-kane-gem-writer/references/resources.md +119 -0
  205. package/skills/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
  206. package/skills/ankane-readme-writer/SKILL.md +63 -0
  207. package/skills/architecture-strategist/SKILL.md +66 -0
  208. package/skills/best-practices-researcher/SKILL.md +125 -0
  209. package/skills/brainstorming/SKILL.md +190 -0
  210. package/skills/bug-reproduction-validator/SKILL.md +81 -0
  211. package/skills/code-simplicity-reviewer/SKILL.md +100 -0
  212. package/skills/compound-docs/SKILL.md +511 -0
  213. package/skills/compound-docs/assets/critical-pattern-template.md +34 -0
  214. package/skills/compound-docs/assets/resolution-template.md +93 -0
  215. package/skills/compound-docs/references/yaml-schema.md +65 -0
  216. package/skills/compound-docs/schema.yaml +176 -0
  217. package/skills/create-agent-skills/SKILL.md +275 -0
  218. package/skills/create-agent-skills/references/api-security.md +226 -0
  219. package/skills/create-agent-skills/references/be-clear-and-direct.md +531 -0
  220. package/skills/create-agent-skills/references/best-practices.md +404 -0
  221. package/skills/create-agent-skills/references/common-patterns.md +595 -0
  222. package/skills/create-agent-skills/references/core-principles.md +437 -0
  223. package/skills/create-agent-skills/references/executable-code.md +175 -0
  224. package/skills/create-agent-skills/references/iteration-and-testing.md +474 -0
  225. package/skills/create-agent-skills/references/official-spec.md +134 -0
  226. package/skills/create-agent-skills/references/recommended-structure.md +168 -0
  227. package/skills/create-agent-skills/references/skill-structure.md +152 -0
  228. package/skills/create-agent-skills/references/using-scripts.md +113 -0
  229. package/skills/create-agent-skills/references/using-templates.md +112 -0
  230. package/skills/create-agent-skills/references/workflows-and-validation.md +510 -0
  231. package/skills/create-agent-skills/templates/router-skill.md +73 -0
  232. package/skills/create-agent-skills/templates/simple-skill.md +33 -0
  233. package/skills/create-agent-skills/workflows/add-reference.md +96 -0
  234. package/skills/create-agent-skills/workflows/add-script.md +93 -0
  235. package/skills/create-agent-skills/workflows/add-template.md +74 -0
  236. package/skills/create-agent-skills/workflows/add-workflow.md +120 -0
  237. package/skills/create-agent-skills/workflows/audit-skill.md +138 -0
  238. package/skills/create-agent-skills/workflows/create-domain-expertise-skill.md +605 -0
  239. package/skills/create-agent-skills/workflows/create-new-skill.md +191 -0
  240. package/skills/create-agent-skills/workflows/get-guidance.md +121 -0
  241. package/skills/create-agent-skills/workflows/upgrade-to-router.md +161 -0
  242. package/skills/create-agent-skills/workflows/verify-skill.md +204 -0
  243. package/skills/data-integrity-guardian/SKILL.md +84 -0
  244. package/skills/data-migration-expert/SKILL.md +111 -0
  245. package/skills/deployment-verification-agent/SKILL.md +173 -0
  246. package/skills/design-implementation-reviewer/SKILL.md +107 -0
  247. package/skills/design-iterator/SKILL.md +222 -0
  248. package/skills/dhh-rails-reviewer/SKILL.md +65 -0
  249. package/skills/dhh-rails-style/SKILL.md +185 -0
  250. package/skills/dhh-rails-style/references/architecture.md +653 -0
  251. package/skills/dhh-rails-style/references/controllers.md +303 -0
  252. package/skills/dhh-rails-style/references/frontend.md +510 -0
  253. package/skills/dhh-rails-style/references/gems.md +266 -0
  254. package/skills/dhh-rails-style/references/models.md +359 -0
  255. package/skills/dhh-rails-style/references/testing.md +338 -0
  256. package/skills/document-review/SKILL.md +87 -0
  257. package/skills/dspy-ruby/SKILL.md +737 -0
  258. package/skills/dspy-ruby/assets/config-template.rb +187 -0
  259. package/skills/dspy-ruby/assets/module-template.rb +300 -0
  260. package/skills/dspy-ruby/assets/signature-template.rb +221 -0
  261. package/skills/dspy-ruby/references/core-concepts.md +674 -0
  262. package/skills/dspy-ruby/references/observability.md +366 -0
  263. package/skills/dspy-ruby/references/optimization.md +603 -0
  264. package/skills/dspy-ruby/references/providers.md +418 -0
  265. package/skills/dspy-ruby/references/toolsets.md +502 -0
  266. package/skills/every-style-editor/SKILL.md +134 -0
  267. package/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
  268. package/skills/every-style-editor-2/SKILL.md +62 -0
  269. package/skills/figma-design-sync/SKILL.md +188 -0
  270. package/skills/file-todos/SKILL.md +252 -0
  271. package/skills/file-todos/assets/todo-template.md +155 -0
  272. package/skills/framework-docs-researcher/SKILL.md +105 -0
  273. package/skills/frontend-design/SKILL.md +42 -0
  274. package/skills/gemini-imagegen/SKILL.md +237 -0
  275. package/skills/gemini-imagegen/requirements.txt +2 -0
  276. package/skills/gemini-imagegen/scripts/compose_images.py +157 -0
  277. package/skills/gemini-imagegen/scripts/edit_image.py +144 -0
  278. package/skills/gemini-imagegen/scripts/gemini_images.py +263 -0
  279. package/skills/gemini-imagegen/scripts/generate_image.py +133 -0
  280. package/skills/gemini-imagegen/scripts/multi_turn_chat.py +216 -0
  281. package/skills/git-history-analyzer/SKILL.md +58 -0
  282. package/skills/git-worktree/SKILL.md +302 -0
  283. package/skills/git-worktree/scripts/worktree-manager.sh +337 -0
  284. package/skills/julik-frontend-races-reviewer/SKILL.md +220 -0
  285. package/skills/kieran-python-reviewer/SKILL.md +132 -0
  286. package/skills/kieran-rails-reviewer/SKILL.md +114 -0
  287. package/skills/kieran-typescript-reviewer/SKILL.md +123 -0
  288. package/skills/learnings-researcher/SKILL.md +263 -0
  289. package/skills/lint/SKILL.md +14 -0
  290. package/skills/orchestrating-swarms/SKILL.md +1718 -0
  291. package/skills/pattern-recognition-specialist/SKILL.md +71 -0
  292. package/skills/performance-oracle/SKILL.md +136 -0
  293. package/skills/pr-comment-resolver/SKILL.md +82 -0
  294. package/skills/rclone/SKILL.md +150 -0
  295. package/skills/rclone/scripts/check_setup.sh +60 -0
  296. package/skills/repo-research-analyst/SKILL.md +134 -0
  297. package/skills/resolve_pr_parallel/SKILL.md +89 -0
  298. package/skills/resolve_pr_parallel/scripts/get-pr-comments +68 -0
  299. package/skills/resolve_pr_parallel/scripts/resolve-pr-thread +23 -0
  300. package/skills/schema-drift-detector/SKILL.md +153 -0
  301. package/skills/security-sentinel/SKILL.md +113 -0
  302. package/skills/skill-creator/SKILL.md +210 -0
  303. package/skills/skill-creator/scripts/init_skill.py +303 -0
  304. package/skills/skill-creator/scripts/package_skill.py +110 -0
  305. package/skills/skill-creator/scripts/quick_validate.py +65 -0
  306. package/skills/spec-flow-analyzer/SKILL.md +133 -0
  307. package/src/commands/convert.ts +183 -0
  308. package/src/commands/install.ts +273 -0
  309. package/src/commands/list.ts +37 -0
  310. package/src/commands/sync.ts +89 -0
  311. package/src/converters/claude-to-codex.ts +182 -0
  312. package/src/converters/claude-to-opencode.ts +395 -0
  313. package/src/converters/claude-to-pi.ts +205 -0
  314. package/src/index.ts +22 -0
  315. package/src/parsers/claude-home.ts +65 -0
  316. package/src/parsers/claude.ts +252 -0
  317. package/src/sync/codex.ts +92 -0
  318. package/src/sync/opencode.ts +75 -0
  319. package/src/sync/pi.ts +88 -0
  320. package/src/targets/codex.ts +96 -0
  321. package/src/targets/index.ts +38 -0
  322. package/src/targets/opencode.ts +57 -0
  323. package/src/targets/pi.ts +131 -0
  324. package/src/templates/pi/compat-extension.ts +452 -0
  325. package/src/types/claude.ts +90 -0
  326. package/src/types/codex.ts +23 -0
  327. package/src/types/opencode.ts +54 -0
  328. package/src/types/pi.ts +40 -0
  329. package/src/utils/codex-agents.ts +64 -0
  330. package/src/utils/files.ts +77 -0
  331. package/src/utils/frontmatter.ts +65 -0
  332. package/src/utils/symlink.ts +43 -0
@@ -0,0 +1,176 @@
1
+ # CORA Documentation Schema
2
+ # This schema MUST be validated before writing any documentation file
3
+
4
+ required_fields:
5
+ module:
6
+ type: string
7
+ description: "Module/area of CORA (e.g., 'Email Processing', 'Brief System', 'Authentication')"
8
+ examples:
9
+ - "Email Processing"
10
+ - "Brief System"
11
+ - "Assistant"
12
+ - "Authentication"
13
+
14
+ date:
15
+ type: string
16
+ pattern: '^\d{4}-\d{2}-\d{2}$'
17
+ description: "Date when this problem was solved (YYYY-MM-DD)"
18
+
19
+ problem_type:
20
+ type: enum
21
+ values:
22
+ - build_error # Rails, bundle, compilation errors
23
+ - test_failure # Test failures, flaky tests
24
+ - runtime_error # Exceptions, crashes during execution
25
+ - performance_issue # Slow queries, memory issues, N+1 queries
26
+ - database_issue # Migration, query, schema problems
27
+ - security_issue # Authentication, authorization, XSS, SQL injection
28
+ - ui_bug # Frontend, Stimulus, Turbo issues
29
+ - integration_issue # External service, API integration problems
30
+ - logic_error # Business logic bugs
31
+ - developer_experience # DX issues: workflow, tooling, seed data, dev setup
32
+ - workflow_issue # Development process, missing steps, unclear practices
33
+ - best_practice # Documenting patterns and practices to follow
34
+ - documentation_gap # Missing or inadequate documentation
35
+ description: "Primary category of the problem"
36
+
37
+ component:
38
+ type: enum
39
+ values:
40
+ - rails_model # ActiveRecord models
41
+ - rails_controller # ActionController
42
+ - rails_view # ERB templates, ViewComponent
43
+ - service_object # Custom service classes
44
+ - background_job # Sidekiq, Active Job
45
+ - database # PostgreSQL, migrations, schema
46
+ - frontend_stimulus # Stimulus JS controllers
47
+ - hotwire_turbo # Turbo Streams, Turbo Drive
48
+ - email_processing # Email handling, mailers
49
+ - brief_system # Brief generation, summarization
50
+ - assistant # AI assistant, prompts
51
+ - authentication # Devise, user auth
52
+ - payments # Stripe, billing
53
+ - development_workflow # Dev process, seed data, tooling
54
+ - testing_framework # Test setup, fixtures, VCR
55
+ - documentation # README, guides, inline docs
56
+ - tooling # Scripts, generators, CLI tools
57
+ description: "CORA component involved"
58
+
59
+ symptoms:
60
+ type: array[string]
61
+ min_items: 1
62
+ max_items: 5
63
+ description: "Observable symptoms (error messages, visual issues, crashes)"
64
+ examples:
65
+ - "N+1 query detected in brief generation"
66
+ - "Brief emails not appearing in summary"
67
+ - "Turbo Stream response returns 404"
68
+
69
+ root_cause:
70
+ type: enum
71
+ values:
72
+ - missing_association # Incorrect Rails associations
73
+ - missing_include # Missing eager loading (N+1)
74
+ - missing_index # Database performance issue
75
+ - wrong_api # Using deprecated/incorrect Rails API
76
+ - scope_issue # Incorrect query scope or filtering
77
+ - thread_violation # Real-time unsafe operation
78
+ - async_timing # Async/background job timing
79
+ - memory_leak # Memory leak or excessive allocation
80
+ - config_error # Configuration or environment issue
81
+ - logic_error # Algorithm/business logic bug
82
+ - test_isolation # Test isolation or fixture issue
83
+ - missing_validation # Missing model validation
84
+ - missing_permission # Authorization check missing
85
+ - missing_workflow_step # Skipped or undocumented workflow step
86
+ - inadequate_documentation # Missing or unclear documentation
87
+ - missing_tooling # Lacking helper scripts or automation
88
+ - incomplete_setup # Missing seed data, fixtures, or config
89
+ description: "Fundamental cause of the problem"
90
+
91
+ resolution_type:
92
+ type: enum
93
+ values:
94
+ - code_fix # Fixed by changing source code
95
+ - migration # Fixed by database migration
96
+ - config_change # Fixed by changing configuration
97
+ - test_fix # Fixed by correcting tests
98
+ - dependency_update # Fixed by updating gem/dependency
99
+ - environment_setup # Fixed by environment configuration
100
+ - workflow_improvement # Improved development workflow or process
101
+ - documentation_update # Added or updated documentation
102
+ - tooling_addition # Added helper script or automation
103
+ - seed_data_update # Updated db/seeds.rb or fixtures
104
+ description: "Type of fix applied"
105
+
106
+ severity:
107
+ type: enum
108
+ values:
109
+ - critical # Blocks production or development (build fails, data loss)
110
+ - high # Impairs core functionality (feature broken, security issue)
111
+ - medium # Affects specific feature (UI broken, performance impact)
112
+ - low # Minor issue or edge case
113
+ description: "Impact severity"
114
+
115
+ optional_fields:
116
+ rails_version:
117
+ type: string
118
+ pattern: '^\d+\.\d+\.\d+$'
119
+ description: "Rails version where this was encountered (e.g., '7.1.0')"
120
+
121
+ related_components:
122
+ type: array[string]
123
+ description: "Other components that interact with this issue"
124
+
125
+ tags:
126
+ type: array[string]
127
+ max_items: 8
128
+ description: "Searchable keywords (lowercase, hyphen-separated)"
129
+ examples:
130
+ - "n-plus-one"
131
+ - "eager-loading"
132
+ - "test-isolation"
133
+ - "turbo-stream"
134
+
135
+ validation_rules:
136
+ - "module must be a valid CORA module name"
137
+ - "date must be in YYYY-MM-DD format"
138
+ - "problem_type must match one of the enum values"
139
+ - "component must match one of the enum values"
140
+ - "symptoms must be specific and observable (not vague)"
141
+ - "root_cause must be the ACTUAL cause, not a symptom"
142
+ - "resolution_type must match one of the enum values"
143
+ - "severity must match one of the enum values"
144
+ - "tags should be lowercase, hyphen-separated"
145
+
146
+ # Example valid front matter:
147
+ # ---
148
+ # module: Email Processing
149
+ # date: 2025-11-12
150
+ # problem_type: performance_issue
151
+ # component: rails_model
152
+ # symptoms:
153
+ # - N+1 query when loading email threads
154
+ # - Brief generation taking >5 seconds
155
+ # root_cause: missing_include
156
+ # rails_version: 7.1.2
157
+ # resolution_type: code_fix
158
+ # severity: high
159
+ # tags: [n-plus-one, eager-loading, performance]
160
+ # ---
161
+ #
162
+ # Example DX issue front matter:
163
+ # ---
164
+ # module: Development Workflow
165
+ # date: 2025-11-13
166
+ # problem_type: developer_experience
167
+ # component: development_workflow
168
+ # symptoms:
169
+ # - No example data for new feature in development
170
+ # - Rails db:seed doesn't demonstrate new capabilities
171
+ # root_cause: incomplete_setup
172
+ # rails_version: 7.1.2
173
+ # resolution_type: seed_data_update
174
+ # severity: low
175
+ # tags: [seed-data, dx, workflow]
176
+ # ---
@@ -0,0 +1,275 @@
1
+ ---
2
+ name: create-agent-skills
3
+ description: Expert guidance for creating Claude Code skills and slash commands. Use when working with SKILL.md files, authoring new skills, improving existing skills, creating slash commands, or understanding skill structure and best practices.
4
+ ---
5
+
6
+ # Creating Skills & Commands
7
+
8
+ This skill teaches how to create effective Claude Code skills following the official specification from [code.claude.com/docs/en/skills](https://code.claude.com/docs/en/skills).
9
+
10
+ ## Commands and Skills Are Now The Same Thing
11
+
12
+ Custom slash commands have been merged into skills. A file at `.claude/commands/review.md` and a skill at `.claude/skills/review/SKILL.md` both create `/review` and work the same way. Existing `.claude/commands/` files keep working. Skills add optional features: a directory for supporting files, frontmatter to control invocation, and automatic context loading.
13
+
14
+ **If a skill and a command share the same name, the skill takes precedence.**
15
+
16
+ ## When To Create What
17
+
18
+ **Use a command file** (`commands/name.md`) when:
19
+ - Simple, single-file workflow
20
+ - No supporting files needed
21
+ - Task-oriented action (deploy, commit, triage)
22
+
23
+ **Use a skill directory** (`skills/name/SKILL.md`) when:
24
+ - Need supporting reference files, scripts, or templates
25
+ - Background knowledge Claude should auto-load
26
+ - Complex enough to benefit from progressive disclosure
27
+
28
+ Both use identical YAML frontmatter and markdown content format.
29
+
30
+ ## Standard Markdown Format
31
+
32
+ Use YAML frontmatter + markdown body with **standard markdown headings**. Keep it clean and direct.
33
+
34
+ ```markdown
35
+ ---
36
+ name: my-skill-name
37
+ description: What it does and when to use it
38
+ ---
39
+
40
+ # My Skill Name
41
+
42
+ ## Quick Start
43
+ Immediate actionable guidance...
44
+
45
+ ## Instructions
46
+ Step-by-step procedures...
47
+
48
+ ## Examples
49
+ Concrete usage examples...
50
+ ```
51
+
52
+ ## Frontmatter Reference
53
+
54
+ All fields are optional. Only `description` is recommended.
55
+
56
+ | Field | Required | Description |
57
+ |-------|----------|-------------|
58
+ | `name` | No | Display name. Lowercase letters, numbers, hyphens (max 64 chars). Defaults to directory name. |
59
+ | `description` | Recommended | What it does AND when to use it. Claude uses this for auto-discovery. Max 1024 chars. |
60
+ | `argument-hint` | No | Hint shown during autocomplete. Example: `[issue-number]` |
61
+ | `disable-model-invocation` | No | Set `true` to prevent Claude auto-loading. Use for manual workflows like `/deploy`, `/commit`. Default: `false`. |
62
+ | `user-invocable` | No | Set `false` to hide from `/` menu. Use for background knowledge. Default: `true`. |
63
+ | `allowed-tools` | No | Tools Claude can use without permission prompts. Example: `Read, Bash(git *)` |
64
+ | `model` | No | Model to use. Options: `haiku`, `sonnet`, `opus`. |
65
+ | `context` | No | Set `fork` to run in isolated subagent context. |
66
+ | `agent` | No | Subagent type when `context: fork`. Options: `Explore`, `Plan`, `general-purpose`, or custom agent name. |
67
+
68
+ ### Invocation Control
69
+
70
+ | Frontmatter | User can invoke | Claude can invoke | When loaded |
71
+ |-------------|----------------|-------------------|-------------|
72
+ | (default) | Yes | Yes | Description always in context, full content loads when invoked |
73
+ | `disable-model-invocation: true` | Yes | No | Description not in context, loads only when user invokes |
74
+ | `user-invocable: false` | No | Yes | Description always in context, loads when relevant |
75
+
76
+ **Use `disable-model-invocation: true`** for workflows with side effects: `/deploy`, `/commit`, `/triage-prs`, `/send-slack-message`. You don't want Claude deciding to deploy because your code looks ready.
77
+
78
+ **Use `user-invocable: false`** for background knowledge that isn't a meaningful user action: coding conventions, domain context, legacy system docs.
79
+
80
+ ## Dynamic Features
81
+
82
+ ### Arguments
83
+
84
+ Use `$ARGUMENTS` placeholder for user input. If not present in content, arguments are appended automatically.
85
+
86
+ ```yaml
87
+ ---
88
+ name: fix-issue
89
+ description: Fix a GitHub issue
90
+ disable-model-invocation: true
91
+ ---
92
+
93
+ Fix GitHub issue $ARGUMENTS following our coding standards.
94
+ ```
95
+
96
+ Access individual args: `$ARGUMENTS[0]` or shorthand `$0`, `$1`, `$2`.
97
+
98
+ ### Dynamic Context Injection
99
+
100
+ The `` !`command` `` syntax runs shell commands before content is sent to Claude:
101
+
102
+ ```yaml
103
+ ---
104
+ name: pr-summary
105
+ description: Summarize changes in a pull request
106
+ context: fork
107
+ agent: Explore
108
+ ---
109
+
110
+ ## Context
111
+ - PR diff: !`gh pr diff`
112
+ - Changed files: !`gh pr diff --name-only`
113
+
114
+ Summarize this pull request...
115
+ ```
116
+
117
+ ### Running in a Subagent
118
+
119
+ Add `context: fork` to run in isolation. The skill content becomes the subagent's prompt. It won't have conversation history.
120
+
121
+ ```yaml
122
+ ---
123
+ name: deep-research
124
+ description: Research a topic thoroughly
125
+ context: fork
126
+ agent: Explore
127
+ ---
128
+
129
+ Research $ARGUMENTS thoroughly:
130
+ 1. Find relevant files
131
+ 2. Analyze the code
132
+ 3. Summarize findings
133
+ ```
134
+
135
+ ## Progressive Disclosure
136
+
137
+ Keep SKILL.md under 500 lines. Split detailed content into reference files:
138
+
139
+ ```
140
+ my-skill/
141
+ ├── SKILL.md # Entry point (required, overview + navigation)
142
+ ├── reference.md # Detailed docs (loaded when needed)
143
+ ├── examples.md # Usage examples (loaded when needed)
144
+ └── scripts/
145
+ └── helper.py # Utility script (executed, not loaded)
146
+ ```
147
+
148
+ Link from SKILL.md: `For API details, see [reference.md](reference.md).`
149
+
150
+ Keep references **one level deep** from SKILL.md. Avoid nested chains.
151
+
152
+ ## Effective Descriptions
153
+
154
+ The description enables skill discovery. Include both **what** it does and **when** to use it.
155
+
156
+ **Good:**
157
+ ```yaml
158
+ description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
159
+ ```
160
+
161
+ **Bad:**
162
+ ```yaml
163
+ description: Helps with documents
164
+ ```
165
+
166
+ ## What Would You Like To Do?
167
+
168
+ 1. **Create new skill** - Build from scratch
169
+ 2. **Create new command** - Build a slash command
170
+ 3. **Audit existing skill** - Check against best practices
171
+ 4. **Add component** - Add workflow/reference/example
172
+ 5. **Get guidance** - Understand skill design
173
+
174
+ ## Creating a New Skill or Command
175
+
176
+ ### Step 1: Choose Type
177
+
178
+ Ask: Is this a manual workflow (deploy, commit, triage) or background knowledge (conventions, patterns)?
179
+
180
+ - **Manual workflow** → command with `disable-model-invocation: true`
181
+ - **Background knowledge** → skill without `disable-model-invocation`
182
+ - **Complex with supporting files** → skill directory
183
+
184
+ ### Step 2: Create the File
185
+
186
+ **Command:**
187
+ ```markdown
188
+ ---
189
+ name: my-command
190
+ description: What this command does
191
+ argument-hint: [expected arguments]
192
+ disable-model-invocation: true
193
+ allowed-tools: Bash(gh *), Read
194
+ ---
195
+
196
+ # Command Title
197
+
198
+ ## Workflow
199
+
200
+ ### Step 1: Gather Context
201
+ ...
202
+
203
+ ### Step 2: Execute
204
+ ...
205
+
206
+ ## Success Criteria
207
+ - [ ] Expected outcome 1
208
+ - [ ] Expected outcome 2
209
+ ```
210
+
211
+ **Skill:**
212
+ ```markdown
213
+ ---
214
+ name: my-skill
215
+ description: What it does. Use when [trigger conditions].
216
+ ---
217
+
218
+ # Skill Title
219
+
220
+ ## Quick Start
221
+ [Immediate actionable example]
222
+
223
+ ## Instructions
224
+ [Core guidance]
225
+
226
+ ## Examples
227
+ [Concrete input/output pairs]
228
+ ```
229
+
230
+ ### Step 3: Add Reference Files (If Needed)
231
+
232
+ Link from SKILL.md to detailed content:
233
+ ```markdown
234
+ For API reference, see [reference.md](reference.md).
235
+ For form filling guide, see [forms.md](forms.md).
236
+ ```
237
+
238
+ ### Step 4: Test With Real Usage
239
+
240
+ 1. Test with actual tasks, not test scenarios
241
+ 2. Invoke directly with `/skill-name` to verify
242
+ 3. Check auto-triggering by asking something that matches the description
243
+ 4. Refine based on real behavior
244
+
245
+ ## Audit Checklist
246
+
247
+ - [ ] Valid YAML frontmatter (name + description)
248
+ - [ ] Description includes trigger keywords and is specific
249
+ - [ ] Uses standard markdown headings (not XML tags)
250
+ - [ ] SKILL.md under 500 lines
251
+ - [ ] `disable-model-invocation: true` if it has side effects
252
+ - [ ] `allowed-tools` set if specific tools needed
253
+ - [ ] References one level deep, properly linked
254
+ - [ ] Examples are concrete, not abstract
255
+ - [ ] Tested with real usage
256
+
257
+ ## Anti-Patterns to Avoid
258
+
259
+ - **XML tags in body** - Use standard markdown headings
260
+ - **Vague descriptions** - Be specific with trigger keywords
261
+ - **Deep nesting** - Keep references one level from SKILL.md
262
+ - **Missing invocation control** - Side-effect workflows need `disable-model-invocation: true`
263
+ - **Too many options** - Provide a default with escape hatch
264
+ - **Punting to Claude** - Scripts should handle errors explicitly
265
+
266
+ ## Reference Files
267
+
268
+ For detailed guidance, see:
269
+ - [official-spec.md](references/official-spec.md) - Official skill specification
270
+ - [best-practices.md](references/best-practices.md) - Skill authoring best practices
271
+
272
+ ## Sources
273
+
274
+ - [Extend Claude with skills - Official Docs](https://code.claude.com/docs/en/skills)
275
+ - [GitHub - anthropics/skills](https://github.com/anthropics/skills)
@@ -0,0 +1,226 @@
1
+ <overview>
2
+ When building skills that make API calls requiring credentials (API keys, tokens, secrets), follow this protocol to prevent credentials from appearing in chat.
3
+ </overview>
4
+
5
+ <the_problem>
6
+ Raw curl commands with environment variables expose credentials:
7
+
8
+ ```bash
9
+ # ❌ BAD - API key visible in chat
10
+ curl -H "Authorization: Bearer $API_KEY" https://api.example.com/data
11
+ ```
12
+
13
+ When Claude executes this, the full command with expanded `$API_KEY` appears in the conversation.
14
+ </the_problem>
15
+
16
+ <the_solution>
17
+ Use `~/.claude/scripts/secure-api.sh` - a wrapper that loads credentials internally.
18
+
19
+ <for_supported_services>
20
+ ```bash
21
+ # ✅ GOOD - No credentials visible
22
+ ~/.claude/scripts/secure-api.sh <service> <operation> [args]
23
+
24
+ # Examples:
25
+ ~/.claude/scripts/secure-api.sh facebook list-campaigns
26
+ ~/.claude/scripts/secure-api.sh ghl search-contact "email@example.com"
27
+ ```
28
+ </for_supported_services>
29
+
30
+ <adding_new_services>
31
+ When building a new skill that requires API calls:
32
+
33
+ 1. **Add operations to the wrapper** (`~/.claude/scripts/secure-api.sh`):
34
+
35
+ ```bash
36
+ case "$SERVICE" in
37
+ yourservice)
38
+ case "$OPERATION" in
39
+ list-items)
40
+ curl -s -G \
41
+ -H "Authorization: Bearer $YOUR_API_KEY" \
42
+ "https://api.yourservice.com/items"
43
+ ;;
44
+ get-item)
45
+ ITEM_ID=$1
46
+ curl -s -G \
47
+ -H "Authorization: Bearer $YOUR_API_KEY" \
48
+ "https://api.yourservice.com/items/$ITEM_ID"
49
+ ;;
50
+ *)
51
+ echo "Unknown operation: $OPERATION" >&2
52
+ exit 1
53
+ ;;
54
+ esac
55
+ ;;
56
+ esac
57
+ ```
58
+
59
+ 2. **Add profile support to the wrapper** (if service needs multiple accounts):
60
+
61
+ ```bash
62
+ # In secure-api.sh, add to profile remapping section:
63
+ yourservice)
64
+ SERVICE_UPPER="YOURSERVICE"
65
+ YOURSERVICE_API_KEY=$(eval echo \$${SERVICE_UPPER}_${PROFILE_UPPER}_API_KEY)
66
+ YOURSERVICE_ACCOUNT_ID=$(eval echo \$${SERVICE_UPPER}_${PROFILE_UPPER}_ACCOUNT_ID)
67
+ ;;
68
+ ```
69
+
70
+ 3. **Add credential placeholders to `~/.claude/.env`** using profile naming:
71
+
72
+ ```bash
73
+ # Check if entries already exist
74
+ grep -q "YOURSERVICE_MAIN_API_KEY=" ~/.claude/.env 2>/dev/null || \
75
+ echo -e "\n# Your Service - Main profile\nYOURSERVICE_MAIN_API_KEY=\nYOURSERVICE_MAIN_ACCOUNT_ID=" >> ~/.claude/.env
76
+
77
+ echo "Added credential placeholders to ~/.claude/.env - user needs to fill them in"
78
+ ```
79
+
80
+ 4. **Document profile workflow in your SKILL.md**:
81
+
82
+ ```markdown
83
+ ## Profile Selection Workflow
84
+
85
+ **CRITICAL:** Always use profile selection to prevent using wrong account credentials.
86
+
87
+ ### When user requests YourService operation:
88
+
89
+ 1. **Check for saved profile:**
90
+ ```bash
91
+ ~/.claude/scripts/profile-state get yourservice
92
+ ```
93
+
94
+ 2. **If no profile saved, discover available profiles:**
95
+ ```bash
96
+ ~/.claude/scripts/list-profiles yourservice
97
+ ```
98
+
99
+ 3. **If only ONE profile:** Use it automatically and announce:
100
+ ```
101
+ "Using YourService profile 'main' to list items..."
102
+ ```
103
+
104
+ 4. **If MULTIPLE profiles:** Ask user which one:
105
+ ```
106
+ "Which YourService profile: main, clienta, or clientb?"
107
+ ```
108
+
109
+ 5. **Save user's selection:**
110
+ ```bash
111
+ ~/.claude/scripts/profile-state set yourservice <selected_profile>
112
+ ```
113
+
114
+ 6. **Always announce which profile before calling API:**
115
+ ```
116
+ "Using YourService profile 'main' to list items..."
117
+ ```
118
+
119
+ 7. **Make API call with profile:**
120
+ ```bash
121
+ ~/.claude/scripts/secure-api.sh yourservice:<profile> list-items
122
+ ```
123
+
124
+ ## Secure API Calls
125
+
126
+ All API calls use profile syntax:
127
+
128
+ ```bash
129
+ ~/.claude/scripts/secure-api.sh yourservice:<profile> <operation> [args]
130
+
131
+ # Examples:
132
+ ~/.claude/scripts/secure-api.sh yourservice:main list-items
133
+ ~/.claude/scripts/secure-api.sh yourservice:main get-item <ITEM_ID>
134
+ ```
135
+
136
+ **Profile persists for session:** Once selected, use same profile for subsequent operations unless user explicitly changes it.
137
+ ```
138
+ </adding_new_services>
139
+ </the_solution>
140
+
141
+ <pattern_guidelines>
142
+ <simple_get_requests>
143
+ ```bash
144
+ curl -s -G \
145
+ -H "Authorization: Bearer $API_KEY" \
146
+ "https://api.example.com/endpoint"
147
+ ```
148
+ </simple_get_requests>
149
+
150
+ <post_with_json_body>
151
+ ```bash
152
+ ITEM_ID=$1
153
+ curl -s -X POST \
154
+ -H "Authorization: Bearer $API_KEY" \
155
+ -H "Content-Type: application/json" \
156
+ -d @- \
157
+ "https://api.example.com/items/$ITEM_ID"
158
+ ```
159
+
160
+ Usage:
161
+ ```bash
162
+ echo '{"name":"value"}' | ~/.claude/scripts/secure-api.sh service create-item
163
+ ```
164
+ </post_with_json_body>
165
+
166
+ <post_with_form_data>
167
+ ```bash
168
+ curl -s -X POST \
169
+ -F "field1=value1" \
170
+ -F "field2=value2" \
171
+ -F "access_token=$API_TOKEN" \
172
+ "https://api.example.com/endpoint"
173
+ ```
174
+ </post_with_form_data>
175
+ </pattern_guidelines>
176
+
177
+ <credential_storage>
178
+ **Location:** `~/.claude/.env` (global for all skills, accessible from any directory)
179
+
180
+ **Format:**
181
+ ```bash
182
+ # Service credentials
183
+ SERVICE_API_KEY=your-key-here
184
+ SERVICE_ACCOUNT_ID=account-id-here
185
+
186
+ # Another service
187
+ OTHER_API_TOKEN=token-here
188
+ OTHER_BASE_URL=https://api.other.com
189
+ ```
190
+
191
+ **Loading in script:**
192
+ ```bash
193
+ set -a
194
+ source ~/.claude/.env 2>/dev/null || { echo "Error: ~/.claude/.env not found" >&2; exit 1; }
195
+ set +a
196
+ ```
197
+ </credential_storage>
198
+
199
+ <best_practices>
200
+ 1. **Never use raw curl with `$VARIABLE` in skill examples** - always use the wrapper
201
+ 2. **Add all operations to the wrapper** - don't make users figure out curl syntax
202
+ 3. **Auto-create credential placeholders** - add empty fields to `~/.claude/.env` immediately when creating the skill
203
+ 4. **Keep credentials in `~/.claude/.env`** - one central location, works everywhere
204
+ 5. **Document each operation** - show examples in SKILL.md
205
+ 6. **Handle errors gracefully** - check for missing env vars, show helpful error messages
206
+ </best_practices>
207
+
208
+ <testing>
209
+ Test the wrapper without exposing credentials:
210
+
211
+ ```bash
212
+ # This command appears in chat
213
+ ~/.claude/scripts/secure-api.sh facebook list-campaigns
214
+
215
+ # But API keys never appear - they're loaded inside the script
216
+ ```
217
+
218
+ Verify credentials are loaded:
219
+ ```bash
220
+ # Check .env exists
221
+ ls -la ~/.claude/.env
222
+
223
+ # Check specific variables (without showing values)
224
+ grep -q "YOUR_API_KEY=" ~/.claude/.env && echo "API key configured" || echo "API key missing"
225
+ ```
226
+ </testing>