deepwork 0.5.1__tar.gz → 0.7.0a1__tar.gz

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 (362) hide show
  1. {deepwork-0.5.1 → deepwork-0.7.0a1}/.claude/settings.json +7 -75
  2. deepwork-0.7.0a1/.claude/skills/deepwork/SKILL.md +29 -0
  3. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/doc_specs/job_spec.md +9 -15
  4. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/doc_specs/job_spec.md +9 -15
  5. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/job.yml +225 -0
  6. {deepwork-0.5.1/src/deepwork/standard_jobs → deepwork-0.7.0a1/.deepwork/jobs}/deepwork_jobs/steps/define.md +100 -33
  7. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/steps/errata.md +154 -0
  8. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/steps/fix_jobs.md +208 -0
  9. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/steps/fix_settings.md +177 -0
  10. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/steps/implement.md +122 -0
  11. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/steps/iterate.md +221 -0
  12. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/steps/learn.md +2 -26
  13. deepwork-0.7.0a1/.deepwork/jobs/deepwork_jobs/steps/test.md +154 -0
  14. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/templates/job.yml.template +2 -0
  15. deepwork-0.7.0a1/.deepwork/schemas/job.schema.json +347 -0
  16. deepwork-0.7.0a1/.gemini/skills/deepwork/index.toml +29 -0
  17. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/README.md +2 -2
  18. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/claude-code-test.yml +81 -110
  19. deepwork-0.7.0a1/.mcp.json +12 -0
  20. {deepwork-0.5.1 → deepwork-0.7.0a1}/AGENTS.md +6 -9
  21. {deepwork-0.5.1 → deepwork-0.7.0a1}/CHANGELOG.md +33 -0
  22. {deepwork-0.5.1 → deepwork-0.7.0a1}/CONTRIBUTING.md +41 -3
  23. deepwork-0.7.0a1/PKG-INFO +317 -0
  24. deepwork-0.7.0a1/README.md +276 -0
  25. {deepwork-0.5.1 → deepwork-0.7.0a1}/claude.md +9 -10
  26. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/architecture.md +314 -341
  27. deepwork-0.7.0a1/doc/code_review_standards.md +67 -0
  28. deepwork-0.7.0a1/doc/mcp_interface.md +220 -0
  29. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/nix-flake.md +1 -1
  30. deepwork-0.7.0a1/doc/reference/calling_claude_in_print_mode.md +104 -0
  31. deepwork-0.7.0a1/flake.lock +99 -0
  32. deepwork-0.7.0a1/flake.nix +144 -0
  33. {deepwork-0.5.1/job_library → deepwork-0.7.0a1/library/jobs}/README.md +6 -1
  34. deepwork-0.7.0a1/library/jobs/spec_driven_development/job.yml +184 -0
  35. deepwork-0.7.0a1/library/jobs/spec_driven_development/readme.md +51 -0
  36. deepwork-0.7.0a1/library/jobs/spec_driven_development/steps/clarify.md +263 -0
  37. deepwork-0.7.0a1/library/jobs/spec_driven_development/steps/constitution.md +241 -0
  38. deepwork-0.7.0a1/library/jobs/spec_driven_development/steps/implement.md +382 -0
  39. deepwork-0.7.0a1/library/jobs/spec_driven_development/steps/plan.md +391 -0
  40. deepwork-0.7.0a1/library/jobs/spec_driven_development/steps/specify.md +290 -0
  41. deepwork-0.7.0a1/library/jobs/spec_driven_development/steps/tasks.md +358 -0
  42. {deepwork-0.5.1 → deepwork-0.7.0a1}/pyproject.toml +17 -2
  43. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/__init__.py +1 -1
  44. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/cli/hook.py +3 -4
  45. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/cli/install.py +70 -117
  46. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/cli/main.py +2 -2
  47. deepwork-0.7.0a1/src/deepwork/cli/serve.py +133 -0
  48. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/cli/sync.py +93 -58
  49. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/core/adapters.py +91 -102
  50. deepwork-0.7.0a1/src/deepwork/core/generator.py +115 -0
  51. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/core/hooks_syncer.py +1 -1
  52. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/core/parser.py +270 -1
  53. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/hooks/README.md +0 -44
  54. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/hooks/__init__.py +3 -6
  55. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/hooks/check_version.sh +54 -21
  56. deepwork-0.7.0a1/src/deepwork/mcp/__init__.py +23 -0
  57. deepwork-0.7.0a1/src/deepwork/mcp/quality_gate.py +347 -0
  58. deepwork-0.7.0a1/src/deepwork/mcp/schemas.py +263 -0
  59. deepwork-0.7.0a1/src/deepwork/mcp/server.py +253 -0
  60. deepwork-0.7.0a1/src/deepwork/mcp/state.py +422 -0
  61. deepwork-0.7.0a1/src/deepwork/mcp/tools.py +394 -0
  62. deepwork-0.7.0a1/src/deepwork/schemas/job.schema.json +347 -0
  63. deepwork-0.7.0a1/src/deepwork/schemas/job_schema.py +35 -0
  64. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/doc_specs/job_spec.md +9 -15
  65. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/job.yml +225 -0
  66. {deepwork-0.5.1/.deepwork/jobs → deepwork-0.7.0a1/src/deepwork/standard_jobs}/deepwork_jobs/steps/define.md +100 -33
  67. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/steps/errata.md +154 -0
  68. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/steps/fix_jobs.md +207 -0
  69. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/steps/fix_settings.md +177 -0
  70. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/steps/implement.md +122 -0
  71. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/steps/iterate.md +221 -0
  72. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/steps/learn.md +2 -26
  73. deepwork-0.7.0a1/src/deepwork/standard_jobs/deepwork_jobs/steps/test.md +154 -0
  74. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template +2 -0
  75. deepwork-0.7.0a1/src/deepwork/templates/claude/settings.json +16 -0
  76. deepwork-0.7.0a1/src/deepwork/templates/claude/skill-deepwork.md.jinja +37 -0
  77. deepwork-0.7.0a1/src/deepwork/templates/gemini/skill-deepwork.md.jinja +37 -0
  78. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/conftest.py +0 -8
  79. deepwork-0.7.0a1/tests/e2e/test_claude_code_integration.py +405 -0
  80. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/complex_job/job.yml +1 -0
  81. deepwork-0.7.0a1/tests/fixtures/jobs/concurrent_steps_job/job.yml +90 -0
  82. deepwork-0.7.0a1/tests/fixtures/jobs/concurrent_steps_job/steps/compile_results.md +7 -0
  83. deepwork-0.7.0a1/tests/fixtures/jobs/concurrent_steps_job/steps/final_review.md +7 -0
  84. deepwork-0.7.0a1/tests/fixtures/jobs/concurrent_steps_job/steps/research_docs.md +7 -0
  85. deepwork-0.7.0a1/tests/fixtures/jobs/concurrent_steps_job/steps/research_interviews.md +7 -0
  86. deepwork-0.7.0a1/tests/fixtures/jobs/concurrent_steps_job/steps/research_web.md +7 -0
  87. deepwork-0.7.0a1/tests/fixtures/jobs/concurrent_steps_job/steps/setup.md +7 -0
  88. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/exposed_step_job/job.yml +1 -0
  89. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/fruits/job.yml +8 -0
  90. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/job_with_doc_spec/job.yml +1 -0
  91. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/simple_job/job.yml +1 -0
  92. deepwork-0.7.0a1/tests/fixtures/mock_review_agent.py +209 -0
  93. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/integration/test_install_flow.py +33 -75
  94. deepwork-0.7.0a1/tests/integration/test_quality_gate_integration.py +144 -0
  95. deepwork-0.7.0a1/tests/unit/mcp/__init__.py +1 -0
  96. deepwork-0.7.0a1/tests/unit/mcp/test_async_interface.py +133 -0
  97. deepwork-0.7.0a1/tests/unit/mcp/test_quality_gate.py +469 -0
  98. deepwork-0.7.0a1/tests/unit/mcp/test_schemas.py +392 -0
  99. deepwork-0.7.0a1/tests/unit/mcp/test_state.py +437 -0
  100. deepwork-0.7.0a1/tests/unit/mcp/test_tools.py +342 -0
  101. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/unit/test_parser.py +116 -0
  102. deepwork-0.7.0a1/uv.lock +2133 -0
  103. deepwork-0.5.1/.claude/hooks/block_bash_with_instructions.sh +0 -76
  104. deepwork-0.5.1/.claude/hooks/commit_job_git_commit.sh +0 -4
  105. deepwork-0.5.1/.claude/skills/add_platform/SKILL.md +0 -76
  106. deepwork-0.5.1/.claude/skills/add_platform.add_capabilities/SKILL.md +0 -211
  107. deepwork-0.5.1/.claude/skills/add_platform.implement/SKILL.md +0 -311
  108. deepwork-0.5.1/.claude/skills/add_platform.research/SKILL.md +0 -260
  109. deepwork-0.5.1/.claude/skills/add_platform.verify/SKILL.md +0 -186
  110. deepwork-0.5.1/.claude/skills/commit/SKILL.md +0 -72
  111. deepwork-0.5.1/.claude/skills/commit.commit_and_push/SKILL.md +0 -158
  112. deepwork-0.5.1/.claude/skills/commit.lint/SKILL.md +0 -138
  113. deepwork-0.5.1/.claude/skills/commit.review/SKILL.md +0 -167
  114. deepwork-0.5.1/.claude/skills/commit.test/SKILL.md +0 -124
  115. deepwork-0.5.1/.claude/skills/deepwork_jobs/SKILL.md +0 -70
  116. deepwork-0.5.1/.claude/skills/deepwork_jobs.define/SKILL.md +0 -671
  117. deepwork-0.5.1/.claude/skills/deepwork_jobs.implement/SKILL.md +0 -330
  118. deepwork-0.5.1/.claude/skills/deepwork_jobs.learn/SKILL.md +0 -449
  119. deepwork-0.5.1/.claude/skills/deepwork_jobs.review_job_spec/SKILL.md +0 -478
  120. deepwork-0.5.1/.claude/skills/deepwork_rules/SKILL.md +0 -77
  121. deepwork-0.5.1/.claude/skills/deepwork_rules.define/SKILL.md +0 -328
  122. deepwork-0.5.1/.claude/skills/manual_tests/SKILL.md +0 -95
  123. deepwork-0.5.1/.claude/skills/manual_tests.infinite_block_tests/SKILL.md +0 -248
  124. deepwork-0.5.1/.claude/skills/manual_tests.reset/SKILL.md +0 -138
  125. deepwork-0.5.1/.claude/skills/manual_tests.run_fire_tests/SKILL.md +0 -247
  126. deepwork-0.5.1/.claude/skills/manual_tests.run_not_fire_tests/SKILL.md +0 -233
  127. deepwork-0.5.1/.claude/skills/update/SKILL.md +0 -67
  128. deepwork-0.5.1/.claude/skills/update.job/SKILL.md +0 -142
  129. deepwork-0.5.1/.deepwork/jobs/add_platform/job.yml +0 -141
  130. deepwork-0.5.1/.deepwork/jobs/add_platform/steps/add_capabilities.md +0 -135
  131. deepwork-0.5.1/.deepwork/jobs/add_platform/steps/implement.md +0 -226
  132. deepwork-0.5.1/.deepwork/jobs/add_platform/steps/research.md +0 -188
  133. deepwork-0.5.1/.deepwork/jobs/add_platform/steps/verify.md +0 -111
  134. deepwork-0.5.1/.deepwork/jobs/commit/AGENTS.md +0 -19
  135. deepwork-0.5.1/.deepwork/jobs/commit/job.yml +0 -108
  136. deepwork-0.5.1/.deepwork/jobs/commit/steps/commit_and_push.md +0 -92
  137. deepwork-0.5.1/.deepwork/jobs/commit/steps/lint.md +0 -72
  138. deepwork-0.5.1/.deepwork/jobs/commit/steps/review.md +0 -105
  139. deepwork-0.5.1/.deepwork/jobs/commit/steps/test.md +0 -53
  140. deepwork-0.5.1/.deepwork/jobs/deepwork_jobs/job.yml +0 -125
  141. deepwork-0.5.1/.deepwork/jobs/deepwork_jobs/steps/implement.md +0 -238
  142. deepwork-0.5.1/.deepwork/jobs/deepwork_jobs/steps/review_job_spec.md +0 -208
  143. deepwork-0.5.1/.deepwork/jobs/deepwork_jobs/templates/doc_spec.md.example +0 -86
  144. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +0 -38
  145. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/hooks/global_hooks.yml +0 -8
  146. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/hooks/user_prompt_submit.sh +0 -16
  147. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/job.yml +0 -49
  148. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/rules/.gitkeep +0 -13
  149. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/rules/api-documentation-sync.md.example +0 -10
  150. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/rules/readme-documentation.md.example +0 -10
  151. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/rules/security-review.md.example +0 -11
  152. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/rules/skill-md-validation.md +0 -46
  153. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/rules/source-test-pairing.md.example +0 -13
  154. deepwork-0.5.1/.deepwork/jobs/deepwork_rules/steps/define.md +0 -249
  155. deepwork-0.5.1/.deepwork/jobs/manual_tests/job.yml +0 -120
  156. deepwork-0.5.1/.deepwork/jobs/manual_tests/steps/infinite_block_tests.md +0 -136
  157. deepwork-0.5.1/.deepwork/jobs/manual_tests/steps/reset.md +0 -38
  158. deepwork-0.5.1/.deepwork/jobs/manual_tests/steps/run_fire_tests.md +0 -132
  159. deepwork-0.5.1/.deepwork/jobs/manual_tests/steps/run_not_fire_tests.md +0 -118
  160. deepwork-0.5.1/.deepwork/jobs/manual_tests/steps/test_reference.md +0 -92
  161. deepwork-0.5.1/.deepwork/jobs/update/job.yml +0 -47
  162. deepwork-0.5.1/.deepwork/jobs/update/steps/job.md +0 -73
  163. deepwork-0.5.1/.deepwork/rules/architecture-documentation-accuracy.md +0 -11
  164. deepwork-0.5.1/.deepwork/rules/manual-test-command-action.md +0 -19
  165. deepwork-0.5.1/.deepwork/rules/manual-test-created-mode.md +0 -22
  166. deepwork-0.5.1/.deepwork/rules/manual-test-infinite-block-command.md +0 -41
  167. deepwork-0.5.1/.deepwork/rules/manual-test-infinite-block-prompt.md +0 -34
  168. deepwork-0.5.1/.deepwork/rules/manual-test-multi-safety.md +0 -25
  169. deepwork-0.5.1/.deepwork/rules/manual-test-pair-mode.md +0 -26
  170. deepwork-0.5.1/.deepwork/rules/manual-test-set-mode.md +0 -26
  171. deepwork-0.5.1/.deepwork/rules/manual-test-trigger-safety.md +0 -21
  172. deepwork-0.5.1/.deepwork/rules/new-standard-job-warning.md.disabled +0 -16
  173. deepwork-0.5.1/.deepwork/rules/readme-accuracy.md +0 -11
  174. deepwork-0.5.1/.deepwork/rules/skill-template-best-practices.md +0 -46
  175. deepwork-0.5.1/.deepwork/rules/standard-jobs-source-of-truth.md +0 -25
  176. deepwork-0.5.1/.deepwork/rules/uv-lock-sync.md +0 -15
  177. deepwork-0.5.1/.deepwork/rules/version-and-changelog-update.md +0 -29
  178. deepwork-0.5.1/.gemini/skills/add_platform/add_capabilities.toml +0 -210
  179. deepwork-0.5.1/.gemini/skills/add_platform/implement.toml +0 -305
  180. deepwork-0.5.1/.gemini/skills/add_platform/index.toml +0 -75
  181. deepwork-0.5.1/.gemini/skills/add_platform/research.toml +0 -259
  182. deepwork-0.5.1/.gemini/skills/add_platform/verify.toml +0 -185
  183. deepwork-0.5.1/.gemini/skills/commit/commit_and_push.toml +0 -157
  184. deepwork-0.5.1/.gemini/skills/commit/index.toml +0 -71
  185. deepwork-0.5.1/.gemini/skills/commit/lint.toml +0 -137
  186. deepwork-0.5.1/.gemini/skills/commit/review.toml +0 -166
  187. deepwork-0.5.1/.gemini/skills/commit/test.toml +0 -123
  188. deepwork-0.5.1/.gemini/skills/deepwork_jobs/define.toml +0 -493
  189. deepwork-0.5.1/.gemini/skills/deepwork_jobs/implement.toml +0 -320
  190. deepwork-0.5.1/.gemini/skills/deepwork_jobs/index.toml +0 -69
  191. deepwork-0.5.1/.gemini/skills/deepwork_jobs/learn.toml +0 -439
  192. deepwork-0.5.1/.gemini/skills/deepwork_jobs/review_job_spec.toml +0 -300
  193. deepwork-0.5.1/.gemini/skills/deepwork_rules/define.toml +0 -327
  194. deepwork-0.5.1/.gemini/skills/deepwork_rules/index.toml +0 -73
  195. deepwork-0.5.1/.gemini/skills/manual_tests/index.toml +0 -94
  196. deepwork-0.5.1/.gemini/skills/manual_tests/infinite_block_tests.toml +0 -238
  197. deepwork-0.5.1/.gemini/skills/manual_tests/reset.toml +0 -128
  198. deepwork-0.5.1/.gemini/skills/manual_tests/run_fire_tests.toml +0 -237
  199. deepwork-0.5.1/.gemini/skills/manual_tests/run_not_fire_tests.toml +0 -223
  200. deepwork-0.5.1/.gemini/skills/update/index.toml +0 -63
  201. deepwork-0.5.1/.gemini/skills/update/job.toml +0 -141
  202. deepwork-0.5.1/PKG-INFO +0 -381
  203. deepwork-0.5.1/README.md +0 -346
  204. deepwork-0.5.1/doc/rules_syntax.md +0 -687
  205. deepwork-0.5.1/doc/rules_system_design.md +0 -569
  206. deepwork-0.5.1/flake.lock +0 -61
  207. deepwork-0.5.1/flake.nix +0 -119
  208. deepwork-0.5.1/manual_tests/README.md +0 -43
  209. deepwork-0.5.1/manual_tests/test_command_action/test_command_action.txt +0 -25
  210. deepwork-0.5.1/manual_tests/test_command_action/test_command_action_log.txt +0 -3
  211. deepwork-0.5.1/manual_tests/test_created_mode/existing_file.yml +0 -1
  212. deepwork-0.5.1/manual_tests/test_infinite_block_command/test_infinite_block_command.py +0 -42
  213. deepwork-0.5.1/manual_tests/test_infinite_block_prompt/test_infinite_block_prompt.py +0 -57
  214. deepwork-0.5.1/manual_tests/test_multi_safety/test_multi_safety.py +0 -42
  215. deepwork-0.5.1/manual_tests/test_multi_safety/test_multi_safety_changelog.md +0 -16
  216. deepwork-0.5.1/manual_tests/test_multi_safety/test_multi_safety_version.txt +0 -10
  217. deepwork-0.5.1/manual_tests/test_pair_mode/test_pair_mode_expected.md +0 -31
  218. deepwork-0.5.1/manual_tests/test_pair_mode/test_pair_mode_trigger.py +0 -47
  219. deepwork-0.5.1/manual_tests/test_set_mode/test_set_mode_source.py +0 -40
  220. deepwork-0.5.1/manual_tests/test_set_mode/test_set_mode_test.py +0 -37
  221. deepwork-0.5.1/manual_tests/test_trigger_safety_mode/test_trigger_safety_mode.py +0 -32
  222. deepwork-0.5.1/manual_tests/test_trigger_safety_mode/test_trigger_safety_mode_doc.md +0 -20
  223. deepwork-0.5.1/src/deepwork/cli/rules.py +0 -32
  224. deepwork-0.5.1/src/deepwork/core/command_executor.py +0 -190
  225. deepwork-0.5.1/src/deepwork/core/generator.py +0 -482
  226. deepwork-0.5.1/src/deepwork/core/pattern_matcher.py +0 -271
  227. deepwork-0.5.1/src/deepwork/core/rules_parser.py +0 -559
  228. deepwork-0.5.1/src/deepwork/core/rules_queue.py +0 -321
  229. deepwork-0.5.1/src/deepwork/hooks/rules_check.py +0 -759
  230. deepwork-0.5.1/src/deepwork/schemas/job_schema.py +0 -247
  231. deepwork-0.5.1/src/deepwork/schemas/rules_schema.py +0 -135
  232. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_jobs/job.yml +0 -125
  233. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_jobs/steps/implement.md +0 -238
  234. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_jobs/steps/review_job_spec.md +0 -208
  235. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.example +0 -86
  236. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +0 -38
  237. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/hooks/global_hooks.yml +0 -8
  238. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/hooks/user_prompt_submit.sh +0 -16
  239. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/job.yml +0 -49
  240. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/rules/.gitkeep +0 -13
  241. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/rules/api-documentation-sync.md.example +0 -10
  242. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/rules/readme-documentation.md.example +0 -10
  243. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/rules/security-review.md.example +0 -11
  244. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/rules/skill-md-validation.md +0 -46
  245. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/rules/source-test-pairing.md.example +0 -13
  246. deepwork-0.5.1/src/deepwork/standard_jobs/deepwork_rules/steps/define.md +0 -249
  247. deepwork-0.5.1/src/deepwork/templates/claude/skill-job-meta.md.jinja +0 -77
  248. deepwork-0.5.1/src/deepwork/templates/claude/skill-job-step.md.jinja +0 -235
  249. deepwork-0.5.1/src/deepwork/templates/gemini/skill-job-meta.toml.jinja +0 -76
  250. deepwork-0.5.1/src/deepwork/templates/gemini/skill-job-step.toml.jinja +0 -162
  251. deepwork-0.5.1/tests/e2e/test_claude_code_integration.py +0 -329
  252. deepwork-0.5.1/tests/integration/test_fruits_workflow.py +0 -198
  253. deepwork-0.5.1/tests/integration/test_full_workflow.py +0 -153
  254. deepwork-0.5.1/tests/integration/test_install_requirements.py +0 -343
  255. deepwork-0.5.1/tests/shell_script_tests/README.md +0 -76
  256. deepwork-0.5.1/tests/shell_script_tests/__init__.py +0 -1
  257. deepwork-0.5.1/tests/shell_script_tests/conftest.py +0 -131
  258. deepwork-0.5.1/tests/shell_script_tests/test_capture_prompt_work_tree.py +0 -257
  259. deepwork-0.5.1/tests/shell_script_tests/test_check_version.py +0 -292
  260. deepwork-0.5.1/tests/shell_script_tests/test_hooks.py +0 -746
  261. deepwork-0.5.1/tests/shell_script_tests/test_make_new_job.py +0 -313
  262. deepwork-0.5.1/tests/shell_script_tests/test_rules_stop_hook.py +0 -481
  263. deepwork-0.5.1/tests/shell_script_tests/test_user_prompt_submit.py +0 -166
  264. deepwork-0.5.1/tests/unit/test_adapters.py +0 -516
  265. deepwork-0.5.1/tests/unit/test_command_executor.py +0 -264
  266. deepwork-0.5.1/tests/unit/test_detector.py +0 -98
  267. deepwork-0.5.1/tests/unit/test_generator.py +0 -455
  268. deepwork-0.5.1/tests/unit/test_hooks_syncer.py +0 -367
  269. deepwork-0.5.1/tests/unit/test_pattern_matcher.py +0 -205
  270. deepwork-0.5.1/tests/unit/test_rules_check.py +0 -105
  271. deepwork-0.5.1/tests/unit/test_rules_parser.py +0 -995
  272. deepwork-0.5.1/tests/unit/test_rules_queue.py +0 -349
  273. deepwork-0.5.1/tests/unit/test_schema_validation.py +0 -360
  274. deepwork-0.5.1/tests/unit/test_stop_hooks.py +0 -860
  275. deepwork-0.5.1/uv.lock +0 -813
  276. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/.gitignore +0 -0
  277. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/config.yml +0 -0
  278. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/doc_specs/claude_code_skill.md +0 -0
  279. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/AGENTS.md +0 -0
  280. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/make_new_job.sh +0 -0
  281. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
  282. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/templates/agents.md.template +0 -0
  283. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/templates/doc_spec.md.template +0 -0
  284. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/templates/job.yml.example +0 -0
  285. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
  286. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
  287. {deepwork-0.5.1 → deepwork-0.7.0a1}/.deepwork/tmp/.gitkeep +0 -0
  288. {deepwork-0.5.1 → deepwork-0.7.0a1}/.envrc +0 -0
  289. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/copilot-instructions.md +0 -0
  290. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/cla.yml +0 -0
  291. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/copilot-setup-steps.yml +0 -0
  292. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/prepare-release.yml +0 -0
  293. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/publish-release.yml +0 -0
  294. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/release.yml +0 -0
  295. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/update-claude-code.yml +0 -0
  296. {deepwork-0.5.1 → deepwork-0.7.0a1}/.github/workflows/validate.yml +0 -0
  297. {deepwork-0.5.1 → deepwork-0.7.0a1}/.gitignore +0 -0
  298. {deepwork-0.5.1 → deepwork-0.7.0a1}/CLA/version_1/CLA.md +0 -0
  299. {deepwork-0.5.1 → deepwork-0.7.0a1}/CLA/version_1/CLA_SIGNATORIES.md +0 -0
  300. {deepwork-0.5.1 → deepwork-0.7.0a1}/LICENSE.md +0 -0
  301. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/debugging_history/AGENTS.md +0 -0
  302. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/debugging_history/hooks.md +0 -0
  303. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/doc-specs.md +0 -0
  304. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/README.md +0 -0
  305. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/claude/cli_configuration.md +0 -0
  306. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/claude/hooks.md +0 -0
  307. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/claude/hooks_system.md +0 -0
  308. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/claude/learnings.md +0 -0
  309. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/gemini/cli_configuration.md +0 -0
  310. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/gemini/hooks.md +0 -0
  311. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/gemini/hooks_system.md +0 -0
  312. {deepwork-0.5.1 → deepwork-0.7.0a1}/doc/platforms/gemini/learnings.md +0 -0
  313. {deepwork-0.5.1 → deepwork-0.7.0a1}/nix/claude-code/package-lock.json +0 -0
  314. {deepwork-0.5.1 → deepwork-0.7.0a1}/nix/claude-code/package.nix +0 -0
  315. {deepwork-0.5.1 → deepwork-0.7.0a1}/nix/claude-code/update.sh +0 -0
  316. {deepwork-0.5.1 → deepwork-0.7.0a1}/nix/update +0 -0
  317. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/cli/__init__.py +0 -0
  318. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/core/__init__.py +0 -0
  319. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/core/detector.py +0 -0
  320. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/core/doc_spec_parser.py +0 -0
  321. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/hooks/claude_hook.sh +0 -0
  322. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/hooks/gemini_hook.sh +0 -0
  323. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/hooks/wrapper.py +0 -0
  324. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/schemas/__init__.py +0 -0
  325. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/schemas/doc_spec_schema.py +0 -0
  326. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/AGENTS.md +0 -0
  327. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/make_new_job.sh +0 -0
  328. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
  329. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template +0 -0
  330. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.template +0 -0
  331. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example +0 -0
  332. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
  333. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
  334. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/templates/__init__.py +0 -0
  335. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/templates/claude/AGENTS.md +0 -0
  336. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/utils/__init__.py +0 -0
  337. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/utils/fs.py +0 -0
  338. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/utils/git.py +0 -0
  339. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/utils/validation.py +0 -0
  340. {deepwork-0.5.1 → deepwork-0.7.0a1}/src/deepwork/utils/yaml_utils.py +0 -0
  341. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/__init__.py +0 -0
  342. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/e2e/__init__.py +0 -0
  343. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/doc_specs/minimal_doc_spec.md +0 -0
  344. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/doc_specs/valid_report.md +0 -0
  345. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/complex_job/steps/comparative_report.md +0 -0
  346. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/complex_job/steps/identify_competitors.md +0 -0
  347. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/complex_job/steps/primary_research.md +0 -0
  348. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/complex_job/steps/secondary_research.md +0 -0
  349. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/exposed_step_job/steps/exposed_step.md +0 -0
  350. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/exposed_step_job/steps/hidden_step.md +0 -0
  351. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/fruits/steps/classify.md +0 -0
  352. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/fruits/steps/identify.md +0 -0
  353. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/invalid_job/job.yml +0 -0
  354. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/job_with_doc_spec/steps/generate_report.md +0 -0
  355. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/fixtures/jobs/simple_job/steps/single_step.md +0 -0
  356. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/unit/test_doc_spec_parser.py +0 -0
  357. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/unit/test_doc_spec_schema.py +0 -0
  358. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/unit/test_fs.py +0 -0
  359. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/unit/test_git.py +0 -0
  360. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/unit/test_hook_wrapper.py +0 -0
  361. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/unit/test_validation.py +0 -0
  362. {deepwork-0.5.1 → deepwork-0.7.0a1}/tests/unit/test_yaml_utils.py +0 -0
