deepwork 0.3.0__tar.gz → 0.3.1__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 (238) hide show
  1. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/commit/SKILL.md +1 -1
  2. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/commit.commit_and_push/SKILL.md +22 -27
  3. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_rules/SKILL.md +8 -0
  4. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_rules.define/SKILL.md +8 -0
  5. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/commit/job.yml +6 -4
  6. deepwork-0.3.1/.deepwork/jobs/commit/steps/commit_and_push.md +76 -0
  7. deepwork-0.3.1/.deepwork/jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +38 -0
  8. {deepwork-0.3.0/src/deepwork/standard_jobs → deepwork-0.3.1/.deepwork/jobs}/deepwork_rules/job.yml +8 -0
  9. {deepwork-0.3.0/src/deepwork/standard_jobs → deepwork-0.3.1/.deepwork/jobs}/deepwork_rules/rules/skill-md-validation.md +1 -0
  10. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/architecture-documentation-accuracy.md +1 -0
  11. deepwork-0.3.1/.deepwork/rules/manual-test-created-mode.md +22 -0
  12. deepwork-0.3.1/.deepwork/rules/new-standard-job-warning.md +16 -0
  13. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/readme-accuracy.md +1 -0
  14. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/standard-jobs-source-of-truth.md +1 -0
  15. deepwork-0.3.1/.deepwork/rules/uv-lock-sync.md +15 -0
  16. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/version-and-changelog-update.md +1 -0
  17. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/commit/commit_and_push.toml +21 -26
  18. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/commit/index.toml +1 -1
  19. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_rules/define.toml +8 -0
  20. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_rules/index.toml +8 -0
  21. {deepwork-0.3.0 → deepwork-0.3.1}/.gitignore +5 -0
  22. deepwork-0.3.1/AGENTS.md +86 -0
  23. {deepwork-0.3.0 → deepwork-0.3.1}/CHANGELOG.md +13 -0
  24. {deepwork-0.3.0 → deepwork-0.3.1}/PKG-INFO +3 -1
  25. {deepwork-0.3.0 → deepwork-0.3.1}/README.md +2 -0
  26. {deepwork-0.3.0 → deepwork-0.3.1}/claude.md +20 -10
  27. {deepwork-0.3.0 → deepwork-0.3.1}/doc/architecture.md +6 -0
  28. {deepwork-0.3.0 → deepwork-0.3.1}/doc/rules_syntax.md +124 -4
  29. {deepwork-0.3.0 → deepwork-0.3.1}/doc/rules_system_design.md +22 -0
  30. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/README.md +4 -0
  31. deepwork-0.3.1/manual_tests/test_created_mode/existing_file.yml +1 -0
  32. {deepwork-0.3.0 → deepwork-0.3.1}/pyproject.toml +1 -1
  33. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/cli/install.py +19 -15
  34. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/rules_parser.py +58 -10
  35. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/rules_check.py +198 -12
  36. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/schemas/rules_schema.py +38 -6
  37. deepwork-0.3.1/src/deepwork/standard_jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +30 -0
  38. {deepwork-0.3.0/.deepwork/jobs → deepwork-0.3.1/src/deepwork/standard_jobs}/deepwork_rules/job.yml +8 -0
  39. {deepwork-0.3.0/.deepwork/jobs → deepwork-0.3.1/src/deepwork/standard_jobs}/deepwork_rules/rules/skill-md-validation.md +1 -0
  40. {deepwork-0.3.0 → deepwork-0.3.1}/tests/integration/test_install_flow.py +23 -5
  41. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_rules_parser.py +262 -0
  42. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_schema_validation.py +37 -0
  43. {deepwork-0.3.0 → deepwork-0.3.1}/uv.lock +1 -1
  44. deepwork-0.3.0/.deepwork/jobs/commit/steps/commit_and_push.md +0 -81
  45. deepwork-0.3.0/.deepwork/jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +0 -27
  46. deepwork-0.3.0/src/deepwork/standard_jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +0 -27
  47. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/settings.json +0 -0
  48. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform/SKILL.md +0 -0
  49. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform.add_capabilities/SKILL.md +0 -0
  50. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform.implement/SKILL.md +0 -0
  51. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform.research/SKILL.md +0 -0
  52. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform.verify/SKILL.md +0 -0
  53. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/commit.lint/SKILL.md +0 -0
  54. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/commit.test/SKILL.md +0 -0
  55. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_jobs/SKILL.md +0 -0
  56. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_jobs.define/SKILL.md +0 -0
  57. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_jobs.implement/SKILL.md +0 -0
  58. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_jobs.learn/SKILL.md +0 -0
  59. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/update/SKILL.md +0 -0
  60. {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/update.job/SKILL.md +0 -0
  61. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/.gitignore +0 -0
  62. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/config.yml +0 -0
  63. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/job.yml +0 -0
  64. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/steps/add_capabilities.md +0 -0
  65. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/steps/implement.md +0 -0
  66. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/steps/research.md +0 -0
  67. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/steps/verify.md +0 -0
  68. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/commit/steps/lint.md +0 -0
  69. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/commit/steps/test.md +0 -0
  70. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/AGENTS.md +0 -0
  71. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/job.yml +0 -0
  72. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/make_new_job.sh +0 -0
  73. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/steps/define.md +0 -0
  74. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/steps/implement.md +0 -0
  75. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/steps/learn.md +0 -0
  76. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
  77. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/agents.md.template +0 -0
  78. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/job.yml.example +0 -0
  79. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/job.yml.template +0 -0
  80. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
  81. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
  82. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/hooks/global_hooks.yml +0 -0
  83. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/hooks/user_prompt_submit.sh +0 -0
  84. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/.gitkeep +0 -0
  85. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/api-documentation-sync.md.example +0 -0
  86. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/readme-documentation.md.example +0 -0
  87. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/security-review.md.example +0 -0
  88. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/source-test-pairing.md.example +0 -0
  89. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/steps/define.md +0 -0
  90. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/update/job.yml +0 -0
  91. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/update/steps/job.md +0 -0
  92. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-command-action.md +0 -0
  93. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-infinite-block-command.md +0 -0
  94. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-infinite-block-prompt.md +0 -0
  95. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-multi-safety.md +0 -0
  96. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-pair-mode.md +0 -0
  97. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-set-mode.md +0 -0
  98. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-trigger-safety.md +0 -0
  99. {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/skill-template-best-practices.md +0 -0
  100. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/add_capabilities.toml +0 -0
  101. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/implement.toml +0 -0
  102. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/index.toml +0 -0
  103. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/research.toml +0 -0
  104. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/verify.toml +0 -0
  105. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/commit/lint.toml +0 -0
  106. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/commit/test.toml +0 -0
  107. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_jobs/define.toml +0 -0
  108. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_jobs/implement.toml +0 -0
  109. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_jobs/index.toml +0 -0
  110. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_jobs/learn.toml +0 -0
  111. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/update/index.toml +0 -0
  112. {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/update/job.toml +0 -0
  113. {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/README.md +0 -0
  114. {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/cla.yml +0 -0
  115. {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/claude-code-test.yml +0 -0
  116. {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/release.yml +0 -0
  117. {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/validate.yml +0 -0
  118. {deepwork-0.3.0 → deepwork-0.3.1}/CLA/version_1/CLA.md +0 -0
  119. {deepwork-0.3.0 → deepwork-0.3.1}/CLA/version_1/CLA_SIGNATORIES.md +0 -0
  120. {deepwork-0.3.0 → deepwork-0.3.1}/CONTRIBUTING.md +0 -0
  121. {deepwork-0.3.0 → deepwork-0.3.1}/LICENSE.md +0 -0
  122. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/README.md +0 -0
  123. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/claude/cli_configuration.md +0 -0
  124. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/claude/hooks.md +0 -0
  125. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/claude/hooks_system.md +0 -0
  126. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/claude/learnings.md +0 -0
  127. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/gemini/cli_configuration.md +0 -0
  128. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/gemini/hooks.md +0 -0
  129. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/gemini/hooks_system.md +0 -0
  130. {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/gemini/learnings.md +0 -0
  131. {deepwork-0.3.0 → deepwork-0.3.1}/job_library/README.md +0 -0
  132. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_command_action/test_command_action.txt +0 -0
  133. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_command_action/test_command_action_log.txt +0 -0
  134. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_infinite_block_command/test_infinite_block_command.py +0 -0
  135. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_infinite_block_prompt/test_infinite_block_prompt.py +0 -0
  136. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_multi_safety/test_multi_safety.py +0 -0
  137. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_multi_safety/test_multi_safety_changelog.md +0 -0
  138. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_multi_safety/test_multi_safety_version.txt +0 -0
  139. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_pair_mode/test_pair_mode_expected.md +0 -0
  140. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_pair_mode/test_pair_mode_trigger.py +0 -0
  141. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_set_mode/test_set_mode_source.py +0 -0
  142. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_set_mode/test_set_mode_test.py +0 -0
  143. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_trigger_safety_mode/test_trigger_safety_mode.py +0 -0
  144. {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_trigger_safety_mode/test_trigger_safety_mode_doc.md +0 -0
  145. {deepwork-0.3.0 → deepwork-0.3.1}/shell.nix +0 -0
  146. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/__init__.py +0 -0
  147. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/cli/__init__.py +0 -0
  148. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/cli/main.py +0 -0
  149. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/cli/sync.py +0 -0
  150. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/__init__.py +0 -0
  151. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/adapters.py +0 -0
  152. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/command_executor.py +0 -0
  153. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/detector.py +0 -0
  154. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/generator.py +0 -0
  155. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/hooks_syncer.py +0 -0
  156. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/parser.py +0 -0
  157. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/pattern_matcher.py +0 -0
  158. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/rules_queue.py +0 -0
  159. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/README.md +0 -0
  160. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/__init__.py +0 -0
  161. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/claude_hook.sh +0 -0
  162. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/gemini_hook.sh +0 -0
  163. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/wrapper.py +0 -0
  164. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/schemas/__init__.py +0 -0
  165. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/schemas/job_schema.py +0 -0
  166. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/AGENTS.md +0 -0
  167. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/job.yml +0 -0
  168. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/make_new_job.sh +0 -0
  169. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/steps/define.md +0 -0
  170. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/steps/implement.md +0 -0
  171. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/steps/learn.md +0 -0
  172. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
  173. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template +0 -0
  174. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example +0 -0
  175. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template +0 -0
  176. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
  177. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
  178. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/hooks/global_hooks.yml +0 -0
  179. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/hooks/user_prompt_submit.sh +0 -0
  180. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/.gitkeep +0 -0
  181. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/api-documentation-sync.md.example +0 -0
  182. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/readme-documentation.md.example +0 -0
  183. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/security-review.md.example +0 -0
  184. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/source-test-pairing.md.example +0 -0
  185. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/steps/define.md +0 -0
  186. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/__init__.py +0 -0
  187. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/claude/skill-job-meta.md.jinja +0 -0
  188. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/claude/skill-job-step.md.jinja +0 -0
  189. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/gemini/skill-job-meta.toml.jinja +0 -0
  190. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/gemini/skill-job-step.toml.jinja +0 -0
  191. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/__init__.py +0 -0
  192. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/fs.py +0 -0
  193. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/git.py +0 -0
  194. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/validation.py +0 -0
  195. {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/yaml_utils.py +0 -0
  196. {deepwork-0.3.0 → deepwork-0.3.1}/tests/__init__.py +0 -0
  197. {deepwork-0.3.0 → deepwork-0.3.1}/tests/conftest.py +0 -0
  198. {deepwork-0.3.0 → deepwork-0.3.1}/tests/e2e/__init__.py +0 -0
  199. {deepwork-0.3.0 → deepwork-0.3.1}/tests/e2e/test_claude_code_integration.py +0 -0
  200. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/job.yml +0 -0
  201. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/steps/comparative_report.md +0 -0
  202. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/steps/identify_competitors.md +0 -0
  203. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/steps/primary_research.md +0 -0
  204. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/steps/secondary_research.md +0 -0
  205. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/exposed_step_job/job.yml +0 -0
  206. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/exposed_step_job/steps/exposed_step.md +0 -0
  207. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/exposed_step_job/steps/hidden_step.md +0 -0
  208. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/fruits/job.yml +0 -0
  209. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/fruits/steps/classify.md +0 -0
  210. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/fruits/steps/identify.md +0 -0
  211. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/invalid_job/job.yml +0 -0
  212. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/simple_job/job.yml +0 -0
  213. {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/simple_job/steps/single_step.md +0 -0
  214. {deepwork-0.3.0 → deepwork-0.3.1}/tests/integration/test_fruits_workflow.py +0 -0
  215. {deepwork-0.3.0 → deepwork-0.3.1}/tests/integration/test_full_workflow.py +0 -0
  216. {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/README.md +0 -0
  217. {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/__init__.py +0 -0
  218. {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/conftest.py +0 -0
  219. {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_capture_prompt_work_tree.py +0 -0
  220. {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_hooks.py +0 -0
  221. {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_make_new_job.py +0 -0
  222. {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_rules_stop_hook.py +0 -0
  223. {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_user_prompt_submit.py +0 -0
  224. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_adapters.py +0 -0
  225. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_command_executor.py +0 -0
  226. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_detector.py +0 -0
  227. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_fs.py +0 -0
  228. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_generator.py +0 -0
  229. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_git.py +0 -0
  230. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_hook_wrapper.py +0 -0
  231. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_hooks_syncer.py +0 -0
  232. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_parser.py +0 -0
  233. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_pattern_matcher.py +0 -0
  234. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_rules_check.py +0 -0
  235. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_rules_queue.py +0 -0
  236. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_stop_hooks.py +0 -0
  237. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_validation.py +0 -0
  238. {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_yaml_utils.py +0 -0
@@ -25,7 +25,7 @@ Steps:
25
25
 
26
26
  1. **test** - Pull latest code and run the test suite until all tests pass
27
27
  2. **lint** - Format and lint code with ruff using a sub-agent (requires: test)
28
- 3. **commit_and_push** - Review changed files, commit, and push to remote (requires: lint)
28
+ 3. **commit_and_push** - Verify changed files, commit, and push to remote (requires: lint)
29
29
 
30
30
  ## Execution Instructions
31
31
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: commit.commit_and_push
3
- description: "Review changed files, commit, and push to remote"
3
+ description: "Verify changed files, commit, and push to remote"
4
4
  user-invocable: false
5
5
  hooks:
6
6
  Stop:
@@ -8,8 +8,8 @@ hooks:
8
8
  - type: prompt
9
9
  prompt: |
10
10
  Verify the commit is ready:
11
- 1. Changed files list was reviewed with user
12
- 2. User confirmed the files match expectations
11
+ 1. Changed files list was reviewed by the agent
12
+ 2. Files match what was modified during this session (or unexpected changes were investigated)
13
13
  3. Commit was created with appropriate message
14
14
  4. Changes were pushed to remote
15
15
  If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
@@ -29,17 +29,17 @@ Before proceeding, confirm these steps are complete:
29
29
 
30
30
  ## Instructions
31
31
 
32
- **Goal**: Review changed files, commit, and push to remote
32
+ **Goal**: Verify changed files, commit, and push to remote
33
33
 
34
34
  # Commit and Push
35
35
 
36
36
  ## Objective
37
37
 
38
- Review the changed files with the user, create a commit with an appropriate message, and push to the remote repository.
38
+ Review the changed files to verify they match the agent's expectations, create a commit with an appropriate message, and push to the remote repository.
39
39
 
40
40
  ## Task
41
41
 
42
- Present the list of changed files for user review, ensure they match expectations, then commit and push the changes.
42
+ Check the list of changed files against what was modified during this session, ensure they match expectations, then commit and push the changes.
43
43
 
44
44
  ### Process
45
45
 
@@ -49,31 +49,26 @@ Present the list of changed files for user review, ensure they match expectation
49
49
  ```
50
50
  Also run `git diff --stat` to see a summary of changes.
51
51
 
52
- 2. **Present changes to the user for review**
52
+ 2. **Verify changes match expectations**
53
53
 
54
- Use the AskUserQuestion tool to ask structured questions about the changes:
54
+ Compare the changed files against what you modified during this session:
55
+ - Do the modified files match what you edited?
56
+ - Are there any unexpected new files?
57
+ - Are there any unexpected deleted files?
58
+ - Do the line counts seem reasonable for the changes you made?
55
59
 
56
- Show the user:
57
- - List of modified files
58
- - List of new files
59
- - List of deleted files
60
- - Summary of changes (lines added/removed)
60
+ If changes match expectations, proceed to commit.
61
61
 
62
- Ask them to confirm:
63
- - "Do these changed files match your expectations?"
64
- - Provide options: "Yes, proceed with commit" / "No, let me review first" / "No, some files shouldn't be included"
62
+ If there are unexpected changes:
63
+ - Investigate why (e.g., lint auto-fixes, generated files)
64
+ - If they're legitimate side effects of your work, include them
65
+ - If they're unrelated or shouldn't be committed, use `git restore` to discard them
65
66
 
66
- 3. **Handle user response**
67
-
68
- - If user confirms, proceed to commit
69
- - If user wants to review first, wait for them to come back
70
- - If user says some files shouldn't be included, ask which files to exclude and use `git restore` or `git checkout` to unstage them
71
-
72
- 4. **Stage all appropriate changes**
67
+ 3. **Stage all appropriate changes**
73
68
  ```bash
74
69
  git add -A
75
70
  ```
76
- Or stage specific files if user excluded some.
71
+ Or stage specific files if some were excluded.
77
72
 
78
73
  5. **View recent commit messages for style reference**
79
74
  ```bash
@@ -102,8 +97,8 @@ Present the list of changed files for user review, ensure they match expectation
102
97
 
103
98
  ## Quality Criteria
104
99
 
105
- - Changed files list was presented to user
106
- - User explicitly confirmed the files match expectations
100
+ - Changed files list was reviewed by the agent
101
+ - Files match what was modified during this session (or unexpected changes were investigated and handled)
107
102
  - Commit message follows project conventions
108
103
  - Commit was created successfully
109
104
  - Changes were pushed to remote
@@ -111,7 +106,7 @@ Present the list of changed files for user review, ensure they match expectation
111
106
 
112
107
  ## Context
113
108
 
114
- This is the final step of the commit workflow. It ensures the user has reviewed and approved the changes before they are committed and pushed. This prevents accidental commits of unintended files or changes.
109
+ This is the final step of the commit workflow. The agent verifies that the changed files match its own expectations from the work done during the session, then commits and pushes. This catches unexpected changes while avoiding unnecessary user interruptions.
115
110
 
116
111
 
117
112
  ### Job Context
@@ -13,10 +13,17 @@ Manages rules that automatically trigger when certain files change during an AI
13
13
  Rules help ensure that code changes follow team guidelines, documentation is updated,
14
14
  and architectural decisions are respected.
15
15
 
16
+ IMPORTANT: Rules are evaluated at the "Stop" hook, which fires when an agent finishes its turn.
17
+ This includes when sub-agents complete their work. Rules are NOT evaluated immediately after
18
+ each file edit - they batch up and run once at the end of the agent's response cycle.
19
+ - Command action rules: Execute their command (e.g., `uv sync`) when the agent stops
20
+ - Prompt action rules: Display instructions to the agent, blocking until addressed
21
+
16
22
  Rules are stored as individual markdown files with YAML frontmatter in the `.deepwork/rules/`
17
23
  directory. Each rule file specifies:
18
24
  - Detection mode: trigger/safety, set (bidirectional), or pair (directional)
19
25
  - Patterns: Glob patterns for matching files, with optional variable capture
26
+ - Action type: prompt (default) to show instructions, or command to run a shell command
20
27
  - Instructions: Markdown content describing what the agent should do
21
28
 
22
29
  Example use cases:
@@ -24,6 +31,7 @@ Example use cases:
24
31
  - Require security review when authentication code is modified
25
32
  - Ensure API documentation stays in sync with API code
26
33
  - Enforce source/test file pairing
34
+ - Auto-run `uv sync` when pyproject.toml changes (command action)
27
35
 
28
36
 
29
37
  ## Available Steps
@@ -272,10 +272,17 @@ Manages rules that automatically trigger when certain files change during an AI
272
272
  Rules help ensure that code changes follow team guidelines, documentation is updated,
273
273
  and architectural decisions are respected.
274
274
 
275
+ IMPORTANT: Rules are evaluated at the "Stop" hook, which fires when an agent finishes its turn.
276
+ This includes when sub-agents complete their work. Rules are NOT evaluated immediately after
277
+ each file edit - they batch up and run once at the end of the agent's response cycle.
278
+ - Command action rules: Execute their command (e.g., `uv sync`) when the agent stops
279
+ - Prompt action rules: Display instructions to the agent, blocking until addressed
280
+
275
281
  Rules are stored as individual markdown files with YAML frontmatter in the `.deepwork/rules/`
276
282
  directory. Each rule file specifies:
277
283
  - Detection mode: trigger/safety, set (bidirectional), or pair (directional)
278
284
  - Patterns: Glob patterns for matching files, with optional variable capture
285
+ - Action type: prompt (default) to show instructions, or command to run a shell command
279
286
  - Instructions: Markdown content describing what the agent should do
280
287
 
281
288
  Example use cases:
@@ -283,6 +290,7 @@ Example use cases:
283
290
  - Require security review when authentication code is modified
284
291
  - Ensure API documentation stays in sync with API code
285
292
  - Enforce source/test file pairing
293
+ - Auto-run `uv sync` when pyproject.toml changes (command action)
286
294
 
287
295
 
288
296
  ## Required Inputs
@@ -1,5 +1,5 @@
1
1
  name: commit
2
- version: "1.0.0"
2
+ version: "1.0.1"
3
3
  summary: "Run tests, lint, and commit code changes"
4
4
  description: |
5
5
  A workflow for preparing and committing code changes with quality checks.
@@ -14,6 +14,8 @@ description: |
14
14
  3. commit_and_push - Review changes and commit/push
15
15
 
16
16
  changelog:
17
+ - version: "1.0.1"
18
+ changes: "Changed file review from user confirmation to agent self-verification - agent now checks files match its own expectations instead of asking user every time"
17
19
  - version: "1.0.0"
18
20
  changes: "Initial job creation"
19
21
 
@@ -56,7 +58,7 @@ steps:
56
58
 
57
59
  - id: commit_and_push
58
60
  name: "Commit and Push"
59
- description: "Review changed files, commit, and push to remote"
61
+ description: "Verify changed files, commit, and push to remote"
60
62
  instructions_file: steps/commit_and_push.md
61
63
  inputs: []
62
64
  outputs: []
@@ -66,8 +68,8 @@ steps:
66
68
  after_agent:
67
69
  - prompt: |
68
70
  Verify the commit is ready:
69
- 1. Changed files list was reviewed with user
70
- 2. User confirmed the files match expectations
71
+ 1. Changed files list was reviewed by the agent
72
+ 2. Files match what was modified during this session (or unexpected changes were investigated)
71
73
  3. Commit was created with appropriate message
72
74
  4. Changes were pushed to remote
73
75
  If ALL criteria are met, include `<promise>✓ Quality Criteria Met</promise>`.
@@ -0,0 +1,76 @@
1
+ # Commit and Push
2
+
3
+ ## Objective
4
+
5
+ Review the changed files to verify they match the agent's expectations, create a commit with an appropriate message, and push to the remote repository.
6
+
7
+ ## Task
8
+
9
+ Check the list of changed files against what was modified during this session, ensure they match expectations, then commit and push the changes.
10
+
11
+ ### Process
12
+
13
+ 1. **Get the list of changed files**
14
+ ```bash
15
+ git status
16
+ ```
17
+ Also run `git diff --stat` to see a summary of changes.
18
+
19
+ 2. **Verify changes match expectations**
20
+
21
+ Compare the changed files against what you modified during this session:
22
+ - Do the modified files match what you edited?
23
+ - Are there any unexpected new files?
24
+ - Are there any unexpected deleted files?
25
+ - Do the line counts seem reasonable for the changes you made?
26
+
27
+ If changes match expectations, proceed to commit.
28
+
29
+ If there are unexpected changes:
30
+ - Investigate why (e.g., lint auto-fixes, generated files)
31
+ - If they're legitimate side effects of your work, include them
32
+ - If they're unrelated or shouldn't be committed, use `git restore` to discard them
33
+
34
+ 3. **Stage all appropriate changes**
35
+ ```bash
36
+ git add -A
37
+ ```
38
+ Or stage specific files if some were excluded.
39
+
40
+ 5. **View recent commit messages for style reference**
41
+ ```bash
42
+ git log --oneline -10
43
+ ```
44
+
45
+ 6. **Create the commit**
46
+
47
+ Generate an appropriate commit message based on:
48
+ - The changes made
49
+ - The style of recent commits
50
+ - Conventional commit format if the project uses it
51
+
52
+ ```bash
53
+ git commit -m "commit message here"
54
+ ```
55
+
56
+ 7. **Push to remote**
57
+ ```bash
58
+ git push
59
+ ```
60
+ If the branch has no upstream, use:
61
+ ```bash
62
+ git push -u origin HEAD
63
+ ```
64
+
65
+ ## Quality Criteria
66
+
67
+ - Changed files list was reviewed by the agent
68
+ - Files match what was modified during this session (or unexpected changes were investigated and handled)
69
+ - Commit message follows project conventions
70
+ - Commit was created successfully
71
+ - Changes were pushed to remote
72
+ - When all criteria are met, include `<promise>✓ Quality Criteria Met</promise>` in your response
73
+
74
+ ## Context
75
+
76
+ This is the final step of the commit workflow. The agent verifies that the changed files match its own expectations from the work done during the session, then commits and pushes. This catches unexpected changes while avoiding unnecessary user interruptions.
@@ -0,0 +1,38 @@
1
+ #!/bin/bash
2
+ # capture_prompt_work_tree.sh - Captures the git work tree state at prompt submission
3
+ #
4
+ # This script creates a snapshot of ALL tracked files at the time the prompt
5
+ # is submitted. This baseline is used for rules with compare_to: prompt and
6
+ # created: mode to detect truly NEW files (not modifications to existing ones).
7
+ #
8
+ # The baseline contains ALL tracked files (not just changed files) so that
9
+ # the rules_check hook can determine which files are genuinely new vs which
10
+ # files existed before and were just modified.
11
+ #
12
+ # It also captures the HEAD commit ref so that committed changes can be detected
13
+ # by comparing HEAD at Stop time to the captured ref.
14
+
15
+ set -e
16
+
17
+ # Ensure .deepwork directory exists
18
+ mkdir -p .deepwork
19
+
20
+ # Save the current HEAD commit ref for detecting committed changes
21
+ # This is used by get_changed_files_prompt() to detect files changed since prompt,
22
+ # even if those changes were committed during the agent response.
23
+ git rev-parse HEAD > .deepwork/.last_head_ref 2>/dev/null || echo "" > .deepwork/.last_head_ref
24
+
25
+ # Save ALL tracked files (not just changed files)
26
+ # This is critical for created: mode rules to distinguish between:
27
+ # - Newly created files (not in baseline) -> should trigger created: rules
28
+ # - Modified existing files (in baseline) -> should NOT trigger created: rules
29
+ git ls-files > .deepwork/.last_work_tree 2>/dev/null || true
30
+
31
+ # Also include untracked files that exist at prompt time
32
+ # These are files the user may have created before submitting the prompt
33
+ git ls-files --others --exclude-standard >> .deepwork/.last_work_tree 2>/dev/null || true
34
+
35
+ # Sort and deduplicate
36
+ if [ -f .deepwork/.last_work_tree ]; then
37
+ sort -u .deepwork/.last_work_tree -o .deepwork/.last_work_tree
38
+ fi
@@ -6,10 +6,17 @@ description: |
6
6
  Rules help ensure that code changes follow team guidelines, documentation is updated,
7
7
  and architectural decisions are respected.
8
8
 
9
+ IMPORTANT: Rules are evaluated at the "Stop" hook, which fires when an agent finishes its turn.
10
+ This includes when sub-agents complete their work. Rules are NOT evaluated immediately after
11
+ each file edit - they batch up and run once at the end of the agent's response cycle.
12
+ - Command action rules: Execute their command (e.g., `uv sync`) when the agent stops
13
+ - Prompt action rules: Display instructions to the agent, blocking until addressed
14
+
9
15
  Rules are stored as individual markdown files with YAML frontmatter in the `.deepwork/rules/`
10
16
  directory. Each rule file specifies:
11
17
  - Detection mode: trigger/safety, set (bidirectional), or pair (directional)
12
18
  - Patterns: Glob patterns for matching files, with optional variable capture
19
+ - Action type: prompt (default) to show instructions, or command to run a shell command
13
20
  - Instructions: Markdown content describing what the agent should do
14
21
 
15
22
  Example use cases:
@@ -17,6 +24,7 @@ description: |
17
24
  - Require security review when authentication code is modified
18
25
  - Ensure API documentation stays in sync with API code
19
26
  - Enforce source/test file pairing
27
+ - Auto-run `uv sync` when pyproject.toml changes (command action)
20
28
 
21
29
  changelog:
22
30
  - version: "0.1.0"
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: SKILL.md Validation
3
3
  trigger: "**/SKILL.md"
4
+ compare_to: base
4
5
  ---
5
6
  A SKILL.md file has been created or modified. Please validate that it follows the required format:
6
7
 
@@ -2,6 +2,7 @@
2
2
  name: Architecture Documentation Accuracy
3
3
  trigger: src/**/*
4
4
  safety: doc/architecture.md
5
+ compare_to: base
5
6
  ---
6
7
  Source code in src/ has been modified. Please review doc/architecture.md for accuracy:
7
8
  1. Verify the documented architecture matches the current implementation
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: "Manual Test: Created Mode"
3
+ created: manual_tests/test_created_mode/*.yml
4
+ compare_to: prompt
5
+ ---
6
+
7
+ # Manual Test: Created Mode (File Creation Trigger)
8
+
9
+ A new test file was created in the created mode test directory!
10
+
11
+ **Created:** `{created_files}`
12
+
13
+ ## What to do:
14
+
15
+ 1. Verify the created mode detection is working correctly
16
+ 2. Acknowledge with `<promise>Manual Test: Created Mode</promise>`
17
+
18
+ ## This tests:
19
+
20
+ The "created" detection mode where rules only fire for newly created files,
21
+ not for modifications to existing files. This is useful for enforcing standards
22
+ on new code specifically.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: New Standard Job Warning
3
+ created: src/deepwork/standard_jobs/*/job.yml
4
+ compare_to: prompt
5
+ ---
6
+ A new standard job is being created. Standard jobs are bundled with DeepWork and will be installed in any project that uses DeepWork.
7
+
8
+ **Before proceeding, verify this is intentional:**
9
+
10
+ - **Standard jobs** (`src/deepwork/standard_jobs/`) - Ship with DeepWork, auto-installed in all projects that use DeepWork
11
+ - **Repository jobs** (`.deepwork/jobs/`) - Specific to a single repository
12
+ - **Library jobs** - Installed from external packages
13
+
14
+ Unless the user **explicitly requested** creating a new standard job (not just "a job" or "a new job"), this should likely be a **repository job** in `.deepwork/jobs/` instead.
15
+
16
+ If uncertain, ask the user: "Should this be a standard job (shipped with DeepWork) or a repository-specific job?"
@@ -2,6 +2,7 @@
2
2
  name: README Accuracy
3
3
  trigger: src/**/*
4
4
  safety: README.md
5
+ compare_to: base
5
6
  ---
6
7
  Source code in src/ has been modified. Please review README.md for accuracy:
7
8
  1. Verify project overview still reflects current functionality
@@ -6,6 +6,7 @@ trigger:
6
6
  safety:
7
7
  - src/deepwork/standard_jobs/deepwork_jobs/**/*
8
8
  - src/deepwork/standard_jobs/deepwork_rules/**/*
9
+ compare_to: base
9
10
  ---
10
11
  You modified files in `.deepwork/jobs/deepwork_jobs/` or `.deepwork/jobs/deepwork_rules/`.
11
12
 
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: UV Lock Sync
3
+ trigger: pyproject.toml
4
+ action:
5
+ command: uv sync
6
+ compare_to: prompt
7
+ ---
8
+
9
+ # UV Lock Sync
10
+
11
+ Automatically runs `uv sync` when `pyproject.toml` is modified to keep
12
+ `uv.lock` in sync with dependency changes.
13
+
14
+ This ensures the lock file is always up-to-date when dependencies are
15
+ added, removed, or updated in pyproject.toml.
@@ -4,6 +4,7 @@ trigger: src/**/*
4
4
  safety:
5
5
  - pyproject.toml
6
6
  - CHANGELOG.md
7
+ compare_to: base
7
8
  ---
8
9
  Source code in src/ has been modified. **You MUST evaluate whether version and changelog updates are needed.**
9
10
 
@@ -1,10 +1,10 @@
1
1
  # commit:commit_and_push
2
2
  #
3
- # Review changed files, commit, and push to remote
3
+ # Verify changed files, commit, and push to remote
4
4
  #
5
5
  # Generated by DeepWork - do not edit manually
6
6
 
7
- description = "Review changed files, commit, and push to remote"
7
+ description = "Verify changed files, commit, and push to remote"
8
8
 
9
9
  prompt = """
10
10
  # commit:commit_and_push
@@ -20,17 +20,17 @@ Before proceeding, confirm these steps are complete:
20
20
 
21
21
  ## Instructions
22
22
 
23
- **Goal**: Review changed files, commit, and push to remote
23
+ **Goal**: Verify changed files, commit, and push to remote
24
24
 
25
25
  # Commit and Push
26
26
 
27
27
  ## Objective
28
28
 
29
- Review the changed files with the user, create a commit with an appropriate message, and push to the remote repository.
29
+ Review the changed files to verify they match the agent's expectations, create a commit with an appropriate message, and push to the remote repository.
30
30
 
31
31
  ## Task
32
32
 
33
- Present the list of changed files for user review, ensure they match expectations, then commit and push the changes.
33
+ Check the list of changed files against what was modified during this session, ensure they match expectations, then commit and push the changes.
34
34
 
35
35
  ### Process
36
36
 
@@ -40,31 +40,26 @@ Present the list of changed files for user review, ensure they match expectation
40
40
  ```
41
41
  Also run `git diff --stat` to see a summary of changes.
42
42
 
43
- 2. **Present changes to the user for review**
43
+ 2. **Verify changes match expectations**
44
44
 
45
- Use the AskUserQuestion tool to ask structured questions about the changes:
45
+ Compare the changed files against what you modified during this session:
46
+ - Do the modified files match what you edited?
47
+ - Are there any unexpected new files?
48
+ - Are there any unexpected deleted files?
49
+ - Do the line counts seem reasonable for the changes you made?
46
50
 
47
- Show the user:
48
- - List of modified files
49
- - List of new files
50
- - List of deleted files
51
- - Summary of changes (lines added/removed)
51
+ If changes match expectations, proceed to commit.
52
52
 
53
- Ask them to confirm:
54
- - "Do these changed files match your expectations?"
55
- - Provide options: "Yes, proceed with commit" / "No, let me review first" / "No, some files shouldn't be included"
53
+ If there are unexpected changes:
54
+ - Investigate why (e.g., lint auto-fixes, generated files)
55
+ - If they're legitimate side effects of your work, include them
56
+ - If they're unrelated or shouldn't be committed, use `git restore` to discard them
56
57
 
57
- 3. **Handle user response**
58
-
59
- - If user confirms, proceed to commit
60
- - If user wants to review first, wait for them to come back
61
- - If user says some files shouldn't be included, ask which files to exclude and use `git restore` or `git checkout` to unstage them
62
-
63
- 4. **Stage all appropriate changes**
58
+ 3. **Stage all appropriate changes**
64
59
  ```bash
65
60
  git add -A
66
61
  ```
67
- Or stage specific files if user excluded some.
62
+ Or stage specific files if some were excluded.
68
63
 
69
64
  5. **View recent commit messages for style reference**
70
65
  ```bash
@@ -93,8 +88,8 @@ Present the list of changed files for user review, ensure they match expectation
93
88
 
94
89
  ## Quality Criteria
95
90
 
96
- - Changed files list was presented to user
97
- - User explicitly confirmed the files match expectations
91
+ - Changed files list was reviewed by the agent
92
+ - Files match what was modified during this session (or unexpected changes were investigated and handled)
98
93
  - Commit message follows project conventions
99
94
  - Commit was created successfully
100
95
  - Changes were pushed to remote
@@ -102,7 +97,7 @@ Present the list of changed files for user review, ensure they match expectation
102
97
 
103
98
  ## Context
104
99
 
105
- This is the final step of the commit workflow. It ensures the user has reviewed and approved the changes before they are committed and pushed. This prevents accidental commits of unintended files or changes.
100
+ This is the final step of the commit workflow. The agent verifies that the changed files match its own expectations from the work done during the session, then commits and pushes. This catches unexpected changes while avoiding unnecessary user interruptions.
106
101
 
107
102
 
108
103
  ### Job Context
@@ -31,7 +31,7 @@ Steps:
31
31
  Command: `/commit:test`
32
32
  2. **lint** - Format and lint code with ruff using a sub-agent (requires: test)
33
33
  Command: `/commit:lint`
34
- 3. **commit_and_push** - Review changed files, commit, and push to remote (requires: lint)
34
+ 3. **commit_and_push** - Verify changed files, commit, and push to remote (requires: lint)
35
35
  Command: `/commit:commit_and_push`
36
36
 
37
37
  ## Execution Instructions
@@ -275,10 +275,17 @@ Manages rules that automatically trigger when certain files change during an AI
275
275
  Rules help ensure that code changes follow team guidelines, documentation is updated,
276
276
  and architectural decisions are respected.
277
277
 
278
+ IMPORTANT: Rules are evaluated at the "Stop" hook, which fires when an agent finishes its turn.
279
+ This includes when sub-agents complete their work. Rules are NOT evaluated immediately after
280
+ each file edit - they batch up and run once at the end of the agent's response cycle.
281
+ - Command action rules: Execute their command (e.g., `uv sync`) when the agent stops
282
+ - Prompt action rules: Display instructions to the agent, blocking until addressed
283
+
278
284
  Rules are stored as individual markdown files with YAML frontmatter in the `.deepwork/rules/`
279
285
  directory. Each rule file specifies:
280
286
  - Detection mode: trigger/safety, set (bidirectional), or pair (directional)
281
287
  - Patterns: Glob patterns for matching files, with optional variable capture
288
+ - Action type: prompt (default) to show instructions, or command to run a shell command
282
289
  - Instructions: Markdown content describing what the agent should do
283
290
 
284
291
  Example use cases:
@@ -286,6 +293,7 @@ Example use cases:
286
293
  - Require security review when authentication code is modified
287
294
  - Ensure API documentation stays in sync with API code
288
295
  - Enforce source/test file pairing
296
+ - Auto-run `uv sync` when pyproject.toml changes (command action)
289
297
 
290
298
 
291
299
  ## Required Inputs
@@ -17,10 +17,17 @@ Manages rules that automatically trigger when certain files change during an AI
17
17
  Rules help ensure that code changes follow team guidelines, documentation is updated,
18
18
  and architectural decisions are respected.
19
19
 
20
+ IMPORTANT: Rules are evaluated at the "Stop" hook, which fires when an agent finishes its turn.
21
+ This includes when sub-agents complete their work. Rules are NOT evaluated immediately after
22
+ each file edit - they batch up and run once at the end of the agent's response cycle.
23
+ - Command action rules: Execute their command (e.g., `uv sync`) when the agent stops
24
+ - Prompt action rules: Display instructions to the agent, blocking until addressed
25
+
20
26
  Rules are stored as individual markdown files with YAML frontmatter in the `.deepwork/rules/`
21
27
  directory. Each rule file specifies:
22
28
  - Detection mode: trigger/safety, set (bidirectional), or pair (directional)
23
29
  - Patterns: Glob patterns for matching files, with optional variable capture
30
+ - Action type: prompt (default) to show instructions, or command to run a shell command
24
31
  - Instructions: Markdown content describing what the agent should do
25
32
 
26
33
  Example use cases:
@@ -28,6 +35,7 @@ Example use cases:
28
35
  - Require security review when authentication code is modified
29
36
  - Ensure API documentation stays in sync with API code
30
37
  - Enforce source/test file pairing
38
+ - Auto-run `uv sync` when pyproject.toml changes (command action)
31
39
 
32
40
 
33
41
  ## Available Steps
@@ -83,3 +83,8 @@ dmypy.json
83
83
  *.tmp
84
84
  .temp/
85
85
  tmp/
86
+
87
+ # DeepWork runtime artifacts
88
+ .deepwork/.last_work_tree
89
+ .deepwork/.last_head_ref
90
+ .deepwork/tmp/