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,418 @@
1
+ # DSPy.rb LLM Providers
2
+
3
+ ## Adapter Architecture
4
+
5
+ DSPy.rb ships provider SDKs as separate adapter gems. Install only the adapters the project needs. Each adapter gem depends on the official SDK for its provider and auto-loads when present -- no explicit `require` necessary.
6
+
7
+ ```ruby
8
+ # Gemfile
9
+ gem 'dspy' # core framework (no provider SDKs)
10
+ gem 'dspy-openai' # OpenAI, OpenRouter, Ollama
11
+ gem 'dspy-anthropic' # Claude
12
+ gem 'dspy-gemini' # Gemini
13
+ gem 'dspy-ruby_llm' # RubyLLM unified adapter (12+ providers)
14
+ ```
15
+
16
+ ---
17
+
18
+ ## Per-Provider Adapters
19
+
20
+ ### dspy-openai
21
+
22
+ Covers any endpoint that speaks the OpenAI chat-completions protocol: OpenAI itself, OpenRouter, and Ollama.
23
+
24
+ **SDK dependency:** `openai ~> 0.17`
25
+
26
+ ```ruby
27
+ # OpenAI
28
+ lm = DSPy::LM.new('openai/gpt-4o-mini', api_key: ENV['OPENAI_API_KEY'])
29
+
30
+ # OpenRouter -- access 200+ models behind a single key
31
+ lm = DSPy::LM.new('openrouter/x-ai/grok-4-fast:free',
32
+ api_key: ENV['OPENROUTER_API_KEY']
33
+ )
34
+
35
+ # Ollama -- local models, no API key required
36
+ lm = DSPy::LM.new('ollama/llama3.2')
37
+
38
+ # Remote Ollama instance
39
+ lm = DSPy::LM.new('ollama/llama3.2',
40
+ base_url: 'https://my-ollama.example.com/v1',
41
+ api_key: 'optional-auth-token'
42
+ )
43
+ ```
44
+
45
+ All three sub-adapters share the same request handling, structured-output support, and error reporting. Swap providers without changing higher-level DSPy code.
46
+
47
+ For OpenRouter models that lack native structured-output support, disable it explicitly:
48
+
49
+ ```ruby
50
+ lm = DSPy::LM.new('openrouter/deepseek/deepseek-chat-v3.1:free',
51
+ api_key: ENV['OPENROUTER_API_KEY'],
52
+ structured_outputs: false
53
+ )
54
+ ```
55
+
56
+ ### dspy-anthropic
57
+
58
+ Provides the Claude adapter. Install it for any `anthropic/*` model id.
59
+
60
+ **SDK dependency:** `anthropic ~> 1.12`
61
+
62
+ ```ruby
63
+ lm = DSPy::LM.new('anthropic/claude-sonnet-4-20250514',
64
+ api_key: ENV['ANTHROPIC_API_KEY']
65
+ )
66
+ ```
67
+
68
+ Structured outputs default to tool-based JSON extraction (`structured_outputs: true`). Set `structured_outputs: false` to use enhanced-prompting extraction instead.
69
+
70
+ ```ruby
71
+ # Tool-based extraction (default, most reliable)
72
+ lm = DSPy::LM.new('anthropic/claude-sonnet-4-20250514',
73
+ api_key: ENV['ANTHROPIC_API_KEY'],
74
+ structured_outputs: true
75
+ )
76
+
77
+ # Enhanced prompting extraction
78
+ lm = DSPy::LM.new('anthropic/claude-sonnet-4-20250514',
79
+ api_key: ENV['ANTHROPIC_API_KEY'],
80
+ structured_outputs: false
81
+ )
82
+ ```
83
+
84
+ ### dspy-gemini
85
+
86
+ Provides the Gemini adapter. Install it for any `gemini/*` model id.
87
+
88
+ **SDK dependency:** `gemini-ai ~> 4.3`
89
+
90
+ ```ruby
91
+ lm = DSPy::LM.new('gemini/gemini-2.5-flash',
92
+ api_key: ENV['GEMINI_API_KEY']
93
+ )
94
+ ```
95
+
96
+ **Environment variable:** `GEMINI_API_KEY` (also accepts `GOOGLE_API_KEY`).
97
+
98
+ ---
99
+
100
+ ## RubyLLM Unified Adapter
101
+
102
+ The `dspy-ruby_llm` gem provides a single adapter that routes to 12+ providers through [RubyLLM](https://rubyllm.com). Use it when a project talks to multiple providers or needs access to Bedrock, VertexAI, DeepSeek, or Mistral without dedicated adapter gems.
103
+
104
+ **SDK dependency:** `ruby_llm ~> 1.3`
105
+
106
+ ### Model ID Format
107
+
108
+ Prefix every model id with `ruby_llm/`:
109
+
110
+ ```ruby
111
+ lm = DSPy::LM.new('ruby_llm/gpt-4o-mini')
112
+ lm = DSPy::LM.new('ruby_llm/claude-sonnet-4-20250514')
113
+ lm = DSPy::LM.new('ruby_llm/gemini-2.5-flash')
114
+ ```
115
+
116
+ The adapter detects the provider from RubyLLM's model registry automatically. For models not in the registry, pass `provider:` explicitly:
117
+
118
+ ```ruby
119
+ lm = DSPy::LM.new('ruby_llm/llama3.2', provider: 'ollama')
120
+ lm = DSPy::LM.new('ruby_llm/anthropic/claude-3-opus',
121
+ api_key: ENV['OPENROUTER_API_KEY'],
122
+ provider: 'openrouter'
123
+ )
124
+ ```
125
+
126
+ ### Using Existing RubyLLM Configuration
127
+
128
+ When RubyLLM is already configured globally, omit the `api_key:` argument. DSPy reuses the global config automatically:
129
+
130
+ ```ruby
131
+ RubyLLM.configure do |config|
132
+ config.openai_api_key = ENV['OPENAI_API_KEY']
133
+ config.anthropic_api_key = ENV['ANTHROPIC_API_KEY']
134
+ end
135
+
136
+ # No api_key needed -- picks up the global config
137
+ DSPy.configure do |c|
138
+ c.lm = DSPy::LM.new('ruby_llm/gpt-4o-mini')
139
+ end
140
+ ```
141
+
142
+ When an `api_key:` (or any of `base_url:`, `timeout:`, `max_retries:`) is passed, DSPy creates a **scoped context** instead of reusing the global config.
143
+
144
+ ### Cloud-Hosted Providers (Bedrock, VertexAI)
145
+
146
+ Configure RubyLLM globally first, then reference the model:
147
+
148
+ ```ruby
149
+ # AWS Bedrock
150
+ RubyLLM.configure do |c|
151
+ c.bedrock_api_key = ENV['AWS_ACCESS_KEY_ID']
152
+ c.bedrock_secret_key = ENV['AWS_SECRET_ACCESS_KEY']
153
+ c.bedrock_region = 'us-east-1'
154
+ end
155
+ lm = DSPy::LM.new('ruby_llm/anthropic.claude-3-5-sonnet', provider: 'bedrock')
156
+
157
+ # Google VertexAI
158
+ RubyLLM.configure do |c|
159
+ c.vertexai_project_id = 'your-project-id'
160
+ c.vertexai_location = 'us-central1'
161
+ end
162
+ lm = DSPy::LM.new('ruby_llm/gemini-pro', provider: 'vertexai')
163
+ ```
164
+
165
+ ### Supported Providers Table
166
+
167
+ | Provider | Example Model ID | Notes |
168
+ |-------------|--------------------------------------------|---------------------------------|
169
+ | OpenAI | `ruby_llm/gpt-4o-mini` | Auto-detected from registry |
170
+ | Anthropic | `ruby_llm/claude-sonnet-4-20250514` | Auto-detected from registry |
171
+ | Gemini | `ruby_llm/gemini-2.5-flash` | Auto-detected from registry |
172
+ | DeepSeek | `ruby_llm/deepseek-chat` | Auto-detected from registry |
173
+ | Mistral | `ruby_llm/mistral-large` | Auto-detected from registry |
174
+ | Ollama | `ruby_llm/llama3.2` | Use `provider: 'ollama'` |
175
+ | AWS Bedrock | `ruby_llm/anthropic.claude-3-5-sonnet` | Configure RubyLLM globally |
176
+ | VertexAI | `ruby_llm/gemini-pro` | Configure RubyLLM globally |
177
+ | OpenRouter | `ruby_llm/anthropic/claude-3-opus` | Use `provider: 'openrouter'` |
178
+ | Perplexity | `ruby_llm/llama-3.1-sonar-large` | Use `provider: 'perplexity'` |
179
+ | GPUStack | `ruby_llm/model-name` | Use `provider: 'gpustack'` |
180
+
181
+ ---
182
+
183
+ ## Rails Initializer Pattern
184
+
185
+ Configure DSPy inside an `after_initialize` block so Rails credentials and environment are fully loaded:
186
+
187
+ ```ruby
188
+ # config/initializers/dspy.rb
189
+ Rails.application.config.after_initialize do
190
+ return if Rails.env.test? # skip in test -- use VCR cassettes instead
191
+
192
+ DSPy.configure do |config|
193
+ config.lm = DSPy::LM.new(
194
+ 'openai/gpt-4o-mini',
195
+ api_key: Rails.application.credentials.openai_api_key,
196
+ structured_outputs: true
197
+ )
198
+
199
+ config.logger = if Rails.env.production?
200
+ Dry.Logger(:dspy, formatter: :json) do |logger|
201
+ logger.add_backend(stream: Rails.root.join("log/dspy.log"))
202
+ end
203
+ else
204
+ Dry.Logger(:dspy) do |logger|
205
+ logger.add_backend(level: :debug, stream: $stdout)
206
+ end
207
+ end
208
+ end
209
+ end
210
+ ```
211
+
212
+ Key points:
213
+
214
+ - Wrap in `after_initialize` so `Rails.application.credentials` is available.
215
+ - Return early in the test environment. Rely on VCR cassettes for deterministic LLM responses.
216
+ - Set `structured_outputs: true` (the default) for provider-native JSON extraction.
217
+ - Use `Dry.Logger` with `:json` formatter in production for structured log parsing.
218
+
219
+ ---
220
+
221
+ ## Fiber-Local LM Context
222
+
223
+ `DSPy.with_lm` sets a temporary language-model override scoped to the current Fiber. Every predictor call inside the block uses the override; outside the block the previous LM takes effect again.
224
+
225
+ ```ruby
226
+ fast = DSPy::LM.new('openai/gpt-4o-mini', api_key: ENV['OPENAI_API_KEY'])
227
+ powerful = DSPy::LM.new('anthropic/claude-sonnet-4-20250514', api_key: ENV['ANTHROPIC_API_KEY'])
228
+
229
+ classifier = Classifier.new
230
+
231
+ # Uses the global LM
232
+ result = classifier.call(text: "Hello")
233
+
234
+ # Temporarily switch to the fast model
235
+ DSPy.with_lm(fast) do
236
+ result = classifier.call(text: "Hello") # uses gpt-4o-mini
237
+ end
238
+
239
+ # Temporarily switch to the powerful model
240
+ DSPy.with_lm(powerful) do
241
+ result = classifier.call(text: "Hello") # uses claude-sonnet-4
242
+ end
243
+ ```
244
+
245
+ ### LM Resolution Hierarchy
246
+
247
+ DSPy resolves the active language model in this order:
248
+
249
+ 1. **Instance-level LM** -- set directly on a module instance via `configure`
250
+ 2. **Fiber-local LM** -- set via `DSPy.with_lm`
251
+ 3. **Global LM** -- set via `DSPy.configure`
252
+
253
+ Instance-level configuration always wins, even inside a `DSPy.with_lm` block:
254
+
255
+ ```ruby
256
+ classifier = Classifier.new
257
+ classifier.configure { |c| c.lm = DSPy::LM.new('anthropic/claude-sonnet-4-20250514', api_key: ENV['ANTHROPIC_API_KEY']) }
258
+
259
+ fast = DSPy::LM.new('openai/gpt-4o-mini', api_key: ENV['OPENAI_API_KEY'])
260
+
261
+ DSPy.with_lm(fast) do
262
+ classifier.call(text: "Test") # still uses claude-sonnet-4 (instance-level wins)
263
+ end
264
+ ```
265
+
266
+ ### configure_predictor for Fine-Grained Agent Control
267
+
268
+ Complex agents (`ReAct`, `CodeAct`, `DeepResearch`, `DeepSearch`) contain internal predictors. Use `configure` for a blanket override and `configure_predictor` to target a specific sub-predictor:
269
+
270
+ ```ruby
271
+ agent = DSPy::ReAct.new(MySignature, tools: tools)
272
+
273
+ # Set a default LM for the agent and all its children
274
+ agent.configure { |c| c.lm = DSPy::LM.new('openai/gpt-4o-mini', api_key: ENV['OPENAI_API_KEY']) }
275
+
276
+ # Override just the reasoning predictor with a more capable model
277
+ agent.configure_predictor('thought_generator') do |c|
278
+ c.lm = DSPy::LM.new('anthropic/claude-sonnet-4-20250514', api_key: ENV['ANTHROPIC_API_KEY'])
279
+ end
280
+
281
+ result = agent.call(question: "Summarize the report")
282
+ ```
283
+
284
+ Both methods support chaining:
285
+
286
+ ```ruby
287
+ agent
288
+ .configure { |c| c.lm = cheap_model }
289
+ .configure_predictor('thought_generator') { |c| c.lm = expensive_model }
290
+ ```
291
+
292
+ #### Available Predictors by Agent Type
293
+
294
+ | Agent | Internal Predictors |
295
+ |----------------------|------------------------------------------------------------------|
296
+ | `DSPy::ReAct` | `thought_generator`, `observation_processor` |
297
+ | `DSPy::CodeAct` | `code_generator`, `observation_processor` |
298
+ | `DSPy::DeepResearch` | `planner`, `synthesizer`, `qa_reviewer`, `reporter` |
299
+ | `DSPy::DeepSearch` | `seed_predictor`, `search_predictor`, `reader_predictor`, `reason_predictor` |
300
+
301
+ #### Propagation Rules
302
+
303
+ - Configuration propagates recursively to children and grandchildren.
304
+ - Children with an already-configured LM are **not** overwritten by a later parent `configure` call.
305
+ - Configure the parent first, then override specific children.
306
+
307
+ ---
308
+
309
+ ## Feature-Flagged Model Selection
310
+
311
+ Use a `FeatureFlags` module backed by ENV vars to centralize model selection. Each tool or agent reads its model from the flags, falling back to a global default.
312
+
313
+ ```ruby
314
+ module FeatureFlags
315
+ module_function
316
+
317
+ def default_model
318
+ ENV.fetch('DSPY_DEFAULT_MODEL', 'openai/gpt-4o-mini')
319
+ end
320
+
321
+ def default_api_key
322
+ ENV.fetch('DSPY_DEFAULT_API_KEY') { ENV.fetch('OPENAI_API_KEY', nil) }
323
+ end
324
+
325
+ def model_for(tool_name)
326
+ env_key = "DSPY_MODEL_#{tool_name.upcase}"
327
+ ENV.fetch(env_key, default_model)
328
+ end
329
+
330
+ def api_key_for(tool_name)
331
+ env_key = "DSPY_API_KEY_#{tool_name.upcase}"
332
+ ENV.fetch(env_key, default_api_key)
333
+ end
334
+ end
335
+ ```
336
+
337
+ ### Per-Tool Model Override
338
+
339
+ Override an individual tool's model without touching application code:
340
+
341
+ ```bash
342
+ # .env
343
+ DSPY_DEFAULT_MODEL=openai/gpt-4o-mini
344
+ DSPY_DEFAULT_API_KEY=sk-...
345
+
346
+ # Override the classifier to use Claude
347
+ DSPY_MODEL_CLASSIFIER=anthropic/claude-sonnet-4-20250514
348
+ DSPY_API_KEY_CLASSIFIER=sk-ant-...
349
+
350
+ # Override the summarizer to use Gemini
351
+ DSPY_MODEL_SUMMARIZER=gemini/gemini-2.5-flash
352
+ DSPY_API_KEY_SUMMARIZER=...
353
+ ```
354
+
355
+ Wire each agent to its flag at initialization:
356
+
357
+ ```ruby
358
+ class ClassifierAgent < DSPy::Module
359
+ def initialize
360
+ super
361
+ model = FeatureFlags.model_for('classifier')
362
+ api_key = FeatureFlags.api_key_for('classifier')
363
+
364
+ @predictor = DSPy::Predict.new(ClassifySignature)
365
+ configure { |c| c.lm = DSPy::LM.new(model, api_key: api_key) }
366
+ end
367
+
368
+ def forward(text:)
369
+ @predictor.call(text: text)
370
+ end
371
+ end
372
+ ```
373
+
374
+ This pattern keeps model routing declarative and avoids scattering `DSPy::LM.new` calls across the codebase.
375
+
376
+ ---
377
+
378
+ ## Compatibility Matrix
379
+
380
+ Feature support across direct adapter gems. All features listed assume `structured_outputs: true` (the default).
381
+
382
+ | Feature | OpenAI | Anthropic | Gemini | Ollama | OpenRouter | RubyLLM |
383
+ |----------------------|--------|-----------|--------|----------|------------|-------------|
384
+ | Structured Output | Native JSON mode | Tool-based extraction | Native JSON schema | OpenAI-compatible JSON | Varies by model | Via `with_schema` |
385
+ | Vision (Images) | File + URL | File + Base64 | File + Base64 | Limited | Varies | Delegates to underlying provider |
386
+ | Image URLs | Yes | No | No | No | Varies | Depends on provider |
387
+ | Tool Calling | Yes | Yes | Yes | Varies | Varies | Yes |
388
+ | Streaming | Yes | Yes | Yes | Yes | Yes | Yes |
389
+
390
+ **Notes:**
391
+
392
+ - **Structured Output** is enabled by default on every adapter. Set `structured_outputs: false` to fall back to enhanced-prompting extraction.
393
+ - **Vision / Image URLs:** Only OpenAI supports passing a URL directly. For Anthropic and Gemini, load images from file or Base64:
394
+ ```ruby
395
+ DSPy::Image.from_url("https://example.com/img.jpg") # OpenAI only
396
+ DSPy::Image.from_file("path/to/image.jpg") # all providers
397
+ DSPy::Image.from_base64(data, mime_type: "image/jpeg") # all providers
398
+ ```
399
+ - **RubyLLM** delegates to the underlying provider, so feature support matches the provider column in the table.
400
+
401
+ ### Choosing an Adapter Strategy
402
+
403
+ | Scenario | Recommended Adapter |
404
+ |-------------------------------------------|--------------------------------|
405
+ | Single provider (OpenAI, Claude, or Gemini) | Dedicated gem (`dspy-openai`, `dspy-anthropic`, `dspy-gemini`) |
406
+ | Multi-provider with per-agent model routing | `dspy-ruby_llm` |
407
+ | AWS Bedrock or Google VertexAI | `dspy-ruby_llm` |
408
+ | Local development with Ollama | `dspy-openai` (Ollama sub-adapter) or `dspy-ruby_llm` |
409
+ | OpenRouter for cost optimization | `dspy-openai` (OpenRouter sub-adapter) |
410
+
411
+ ### Current Recommended Models
412
+
413
+ | Provider | Model ID | Use Case |
414
+ |-----------|---------------------------------------|-----------------------|
415
+ | OpenAI | `openai/gpt-4o-mini` | Fast, cost-effective |
416
+ | Anthropic | `anthropic/claude-sonnet-4-20250514` | Balanced reasoning |
417
+ | Gemini | `gemini/gemini-2.5-flash` | Fast, cost-effective |
418
+ | Ollama | `ollama/llama3.2` | Local, zero API cost |