@@ -95,55 +95,20 @@
95
95
  "Bash(npm:*)",
96
96
  "Bash(npx:*)",
97
97
  "Edit(./**)",
98
- "Read(./.deepwork/tmp/**)",
99
- "Edit(./.deepwork/tmp/**)",
100
- "Write(./.deepwork/tmp/**)",
101
- "Skill(commit)",
102
- "Skill(commit.review)",
103
- "Skill(commit.test)",
104
- "Skill(commit.lint)",
105
- "Skill(commit.commit_and_push)",
106
- "Skill(deepwork_jobs)",
107
- "Skill(deepwork_jobs.define)",
108
- "Skill(deepwork_jobs.review_job_spec)",
109
- "Skill(deepwork_jobs.implement)",
110
- "Skill(deepwork_jobs.learn)",
111
- "Skill(add_platform)",
112
- "Skill(add_platform.research)",
113
- "Skill(add_platform.add_capabilities)",
114
- "Skill(add_platform.implement)",
115
- "Skill(add_platform.verify)",
116
- "Skill(update)",
117
- "Skill(update.job)",
118
- "Skill(manual_tests)",
119
- "Skill(manual_tests.run_not_fire_tests)",
120
- "Skill(manual_tests.run_fire_tests)",
121
- "Skill(deepwork_rules)",
122
- "Skill(deepwork_rules.define)",
123
- "Bash(deepwork rules clear_queue)",
124
- "Bash(rm -rf .deepwork/tmp/rules/queue/*.json)",
125
- "Skill(manual_tests.reset)",
126
- "Skill(manual_tests.infinite_block_tests)",
127
98
  "Read(./.deepwork/**)",
