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,502 @@
1
+ # DSPy.rb Toolsets
2
+
3
+ ## Tools::Base
4
+
5
+ `DSPy::Tools::Base` is the base class for single-purpose tools. Each subclass exposes one operation to an LLM agent through a `call` method.
6
+
7
+ ### Defining a Tool
8
+
9
+ Set the tool's identity with the `tool_name` and `tool_description` class-level DSL methods. Define the `call` instance method with a Sorbet `sig` declaration so DSPy.rb can generate the JSON schema the LLM uses to invoke the tool.
10
+
11
+ ```ruby
12
+ class WeatherLookup < DSPy::Tools::Base
13
+ extend T::Sig
14
+
15
+ tool_name "weather_lookup"
16
+ tool_description "Look up current weather for a given city"
17
+
18
+ sig { params(city: String, units: T.nilable(String)).returns(String) }
19
+ def call(city:, units: nil)
20
+ # Fetch weather data and return a string summary
21
+ "72F and sunny in #{city}"
22
+ end
23
+ end
24
+ ```
25
+
26
+ Key points:
27
+
28
+ - Inherit from `DSPy::Tools::Base`, not `DSPy::Tool`.
29
+ - Use `tool_name` (class method) to set the name the LLM sees. Without it, the class name is lowercased as a fallback.
30
+ - Use `tool_description` (class method) to set the human-readable description surfaced in the tool schema.
31
+ - The `call` method must use **keyword arguments**. Positional arguments are supported but keyword arguments produce better schemas.
32
+ - Always attach a Sorbet `sig` to `call`. Without a signature, the generated schema has empty properties and the LLM cannot determine parameter types.
33
+
34
+ ### Schema Generation
35
+
36
+ `call_schema_object` introspects the Sorbet signature on `call` and returns a hash representing the JSON Schema `parameters` object:
37
+
38
+ ```ruby
39
+ WeatherLookup.call_schema_object
40
+ # => {
41
+ # type: "object",
42
+ # properties: {
43
+ # city: { type: "string", description: "Parameter city" },
44
+ # units: { type: "string", description: "Parameter units (optional)" }
45
+ # },
46
+ # required: ["city"]
47
+ # }
48
+ ```
49
+
50
+ `call_schema` wraps this in the full LLM tool-calling format:
51
+
52
+ ```ruby
53
+ WeatherLookup.call_schema
54
+ # => {
55
+ # type: "function",
56
+ # function: {
57
+ # name: "call",
58
+ # description: "Call the WeatherLookup tool",
59
+ # parameters: { ... }
60
+ # }
61
+ # }
62
+ ```
63
+
64
+ ### Using Tools with ReAct
65
+
66
+ Pass tool instances in an array to `DSPy::ReAct`:
67
+
68
+ ```ruby
69
+ agent = DSPy::ReAct.new(
70
+ MySignature,
71
+ tools: [WeatherLookup.new, AnotherTool.new]
72
+ )
73
+
74
+ result = agent.call(question: "What is the weather in Berlin?")
75
+ puts result.answer
76
+ ```
77
+
78
+ Access output fields with dot notation (`result.answer`), not hash access (`result[:answer]`).
79
+
80
+ ---
81
+
82
+ ## Tools::Toolset
83
+
84
+ `DSPy::Tools::Toolset` groups multiple related methods into a single class. Each exposed method becomes an independent tool from the LLM's perspective.
85
+
86
+ ### Defining a Toolset
87
+
88
+ ```ruby
89
+ class DatabaseToolset < DSPy::Tools::Toolset
90
+ extend T::Sig
91
+
92
+ toolset_name "db"
93
+
94
+ tool :query, description: "Run a read-only SQL query"
95
+ tool :insert, description: "Insert a record into a table"
96
+ tool :delete, description: "Delete a record by ID"
97
+
98
+ sig { params(sql: String).returns(String) }
99
+ def query(sql:)
100
+ # Execute read query
101
+ end
102
+
103
+ sig { params(table: String, data: T::Hash[String, String]).returns(String) }
104
+ def insert(table:, data:)
105
+ # Insert record
106
+ end
107
+
108
+ sig { params(table: String, id: Integer).returns(String) }
109
+ def delete(table:, id:)
110
+ # Delete record
111
+ end
112
+ end
113
+ ```
114
+
115
+ ### DSL Methods
116
+
117
+ **`toolset_name(name)`** -- Set the prefix for all generated tool names. If omitted, the class name minus `Toolset` suffix is lowercased (e.g., `DatabaseToolset` becomes `database`).
118
+
119
+ ```ruby
120
+ toolset_name "db"
121
+ # tool :query produces a tool named "db_query"
122
+ ```
123
+
124
+ **`tool(method_name, tool_name:, description:)`** -- Expose a method as a tool.
125
+
126
+ - `method_name` (Symbol, required) -- the instance method to expose.
127
+ - `tool_name:` (String, optional) -- override the default `<toolset_name>_<method_name>` naming.
128
+ - `description:` (String, optional) -- description shown to the LLM. Defaults to a humanized version of the method name.
129
+
130
+ ```ruby
131
+ tool :word_count, tool_name: "text_wc", description: "Count lines, words, and characters"
132
+ # Produces a tool named "text_wc" instead of "text_word_count"
133
+ ```
134
+
135
+ ### Converting to a Tool Array
136
+
137
+ Call `to_tools` on the class (not an instance) to get an array of `ToolProxy` objects compatible with `DSPy::Tools::Base`:
138
+
139
+ ```ruby
140
+ agent = DSPy::ReAct.new(
141
+ AnalyzeText,
142
+ tools: DatabaseToolset.to_tools
143
+ )
144
+ ```
145
+
146
+ Each `ToolProxy` wraps one method, delegates `call` to the underlying toolset instance, and generates its own JSON schema from the method's Sorbet signature.
147
+
148
+ ### Shared State
149
+
150
+ All tool proxies from a single `to_tools` call share one toolset instance. Store shared state (connections, caches, configuration) in the toolset's `initialize`:
151
+
152
+ ```ruby
153
+ class ApiToolset < DSPy::Tools::Toolset
154
+ extend T::Sig
155
+
156
+ toolset_name "api"
157
+
158
+ tool :get, description: "Make a GET request"
159
+ tool :post, description: "Make a POST request"
160
+
161
+ sig { params(base_url: String).void }
162
+ def initialize(base_url:)
163
+ @base_url = base_url
164
+ @client = HTTP.persistent(base_url)
165
+ end
166
+
167
+ sig { params(path: String).returns(String) }
168
+ def get(path:)
169
+ @client.get("#{@base_url}#{path}").body.to_s
170
+ end
171
+
172
+ sig { params(path: String, body: String).returns(String) }
173
+ def post(path:, body:)
174
+ @client.post("#{@base_url}#{path}", body: body).body.to_s
175
+ end
176
+ end
177
+ ```
178
+
179
+ ---
180
+
181
+ ## Type Safety
182
+
183
+ Sorbet signatures on tool methods drive both JSON schema generation and automatic type coercion of LLM responses.
184
+
185
+ ### Basic Types
186
+
187
+ ```ruby
188
+ sig { params(
189
+ text: String,
190
+ count: Integer,
191
+ score: Float,
192
+ enabled: T::Boolean,
193
+ threshold: Numeric
194
+ ).returns(String) }
195
+ def analyze(text:, count:, score:, enabled:, threshold:)
196
+ # ...
197
+ end
198
+ ```
199
+
200
+ | Sorbet Type | JSON Schema |
201
+ |------------------|----------------------------------------------------|
202
+ | `String` | `{"type": "string"}` |
203
+ | `Integer` | `{"type": "integer"}` |
204
+ | `Float` | `{"type": "number"}` |
205
+ | `Numeric` | `{"type": "number"}` |
206
+ | `T::Boolean` | `{"type": "boolean"}` |
207
+ | `T::Enum` | `{"type": "string", "enum": [...]}` |
208
+ | `T::Struct` | `{"type": "object", "properties": {...}}` |
209
+ | `T::Array[Type]` | `{"type": "array", "items": {...}}` |
210
+ | `T::Hash[K, V]` | `{"type": "object", "additionalProperties": {...}}`|
211
+ | `T.nilable(Type)`| `{"type": [original, "null"]}` |
212
+ | `T.any(T1, T2)` | `{"oneOf": [{...}, {...}]}` |
213
+ | `T.class_of(X)` | `{"type": "string"}` |
214
+
215
+ ### T::Enum Parameters
216
+
217
+ Define a `T::Enum` and reference it in a tool signature. DSPy.rb generates a JSON Schema `enum` constraint and automatically deserializes the LLM's string response into the correct enum instance.
218
+
219
+ ```ruby
220
+ class Priority < T::Enum
221
+ enums do
222
+ Low = new('low')
223
+ Medium = new('medium')
224
+ High = new('high')
225
+ Critical = new('critical')
226
+ end
227
+ end
228
+
229
+ class Status < T::Enum
230
+ enums do
231
+ Pending = new('pending')
232
+ InProgress = new('in-progress')
233
+ Completed = new('completed')
234
+ end
235
+ end
236
+
237
+ sig { params(priority: Priority, status: Status).returns(String) }
238
+ def update_task(priority:, status:)
239
+ "Updated to #{priority.serialize} / #{status.serialize}"
240
+ end
241
+ ```
242
+
243
+ The generated schema constrains the parameter to valid values:
244
+
245
+ ```json
246
+ {
247
+ "priority": {
248
+ "type": "string",
249
+ "enum": ["low", "medium", "high", "critical"]
250
+ }
251
+ }
252
+ ```
253
+
254
+ **Case-insensitive matching**: When the LLM returns `"HIGH"` or `"High"` instead of `"high"`, DSPy.rb first tries an exact `try_deserialize`, then falls back to a case-insensitive lookup. This prevents failures caused by LLM casing variations.
255
+
256
+ ### T::Struct Parameters
257
+
258
+ Use `T::Struct` for complex nested objects. DSPy.rb generates nested JSON Schema properties and recursively coerces the LLM's hash response into struct instances.
259
+
260
+ ```ruby
261
+ class TaskMetadata < T::Struct
262
+ prop :id, String
263
+ prop :priority, Priority
264
+ prop :tags, T::Array[String]
265
+ prop :estimated_hours, T.nilable(Float), default: nil
266
+ end
267
+
268
+ class TaskRequest < T::Struct
269
+ prop :title, String
270
+ prop :description, String
271
+ prop :status, Status
272
+ prop :metadata, TaskMetadata
273
+ prop :assignees, T::Array[String]
274
+ end
275
+
276
+ sig { params(task: TaskRequest).returns(String) }
277
+ def create_task(task:)
278
+ "Created: #{task.title} (#{task.status.serialize})"
279
+ end
280
+ ```
281
+
282
+ The LLM sees the full nested object schema and DSPy.rb reconstructs the struct tree from the JSON response, including enum fields inside nested structs.
283
+
284
+ ### Nilable Parameters
285
+
286
+ Mark optional parameters with `T.nilable(...)` and provide a default value of `nil` in the method signature. These parameters are excluded from the JSON Schema `required` array.
287
+
288
+ ```ruby
289
+ sig { params(
290
+ query: String,
291
+ max_results: T.nilable(Integer),
292
+ filter: T.nilable(String)
293
+ ).returns(String) }
294
+ def search(query:, max_results: nil, filter: nil)
295
+ # query is required; max_results and filter are optional
296
+ end
297
+ ```
298
+
299
+ ### Collections
300
+
301
+ Typed arrays and hashes generate precise item/value schemas:
302
+
303
+ ```ruby
304
+ sig { params(
305
+ tags: T::Array[String],
306
+ priorities: T::Array[Priority],
307
+ config: T::Hash[String, T.any(String, Integer, Float)]
308
+ ).returns(String) }
309
+ def configure(tags:, priorities:, config:)
310
+ # Array elements and hash values are validated and coerced
311
+ end
312
+ ```
313
+
314
+ ### Union Types
315
+
316
+ `T.any(...)` generates a `oneOf` JSON Schema. When one of the union members is a `T::Struct`, DSPy.rb uses the `_type` discriminator field to select the correct struct class during coercion.
317
+
318
+ ```ruby
319
+ sig { params(value: T.any(String, Integer, Float)).returns(String) }
320
+ def handle_flexible(value:)
321
+ # Accepts multiple types
322
+ end
323
+ ```
324
+
325
+ ---
326
+
327
+ ## Built-in Toolsets
328
+
329
+ ### TextProcessingToolset
330
+
331
+ `DSPy::Tools::TextProcessingToolset` provides Unix-style text analysis and manipulation operations. Toolset name prefix: `text`.
332
+
333
+ | Tool Name | Method | Description |
334
+ |-----------------------------------|-------------------|--------------------------------------------|
335
+ | `text_grep` | `grep` | Search for patterns with optional case-insensitive and count-only modes |
336
+ | `text_wc` | `word_count` | Count lines, words, and characters |
337
+ | `text_rg` | `ripgrep` | Fast pattern search with context lines |
338
+ | `text_extract_lines` | `extract_lines` | Extract a range of lines by number |
339
+ | `text_filter_lines` | `filter_lines` | Keep or reject lines matching a regex |
340
+ | `text_unique_lines` | `unique_lines` | Deduplicate lines, optionally preserving order |
341
+ | `text_sort_lines` | `sort_lines` | Sort lines alphabetically or numerically |
342
+ | `text_summarize_text` | `summarize_text` | Produce a statistical summary (counts, averages, frequent words) |
343
+
344
+ Usage:
345
+
346
+ ```ruby
347
+ agent = DSPy::ReAct.new(
348
+ AnalyzeText,
349
+ tools: DSPy::Tools::TextProcessingToolset.to_tools
350
+ )
351
+
352
+ result = agent.call(text: log_contents, question: "How many error lines are there?")
353
+ puts result.answer
354
+ ```
355
+
356
+ ### GitHubCLIToolset
357
+
358
+ `DSPy::Tools::GitHubCLIToolset` wraps the `gh` CLI for read-oriented GitHub operations. Toolset name prefix: `github`.
359
+
360
+ | Tool Name | Method | Description |
361
+ |------------------------|-------------------|---------------------------------------------------|
362
+ | `github_list_issues` | `list_issues` | List issues filtered by state, labels, assignee |
363
+ | `github_list_prs` | `list_prs` | List pull requests filtered by state, author, base|
364
+ | `github_get_issue` | `get_issue` | Retrieve details of a single issue |
365
+ | `github_get_pr` | `get_pr` | Retrieve details of a single pull request |
366
+ | `github_api_request` | `api_request` | Make an arbitrary GET request to the GitHub API |
367
+ | `github_traffic_views` | `traffic_views` | Fetch repository traffic view counts |
368
+ | `github_traffic_clones`| `traffic_clones` | Fetch repository traffic clone counts |
369
+
370
+ This toolset uses `T::Enum` parameters (`IssueState`, `PRState`, `ReviewState`) for state filters, demonstrating enum-based tool signatures in practice.
371
+
372
+ ```ruby
373
+ agent = DSPy::ReAct.new(
374
+ RepoAnalysis,
375
+ tools: DSPy::Tools::GitHubCLIToolset.to_tools
376
+ )
377
+ ```
378
+
379
+ ---
380
+
381
+ ## Testing
382
+
383
+ ### Unit Testing Individual Tools
384
+
385
+ Test `DSPy::Tools::Base` subclasses by instantiating and calling `call` directly:
386
+
387
+ ```ruby
388
+ RSpec.describe WeatherLookup do
389
+ subject(:tool) { described_class.new }
390
+
391
+ it "returns weather for a city" do
392
+ result = tool.call(city: "Berlin")
393
+ expect(result).to include("Berlin")
394
+ end
395
+
396
+ it "exposes the correct tool name" do
397
+ expect(tool.name).to eq("weather_lookup")
398
+ end
399
+
400
+ it "generates a valid schema" do
401
+ schema = described_class.call_schema_object
402
+ expect(schema[:required]).to include("city")
403
+ expect(schema[:properties]).to have_key(:city)
404
+ end
405
+ end
406
+ ```
407
+
408
+ ### Unit Testing Toolsets
409
+
410
+ Test toolset methods directly on an instance. Verify tool generation with `to_tools`:
411
+
412
+ ```ruby
413
+ RSpec.describe DatabaseToolset do
414
+ subject(:toolset) { described_class.new }
415
+
416
+ it "executes a query" do
417
+ result = toolset.query(sql: "SELECT 1")
418
+ expect(result).to be_a(String)
419
+ end
420
+
421
+ it "generates tools with correct names" do
422
+ tools = described_class.to_tools
423
+ names = tools.map(&:name)
424
+ expect(names).to contain_exactly("db_query", "db_insert", "db_delete")
425
+ end
426
+
427
+ it "generates tool descriptions" do
428
+ tools = described_class.to_tools
429
+ query_tool = tools.find { |t| t.name == "db_query" }
430
+ expect(query_tool.description).to eq("Run a read-only SQL query")
431
+ end
432
+ end
433
+ ```
434
+
435
+ ### Mocking Predictions Inside Tools
436
+
437
+ When a tool calls a DSPy predictor internally, stub the predictor to isolate tool logic from LLM calls:
438
+
439
+ ```ruby
440
+ class SmartSearchTool < DSPy::Tools::Base
441
+ extend T::Sig
442
+
443
+ tool_name "smart_search"
444
+ tool_description "Search with query expansion"
445
+
446
+ sig { void }
447
+ def initialize
448
+ @expander = DSPy::Predict.new(QueryExpansionSignature)
449
+ end
450
+
451
+ sig { params(query: String).returns(String) }
452
+ def call(query:)
453
+ expanded = @expander.call(query: query)
454
+ perform_search(expanded.expanded_query)
455
+ end
456
+
457
+ private
458
+
459
+ def perform_search(query)
460
+ # actual search logic
461
+ end
462
+ end
463
+
464
+ RSpec.describe SmartSearchTool do
465
+ subject(:tool) { described_class.new }
466
+
467
+ before do
468
+ expansion_result = double("result", expanded_query: "expanded test query")
469
+ allow_any_instance_of(DSPy::Predict).to receive(:call).and_return(expansion_result)
470
+ end
471
+
472
+ it "expands the query before searching" do
473
+ allow(tool).to receive(:perform_search).with("expanded test query").and_return("found 3 results")
474
+ result = tool.call(query: "test")
475
+ expect(result).to eq("found 3 results")
476
+ end
477
+ end
478
+ ```
479
+
480
+ ### Testing Enum Coercion
481
+
482
+ Verify that string values from LLM responses deserialize into the correct enum instances:
483
+
484
+ ```ruby
485
+ RSpec.describe "enum coercion" do
486
+ it "handles case-insensitive enum values" do
487
+ toolset = GitHubCLIToolset.new
488
+ # The LLM may return "OPEN" instead of "open"
489
+ result = toolset.list_issues(state: IssueState::Open)
490
+ expect(result).to be_a(String)
491
+ end
492
+ end
493
+ ```
494
+
495
+ ---
496
+
497
+ ## Constraints
498
+
499
+ - All exposed tool methods must use **keyword arguments**. Positional-only parameters generate schemas but keyword arguments produce more reliable LLM interactions.
500
+ - Each exposed method becomes a **separate, independent tool**. Method chaining or multi-step sequences within a single tool call are not supported.
501
+ - Shared state across tool proxies is scoped to a single `to_tools` call. Separate `to_tools` invocations create separate toolset instances.
502
+ - Methods without a Sorbet `sig` produce an empty parameter schema. The LLM will not know what arguments to pass.
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: every-style-editor
3
+ description: This skill should be used when reviewing or editing copy to ensure adherence to Every's style guide. It provides a systematic line-by-line review process for grammar, punctuation, mechanics, and style guide compliance.
4
+ ---
5
+
6
+ # Every Style Editor
7
+
8
+ This skill provides a systematic approach to reviewing copy against Every's comprehensive style guide. It transforms Claude into a meticulous line editor and proofreader specializing in grammar, mechanics, and style guide compliance.
9
+
10
+ ## When to Use This Skill
11
+
12
+ Use this skill when:
13
+ - Reviewing articles, blog posts, newsletters, or any written content
14
+ - Ensuring copy follows Every's specific style conventions
15
+ - Providing feedback on grammar, punctuation, and mechanics
16
+ - Flagging deviations from the Every style guide
17
+ - Preparing clean copy for human editorial review
18
+
19
+ ## Skill Overview
20
+
21
+ This skill enables performing a comprehensive review of written content in four phases:
22
+
23
+ 1. **Initial Assessment** - Understanding context and document type
24
+ 2. **Detailed Line Edit** - Checking every sentence for compliance
25
+ 3. **Mechanical Review** - Verifying formatting and consistency
26
+ 4. **Recommendations** - Providing actionable improvement suggestions
27
+
28
+ ## How to Use This Skill
29
+
30
+ ### Step 1: Initial Assessment
31
+
32
+ Begin by reading the entire piece to understand:
33
+ - Document type (article, knowledge base entry, social post, etc.)
34
+ - Target audience
35
+ - Overall tone and voice
36
+ - Content context
37
+
38
+ ### Step 2: Detailed Line Edit
39
+
40
+ Review each paragraph systematically, checking for:
41
+ - Sentence structure and grammar correctness
42
+ - Punctuation usage (commas, semicolons, em dashes, etc.)
43
+ - Capitalization rules (especially job titles, headlines)
44
+ - Word choice and usage (overused words, passive voice)
45
+ - Adherence to Every style guide rules
46
+
47
+ Reference the complete [EVERY_WRITE_STYLE.md](./references/EVERY_WRITE_STYLE.md) for specific rules when in doubt.
48
+
49
+ ### Step 3: Mechanical Review
50
+
51
+ Verify:
52
+ - Spacing and formatting consistency
53
+ - Style choices applied uniformly throughout
54
+ - Special elements (lists, quotes, citations)
55
+ - Proper use of italics and formatting
56
+ - Number formatting (numerals vs. spelled out)
57
+ - Link formatting and descriptions
58
+
59
+ ### Step 4: Output Results
60
+
61
+ Present findings using this structure:
62
+
63
+ ```
64
+ DOCUMENT REVIEW SUMMARY
65
+ =====================
66
+ Document Type: [type]
67
+ Word Count: [approximate]
68
+ Overall Assessment: [brief overview]
69
+
70
+ ERRORS FOUND: [total number]
71
+
72
+ DETAILED CORRECTIONS
73
+ ===================
74
+
75
+ [For each error found:]
76
+
77
+ **Location**: [Paragraph #, Sentence #]
78
+ **Issue Type**: [Grammar/Punctuation/Mechanics/Style Guide]
79
+ **Original**: "[exact text with error]"
80
+ **Correction**: "[corrected text]"
81
+ **Rule Reference**: [Specific style guide rule violated]
82
+ **Explanation**: [Brief explanation of why this is an error]
83
+
84
+ ---
85
+
86
+ RECURRING ISSUES
87
+ ===============
88
+ [List patterns of errors that appear multiple times]
89
+
90
+ STYLE GUIDE COMPLIANCE CHECKLIST
91
+ ==============================
92
+ ✓ [Rule followed correctly]
93
+ ✗ [Rule violated - with count of violations]
94
+
95
+ FINAL RECOMMENDATIONS
96
+ ===================
97
+ [2-3 actionable suggestions for improving the draft]
98
+ ```
99
+
100
+ ## Style Guide Reference
101
+
102
+ The complete Every style guide is included in [EVERY_WRITE_STYLE.md](./references/EVERY_WRITE_STYLE.md). Key areas to focus on:
103
+
104
+ - **Quick Rules**: Title case for headlines, sentence case elsewhere
105
+ - **Tone**: Active voice, avoid overused words (actually, very, just), be specific
106
+ - **Numbers**: Spell out one through nine; use numerals for 10+
107
+ - **Punctuation**: Oxford commas, em dashes without spaces, proper quotation mark usage
108
+ - **Capitalization**: Lowercase job titles, company as singular (it), teams as plural (they)
109
+ - **Emphasis**: Italics only (no bold for emphasis)
110
+ - **Links**: 2-4 words, don't say "click here"
111
+
112
+ ## Key Principles
113
+
114
+ - **Be specific**: Always quote the exact text with the error
115
+ - **Reference rules**: Cite the specific style guide rule for each correction
116
+ - **Maintain voice**: Preserve the author's voice while correcting errors
117
+ - **Prioritize clarity**: Focus on changes that improve readability
118
+ - **Be constructive**: Frame feedback to help writers improve
119
+ - **Flag ambiguous cases**: When style guide doesn't address an issue, explain options and recommend the clearest choice
120
+
121
+ ## Common Areas to Focus On
122
+
123
+ Based on Every's style guide, pay special attention to:
124
+
125
+ - Punctuation (comma usage, semicolons, apostrophes, quotation marks)
126
+ - Capitalization (proper nouns, titles, sentence starts)
127
+ - Numbers (when to spell out vs. use numerals)
128
+ - Passive voice (replace with active whenever possible)
129
+ - Overused words (actually, very, just)
130
+ - Lists (parallel structure, punctuation, capitalization)
131
+ - Hyphenation (compound adjectives, except adverbs)
132
+ - Word usage (fewer vs. less, they vs. them)
133
+ - Company references (singular "it", teams as plural "they")
134
+ - Job title capitalization