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,302 @@
1
+ ---
2
+ name: git-worktree
3
+ description: This skill manages Git worktrees for isolated parallel development. It handles creating, listing, switching, and cleaning up worktrees with a simple interactive interface, following KISS principles.
4
+ ---
5
+
6
+ # Git Worktree Manager
7
+
8
+ This skill provides a unified interface for managing Git worktrees across your development workflow. Whether you're reviewing PRs in isolation or working on features in parallel, this skill handles all the complexity.
9
+
10
+ ## What This Skill Does
11
+
12
+ - **Create worktrees** from main branch with clear branch names
13
+ - **List worktrees** with current status
14
+ - **Switch between worktrees** for parallel work
15
+ - **Clean up completed worktrees** automatically
16
+ - **Interactive confirmations** at each step
17
+ - **Automatic .gitignore management** for worktree directory
18
+ - **Automatic .env file copying** from main repo to new worktrees
19
+
20
+ ## CRITICAL: Always Use the Manager Script
21
+
22
+ **NEVER call `git worktree add` directly.** Always use the `worktree-manager.sh` script.
23
+
24
+ The script handles critical setup that raw git commands don't:
25
+ 1. Copies `.env`, `.env.local`, `.env.test`, etc. from main repo
26
+ 2. Ensures `.worktrees` is in `.gitignore`
27
+ 3. Creates consistent directory structure
28
+
29
+ ```bash
30
+ # ✅ CORRECT - Always use the script
31
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-name
32
+
33
+ # ❌ WRONG - Never do this directly
34
+ git worktree add .worktrees/feature-name -b feature-name main
35
+ ```
36
+
37
+ ## When to Use This Skill
38
+
39
+ Use this skill in these scenarios:
40
+
41
+ 1. **Code Review (`/workflows:review`)**: If NOT already on the target branch (PR branch or requested branch), offer worktree for isolated review
42
+ 2. **Feature Work (`/workflows:work`)**: Always ask if user wants parallel worktree or live branch work
43
+ 3. **Parallel Development**: When working on multiple features simultaneously
44
+ 4. **Cleanup**: After completing work in a worktree
45
+
46
+ ## How to Use
47
+
48
+ ### In Claude Code Workflows
49
+
50
+ The skill is automatically called from `/workflows:review` and `/workflows:work` commands:
51
+
52
+ ```
53
+ # For review: offers worktree if not on PR branch
54
+ # For work: always asks - new branch or worktree?
55
+ ```
56
+
57
+ ### Manual Usage
58
+
59
+ You can also invoke the skill directly from bash:
60
+
61
+ ```bash
62
+ # Create a new worktree (copies .env files automatically)
63
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
64
+
65
+ # List all worktrees
66
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
67
+
68
+ # Switch to a worktree
69
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
70
+
71
+ # Copy .env files to an existing worktree (if they weren't copied)
72
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh copy-env feature-login
73
+
74
+ # Clean up completed worktrees
75
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
76
+ ```
77
+
78
+ ## Commands
79
+
80
+ ### `create <branch-name> [from-branch]`
81
+
82
+ Creates a new worktree with the given branch name.
83
+
84
+ **Options:**
85
+ - `branch-name` (required): The name for the new branch and worktree
86
+ - `from-branch` (optional): Base branch to create from (defaults to `main`)
87
+
88
+ **Example:**
89
+ ```bash
90
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
91
+ ```
92
+
93
+ **What happens:**
94
+ 1. Checks if worktree already exists
95
+ 2. Updates the base branch from remote
96
+ 3. Creates new worktree and branch
97
+ 4. **Copies all .env files from main repo** (.env, .env.local, .env.test, etc.)
98
+ 5. Shows path for cd-ing to the worktree
99
+
100
+ ### `list` or `ls`
101
+
102
+ Lists all available worktrees with their branches and current status.
103
+
104
+ **Example:**
105
+ ```bash
106
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
107
+ ```
108
+
109
+ **Output shows:**
110
+ - Worktree name
111
+ - Branch name
112
+ - Which is current (marked with ✓)
113
+ - Main repo status
114
+
115
+ ### `switch <name>` or `go <name>`
116
+
117
+ Switches to an existing worktree and cd's into it.
118
+
119
+ **Example:**
120
+ ```bash
121
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
122
+ ```
123
+
124
+ **Optional:**
125
+ - If name not provided, lists available worktrees and prompts for selection
126
+
127
+ ### `cleanup` or `clean`
128
+
129
+ Interactively cleans up inactive worktrees with confirmation.
130
+
131
+ **Example:**
132
+ ```bash
133
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
134
+ ```
135
+
136
+ **What happens:**
137
+ 1. Lists all inactive worktrees
138
+ 2. Asks for confirmation
139
+ 3. Removes selected worktrees
140
+ 4. Cleans up empty directories
141
+
142
+ ## Workflow Examples
143
+
144
+ ### Code Review with Worktree
145
+
146
+ ```bash
147
+ # Claude Code recognizes you're not on the PR branch
148
+ # Offers: "Use worktree for isolated review? (y/n)"
149
+
150
+ # You respond: yes
151
+ # Script runs (copies .env files automatically):
152
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create pr-123-feature-name
153
+
154
+ # You're now in isolated worktree for review with all env vars
155
+ cd .worktrees/pr-123-feature-name
156
+
157
+ # After review, return to main:
158
+ cd ../..
159
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
160
+ ```
161
+
162
+ ### Parallel Feature Development
163
+
164
+ ```bash
165
+ # For first feature (copies .env files):
166
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
167
+
168
+ # Later, start second feature (also copies .env files):
169
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-notifications
170
+
171
+ # List what you have:
172
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
173
+
174
+ # Switch between them as needed:
175
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
176
+
177
+ # Return to main and cleanup when done:
178
+ cd .
179
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
180
+ ```
181
+
182
+ ## Key Design Principles
183
+
184
+ ### KISS (Keep It Simple, Stupid)
185
+
186
+ - **One manager script** handles all worktree operations
187
+ - **Simple commands** with sensible defaults
188
+ - **Interactive prompts** prevent accidental operations
189
+ - **Clear naming** using branch names directly
190
+
191
+ ### Opinionated Defaults
192
+
193
+ - Worktrees always created from **main** (unless specified)
194
+ - Worktrees stored in **.worktrees/** directory
195
+ - Branch name becomes worktree name
196
+ - **.gitignore** automatically managed
197
+
198
+ ### Safety First
199
+
200
+ - **Confirms before creating** worktrees
201
+ - **Confirms before cleanup** to prevent accidental removal
202
+ - **Won't remove current worktree**
203
+ - **Clear error messages** for issues
204
+
205
+ ## Integration with Workflows
206
+
207
+ ### `/workflows:review`
208
+
209
+ Instead of always creating a worktree:
210
+
211
+ ```
212
+ 1. Check current branch
213
+ 2. If ALREADY on target branch (PR branch or requested branch) → stay there, no worktree needed
214
+ 3. If DIFFERENT branch than the review target → offer worktree:
215
+ "Use worktree for isolated review? (y/n)"
216
+ - yes → call git-worktree skill
217
+ - no → proceed with PR diff on current branch
218
+ ```
219
+
220
+ ### `/workflows:work`
221
+
222
+ Always offer choice:
223
+
224
+ ```
225
+ 1. Ask: "How do you want to work?
226
+ 1. New branch on current worktree (live work)
227
+ 2. Worktree (parallel work)"
228
+
229
+ 2. If choice 1 → create new branch normally
230
+ 3. If choice 2 → call git-worktree skill to create from main
231
+ ```
232
+
233
+ ## Troubleshooting
234
+
235
+ ### "Worktree already exists"
236
+
237
+ If you see this, the script will ask if you want to switch to it instead.
238
+
239
+ ### "Cannot remove worktree: it is the current worktree"
240
+
241
+ Switch out of the worktree first (to main repo), then cleanup:
242
+
243
+ ```bash
244
+ cd $(git rev-parse --show-toplevel)
245
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
246
+ ```
247
+
248
+ ### Lost in a worktree?
249
+
250
+ See where you are:
251
+
252
+ ```bash
253
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
254
+ ```
255
+
256
+ ### .env files missing in worktree?
257
+
258
+ If a worktree was created without .env files (e.g., via raw `git worktree add`), copy them:
259
+
260
+ ```bash
261
+ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh copy-env feature-name
262
+ ```
263
+
264
+ Navigate back to main:
265
+
266
+ ```bash
267
+ cd $(git rev-parse --show-toplevel)
268
+ ```
269
+
270
+ ## Technical Details
271
+
272
+ ### Directory Structure
273
+
274
+ ```
275
+ .worktrees/
276
+ ├── feature-login/ # Worktree 1
277
+ │ ├── .git
278
+ │ ├── app/
279
+ │ └── ...
280
+ ├── feature-notifications/ # Worktree 2
281
+ │ ├── .git
282
+ │ ├── app/
283
+ │ └── ...
284
+ └── ...
285
+
286
+ .gitignore (updated to include .worktrees)
287
+ ```
288
+
289
+ ### How It Works
290
+
291
+ - Uses `git worktree add` for isolated environments
292
+ - Each worktree has its own branch
293
+ - Changes in one worktree don't affect others
294
+ - Share git history with main repo
295
+ - Can push from any worktree
296
+
297
+ ### Performance
298
+
299
+ - Worktrees are lightweight (just file system links)
300
+ - No repository duplication
301
+ - Shared git objects for efficiency
302
+ - Much faster than cloning or stashing/switching
@@ -0,0 +1,337 @@
1
+ #!/bin/bash
2
+
3
+ # Git Worktree Manager
4
+ # Handles creating, listing, switching, and cleaning up Git worktrees
5
+ # KISS principle: Simple, interactive, opinionated
6
+
7
+ set -e
8
+
9
+ # Colors for output
10
+ RED='\033[0;31m'
11
+ GREEN='\033[0;32m'
12
+ YELLOW='\033[1;33m'
13
+ BLUE='\033[0;34m'
14
+ NC='\033[0m' # No Color
15
+
16
+ # Get repo root
17
+ GIT_ROOT=$(git rev-parse --show-toplevel)
18
+ WORKTREE_DIR="$GIT_ROOT/.worktrees"
19
+
20
+ # Ensure .worktrees is in .gitignore
21
+ ensure_gitignore() {
22
+ if ! grep -q "^\.worktrees$" "$GIT_ROOT/.gitignore" 2>/dev/null; then
23
+ echo ".worktrees" >> "$GIT_ROOT/.gitignore"
24
+ fi
25
+ }
26
+
27
+ # Copy .env files from main repo to worktree
28
+ copy_env_files() {
29
+ local worktree_path="$1"
30
+
31
+ echo -e "${BLUE}Copying environment files...${NC}"
32
+
33
+ # Find all .env* files in root (excluding .env.example which should be in git)
34
+ local env_files=()
35
+ for f in "$GIT_ROOT"/.env*; do
36
+ if [[ -f "$f" ]]; then
37
+ local basename=$(basename "$f")
38
+ # Skip .env.example (that's typically committed to git)
39
+ if [[ "$basename" != ".env.example" ]]; then
40
+ env_files+=("$basename")
41
+ fi
42
+ fi
43
+ done
44
+
45
+ if [[ ${#env_files[@]} -eq 0 ]]; then
46
+ echo -e " ${YELLOW}ℹ️ No .env files found in main repository${NC}"
47
+ return
48
+ fi
49
+
50
+ local copied=0
51
+ for env_file in "${env_files[@]}"; do
52
+ local source="$GIT_ROOT/$env_file"
53
+ local dest="$worktree_path/$env_file"
54
+
55
+ if [[ -f "$dest" ]]; then
56
+ echo -e " ${YELLOW}⚠️ $env_file already exists, backing up to ${env_file}.backup${NC}"
57
+ cp "$dest" "${dest}.backup"
58
+ fi
59
+
60
+ cp "$source" "$dest"
61
+ echo -e " ${GREEN}✓ Copied $env_file${NC}"
62
+ copied=$((copied + 1))
63
+ done
64
+
65
+ echo -e " ${GREEN}✓ Copied $copied environment file(s)${NC}"
66
+ }
67
+
68
+ # Create a new worktree
69
+ create_worktree() {
70
+ local branch_name="$1"
71
+ local from_branch="${2:-main}"
72
+
73
+ if [[ -z "$branch_name" ]]; then
74
+ echo -e "${RED}Error: Branch name required${NC}"
75
+ exit 1
76
+ fi
77
+
78
+ local worktree_path="$WORKTREE_DIR/$branch_name"
79
+
80
+ # Check if worktree already exists
81
+ if [[ -d "$worktree_path" ]]; then
82
+ echo -e "${YELLOW}Worktree already exists at: $worktree_path${NC}"
83
+ echo -e "Switch to it instead? (y/n)"
84
+ read -r response
85
+ if [[ "$response" == "y" ]]; then
86
+ switch_worktree "$branch_name"
87
+ fi
88
+ return
89
+ fi
90
+
91
+ echo -e "${BLUE}Creating worktree: $branch_name${NC}"
92
+ echo " From: $from_branch"
93
+ echo " Path: $worktree_path"
94
+
95
+ # Update main branch
96
+ echo -e "${BLUE}Updating $from_branch...${NC}"
97
+ git checkout "$from_branch"
98
+ git pull origin "$from_branch" || true
99
+
100
+ # Create worktree
101
+ mkdir -p "$WORKTREE_DIR"
102
+ ensure_gitignore
103
+
104
+ echo -e "${BLUE}Creating worktree...${NC}"
105
+ git worktree add -b "$branch_name" "$worktree_path" "$from_branch"
106
+
107
+ # Copy environment files
108
+ copy_env_files "$worktree_path"
109
+
110
+ echo -e "${GREEN}✓ Worktree created successfully!${NC}"
111
+ echo ""
112
+ echo "To switch to this worktree:"
113
+ echo -e "${BLUE}cd $worktree_path${NC}"
114
+ echo ""
115
+ }
116
+
117
+ # List all worktrees
118
+ list_worktrees() {
119
+ echo -e "${BLUE}Available worktrees:${NC}"
120
+ echo ""
121
+
122
+ if [[ ! -d "$WORKTREE_DIR" ]]; then
123
+ echo -e "${YELLOW}No worktrees found${NC}"
124
+ return
125
+ fi
126
+
127
+ local count=0
128
+ for worktree_path in "$WORKTREE_DIR"/*; do
129
+ if [[ -d "$worktree_path" && -e "$worktree_path/.git" ]]; then
130
+ count=$((count + 1))
131
+ local worktree_name=$(basename "$worktree_path")
132
+ local branch=$(git -C "$worktree_path" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
133
+
134
+ if [[ "$PWD" == "$worktree_path" ]]; then
135
+ echo -e "${GREEN}✓ $worktree_name${NC} (current) → branch: $branch"
136
+ else
137
+ echo -e " $worktree_name → branch: $branch"
138
+ fi
139
+ fi
140
+ done
141
+
142
+ if [[ $count -eq 0 ]]; then
143
+ echo -e "${YELLOW}No worktrees found${NC}"
144
+ else
145
+ echo ""
146
+ echo -e "${BLUE}Total: $count worktree(s)${NC}"
147
+ fi
148
+
149
+ echo ""
150
+ echo -e "${BLUE}Main repository:${NC}"
151
+ local main_branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
152
+ echo " Branch: $main_branch"
153
+ echo " Path: $GIT_ROOT"
154
+ }
155
+
156
+ # Switch to a worktree
157
+ switch_worktree() {
158
+ local worktree_name="$1"
159
+
160
+ if [[ -z "$worktree_name" ]]; then
161
+ list_worktrees
162
+ echo -e "${BLUE}Switch to which worktree? (enter name)${NC}"
163
+ read -r worktree_name
164
+ fi
165
+
166
+ local worktree_path="$WORKTREE_DIR/$worktree_name"
167
+
168
+ if [[ ! -d "$worktree_path" ]]; then
169
+ echo -e "${RED}Error: Worktree not found: $worktree_name${NC}"
170
+ echo ""
171
+ list_worktrees
172
+ exit 1
173
+ fi
174
+
175
+ echo -e "${GREEN}Switching to worktree: $worktree_name${NC}"
176
+ cd "$worktree_path"
177
+ echo -e "${BLUE}Now in: $(pwd)${NC}"
178
+ }
179
+
180
+ # Copy env files to an existing worktree (or current directory if in a worktree)
181
+ copy_env_to_worktree() {
182
+ local worktree_name="$1"
183
+ local worktree_path
184
+
185
+ if [[ -z "$worktree_name" ]]; then
186
+ # Check if we're currently in a worktree
187
+ local current_dir=$(pwd)
188
+ if [[ "$current_dir" == "$WORKTREE_DIR"/* ]]; then
189
+ worktree_path="$current_dir"
190
+ worktree_name=$(basename "$worktree_path")
191
+ echo -e "${BLUE}Detected current worktree: $worktree_name${NC}"
192
+ else
193
+ echo -e "${YELLOW}Usage: worktree-manager.sh copy-env [worktree-name]${NC}"
194
+ echo "Or run from within a worktree to copy to current directory"
195
+ list_worktrees
196
+ return 1
197
+ fi
198
+ else
199
+ worktree_path="$WORKTREE_DIR/$worktree_name"
200
+
201
+ if [[ ! -d "$worktree_path" ]]; then
202
+ echo -e "${RED}Error: Worktree not found: $worktree_name${NC}"
203
+ list_worktrees
204
+ return 1
205
+ fi
206
+ fi
207
+
208
+ copy_env_files "$worktree_path"
209
+ echo ""
210
+ }
211
+
212
+ # Clean up completed worktrees
213
+ cleanup_worktrees() {
214
+ if [[ ! -d "$WORKTREE_DIR" ]]; then
215
+ echo -e "${YELLOW}No worktrees to clean up${NC}"
216
+ return
217
+ fi
218
+
219
+ echo -e "${BLUE}Checking for completed worktrees...${NC}"
220
+ echo ""
221
+
222
+ local found=0
223
+ local to_remove=()
224
+
225
+ for worktree_path in "$WORKTREE_DIR"/*; do
226
+ if [[ -d "$worktree_path" && -e "$worktree_path/.git" ]]; then
227
+ local worktree_name=$(basename "$worktree_path")
228
+
229
+ # Skip if current worktree
230
+ if [[ "$PWD" == "$worktree_path" ]]; then
231
+ echo -e "${YELLOW}(skip) $worktree_name - currently active${NC}"
232
+ continue
233
+ fi
234
+
235
+ found=$((found + 1))
236
+ to_remove+=("$worktree_path")
237
+ echo -e "${YELLOW}• $worktree_name${NC}"
238
+ fi
239
+ done
240
+
241
+ if [[ $found -eq 0 ]]; then
242
+ echo -e "${GREEN}No inactive worktrees to clean up${NC}"
243
+ return
244
+ fi
245
+
246
+ echo ""
247
+ echo -e "Remove $found worktree(s)? (y/n)"
248
+ read -r response
249
+
250
+ if [[ "$response" != "y" ]]; then
251
+ echo -e "${YELLOW}Cleanup cancelled${NC}"
252
+ return
253
+ fi
254
+
255
+ echo -e "${BLUE}Cleaning up worktrees...${NC}"
256
+ for worktree_path in "${to_remove[@]}"; do
257
+ local worktree_name=$(basename "$worktree_path")
258
+ git worktree remove "$worktree_path" --force 2>/dev/null || true
259
+ echo -e "${GREEN}✓ Removed: $worktree_name${NC}"
260
+ done
261
+
262
+ # Clean up empty directory if nothing left
263
+ if [[ -z "$(ls -A "$WORKTREE_DIR" 2>/dev/null)" ]]; then
264
+ rmdir "$WORKTREE_DIR" 2>/dev/null || true
265
+ fi
266
+
267
+ echo -e "${GREEN}Cleanup complete!${NC}"
268
+ }
269
+
270
+ # Main command handler
271
+ main() {
272
+ local command="${1:-list}"
273
+
274
+ case "$command" in
275
+ create)
276
+ create_worktree "$2" "$3"
277
+ ;;
278
+ list|ls)
279
+ list_worktrees
280
+ ;;
281
+ switch|go)
282
+ switch_worktree "$2"
283
+ ;;
284
+ copy-env|env)
285
+ copy_env_to_worktree "$2"
286
+ ;;
287
+ cleanup|clean)
288
+ cleanup_worktrees
289
+ ;;
290
+ help)
291
+ show_help
292
+ ;;
293
+ *)
294
+ echo -e "${RED}Unknown command: $command${NC}"
295
+ echo ""
296
+ show_help
297
+ exit 1
298
+ ;;
299
+ esac
300
+ }
301
+
302
+ show_help() {
303
+ cat << EOF
304
+ Git Worktree Manager
305
+
306
+ Usage: worktree-manager.sh <command> [options]
307
+
308
+ Commands:
309
+ create <branch-name> [from-branch] Create new worktree (copies .env files automatically)
310
+ (from-branch defaults to main)
311
+ list | ls List all worktrees
312
+ switch | go [name] Switch to worktree
313
+ copy-env | env [name] Copy .env files from main repo to worktree
314
+ (if name omitted, uses current worktree)
315
+ cleanup | clean Clean up inactive worktrees
316
+ help Show this help message
317
+
318
+ Environment Files:
319
+ - Automatically copies .env, .env.local, .env.test, etc. on create
320
+ - Skips .env.example (should be in git)
321
+ - Creates .backup files if destination already exists
322
+ - Use 'copy-env' to refresh env files after main repo changes
323
+
324
+ Examples:
325
+ worktree-manager.sh create feature-login
326
+ worktree-manager.sh create feature-auth develop
327
+ worktree-manager.sh switch feature-login
328
+ worktree-manager.sh copy-env feature-login
329
+ worktree-manager.sh copy-env # copies to current worktree
330
+ worktree-manager.sh cleanup
331
+ worktree-manager.sh list
332
+
333
+ EOF
334
+ }
335
+
336
+ # Run
337
+ main "$@"