128
99
  "Edit(./.deepwork/**)",
129
100
  "Write(./.deepwork/**)",
130
101
  "Bash(deepwork:*)",
131
- "Bash(.claude/hooks/commit_job_git_commit.sh:*)",
132
- "Bash(./.deepwork/jobs/deepwork_jobs/make_new_job.sh:*)"
102
+ "Bash(./.deepwork/jobs/deepwork_jobs/make_new_job.sh:*)",
103
+ "WebSearch",
104
+ "Skill(deepwork)",
105
+ "mcp__deepwork__get_workflows",
106
+ "mcp__deepwork__start_workflow",
107
+ "mcp__deepwork__finished_step",
108
+ "mcp__deepwork__abort_workflow"
133
109
  ]
134
110
  },
135
111
  "hooks": {
136
- "PreToolUse": [
137
- {
138
- "matcher": "Bash",
139
- "hooks": [
140
- {
141
- "type": "command",
142
- "command": ".claude/hooks/block_bash_with_instructions.sh"
143
- }
144
- ]
145
- }
146
- ],
147
112
  "SessionStart": [
148
113
  {
149
114
  "matcher": "",
@@ -154,39 +119,6 @@
154
119
  }
155
120
  ]
156
121
  }
157
- ],
158
- "UserPromptSubmit": [
159
- {
160
- "matcher": "",
161
- "hooks": [
162
- {
163
- "type": "command",
164
- "command": ".deepwork/jobs/deepwork_rules/hooks/user_prompt_submit.sh"
165
- }
166
- ]
167
- }
168
- ],
169
- "Stop": [
170
- {
171
- "matcher": "",
172
- "hooks": [
173
- {
174
- "type": "command",
175
- "command": "deepwork hook rules_check"
176
- }
177
- ]
178
- }
179
- ],
180
- "SubagentStop": [
181
- {
182
- "matcher": "",
183
- "hooks": [
184
- {
185
- "type": "command",
186
- "command": "deepwork hook rules_check"
187
- }
188
- ]
189
- }
190
122
  ]
