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.
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/commit/SKILL.md +1 -1
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/commit.commit_and_push/SKILL.md +22 -27
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_rules/SKILL.md +8 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_rules.define/SKILL.md +8 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/commit/job.yml +6 -4
- deepwork-0.3.1/.deepwork/jobs/commit/steps/commit_and_push.md +76 -0
- deepwork-0.3.1/.deepwork/jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +38 -0
- {deepwork-0.3.0/src/deepwork/standard_jobs → deepwork-0.3.1/.deepwork/jobs}/deepwork_rules/job.yml +8 -0
- {deepwork-0.3.0/src/deepwork/standard_jobs → deepwork-0.3.1/.deepwork/jobs}/deepwork_rules/rules/skill-md-validation.md +1 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/architecture-documentation-accuracy.md +1 -0
- deepwork-0.3.1/.deepwork/rules/manual-test-created-mode.md +22 -0
- deepwork-0.3.1/.deepwork/rules/new-standard-job-warning.md +16 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/readme-accuracy.md +1 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/standard-jobs-source-of-truth.md +1 -0
- deepwork-0.3.1/.deepwork/rules/uv-lock-sync.md +15 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/version-and-changelog-update.md +1 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/commit/commit_and_push.toml +21 -26
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/commit/index.toml +1 -1
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_rules/define.toml +8 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_rules/index.toml +8 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gitignore +5 -0
- deepwork-0.3.1/AGENTS.md +86 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/CHANGELOG.md +13 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/PKG-INFO +3 -1
- {deepwork-0.3.0 → deepwork-0.3.1}/README.md +2 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/claude.md +20 -10
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/architecture.md +6 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/rules_syntax.md +124 -4
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/rules_system_design.md +22 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/README.md +4 -0
- deepwork-0.3.1/manual_tests/test_created_mode/existing_file.yml +1 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/pyproject.toml +1 -1
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/cli/install.py +19 -15
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/rules_parser.py +58 -10
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/rules_check.py +198 -12
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/schemas/rules_schema.py +38 -6
- deepwork-0.3.1/src/deepwork/standard_jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +30 -0
- {deepwork-0.3.0/.deepwork/jobs → deepwork-0.3.1/src/deepwork/standard_jobs}/deepwork_rules/job.yml +8 -0
- {deepwork-0.3.0/.deepwork/jobs → deepwork-0.3.1/src/deepwork/standard_jobs}/deepwork_rules/rules/skill-md-validation.md +1 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/integration/test_install_flow.py +23 -5
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_rules_parser.py +262 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_schema_validation.py +37 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/uv.lock +1 -1
- deepwork-0.3.0/.deepwork/jobs/commit/steps/commit_and_push.md +0 -81
- deepwork-0.3.0/.deepwork/jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +0 -27
- deepwork-0.3.0/src/deepwork/standard_jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +0 -27
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/settings.json +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform.add_capabilities/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform.implement/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform.research/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/add_platform.verify/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/commit.lint/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/commit.test/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_jobs/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_jobs.define/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_jobs.implement/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/deepwork_jobs.learn/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/update/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.claude/skills/update.job/SKILL.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/.gitignore +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/config.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/steps/add_capabilities.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/steps/implement.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/steps/research.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/add_platform/steps/verify.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/commit/steps/lint.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/commit/steps/test.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/AGENTS.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/make_new_job.sh +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/steps/define.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/steps/implement.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/steps/learn.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/agents.md.template +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/job.yml.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/job.yml.template +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/hooks/global_hooks.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/hooks/user_prompt_submit.sh +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/.gitkeep +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/api-documentation-sync.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/readme-documentation.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/security-review.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/rules/source-test-pairing.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/deepwork_rules/steps/define.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/update/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/jobs/update/steps/job.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-command-action.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-infinite-block-command.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-infinite-block-prompt.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-multi-safety.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-pair-mode.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-set-mode.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/manual-test-trigger-safety.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.deepwork/rules/skill-template-best-practices.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/add_capabilities.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/implement.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/index.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/research.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/add_platform/verify.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/commit/lint.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/commit/test.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_jobs/define.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_jobs/implement.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_jobs/index.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/deepwork_jobs/learn.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/update/index.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.gemini/skills/update/job.toml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/README.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/cla.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/claude-code-test.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/release.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/.github/workflows/validate.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/CLA/version_1/CLA.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/CLA/version_1/CLA_SIGNATORIES.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/CONTRIBUTING.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/LICENSE.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/README.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/claude/cli_configuration.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/claude/hooks.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/claude/hooks_system.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/claude/learnings.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/gemini/cli_configuration.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/gemini/hooks.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/gemini/hooks_system.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/doc/platforms/gemini/learnings.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/job_library/README.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_command_action/test_command_action.txt +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_command_action/test_command_action_log.txt +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_infinite_block_command/test_infinite_block_command.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_infinite_block_prompt/test_infinite_block_prompt.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_multi_safety/test_multi_safety.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_multi_safety/test_multi_safety_changelog.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_multi_safety/test_multi_safety_version.txt +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_pair_mode/test_pair_mode_expected.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_pair_mode/test_pair_mode_trigger.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_set_mode/test_set_mode_source.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_set_mode/test_set_mode_test.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_trigger_safety_mode/test_trigger_safety_mode.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/manual_tests/test_trigger_safety_mode/test_trigger_safety_mode_doc.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/shell.nix +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/cli/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/cli/main.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/cli/sync.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/adapters.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/command_executor.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/detector.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/generator.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/hooks_syncer.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/parser.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/pattern_matcher.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/core/rules_queue.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/README.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/claude_hook.sh +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/gemini_hook.sh +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/hooks/wrapper.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/schemas/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/schemas/job_schema.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/AGENTS.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/make_new_job.sh +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/steps/define.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/steps/implement.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/steps/learn.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.template +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/hooks/global_hooks.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/hooks/user_prompt_submit.sh +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/.gitkeep +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/api-documentation-sync.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/readme-documentation.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/security-review.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/rules/source-test-pairing.md.example +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/standard_jobs/deepwork_rules/steps/define.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/claude/skill-job-meta.md.jinja +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/claude/skill-job-step.md.jinja +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/gemini/skill-job-meta.toml.jinja +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/templates/gemini/skill-job-step.toml.jinja +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/fs.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/git.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/validation.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/src/deepwork/utils/yaml_utils.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/conftest.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/e2e/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/e2e/test_claude_code_integration.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/steps/comparative_report.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/steps/identify_competitors.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/steps/primary_research.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/complex_job/steps/secondary_research.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/exposed_step_job/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/exposed_step_job/steps/exposed_step.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/exposed_step_job/steps/hidden_step.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/fruits/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/fruits/steps/classify.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/fruits/steps/identify.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/invalid_job/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/simple_job/job.yml +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/fixtures/jobs/simple_job/steps/single_step.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/integration/test_fruits_workflow.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/integration/test_full_workflow.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/README.md +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/__init__.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/conftest.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_capture_prompt_work_tree.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_hooks.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_make_new_job.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_rules_stop_hook.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/shell_script_tests/test_user_prompt_submit.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_adapters.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_command_executor.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_detector.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_fs.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_generator.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_git.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_hook_wrapper.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_hooks_syncer.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_parser.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_pattern_matcher.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_rules_check.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_rules_queue.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_stop_hooks.py +0 -0
- {deepwork-0.3.0 → deepwork-0.3.1}/tests/unit/test_validation.py +0 -0
- {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** -
|
|
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: "
|
|
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
|
|
12
|
-
2.
|
|
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**:
|
|
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
|
|
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
|
-
|
|
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. **
|
|
52
|
+
2. **Verify changes match expectations**
|
|
53
53
|
|
|
54
|
-
|
|
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
|
-
|
|
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
|
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
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. **
|
|
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
|
|
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
|
|
106
|
-
-
|
|
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.
|
|
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.
|
|
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: "
|
|
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
|
|
70
|
-
2.
|
|
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
|
{deepwork-0.3.0/src/deepwork/standard_jobs → deepwork-0.3.1/.deepwork/jobs}/deepwork_rules/job.yml
RENAMED
|
@@ -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"
|
|
@@ -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?"
|
|
@@ -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.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# commit:commit_and_push
|
|
2
2
|
#
|
|
3
|
-
#
|
|
3
|
+
# Verify changed files, commit, and push to remote
|
|
4
4
|
#
|
|
5
5
|
# Generated by DeepWork - do not edit manually
|
|
6
6
|
|
|
7
|
-
description = "
|
|
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**:
|
|
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
|
|
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
|
-
|
|
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. **
|
|
43
|
+
2. **Verify changes match expectations**
|
|
44
44
|
|
|
45
|
-
|
|
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
|
-
|
|
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
|
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
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. **
|
|
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
|
|
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
|
|
97
|
-
-
|
|
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.
|
|
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** -
|
|
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
|