deepwork 0.7.0a1__py3-none-any.whl → 0.7.0a2__py3-none-any.whl
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/__init__.py +1 -1
- deepwork/mcp/tools.py +10 -3
- deepwork/schemas/job.schema.json +1 -2
- deepwork/standard_jobs/deepwork_jobs/job.yml +3 -13
- deepwork/standard_jobs/deepwork_jobs/make_new_job.sh +15 -16
- deepwork/standard_jobs/deepwork_jobs/steps/define.md +0 -70
- deepwork/standard_jobs/deepwork_jobs/steps/errata.md +17 -1
- deepwork/standard_jobs/deepwork_jobs/steps/learn.md +0 -68
- {deepwork-0.7.0a1.dist-info → deepwork-0.7.0a2.dist-info}/METADATA +1 -1
- {deepwork-0.7.0a1.dist-info → deepwork-0.7.0a2.dist-info}/RECORD +13 -15
- deepwork/standard_jobs/deepwork_jobs/doc_specs/job_spec.md +0 -184
- deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.template +0 -26
- {deepwork-0.7.0a1.dist-info → deepwork-0.7.0a2.dist-info}/WHEEL +0 -0
- {deepwork-0.7.0a1.dist-info → deepwork-0.7.0a2.dist-info}/entry_points.txt +0 -0
- {deepwork-0.7.0a1.dist-info → deepwork-0.7.0a2.dist-info}/licenses/LICENSE.md +0 -0
deepwork/__init__.py
CHANGED
deepwork/mcp/tools.py
CHANGED
|
@@ -132,6 +132,9 @@ class WorkflowTools:
|
|
|
132
132
|
def _get_workflow(self, job: JobDefinition, workflow_name: str) -> Workflow:
|
|
133
133
|
"""Get a specific workflow from a job.
|
|
134
134
|
|
|
135
|
+
If the workflow name doesn't match any workflow but the job has exactly
|
|
136
|
+
one workflow, that workflow is returned automatically.
|
|
137
|
+
|
|
135
138
|
Args:
|
|
136
139
|
job: Job definition
|
|
137
140
|
workflow_name: Workflow name to find
|
|
@@ -140,12 +143,16 @@ class WorkflowTools:
|
|
|
140
143
|
Workflow
|
|
141
144
|
|
|
142
145
|
Raises:
|
|
143
|
-
ToolError: If workflow not found
|
|
146
|
+
ToolError: If workflow not found and job has multiple workflows
|
|
144
147
|
"""
|
|
145
148
|
for wf in job.workflows:
|
|
146
149
|
if wf.name == workflow_name:
|
|
147
150
|
return wf
|
|
148
151
|
|
|
152
|
+
# Auto-select if there's only one workflow
|
|
153
|
+
if len(job.workflows) == 1:
|
|
154
|
+
return job.workflows[0]
|
|
155
|
+
|
|
149
156
|
available = [wf.name for wf in job.workflows]
|
|
150
157
|
raise ToolError(
|
|
151
158
|
f"Workflow '{workflow_name}' not found in job '{job.name}'. "
|
|
@@ -214,10 +221,10 @@ class WorkflowTools:
|
|
|
214
221
|
if first_step is None:
|
|
215
222
|
raise ToolError(f"First step not found: {first_step_id}")
|
|
216
223
|
|
|
217
|
-
# Create session
|
|
224
|
+
# Create session (use resolved workflow name in case it was auto-selected)
|
|
218
225
|
session = await self.state_manager.create_session(
|
|
219
226
|
job_name=input_data.job_name,
|
|
220
|
-
workflow_name=
|
|
227
|
+
workflow_name=workflow.name,
|
|
221
228
|
goal=input_data.goal,
|
|
222
229
|
first_step_id=first_step_id,
|
|
223
230
|
instance_id=input_data.instance_id,
|
deepwork/schemas/job.schema.json
CHANGED
|
@@ -150,8 +150,7 @@
|
|
|
150
150
|
},
|
|
151
151
|
"outputs": {
|
|
152
152
|
"type": "array",
|
|
153
|
-
"
|
|
154
|
-
"description": "List of output files/directories produced by this step",
|
|
153
|
+
"description": "List of output files/directories produced by this step. May be empty for cleanup or validation steps.",
|
|
155
154
|
"items": {
|
|
156
155
|
"$ref": "#/$defs/stepOutput"
|
|
157
156
|
}
|
|
@@ -58,12 +58,6 @@ changelog:
|
|
|
58
58
|
changes: "Removed implementation_summary and learning_summary outputs; simplified step outputs"
|
|
59
59
|
- version: "0.5.0"
|
|
60
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
61
|
- version: "0.9.0"
|
|
68
62
|
changes: "Improved skill descriptions with third-person voice and 'Use when...' triggers for better discoverability"
|
|
69
63
|
|
|
@@ -76,8 +70,7 @@ steps:
|
|
|
76
70
|
- name: job_purpose
|
|
77
71
|
description: "What complex task or workflow are you trying to accomplish?"
|
|
78
72
|
outputs:
|
|
79
|
-
-
|
|
80
|
-
doc_spec: .deepwork/doc_specs/job_spec.md
|
|
73
|
+
- job.yml
|
|
81
74
|
dependencies: []
|
|
82
75
|
- id: implement
|
|
83
76
|
name: "Implement Job Steps"
|
|
@@ -158,8 +151,6 @@ steps:
|
|
|
158
151
|
- "**Instructions Improved**: Were job instructions updated to address identified issues?"
|
|
159
152
|
- "**Instructions Concise**: Are instructions free of redundancy and unnecessary verbosity?"
|
|
160
153
|
- "**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
154
|
- "**Bespoke Learnings Captured**: Were run-specific learnings added to AGENTS.md?"
|
|
164
155
|
- "**File References Used**: Do AGENTS.md entries reference other files where appropriate?"
|
|
165
156
|
- "**Working Folder Correct**: Is AGENTS.md in the correct working folder for the job?"
|
|
@@ -206,11 +197,10 @@ steps:
|
|
|
206
197
|
name: "Clean Up Errata"
|
|
207
198
|
description: "Removes obsolete files and folders from prior DeepWork versions, including old skill directories, temp files, and deprecated configurations."
|
|
208
199
|
instructions_file: steps/errata.md
|
|
200
|
+
outputs: []
|
|
209
201
|
inputs:
|
|
210
202
|
- file: .deepwork/jobs/
|
|
211
203
|
from_step: fix_jobs
|
|
212
|
-
outputs:
|
|
213
|
-
- repair_summary.md
|
|
214
204
|
dependencies:
|
|
215
205
|
- fix_settings
|
|
216
206
|
- fix_jobs
|
|
@@ -221,5 +211,5 @@ steps:
|
|
|
221
211
|
- "**Rules Folder Removed**: Is `.deepwork/rules/` folder backed up and removed (fully deprecated)?"
|
|
222
212
|
- "**Rules Job Removed**: Is `.deepwork/jobs/deepwork_rules/` removed if present?"
|
|
223
213
|
- "**Config Version Updated**: Is `.deepwork/config.yml` using current version format?"
|
|
224
|
-
- "**
|
|
214
|
+
- "**DeepWork Re-installed**: Was `deepwork install` run after cleanup, and does it complete without errors?"
|
|
225
215
|
- "**Git Status Clean**: Are changes ready to be committed (no untracked garbage files)?"
|
|
@@ -78,43 +78,47 @@ main() {
|
|
|
78
78
|
mkdir -p "$job_path/steps"
|
|
79
79
|
mkdir -p "$job_path/hooks"
|
|
80
80
|
mkdir -p "$job_path/templates"
|
|
81
|
+
mkdir -p "$job_path/scripts"
|
|
81
82
|
|
|
82
83
|
# Add .gitkeep files to empty directories
|
|
83
84
|
touch "$job_path/hooks/.gitkeep"
|
|
84
85
|
touch "$job_path/templates/.gitkeep"
|
|
86
|
+
touch "$job_path/scripts/.gitkeep"
|
|
85
87
|
|
|
86
88
|
# Create AGENTS.md file
|
|
87
89
|
cat > "$job_path/AGENTS.md" << 'EOF'
|
|
88
90
|
# Job Management
|
|
89
91
|
|
|
90
|
-
This folder and its subfolders are managed using
|
|
92
|
+
This folder and its subfolders are managed using `deepwork_jobs` workflows.
|
|
91
93
|
|
|
92
|
-
## Recommended
|
|
94
|
+
## Recommended Workflows
|
|
93
95
|
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
96
|
+
- `deepwork_jobs/new_job` - Full lifecycle: define → implement → test → iterate
|
|
97
|
+
- `deepwork_jobs/learn` - Improve instructions based on execution learnings
|
|
98
|
+
- `deepwork_jobs/repair` - Clean up and migrate from prior DeepWork versions
|
|
97
99
|
|
|
98
100
|
## Directory Structure
|
|
99
101
|
|
|
100
102
|
```
|
|
101
103
|
.
|
|
102
104
|
├── AGENTS.md # This file - project context and guidance
|
|
103
|
-
├── job.yml # Job specification (created by
|
|
104
|
-
├── steps/ # Step instruction files (created by
|
|
105
|
+
├── job.yml # Job specification (created by define step)
|
|
106
|
+
├── steps/ # Step instruction files (created by implement step)
|
|
105
107
|
│ └── *.md # One file per step
|
|
106
108
|
├── hooks/ # Custom validation scripts and prompts
|
|
107
109
|
│ └── *.md|*.sh # Hook files referenced in job.yml
|
|
110
|
+
├── scripts/ # Reusable scripts and utilities created during job execution
|
|
111
|
+
│ └── *.sh|*.py # Helper scripts referenced in step instructions
|
|
108
112
|
└── templates/ # Example file formats and templates
|
|
109
113
|
└── *.md|*.yml # Templates referenced in step instructions
|
|
110
114
|
```
|
|
111
115
|
|
|
112
116
|
## Editing Guidelines
|
|
113
117
|
|
|
114
|
-
1. **Use
|
|
118
|
+
1. **Use workflows** for structural changes (adding steps, modifying job.yml)
|
|
115
119
|
2. **Direct edits** are fine for minor instruction tweaks
|
|
116
|
-
3. **Run
|
|
117
|
-
4. **Run `deepwork
|
|
120
|
+
3. **Run `deepwork_jobs/learn`** after executing job steps to capture improvements
|
|
121
|
+
4. **Run `deepwork install`** after any changes to regenerate commands
|
|
118
122
|
EOF
|
|
119
123
|
|
|
120
124
|
info "Created directory structure:"
|
|
@@ -122,13 +126,8 @@ EOF
|
|
|
122
126
|
echo " ├── AGENTS.md"
|
|
123
127
|
echo " ├── steps/"
|
|
124
128
|
echo " ├── hooks/.gitkeep"
|
|
129
|
+
echo " ├── scripts/.gitkeep"
|
|
125
130
|
echo " └── templates/.gitkeep"
|
|
126
|
-
|
|
127
|
-
echo ""
|
|
128
|
-
info "Next steps:"
|
|
129
|
-
echo " 1. Run '/deepwork_jobs.define' to create the job.yml specification"
|
|
130
|
-
echo " 2. Run '/deepwork_jobs.implement' to generate step instructions"
|
|
131
|
-
echo " 3. Run 'deepwork sync' to create slash commands"
|
|
132
131
|
}
|
|
133
132
|
|
|
134
133
|
main "$@"
|
|
@@ -31,60 +31,6 @@ Start by asking structured questions to understand what the user wants to accomp
|
|
|
31
31
|
- What are the distinct stages from start to finish?
|
|
32
32
|
- Are there any dependencies between phases?
|
|
33
33
|
|
|
34
|
-
### Step 1.5: Detect Document-Oriented Workflows
|
|
35
|
-
|
|
36
|
-
**Check for document-focused patterns** in the user's description:
|
|
37
|
-
- Keywords: "report", "summary", "document", "create", "monthly", "quarterly", "for stakeholders", "for leadership"
|
|
38
|
-
- Final deliverable is a specific document (e.g., "AWS spending report", "competitive analysis", "sprint summary")
|
|
39
|
-
- Recurring documents with consistent structure
|
|
40
|
-
|
|
41
|
-
**If a document-oriented workflow is detected:**
|
|
42
|
-
|
|
43
|
-
1. Inform the user: "This workflow produces a specific document type. I recommend defining a doc spec first to ensure consistent quality."
|
|
44
|
-
|
|
45
|
-
2. Ask structured questions to understand if they want to:
|
|
46
|
-
- Create a doc spec for this document
|
|
47
|
-
- Use an existing doc spec (if any exist in `.deepwork/doc_specs/`)
|
|
48
|
-
- Skip doc spec and proceed with simple outputs
|
|
49
|
-
|
|
50
|
-
### Step 1.6: Define the Doc Spec (if needed)
|
|
51
|
-
|
|
52
|
-
When creating a doc spec, gather the following information:
|
|
53
|
-
|
|
54
|
-
1. **Document Identity**
|
|
55
|
-
- What is the document called? (e.g., "Monthly AWS Spending Report")
|
|
56
|
-
- Brief description of its purpose
|
|
57
|
-
- Where should these documents be stored? (path patterns like `finance/aws-reports/*.md`)
|
|
58
|
-
|
|
59
|
-
2. **Audience and Context**
|
|
60
|
-
- Who reads this document? (target audience)
|
|
61
|
-
- How often is it produced? (frequency)
|
|
62
|
-
|
|
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
|
-
|
|
67
|
-
Examples for a spending report:
|
|
68
|
-
- **Visualization**: Must include charts showing spend breakdown by service
|
|
69
|
-
- **Variance Analysis**: Must compare current month against previous with percentages
|
|
70
|
-
- **Action Items**: Must include recommended cost optimization actions
|
|
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
|
-
|
|
74
|
-
4. **Document Structure**
|
|
75
|
-
- What sections should it have?
|
|
76
|
-
- Any required elements (tables, charts, summaries)?
|
|
77
|
-
|
|
78
|
-
### Step 1.7: Create the doc spec File (if needed)
|
|
79
|
-
|
|
80
|
-
Create the doc spec file at `.deepwork/doc_specs/[doc_spec_name].md`:
|
|
81
|
-
|
|
82
|
-
**Template reference**: See `.deepwork/jobs/deepwork_jobs/templates/doc_spec.md.template` for the standard structure.
|
|
83
|
-
|
|
84
|
-
**Complete example**: See `.deepwork/doc_specs/job_spec.md` for a fully worked example (the doc spec for job.yml files).
|
|
85
|
-
|
|
86
|
-
After creating the doc spec, proceed to Step 2 with the doc spec reference for the final step's output.
|
|
87
|
-
|
|
88
34
|
### Step 2: Define Each Step
|
|
89
35
|
|
|
90
36
|
For each major phase they mentioned, ask structured questions to gather details:
|
|
@@ -106,8 +52,6 @@ For each major phase they mentioned, ask structured questions to gather details:
|
|
|
106
52
|
- Where should each output be saved? (filename/path)
|
|
107
53
|
- Should outputs be organized in subdirectories? (e.g., `reports/`, `data/`, `drafts/`)
|
|
108
54
|
- Will other steps need this output?
|
|
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
|
|
110
|
-
|
|
111
55
|
#### Work Product Storage Guidelines
|
|
112
56
|
|
|
113
57
|
**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.
|
|
@@ -189,18 +133,6 @@ For each major phase they mentioned, ask structured questions to gather details:
|
|
|
189
133
|
|
|
190
134
|
**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.
|
|
191
135
|
|
|
192
|
-
#### Doc Spec-Aware Output Format
|
|
193
|
-
|
|
194
|
-
When a step produces a document with a doc spec reference, use this format in job.yml:
|
|
195
|
-
|
|
196
|
-
```yaml
|
|
197
|
-
outputs:
|
|
198
|
-
- file: reports/monthly_spending.md
|
|
199
|
-
doc_spec: .deepwork/doc_specs/monthly_aws_report.md
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
The doc spec's quality criteria will automatically be included in the generated skill, ensuring consistent document quality.
|
|
203
|
-
|
|
204
136
|
### Capability Considerations
|
|
205
137
|
|
|
206
138
|
When defining steps, identify any that require specialized tools:
|
|
@@ -299,8 +231,6 @@ This creates:
|
|
|
299
231
|
|
|
300
232
|
(Where `[job_name]` is the name of the NEW job you're creating, e.g., `competitive_research`)
|
|
301
233
|
|
|
302
|
-
**Doc Spec**: See `.deepwork/doc_specs/job_spec.md` for the complete specification with quality criteria.
|
|
303
|
-
|
|
304
234
|
**Template reference**: See `.deepwork/jobs/deepwork_jobs/templates/job.yml.template` for the standard structure.
|
|
305
235
|
|
|
306
236
|
**Complete example**: See `.deepwork/jobs/deepwork_jobs/templates/job.yml.example` for a fully worked example.
|
|
@@ -134,7 +134,23 @@ Check for and remove other obsolete files:
|
|
|
134
134
|
| `.claude/commands/` | Generated commands | Keep (current system) |
|
|
135
135
|
| `.claude/settings.local.json` | Local overrides | Keep (user settings) |
|
|
136
136
|
|
|
137
|
-
### Step 6:
|
|
137
|
+
### Step 6: Re-install DeepWork
|
|
138
|
+
|
|
139
|
+
After all cleanup is complete, re-run `deepwork install` to ensure configurations are current and consistent:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
deepwork install
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Then verify:**
|
|
146
|
+
1. Check that `.deepwork/config.yml` is valid and up to date
|
|
147
|
+
2. Check that `.claude/skills/deepwork/` exists and contains the expected skill entry point
|
|
148
|
+
3. Check that all jobs in `.deepwork/jobs/` have valid `job.yml` files
|
|
149
|
+
4. Run `deepwork install` a second time and confirm the output is clean (no errors or warnings)
|
|
150
|
+
|
|
151
|
+
If any issues are found, fix them before proceeding. The goal is a clean, working DeepWork installation with no residual problems from the repair process.
|
|
152
|
+
|
|
153
|
+
### Step 7: Verify Git Status
|
|
138
154
|
|
|
139
155
|
Check that the cleanup hasn't left untracked garbage:
|
|
140
156
|
|
|
@@ -66,15 +66,6 @@ For each learning identified, determine if it is:
|
|
|
66
66
|
- "Quality criteria should include checking for Y"
|
|
67
67
|
- "Add example of correct output format"
|
|
68
68
|
|
|
69
|
-
**doc spec-Related** (should improve doc spec files):
|
|
70
|
-
- Improvements to document quality criteria
|
|
71
|
-
- Changes to document structure or format
|
|
72
|
-
- Updated audience or frequency information
|
|
73
|
-
- Examples:
|
|
74
|
-
- "The report should include a summary table"
|
|
75
|
-
- "Quality criterion 'Visualization' needs clearer requirements"
|
|
76
|
-
- "Documents need a section for action items"
|
|
77
|
-
|
|
78
69
|
**Bespoke** (should go in AGENTS.md):
|
|
79
70
|
- Specific to THIS project/codebase/run
|
|
80
71
|
- Depends on local conventions or structure
|
|
@@ -85,30 +76,6 @@ For each learning identified, determine if it is:
|
|
|
85
76
|
- "This project uses camelCase for function names"
|
|
86
77
|
- "The main config file is at `config/settings.yml`"
|
|
87
78
|
|
|
88
|
-
### Step 3.5: Identify doc spec-Related Learnings
|
|
89
|
-
|
|
90
|
-
Review the conversation for doc spec-related improvements:
|
|
91
|
-
|
|
92
|
-
1. **Quality Criteria Changes**
|
|
93
|
-
- Were any quality criteria unclear or insufficient?
|
|
94
|
-
- Did the agent repeatedly fail certain criteria?
|
|
95
|
-
- Are there new criteria that should be added?
|
|
96
|
-
|
|
97
|
-
2. **Document Structure Changes**
|
|
98
|
-
- Did the user request different sections?
|
|
99
|
-
- Were parts of the document format confusing?
|
|
100
|
-
- Should the example document be updated?
|
|
101
|
-
|
|
102
|
-
3. **Metadata Updates**
|
|
103
|
-
- Has the target audience changed?
|
|
104
|
-
- Should frequency or path patterns be updated?
|
|
105
|
-
|
|
106
|
-
**Signals for doc spec improvements:**
|
|
107
|
-
- User asked for changes to document format
|
|
108
|
-
- Repeated validation failures on specific criteria
|
|
109
|
-
- Feedback about missing sections or information
|
|
110
|
-
- Changes to how documents are organized/stored
|
|
111
|
-
|
|
112
79
|
### Step 4: Update Job Instructions (Generalizable Learnings)
|
|
113
80
|
|
|
114
81
|
For each generalizable learning:
|
|
@@ -162,41 +129,6 @@ Review all instruction files for the job and identify content that:
|
|
|
162
129
|
- Shorter instruction files - easier to read and maintain
|
|
163
130
|
- Consistent guidance across steps
|
|
164
131
|
|
|
165
|
-
### Step 4.5: Update doc spec Files (doc spec-Related Learnings)
|
|
166
|
-
|
|
167
|
-
If doc spec-related learnings were identified:
|
|
168
|
-
|
|
169
|
-
1. **Locate the doc spec file**
|
|
170
|
-
- Find doc spec references in job.yml outputs (look for `doc_spec: .deepwork/doc_specs/[doc_spec_name].md`)
|
|
171
|
-
- doc spec files are at `.deepwork/doc_specs/[doc_spec_name].md`
|
|
172
|
-
|
|
173
|
-
2. **Update quality_criteria array**
|
|
174
|
-
- Add new criteria with name and description
|
|
175
|
-
- Modify existing criteria descriptions for clarity
|
|
176
|
-
- Remove criteria that are no longer relevant
|
|
177
|
-
|
|
178
|
-
3. **Update example document**
|
|
179
|
-
- Modify the markdown body to reflect structure changes
|
|
180
|
-
- Ensure the example matches updated criteria
|
|
181
|
-
|
|
182
|
-
4. **Update metadata as needed**
|
|
183
|
-
- target_audience: If audience has changed
|
|
184
|
-
- frequency: If production cadence has changed
|
|
185
|
-
- path_patterns: If storage location has changed
|
|
186
|
-
|
|
187
|
-
**Example doc spec update:**
|
|
188
|
-
```yaml
|
|
189
|
-
# Before
|
|
190
|
-
quality_criteria:
|
|
191
|
-
- name: Visualization
|
|
192
|
-
description: Include charts
|
|
193
|
-
|
|
194
|
-
# After
|
|
195
|
-
quality_criteria:
|
|
196
|
-
- name: Visualization
|
|
197
|
-
description: Include Mermaid.js charts showing spend breakdown by service and month-over-month trend
|
|
198
|
-
```
|
|
199
|
-
|
|
200
132
|
### Step 5: Create/Update AGENTS.md (Bespoke Learnings)
|
|
201
133
|
|
|
202
134
|
The AGENTS.md file captures project-specific knowledge that helps future agent runs.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepwork
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.0a2
|
|
4
4
|
Summary: Framework for enabling AI agents to perform complex, multi-step work tasks
|
|
5
5
|
Project-URL: Homepage, https://github.com/deepwork/deepwork
|
|
6
6
|
Project-URL: Documentation, https://github.com/deepwork/deepwork#readme
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
deepwork/__init__.py,sha256=
|
|
1
|
+
deepwork/__init__.py,sha256=AV8GZ4MCtUnIUSTGlzmnJPnw1nI5qgHiv80uyRX2YJ4,750
|
|
2
2
|
deepwork/cli/__init__.py,sha256=3SqmfcP2xqutiCYAbajFDJTjr2pOLydqTN0NN-FTsIE,33
|
|
3
3
|
deepwork/cli/hook.py,sha256=ATZJLV-J_GAHyly24lVIMvpsEY1o_-njbFrqrYg1NoM,2059
|
|
4
4
|
deepwork/cli/install.py,sha256=yrtT5k8x2CgUtdvNwjPJcSbaqKblC9cF1kGspYJXjTQ,13846
|
|
@@ -23,26 +23,24 @@ deepwork/mcp/quality_gate.py,sha256=sURtwC3CaoWEZXHK_d68B__WEnyaPKIEZgPM9Hg3VQc,
|
|
|
23
23
|
deepwork/mcp/schemas.py,sha256=IusmeXK8TMLbiuxbIaYBMQy4zBvGveDWqOi-TJpftIY,10124
|
|
24
24
|
deepwork/mcp/server.py,sha256=iXw35DW9dUhXhleY0LV2yP3wbNS_aRY1uIZu9SNrSB8,9228
|
|
25
25
|
deepwork/mcp/state.py,sha256=DcUt6j6zczfMTihkwDamFkHjouROCHiX31lSYZSaD0M,13721
|
|
26
|
-
deepwork/mcp/tools.py,sha256
|
|
26
|
+
deepwork/mcp/tools.py,sha256=BOdne_pLL0ymnUIhcGma-M-zP1vNuJcdMHATmoyqgTo,13795
|
|
27
27
|
deepwork/schemas/__init__.py,sha256=PpydKb_oaTv8lYapN_nV-Tl_OUCoSM_okvsEJ8gNTpI,41
|
|
28
28
|
deepwork/schemas/doc_spec_schema.py,sha256=qByBtd86vQaLNsLfMr4iwVdpmyowvVLzYOnXY7RnqLY,2049
|
|
29
|
-
deepwork/schemas/job.schema.json,sha256=
|
|
29
|
+
deepwork/schemas/job.schema.json,sha256=FcBuiIO3vd50oTEdohWqC_Qq8nenrJA5NH_91WPpwog,11117
|
|
30
30
|
deepwork/schemas/job_schema.py,sha256=FT9Xn3Em85YEc2aTu71TGzdmunNhIztRymSG5N4vuhs,925
|
|
31
31
|
deepwork/standard_jobs/deepwork_jobs/AGENTS.md,sha256=Y6I4jZ8DfN0RFY3UF5bgQRZvL7wQD9P0lgE7EZM6CGI,2252
|
|
32
|
-
deepwork/standard_jobs/deepwork_jobs/job.yml,sha256=
|
|
33
|
-
deepwork/standard_jobs/deepwork_jobs/make_new_job.sh,sha256=
|
|
34
|
-
deepwork/standard_jobs/deepwork_jobs/
|
|
35
|
-
deepwork/standard_jobs/deepwork_jobs/steps/
|
|
36
|
-
deepwork/standard_jobs/deepwork_jobs/steps/errata.md,sha256=1SjLCLc8xHlxGzFXZHn9Ch2tDTxZOyKKQ-B7RI651jw,4807
|
|
32
|
+
deepwork/standard_jobs/deepwork_jobs/job.yml,sha256=Ul7lQU6AKbfTbnO5JfXGhRmO4NfJjQbVdyOlxo-Isds,11463
|
|
33
|
+
deepwork/standard_jobs/deepwork_jobs/make_new_job.sh,sha256=zKgoqvGagPD5tTHka9gNcaeZxeOAa-ln96NuSvCPvzw,3881
|
|
34
|
+
deepwork/standard_jobs/deepwork_jobs/steps/define.md,sha256=1UesrrPiRfPNJSqQeyfPRlAg4HS294EdoINsYG-xZTc,16523
|
|
35
|
+
deepwork/standard_jobs/deepwork_jobs/steps/errata.md,sha256=3ZA2bTGGXwkcXqmB_HoFyjwvW4vf_ve-QEcM5Pllad8,5475
|
|
37
36
|
deepwork/standard_jobs/deepwork_jobs/steps/fix_jobs.md,sha256=OHFX1ZuBjo_gWyFfC_HICay6J6eNZrm2IxzGT3IPxec,6074
|
|
38
37
|
deepwork/standard_jobs/deepwork_jobs/steps/fix_settings.md,sha256=SJqeO_wuxcr7IzwFSlf3CmZ5ILivbvQK8YyYUc-FD4E,5361
|
|
39
38
|
deepwork/standard_jobs/deepwork_jobs/steps/implement.md,sha256=6RVnS5sJpyrtGFhti5c2Dfzy6obvGJHWPHe3Hrc9SbM,5731
|
|
40
39
|
deepwork/standard_jobs/deepwork_jobs/steps/iterate.md,sha256=JQkP-RMlbsnLpA3YH_yULUgHTOQx2ilSqI2gRsjPBhc,8405
|
|
41
|
-
deepwork/standard_jobs/deepwork_jobs/steps/learn.md,sha256=
|
|
40
|
+
deepwork/standard_jobs/deepwork_jobs/steps/learn.md,sha256=1gF9t4QcyWxLWk9OzX4S6vDOu6CCOXDOI3kxCs3r1AE,9325
|
|
42
41
|
deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md,sha256=uKDEwB3TxMLK-Zim3QQfkvaW5W6AVWHjWnH25aY6wCw,1478
|
|
43
42
|
deepwork/standard_jobs/deepwork_jobs/steps/test.md,sha256=MNoVqo9CC-lnvWvllkOtIRopHvYMSR8yJrMZa02x1i0,6816
|
|
44
43
|
deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template,sha256=SUJL862C6-DnT9lK3sNIZ5T2wVgXN4YRph4FrKtFnLo,739
|
|
45
|
-
deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.template,sha256=OXpkFTsEm4CVkJQmx7f6rUZ9My5rHeY_ncaygARjEpA,764
|
|
46
44
|
deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example,sha256=roRi6sIGFGmPCkoVW26HfuTBjAO8-pPsxI5-Gfg3rc0,2361
|
|
47
45
|
deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template,sha256=rlanRupKN73XUR48nF93Mm4pdL35Wa4IeZSKQs7QEWo,1912
|
|
48
46
|
deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example,sha256=HXcjVaQz2HsDiA4ClnIeLvysVOGrFJ_5Tr-pm6dhdwc,2706
|
|
@@ -57,8 +55,8 @@ deepwork/utils/fs.py,sha256=TbkcGGqck4lborFerbBLrpVMDUz3E5ZaW6X0_B2t76k,4821
|
|
|
57
55
|
deepwork/utils/git.py,sha256=J4tAB1zE6-WMAEHbarevhmSvvPLkeKBpiRv1UxUVwYk,3748
|
|
58
56
|
deepwork/utils/validation.py,sha256=SyFg9fIu1JCDMbssQgJRCTUNToDNcINccn8lje-tjts,851
|
|
59
57
|
deepwork/utils/yaml_utils.py,sha256=INHhOmzC38fh7HYKLrq7vmS3dcuNsigH7_U71erS-hw,3127
|
|
60
|
-
deepwork-0.7.
|
|
61
|
-
deepwork-0.7.
|
|
62
|
-
deepwork-0.7.
|
|
63
|
-
deepwork-0.7.
|
|
64
|
-
deepwork-0.7.
|
|
58
|
+
deepwork-0.7.0a2.dist-info/METADATA,sha256=24BEzKTwedhl5kQSEnle1BWoBXssLFtYoc7yQpjYOCM,12370
|
|
59
|
+
deepwork-0.7.0a2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
60
|
+
deepwork-0.7.0a2.dist-info/entry_points.txt,sha256=RhJBySzm619kh-yIdsAyfFXInAlY8Jm-39FLIBcOj2s,51
|
|
61
|
+
deepwork-0.7.0a2.dist-info/licenses/LICENSE.md,sha256=W0EtJVYf0cQ_awukOCW1ETwNSpV2RKqnAGfoOjyz_K8,4126
|
|
62
|
+
deepwork-0.7.0a2.dist-info/RECORD,,
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "DeepWork Job Specification"
|
|
3
|
-
description: "YAML specification file that defines a multi-step workflow job for AI agents"
|
|
4
|
-
path_patterns:
|
|
5
|
-
- ".deepwork/jobs/*/job.yml"
|
|
6
|
-
target_audience: "AI agents executing jobs and developers defining workflows"
|
|
7
|
-
frequency: "Created once per job, updated as workflow evolves"
|
|
8
|
-
quality_criteria:
|
|
9
|
-
- name: Valid Identifier
|
|
10
|
-
description: "Job name must be lowercase with underscores, no spaces or special characters (e.g., `competitive_research`, `monthly_report`)"
|
|
11
|
-
- name: Semantic Version
|
|
12
|
-
description: "Version must follow semantic versioning format X.Y.Z (e.g., `1.0.0`, `2.1.3`)"
|
|
13
|
-
- name: Concise Summary
|
|
14
|
-
description: "Summary must be under 200 characters and clearly describe what the job accomplishes"
|
|
15
|
-
- name: Rich Description
|
|
16
|
-
description: "Description must be multi-line and explain: the problem solved, the process, expected outcomes, and target users"
|
|
17
|
-
- name: Changelog Present
|
|
18
|
-
description: "Must include a changelog array with at least the initial version entry. Changelog should only include one entry per branch at most"
|
|
19
|
-
- name: Complete Steps
|
|
20
|
-
description: "Each step must have: id (lowercase_underscores), name, description, instructions_file, outputs (at least one), and dependencies array"
|
|
21
|
-
- name: Valid Dependencies
|
|
22
|
-
description: "Dependencies must reference existing step IDs with no circular references"
|
|
23
|
-
- name: Input Consistency
|
|
24
|
-
description: "File inputs with `from_step` must reference a step that is in the dependencies array"
|
|
25
|
-
- name: Output Paths
|
|
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
|
-
- name: Concise Instructions
|
|
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
|
-
---
|
|
30
|
-
|
|
31
|
-
# DeepWork Job Specification: [job_name]
|
|
32
|
-
|
|
33
|
-
A `job.yml` file defines a complete multi-step workflow that AI agents can execute. Each job breaks down a complex task into reviewable steps with clear inputs and outputs.
|
|
34
|
-
|
|
35
|
-
## Required Fields
|
|
36
|
-
|
|
37
|
-
### Top-Level Metadata
|
|
38
|
-
|
|
39
|
-
```yaml
|
|
40
|
-
name: job_name # lowercase, underscores only
|
|
41
|
-
version: "1.0.0" # semantic versioning
|
|
42
|
-
summary: "Brief description" # max 200 characters
|
|
43
|
-
description: | # detailed multi-line explanation
|
|
44
|
-
[Explain what this workflow does, why it exists,
|
|
45
|
-
what outputs it produces, and who should use it]
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Changelog
|
|
49
|
-
|
|
50
|
-
```yaml
|
|
51
|
-
changelog:
|
|
52
|
-
- version: "1.0.0"
|
|
53
|
-
changes: "Initial job creation"
|
|
54
|
-
- version: "1.1.0"
|
|
55
|
-
changes: "Added quality validation hooks"
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Steps Array
|
|
59
|
-
|
|
60
|
-
```yaml
|
|
61
|
-
steps:
|
|
62
|
-
- id: step_id # unique, lowercase_underscores
|
|
63
|
-
name: "Human Readable Name"
|
|
64
|
-
description: "What this step accomplishes"
|
|
65
|
-
instructions_file: steps/step_id.md
|
|
66
|
-
inputs:
|
|
67
|
-
# User-provided inputs:
|
|
68
|
-
- name: param_name
|
|
69
|
-
description: "What the user provides"
|
|
70
|
-
# File inputs from previous steps:
|
|
71
|
-
- file: output.md
|
|
72
|
-
from_step: previous_step_id
|
|
73
|
-
outputs:
|
|
74
|
-
- competitive_research/competitors_list.md # descriptive path
|
|
75
|
-
- competitive_research/[competitor_name]/research.md # parameterized path
|
|
76
|
-
# With doc spec reference:
|
|
77
|
-
- file: competitive_research/final_report.md
|
|
78
|
-
doc_spec: .deepwork/doc_specs/report_type.md
|
|
79
|
-
dependencies:
|
|
80
|
-
- previous_step_id # steps that must complete first
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Optional Fields
|
|
84
|
-
|
|
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.
|
|
88
|
-
|
|
89
|
-
```yaml
|
|
90
|
-
steps:
|
|
91
|
-
- id: research_step
|
|
92
|
-
agent: general-purpose # Delegates to the general-purpose agent
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Available agent types:
|
|
96
|
-
- `general-purpose` - Standard agent for multi-step tasks
|
|
97
|
-
|
|
98
|
-
### Quality Hooks
|
|
99
|
-
|
|
100
|
-
```yaml
|
|
101
|
-
steps:
|
|
102
|
-
- id: step_id
|
|
103
|
-
hooks:
|
|
104
|
-
after_agent:
|
|
105
|
-
# Inline prompt for quality validation:
|
|
106
|
-
- prompt: |
|
|
107
|
-
Verify the output meets criteria:
|
|
108
|
-
1. [Criterion 1]
|
|
109
|
-
2. [Criterion 2]
|
|
110
|
-
If ALL criteria are met, include `<promise>...</promise>`.
|
|
111
|
-
# External prompt file:
|
|
112
|
-
- prompt_file: hooks/quality_check.md
|
|
113
|
-
# Script for programmatic validation:
|
|
114
|
-
- script: hooks/run_tests.sh
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## Validation Rules
|
|
118
|
-
|
|
119
|
-
1. **No circular dependencies**: Step A cannot depend on Step B if Step B depends on Step A
|
|
120
|
-
2. **File inputs require dependencies**: If a step uses `from_step: X`, then X must be in its dependencies
|
|
121
|
-
3. **Unique step IDs**: No two steps can have the same id
|
|
122
|
-
4. **Valid file paths**: Output paths must not contain invalid characters and should be in the main repo (not dot-directories)
|
|
123
|
-
5. **Instructions files exist**: Each `instructions_file` path should have a corresponding file created
|
|
124
|
-
|
|
125
|
-
## Example: Complete Job Specification
|
|
126
|
-
|
|
127
|
-
```yaml
|
|
128
|
-
name: competitive_research
|
|
129
|
-
version: "1.0.0"
|
|
130
|
-
summary: "Systematic competitive analysis workflow"
|
|
131
|
-
description: |
|
|
132
|
-
A comprehensive workflow for analyzing competitors in your market segment.
|
|
133
|
-
Helps product teams understand the competitive landscape through systematic
|
|
134
|
-
identification, research, comparison, and positioning recommendations.
|
|
135
|
-
|
|
136
|
-
Produces:
|
|
137
|
-
- Vetted competitor list
|
|
138
|
-
- Research notes per competitor
|
|
139
|
-
- Comparison matrix
|
|
140
|
-
- Strategic positioning report
|
|
141
|
-
|
|
142
|
-
changelog:
|
|
143
|
-
- version: "1.0.0"
|
|
144
|
-
changes: "Initial job creation"
|
|
145
|
-
|
|
146
|
-
steps:
|
|
147
|
-
- id: identify_competitors
|
|
148
|
-
name: "Identify Competitors"
|
|
149
|
-
description: "Identify 5-7 key competitors in the target market"
|
|
150
|
-
instructions_file: steps/identify_competitors.md
|
|
151
|
-
inputs:
|
|
152
|
-
- name: market_segment
|
|
153
|
-
description: "The market segment to analyze"
|
|
154
|
-
- name: product_category
|
|
155
|
-
description: "The product category"
|
|
156
|
-
outputs:
|
|
157
|
-
- competitive_research/competitors_list.md
|
|
158
|
-
dependencies: []
|
|
159
|
-
|
|
160
|
-
- id: research_competitors
|
|
161
|
-
name: "Research Competitors"
|
|
162
|
-
description: "Deep dive research on each identified competitor"
|
|
163
|
-
instructions_file: steps/research_competitors.md
|
|
164
|
-
inputs:
|
|
165
|
-
- file: competitive_research/competitors_list.md
|
|
166
|
-
from_step: identify_competitors
|
|
167
|
-
outputs:
|
|
168
|
-
- competitive_research/[competitor_name]/research.md
|
|
169
|
-
dependencies:
|
|
170
|
-
- identify_competitors
|
|
171
|
-
|
|
172
|
-
- id: positioning_report
|
|
173
|
-
name: "Positioning Report"
|
|
174
|
-
description: "Strategic positioning recommendations"
|
|
175
|
-
instructions_file: steps/positioning_report.md
|
|
176
|
-
inputs:
|
|
177
|
-
- file: competitive_research/[competitor_name]/research.md
|
|
178
|
-
from_step: research_competitors
|
|
179
|
-
outputs:
|
|
180
|
-
- file: competitive_research/positioning_report.md
|
|
181
|
-
doc_spec: .deepwork/doc_specs/positioning_report.md
|
|
182
|
-
dependencies:
|
|
183
|
-
- research_competitors
|
|
184
|
-
```
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "[Document Name]"
|
|
3
|
-
description: "[Brief description of the document's purpose]"
|
|
4
|
-
path_patterns:
|
|
5
|
-
- "[path/to/documents/*.md]"
|
|
6
|
-
target_audience: "[Who reads this document]"
|
|
7
|
-
frequency: "[How often produced, e.g., Monthly, Per sprint, On demand]"
|
|
8
|
-
quality_criteria:
|
|
9
|
-
- name: "[Criterion Name]"
|
|
10
|
-
description: "[What this criterion requires - be specific]"
|
|
11
|
-
- name: "[Criterion Name]"
|
|
12
|
-
description: "[What this criterion requires - be specific]"
|
|
13
|
-
- name: "[Criterion Name]"
|
|
14
|
-
description: "[What this criterion requires - be specific]"
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# [Document Title]: [Variables like Month, Year, Sprint]
|
|
18
|
-
|
|
19
|
-
## Section 1
|
|
20
|
-
[Describe what goes in this section]
|
|
21
|
-
|
|
22
|
-
## Section 2
|
|
23
|
-
[Describe what goes in this section]
|
|
24
|
-
|
|
25
|
-
## Section 3
|
|
26
|
-
[Describe what goes in this section]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|