191
123
  }
192
124
  }
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: deepwork
3
+ description: "Start or continue DeepWork workflows using MCP tools"
4
+ ---
5
+
6
+ # DeepWork Workflow Manager
7
+
8
+ Execute multi-step workflows with quality gate checkpoints.
9
+
10
+ > **IMPORTANT**: Use the DeepWork MCP server tools. All workflow operations
11
+ > are performed through MCP tool calls and following the instructions they return,
12
+ > not by reading instructions from files.
13
+
14
+ ## How to Use
15
+
16
+ 1. Call `get_workflows` to discover available workflows
17
+ 2. Call `start_workflow` with goal, job_name, and workflow_name
18
+ 3. Follow the step instructions returned
19
+ 4. Call `finished_step` with your outputs when done
20
+ 5. Handle the response: `needs_work`, `next_step`, or `workflow_complete`
21
+
22
+ ## Intent Parsing
23
+
24
+ When the user invokes `/deepwork`, parse their intent:
25
+ 1. **ALWAYS**: Call `get_workflows` to discover available workflows
26
+ 2. Based on the available flows and what the user said in their request, proceed:
27
+ - **Explicit workflow**: `/deepwork <a workflow name>` → start the `<a workflow name>` workflow
28
+ - **General request**: `/deepwork <a request>` → infer best match from available workflows
29
+ - **No context**: `/deepwork` alone → ask user to choose from available workflows
@@ -23,7 +23,7 @@ quality_criteria:
23
23
  - name: Input Consistency
