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