24
24
  description: "File inputs with `from_step` must reference a step that is in the dependencies array"
25
25
  - name: Output Paths
26
- description: "Outputs must be valid filenames or paths within the main repo (not in dot-directories). Use specific, descriptive paths that lend themselves to glob patterns, e.g., `competitive_research/competitors_list.md` or `competitive_research/[competitor_name]/research.md`. Avoid generic names like `output.md`."
26
+ description: "Outputs must be valid filenames or paths within the main repo directory structure, never in dot-directories like `.deepwork/`. Use specific, descriptive paths that lend themselves to glob patterns (e.g., `competitive_research/acme_corp/swot.md` or `operations/reports/2026-01/spending_analysis.md`). Parameterized paths like `[competitor_name]/` are encouraged for per-entity outputs. Avoid generic names (`output.md`, `analysis.md`) and transient-sounding paths (`temp/`, `draft.md`). Supporting materials for a final output should go in a peer `_dataroom` folder (e.g., `spending_analysis_dataroom/`)."
27
27
  - name: Concise Instructions
28
28
  description: "The content of the file, particularly the description, must not have excessively redundant information. It should be concise and to the point given that extra tokens will confuse the AI."
29
29
  ---
@@ -82,14 +82,19 @@ steps:
82
82
 
83
83
  ## Optional Fields
84
84
 
85
- ### Exposed Steps
85
+ ### Agent Delegation
86
+
87
+ When a step should be executed by a specific agent type, use the `agent` field. This automatically sets `context: fork` in the generated skill.
86
88
 
87
89
  ```yaml
88
90
  steps:
89
- - id: learn
90
- exposed: true # Makes step available without running dependencies
91
+ - id: research_step
92
+ agent: general-purpose # Delegates to the general-purpose agent
91
93
  ```
92
94
 
95
+ Available agent types:
96
+ - `general-purpose` - Standard agent for multi-step tasks
97
+
93
98
  ### Quality Hooks
94
99
 
95
100
  ```yaml
@@ -109,17 +114,6 @@ steps:
109
114
  - script: hooks/run_tests.sh
110
115
  ```
111
116
 
112
- ### Stop Hooks (Legacy)
113
-
114
- ```yaml
115
- steps:
116
- - id: step_id
117
- stop_hooks:
118
- - prompt: "Validation prompt..."
119
- - prompt_file: hooks/check.md
120
- - script: hooks/validate.sh
121
- ```
122
-
123
117
  ## Validation Rules
124
118
 
125
119
  1. **No circular dependencies**: Step A cannot depend on Step B if Step B depends on Step A
@@ -23,7 +23,7 @@ quality_criteria:
23
23
  - name: Input Consistency
24
24
  description: "File inputs with `from_step` must reference a step that is in the dependencies array"
25
25
  - name: Output Paths
26
- description: "Outputs must be valid filenames or paths within the main repo (not in dot-directories). Use specific, descriptive paths that lend themselves to glob patterns, e.g., `competitive_research/competitors_list.md` or `competitive_research/[competitor_name]/research.md`. Avoid generic names like `output.md`."
26
+ description: "Outputs must be valid filenames or paths within the main repo directory structure, never in dot-directories like `.deepwork/`. Use specific, descriptive paths that lend themselves to glob patterns (e.g., `competitive_research/acme_corp/swot.md` or `operations/reports/2026-01/spending_analysis.md`). Parameterized paths like `[competitor_name]/` are encouraged for per-entity outputs. Avoid generic names (`output.md`, `analysis.md`) and transient-sounding paths (`temp/`, `draft.md`). Supporting materials for a final output should go in a peer `_dataroom` folder (e.g., `spending_analysis_dataroom/`)."
27
27
  - name: Concise Instructions
28
28
  description: "The content of the file, particularly the description, must not have excessively redundant information. It should be concise and to the point given that extra tokens will confuse the AI."
29
29
  ---
@@ -82,14 +82,19 @@ steps:
82
82
 
83
83
  ## Optional Fields
84
84
 
85
- ### Exposed Steps
85
+ ### Agent Delegation
86
+
87
+ When a step should be executed by a specific agent type, use the `agent` field. This automatically sets `context: fork` in the generated skill.
86
88
 
87
89
  ```yaml
88
90
  steps:
89
- - id: learn
90
- exposed: true # Makes step available without running dependencies
91
+ - id: research_step
92
+ agent: general-purpose # Delegates to the general-purpose agent
91
93
  ```
92
94
 
95
+ Available agent types:
96
+ - `general-purpose` - Standard agent for multi-step tasks
97
+
93
98
  ### Quality Hooks
94
99
 
95
100
  ```yaml
@@ -109,17 +114,6 @@ steps:
109
114
  - script: hooks/run_tests.sh
110
115
  ```
111
116
 
112
- ### Stop Hooks (Legacy)
113
-
114
- ```yaml
115
- steps:
116
- - id: step_id
117
- stop_hooks:
118
- - prompt: "Validation prompt..."
119
- - prompt_file: hooks/check.md
120
- - script: hooks/validate.sh
121
- ```
122
-
123
117
  ## Validation Rules
124
118
 
125
119
  1. **No circular dependencies**: Step A cannot depend on Step B if Step B depends on Step A
@@ -0,0 +1,225 @@
1
+ # yaml-language-server: $schema=.deepwork/schemas/job.schema.json
2
+ name: deepwork_jobs
3
+ version: "1.2.1"
4
+ summary: "Creates and manages multi-step AI workflows. Use when defining, implementing, testing, or improving DeepWork jobs."
5
+ description: |
6
+ Core commands for managing DeepWork jobs. These commands help you define new multi-step
7
+ workflows, test them on real use cases, and learn from running them.
8
+
9
+ The `new_job` workflow guides you through the full lifecycle of creating a new job:
10
+ 1. **Define**: Gather requirements through structured questions and create job.yml
11
+ 2. **Implement**: Generate step instruction files and sync slash commands
12
+ 3. **Test**: Run the workflow on a real use case, critique output, and iterate with user
13
+ 4. **Iterate**: Review what happened and improve the job definition based on learnings
14
+
15
+ The `learn` skill reflects on conversations where DeepWork jobs were run, identifies
16
+ confusion or inefficiencies, and improves job instructions. It also captures bespoke
17
+ learnings specific to the current run into AGENTS.md files in the working folder.
18
+
19
+ workflows:
20
+ - name: new_job
21
+ summary: "Create a new DeepWork job from scratch through definition, implementation, testing, and iteration"
22
+ steps:
23
+ - define
24
+ - implement
25
+ - test
26
+ - iterate
27
+
28
+ - name: repair
29
+ summary: "Clean up and migrate DeepWork configurations from prior versions"
30
+ steps:
31
+ - fix_settings
32
+ - fix_jobs
33
+ - errata
34
+
35
+ - name: learn
36
+ summary: "Analyze conversation history to improve job instructions and capture learnings"
37
+ steps:
38
+ - learn
39
+
40
+ changelog:
41
+ - version: "1.2.1"
42
+ changes: "Removed deprecated exposed field from learn step; added learn workflow to make step accessible via MCP"
43
+ - version: "1.2.0"
44
+ changes: "Added repair workflow with fix_settings, fix_jobs, and errata steps for migrating old DeepWork configurations to current format"
45
+ - version: "1.1.0"
46
+ changes: "Added test and iterate steps to new_job workflow; test runs the workflow on a real use case and gathers feedback; iterate improves the job definition based on what happened"
47
+ - version: "1.0.1"
48
+ changes: "Removed review_job_spec step from new_job workflow; implement now follows directly from define"
49
+ - version: "1.0.0"
50
+ changes: "Added workflows section to distinguish new_job workflow (define→review_job_spec→implement) from standalone learn skill"
51
+ - version: "0.1.0"
52
+ changes: "Initial version"
53
+ - version: "0.2.0"
54
+ changes: "Replaced refine command with learn command for conversation-driven improvement"
55
+ - version: "0.3.0"
56
+ changes: "Added make_new_job.sh script and templates directory; updated instructions to reference templates instead of inline examples"
57
+ - version: "0.4.0"
58
+ changes: "Removed implementation_summary and learning_summary outputs; simplified step outputs"
59
+ - version: "0.5.0"
60
+ changes: "Standardized on 'ask structured questions' phrasing for user input; Updated quality criteria hooks to verify phrase usage; Added guidance in implement.md to use phrase in generated instructions"
61
+ - version: "0.6.0"
62
+ changes: "Added doc spec support; define.md now detects document-oriented workflows and guides doc spec creation; learn.md now identifies and applies doc spec-related improvements"
63
+ - version: "0.7.0"
64
+ changes: "Added job.yml doc spec; define step now outputs job.yml with doc_spec reference for quality validation"
65
+ - version: "0.8.0"
66
+ changes: "Added review_job_spec step between define and implement for doc spec-based quality validation using sub-agent review"
67
+ - version: "0.9.0"
68
+ changes: "Improved skill descriptions with third-person voice and 'Use when...' triggers for better discoverability"
69
+
70
+ steps:
71
+ - id: define
72
+ name: "Define Job Specification"
73
+ description: "Creates a job.yml specification by gathering workflow requirements through structured questions. Use when starting a new multi-step workflow."
74
+ instructions_file: steps/define.md
75
+ inputs:
76
+ - name: job_purpose
77
+ description: "What complex task or workflow are you trying to accomplish?"
78
+ outputs:
79
+ - file: job.yml
80
+ doc_spec: .deepwork/doc_specs/job_spec.md
81
+ dependencies: []
82
+ - id: implement
83
+ name: "Implement Job Steps"
84
+ description: "Generates step instruction files and syncs slash commands from the job.yml specification. Use after defining a job."
85
+ instructions_file: steps/implement.md
86
+ inputs:
87
+ - file: job.yml
88
+ from_step: define
89
+ outputs:
90
+ - steps/
91
+ dependencies:
92
+ - define
93
+ quality_criteria:
94
+ - "**Complete Instructions**: Are ALL step instruction files complete (not stubs or placeholders)?"
95
+ - "**Specific & Actionable**: Are instructions tailored to each step's purpose, not generic?"
96
+ - "**Output Examples**: Does each instruction file show what good output looks like?"
97
+ - "**Quality Criteria**: Does each instruction file define quality criteria for its outputs?"
98
+ - "**Ask Structured Questions**: Do step instructions that gather user input explicitly use the phrase \"ask structured questions\"?"
99
+
100
+ - id: test
101
+ name: "Test the New Workflow"
102
+ description: "Tests the newly created workflow by running it on a real use case, critiquing the output, and iterating until the user is satisfied. Use after implementing a job."
103
+ instructions_file: steps/test.md
104
+ inputs:
105
+ - file: job.yml
106
+ from_step: define
107
+ - file: steps/
108
+ from_step: implement
109
+ outputs:
110
+ - test_feedback.md
111
+ dependencies:
112
+ - define
113
+ - implement
114
+ quality_criteria:
115
+ - "**User Informed**: Did the agent explain the workflow is ready and ask what to test it on?"
116
+ - "**Workflow Invoked**: Was the new workflow actually run on the user's test case via MCP?"
117
+ - "**Output Critiqued**: Did the agent identify up to 3 top issues with the output?"
118
+ - "**User Feedback Gathered**: Did the agent ask the user about each issue and gather additional feedback?"
119
+ - "**Corrections Made**: Were all requested corrections applied to the output?"
120
+ - "**User Satisfied**: Did the user confirm the output meets their needs?"
121
+
122
+ - id: iterate
123
+ name: "Iterate on Workflow Design"
124
+ description: "Reviews the test run conversation and improves the job definition based on what happened. Use after testing a newly created job."
125
+ instructions_file: steps/iterate.md
126
+ inputs:
127
+ - file: job.yml
128
+ from_step: define
129
+ - file: steps/
130
+ from_step: implement
131
+ outputs:
132
+ - job.yml
133
+ - steps/
134
+ dependencies:
135
+ - define
136
+ - implement
137
+ - test
138
+ quality_criteria:
139
+ - "**Conversation Reviewed**: Did the agent analyze the test run for inefficiencies and issues?"
140
+ - "**Instructions Improved**: Were step instructions updated to address identified problems?"
141
+ - "**Quality Criteria Updated**: Were quality criteria adjusted to better match user expectations?"
142
+ - "**Tool Usage Considered**: Did the agent consider if different tools would improve the workflow?"
143
+ - "**Recap Provided**: Did the agent summarize what was improved and why?"
144
+
145
+ - id: learn
146
+ name: "Learn from Job Execution"
147
+ description: "Analyzes conversation history to improve job instructions and capture learnings. Use after running a job to refine it."
148
+ instructions_file: steps/learn.md
149
+ inputs:
150
+ - name: job_name
151
+ description: "Name of the job that was run (optional - will auto-detect from conversation)"
152
+ outputs:
153
+ - AGENTS.md
154
+ dependencies: []
155
+ quality_criteria:
156
+ - "**Conversation Analyzed**: Did the agent review the conversation for DeepWork job executions?"
157
+ - "**Confusion Identified**: Did the agent identify points of confusion, errors, or inefficiencies?"
158
+ - "**Instructions Improved**: Were job instructions updated to address identified issues?"
159
+ - "**Instructions Concise**: Are instructions free of redundancy and unnecessary verbosity?"
160
+ - "**Shared Content Extracted**: Is lengthy/duplicated content extracted into referenced files?"
161
+ - "**doc spec Reviewed (if applicable)**: For jobs with doc spec outputs, were doc spec-related learnings identified?"
162
+ - "**doc spec Updated (if applicable)**: Were doc spec files updated with improved quality criteria or structure?"
163
+ - "**Bespoke Learnings Captured**: Were run-specific learnings added to AGENTS.md?"
164
+ - "**File References Used**: Do AGENTS.md entries reference other files where appropriate?"
165
+ - "**Working Folder Correct**: Is AGENTS.md in the correct working folder for the job?"
166
+ - "**Generalizable Separated**: Are generalizable improvements in instructions, not AGENTS.md?"
167
+
168
+ - id: fix_settings
169
+ name: "Fix Settings Files"
170
+ description: "Cleans up .claude/settings.json and related configuration files, removing legacy permissions, duplicate hooks, and hardcoded paths from prior DeepWork versions."
171
+ instructions_file: steps/fix_settings.md
172
+ inputs: []
173
+ outputs:
174
+ - .claude/settings.json
175
+ dependencies: []
176
+ quality_criteria:
177
+ - "**DeepWork Skills Removed**: Are `Skill(...)` entries matching jobs in `.deepwork/jobs/` removed?"
178
+ - "**Non-DeepWork Skills Preserved**: Are skills NOT matching DeepWork jobs left intact?"
179
+ - "**make_new_job.sh Preserved**: Is the `Bash(...)` permission for `make_new_job.sh` preserved (if present)?"
180
+ - "**Rules Hooks Removed**: Are all DeepWork Rules hooks and permissions removed?"
181
+ - "**Duplicate Hooks Removed**: Are duplicate hook entries consolidated or removed?"
182
+ - "**Hardcoded Paths Removed**: Are user-specific hardcoded paths (like `/Users/*/...`) removed?"
183
+ - "**Deprecated Commands Removed**: Are deprecated commands like `deepwork hook *` removed?"
184
+ - "**Valid JSON**: Is settings.json still valid JSON after modifications?"
185
+ - "**Backup Created**: Was a backup of the original settings created before modifications?"
186
+
187
+ - id: fix_jobs
188
+ name: "Fix Job Definitions"
189
+ description: "Updates job.yml files and step instructions to current DeepWork format, removing deprecated fields and migrating to new structures."
190
+ instructions_file: steps/fix_jobs.md
191
+ inputs:
192
+ - file: .claude/settings.json
193
+ from_step: fix_settings
194
+ outputs:
195
+ - .deepwork/jobs/
196
+ dependencies:
197
+ - fix_settings
198
+ quality_criteria:
199
+ - "**Exposed Field Addressed**: Are `exposed: true` fields removed or noted as deprecated?"
200
+ - "**Stop Hooks Migrated**: Are `stop_hooks` migrated to `hooks.after_agent` format?"
201
+ - "**Removed Steps Cleaned**: Are references to removed steps (like `review_job_spec`) updated?"
202
+ - "**Orphaned Steps Fixed**: For jobs with no workflows, is there a single workflow (named after the job) containing all steps? For jobs with existing workflows, does each orphan get its own workflow (named after the step)?"
203
+ - "**Valid YAML**: Are all job.yml files valid YAML?"
204
+
205
+ - id: errata
206
+ name: "Clean Up Errata"
207
+ description: "Removes obsolete files and folders from prior DeepWork versions, including old skill directories, temp files, and deprecated configurations."
208
+ instructions_file: steps/errata.md
209
+ inputs:
210
+ - file: .deepwork/jobs/
211
+ from_step: fix_jobs
212
+ outputs:
213
+ - repair_summary.md
214
+ dependencies:
215
+ - fix_settings
216
+ - fix_jobs
217
+ quality_criteria:
218
+ - "**Legacy Job Skills Removed**: Are legacy skill folders for each job removed from `.claude/skills/` and `.gemini/skills/`?"
219
+ - "**Deepwork Skill Preserved**: Does the `deepwork` skill folder still exist in `.claude/skills/deepwork/`?"
220
+ - "**Temp Files Cleaned**: Are `.deepwork/tmp/` contents cleaned appropriately?"
221
+ - "**Rules Folder Removed**: Is `.deepwork/rules/` folder backed up and removed (fully deprecated)?"
222
+ - "**Rules Job Removed**: Is `.deepwork/jobs/deepwork_rules/` removed if present?"
223
+ - "**Config Version Updated**: Is `.deepwork/config.yml` using current version format?"
224
+ - "**Summary Provided**: Is a repair_summary.md file created documenting all changes made?"
225
+ - "**Git Status Clean**: Are changes ready to be committed (no untracked garbage files)?"
@@ -61,11 +61,16 @@ When creating a doc spec, gather the following information:
61
61
  - How often is it produced? (frequency)
62
62
 
63
63
  3. **Quality Criteria** (3-5 criteria, each with name and description)
64
+
65
+ **Important**: Doc spec quality criteria define requirements for the **output document itself**, not the process of creating it. Focus on what the finished document must contain or achieve.
66
+
64
67
  Examples for a spending report:
65
68
  - **Visualization**: Must include charts showing spend breakdown by service
66
69
  - **Variance Analysis**: Must compare current month against previous with percentages
67
70
  - **Action Items**: Must include recommended cost optimization actions
68
71
 
72
+ **Note**: When a doc spec is created for a step's output, the step should generally NOT have separate `quality_criteria` in the job.yml. The doc spec's criteria cover output quality. Only add step-level quality_criteria if there are essential process requirements (e.g., "must use specific tool"), and minimize these when possible.
73
+
69
74
  4. **Document Structure**
70
75
  - What sections should it have?
71
76
  - Any required elements (tables, charts, summaries)?
@@ -76,7 +81,7 @@ Create the doc spec file at `.deepwork/doc_specs/[doc_spec_name].md`:
76
81
 
77
82
  **Template reference**: See `.deepwork/jobs/deepwork_jobs/templates/doc_spec.md.template` for the standard structure.
78
83
 
79
- **Complete example**: See `.deepwork/jobs/deepwork_jobs/templates/doc_spec.md.example` for a fully worked example.
84
+ **Complete example**: See `.deepwork/doc_specs/job_spec.md` for a fully worked example (the doc spec for job.yml files).
80
85
 
81
86
  After creating the doc spec, proceed to Step 2 with the doc spec reference for the final step's output.
82
87
 
@@ -101,10 +106,63 @@ For each major phase they mentioned, ask structured questions to gather details:
101
106
  - Where should each output be saved? (filename/path)
102
107
  - Should outputs be organized in subdirectories? (e.g., `reports/`, `data/`, `drafts/`)
103
108
  - Will other steps need this output?
104
-
105
- **Important**: Output paths should always be within the main repository directory structure, not in dot-directories like `.deepwork/`. Dot-directories are for configuration and job definitions, not for job outputs. Use paths like `research/competitors/report.md` rather than `.deepwork/outputs/report.md`.
106
109
  - **Does this output have a doc spec?** If a doc spec was created in Step 1.6/1.7, reference it for the appropriate output
107
110
 
111
+ #### Work Product Storage Guidelines
112
+
113
+ **Key principle**: Job outputs belong in the main repository directory structure, not in dot-directories. The `.deepwork/` directory is for job definitions and configuration only.
114
+
115
+ **Why this matters**:
116
+ - **Version control**: Work products in the main repo are tracked by git and visible in PRs
117
+ - **Discoverability**: Team members can find outputs without knowing about DeepWork internals
118
+ - **Tooling compatibility**: IDEs, search tools, and CI/CD work naturally with standard paths
119
+ - **Glob patterns**: Well-structured paths enable powerful file matching (e.g., `competitive_research/**/*.md`)
120
+
121
+ **Good output path patterns**:
122
+ ```
123
+ competitive_research/competitors_list.md
124
+ competitive_research/acme_corp/research.md
125
+ operations/reports/2026-01/spending_analysis.md
126
+ docs/api/endpoints.md
127
+ ```
128
+
129
+ **Avoid these patterns**:
130
+ ```
131
+ .deepwork/outputs/report.md # Hidden in dot-directory
132
+ output.md # Too generic, no context
133
+ research.md # Unclear which research
134
+ temp/draft.md # Transient-sounding paths
135
+ ```
136
+
137
+ **Organizing multi-file outputs**:
138
+ - Use the job name as a top-level folder when outputs are job-specific
139
+ - Use parameterized paths for per-entity outputs: `competitive_research/[competitor_name]/`
140
+ - Match existing project conventions when extending a codebase
141
+
142
+ **When to include dates in paths**:
143
+ - **Include date** for periodic outputs where each version is retained (e.g., monthly reports, quarterly reviews, weekly summaries). These accumulate over time and historical versions remain useful.
144
+ ```
145
+ operations/reports/2026-01/spending_analysis.md # Monthly report - keep history
146
+ hr/employees/[employee_name]/quarterly_reviews/2026-Q1.pdf # Per-employee quarterly review
147
+ ```
148
+ - **Omit date** for current-state outputs that represent the latest understanding and get updated in place. Previous versions live in git history, not separate files.
149
+ ```
150
+ competitive_research/acme_corp/swot.md # Current SWOT - updated over time
151
+ docs/architecture/overview.md # Living document
152
+ ```
153
+
154
+ **Supporting materials and intermediate outputs**:
155
+ - Content generated in earlier steps to support the final output (research notes, data extracts, drafts) should be placed in a `_dataroom` folder that is a peer to the final output
156
+ - Name the dataroom folder by replacing the file extension with `_dataroom`
157
+ ```
158
+ operations/reports/2026-01/spending_analysis.md # Final output
159
+ operations/reports/2026-01/spending_analysis_dataroom/ # Supporting materials
160
+ raw_data.csv
161
+ vendor_breakdown.md
162
+ notes.md
163
+ ```
164
+ - This keeps supporting materials organized and discoverable without cluttering the main output location
165
+
108
166
  4. **Step Dependencies**
109
167
  - Which previous steps must complete before this one?
110
168
  - Are there any ordering constraints?
@@ -114,6 +172,21 @@ For each major phase they mentioned, ask structured questions to gather details:
114
172
  - Are there any quality checks or validation needed?
115
173
  - What makes a good vs. bad output for this step?
116
174
 
175
+ **Important**: Quality criteria belong in the `quality_criteria` field of job.yml, NOT in the step details. When skills are generated, quality criteria are automatically included in the output. Do not duplicate them in step instructions or details—this causes redundancy and confusion.
176
+
177
+ 6. **Agent Delegation** (optional)
178
+ - Should this step be executed by a specific agent type?
179
+ - Use the `agent` field when the step should run in a forked context with a specific agent
180
+ - When `agent` is set, the generated skill automatically includes `context: fork`
181
+ - Available agent types:
182
+ - `general-purpose` - Standard agent for multi-step tasks
183
+
184
+ ```yaml
185
+ steps:
186
+ - id: research_step
187
+ agent: general-purpose # Delegates to the general-purpose agent
188
+ ```
189
+
117
190
  **Note**: You're gathering this information to understand what instructions will be needed, but you won't create the instruction files yet - that happens in the `implement` step.
118
191
 
119
192
  #### Doc Spec-Aware Output Format
@@ -154,49 +227,53 @@ After gathering information about all steps:
154
227
  - Job description (detailed multi-line explanation)
155
228
  - Version number (start with 1.0.0)
156
229
 
157
- ### Step 4: Define Quality Validation (Stop Hooks)
230
+ ### Step 4: Define Quality Validation Hooks
158
231
 
159
- For each step, consider whether it would benefit from **quality validation loops**. Stop hooks allow the AI agent to iteratively refine its work until quality criteria are met.
232
+ For each step, consider whether it would benefit from **quality validation loops**. Quality hooks allow the AI agent to iteratively refine its work until quality criteria are met.
160
233
 
161
234
  **Ask structured questions about quality validation:**
162
235
  - "Are there specific quality criteria that must be met for this step?"
163
236
  - "Would you like the agent to validate its work before completing?"
164
237
  - "What would make you send the work back for revision?"
165
238
 
166
- **Stop hooks are particularly valuable for:**
239
+ **Quality hooks are particularly valuable for:**
167
240
  - Steps with complex outputs that need multiple checks
168
241
  - Steps where quality is critical (final deliverables)
169
242
  - Steps with subjective quality criteria that benefit from AI self-review
170
243
 
171
- **Three types of stop hooks are supported:**
244
+ **Three types of hooks are supported:**
172
245
 
173
246
  1. **Inline Prompt** (`prompt`) - Best for simple quality criteria
174
247
  ```yaml
175
- stop_hooks:
176
- - prompt: |
177
- Verify the output meets these criteria:
178
- 1. Contains at least 5 competitors
179
- 2. Each competitor has a description
180
- 3. Selection rationale is clear
248
+ hooks:
249
+ after_agent:
250
+ - prompt: |
251
+ Verify the output meets these criteria:
252
+ 1. Contains at least 5 competitors
253
+ 2. Each competitor has a description
254
+ 3. Selection rationale is clear
181
255
  ```
182
256
 
183
257
  2. **Prompt File** (`prompt_file`) - For detailed/reusable criteria
184
258
  ```yaml
185
- stop_hooks:
186
- - prompt_file: hooks/quality_check.md
259
+ hooks:
260
+ after_agent:
261
+ - prompt_file: hooks/quality_check.md
187
262
  ```
188
263
 
189
264
  3. **Script** (`script`) - For programmatic validation (tests, linting)
190
265
  ```yaml
191
- stop_hooks:
192
- - script: hooks/run_tests.sh
266
+ hooks:
267
+ after_agent:
268
+ - script: hooks/run_tests.sh
193
269
  ```
194
270
 
195
271
  **Multiple hooks can be combined:**
196
272
  ```yaml
197
- stop_hooks:
198
- - script: hooks/lint_output.sh
199
- - prompt: "Verify the content is comprehensive and well-organized"
273
+ hooks:
274
+ after_agent:
275
+ - script: hooks/lint_output.sh
276
+ - prompt: "Verify the content is comprehensive and well-organized"
200
277
  ```
201
278
 
202
279
  **Encourage prompt-based hooks** - They leverage the AI's ability to understand context and make nuanced quality judgments. Script hooks are best for objective checks (syntax, format, tests).
@@ -343,7 +420,7 @@ Claude: Great! Creating the job.yml specification now...
343
420
  - .deepwork/jobs/competitive_research/job.yml
344
421
 
345
422
  **Next step:**
346
- Run `/deepwork_jobs.review_job_spec` to validate the specification against quality criteria.
423
+ Implement the job to generate step instruction files.
347
424
  ```
348
425
 
349
426
  ## Important Guidelines
@@ -383,15 +460,5 @@ The complete YAML specification file (example shown in Step 5 above).
383
460
  After creating the file:
384
461
  1. Inform the user that the specification is complete
385
462
  2. Recommend that they review the job.yml file
386
- 3. Tell them to run `/deepwork_jobs.review_job_spec` next
387
-
388
- ## Quality Criteria
389
-
390
- - Asked structured questions to fully understand user requirements
391
- - User fully understands what job they're creating
392
- - All steps have clear inputs and outputs
393
- - Dependencies make logical sense
394
- - Summary is concise and descriptive
395
- - Description provides rich context for future refinement
396
- - Specification is valid YAML and follows the schema
397
- - Ready for implementation step
463
+ 3. Tell them the next step is to implement the job (generate step instruction files)
464
+