Skip to content

Commit 32b82eb

Browse files
nhortongithub-actions[bot]claude
authored
Multi engine support (#7)
* multi-agent core * Fix job.yml path references in deepwork_jobs - Update define step to create job.yml in .deepwork/jobs/[job_name]/ instead of deepwork/[job_name]/ - Update implement step to verify job.yml location instead of copying from work directory - Update job.yml quality criteria to check correct path - Update README.md to use correct command names (deepwork_jobs.define, deepwork_jobs.refine) - Sync changes to all installed files and generated commands * more cleanup * style: auto-format code with ruff * ci: remove auto-format job, add format check to tests (#8) Remove the separate format job that auto-committed formatting fixes, which caused issues with GitHub Actions not re-running after the auto-merge. Instead, add format checks as a step in the tests job that will fail if code is not properly formatted. Co-authored-by: Claude <noreply@anthropic.com> --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent af1ec55 commit 32b82eb

28 files changed

Lines changed: 1146 additions & 808 deletions

.claude/commands/deepwork_jobs.define.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ hooks:
1717
4. **Concise Summary**: Is the summary under 200 characters and descriptive?
1818
5. **Rich Description**: Does the description provide enough context for future refinement?
1919
6. **Valid Schema**: Does the job.yml follow the required schema (name, version, summary, steps)?
20-
7. **File Created**: Has the job.yml file been created in `deepwork/[job_name]/job.yml`?
20+
7. **File Created**: Has the job.yml file been created in `.deepwork/jobs/[job_name]/job.yml`?
2121
2222
If ANY criterion is not met, continue working to address it.
2323
If ALL criteria are satisfied, include `<promise>QUALITY_COMPLETE</promise>` in your response.
@@ -192,9 +192,9 @@ stop_hooks:
192192

193193
Only after you have complete understanding, create the `job.yml` file:
194194

195-
**File Location**: `deepwork/[job_name]/job.yml`
195+
**File Location**: `.deepwork/jobs/[job_name]/job.yml`
196196

197-
(Where `[job_name]` is the name of the NEW job you're creating, e.g., `deepwork/competitive_research/job.yml`)
197+
(Where `[job_name]` is the name of the NEW job you're creating, e.g., `.deepwork/jobs/competitive_research/job.yml`)
198198

199199
**Format**:
200200
```yaml
@@ -357,12 +357,12 @@ User: Yes, that's perfect!
357357

358358
Claude: Great! Creating the job.yml specification now...
359359

360-
[Creates deepwork/competitive_research/job.yml with the complete spec]
360+
[Creates .deepwork/jobs/competitive_research/job.yml with the complete spec]
361361

362362
✓ Job specification created!
363363

364364
**File created:**
365-
- deepwork/competitive_research/job.yml
365+
- .deepwork/jobs/competitive_research/job.yml
366366

367367
**Next step:**
368368
Run `/deepwork_jobs.implement` to generate the instruction files for each step based on this specification.
@@ -396,9 +396,9 @@ Before creating the job.yml, ensure:
396396
397397
### job.yml
398398
399-
The complete YAML specification file (example shown in Step 4 above).
399+
The complete YAML specification file (example shown in Step 5 above).
400400
401-
**Location**: `deepwork/[job_name]/job.yml`
401+
**Location**: `.deepwork/jobs/[job_name]/job.yml`
402402
403403
(Where `[job_name]` is the name of the new job being created)
404404
@@ -466,7 +466,7 @@ Verify the job.yml output meets ALL quality criteria before completing:
466466
4. **Concise Summary**: Is the summary under 200 characters and descriptive?
467467
5. **Rich Description**: Does the description provide enough context for future refinement?
468468
6. **Valid Schema**: Does the job.yml follow the required schema (name, version, summary, steps)?
469-
7. **File Created**: Has the job.yml file been created in `deepwork/[job_name]/job.yml`?
469+
7. **File Created**: Has the job.yml file been created in `.deepwork/jobs/[job_name]/job.yml`?
470470

471471
If ANY criterion is not met, continue working to address it.
472472
If ALL criteria are satisfied, include `<promise>QUALITY_COMPLETE</promise>` in your response.

.claude/commands/deepwork_jobs.implement.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Read the `job.yml` specification file and create all the necessary files to make
8080
### Step 1: Read and Validate the Specification
8181

8282
1. **Locate the job.yml file**
83-
- Read `deepwork/[job_name]/job.yml` from the define step (Where `[job_name]` is the name of the new job that was created in the define step)
83+
- Read `.deepwork/jobs/[job_name]/job.yml` from the define step (Where `[job_name]` is the name of the new job that was created in the define step)
8484
- Parse the YAML content
8585

8686
2. **Validate the specification**
@@ -213,13 +213,9 @@ If a step in the job.yml has `stop_hooks` defined, the generated instruction fil
213213
214214
This alignment ensures the AI agent knows exactly what will be validated and can self-check before completing.
215215
216-
### Step 4: Copy job.yml to Job Directory
216+
### Step 4: Verify job.yml Location
217217
218-
Copy the validated `job.yml` from the work directory to `.deepwork/jobs/[job_name]/job.yml`:
219-
220-
```bash
221-
cp deepwork/[job_name]/job.yml .deepwork/jobs/[job_name]/job.yml
222-
```
218+
Verify that `job.yml` is in the correct location at `.deepwork/jobs/[job_name]/job.yml`. The define step should have created it there. If for some reason it's not there, you may need to create or move it.
223219

224220
### Step 5: Sync Commands
225221

.deepwork/jobs/deepwork_jobs/job.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ steps:
4343
4. **Concise Summary**: Is the summary under 200 characters and descriptive?
4444
5. **Rich Description**: Does the description provide enough context for future refinement?
4545
6. **Valid Schema**: Does the job.yml follow the required schema (name, version, summary, steps)?
46-
7. **File Created**: Has the job.yml file been created in `deepwork/[job_name]/job.yml`?
46+
7. **File Created**: Has the job.yml file been created in `.deepwork/jobs/[job_name]/job.yml`?
4747
4848
If ANY criterion is not met, continue working to address it.
4949
If ALL criteria are satisfied, include `<promise>QUALITY_COMPLETE</promise>` in your response.

.deepwork/jobs/deepwork_jobs/steps/define.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,9 @@ stop_hooks:
133133

134134
Only after you have complete understanding, create the `job.yml` file:
135135

136-
**File Location**: `deepwork/[job_name]/job.yml`
136+
**File Location**: `.deepwork/jobs/[job_name]/job.yml`
137137

138-
(Where `[job_name]` is the name of the NEW job you're creating, e.g., `deepwork/competitive_research/job.yml`)
138+
(Where `[job_name]` is the name of the NEW job you're creating, e.g., `.deepwork/jobs/competitive_research/job.yml`)
139139

140140
**Format**:
141141
```yaml
@@ -298,12 +298,12 @@ User: Yes, that's perfect!
298298

299299
Claude: Great! Creating the job.yml specification now...
300300

301-
[Creates deepwork/competitive_research/job.yml with the complete spec]
301+
[Creates .deepwork/jobs/competitive_research/job.yml with the complete spec]
302302

303303
✓ Job specification created!
304304

305305
**File created:**
306-
- deepwork/competitive_research/job.yml
306+
- .deepwork/jobs/competitive_research/job.yml
307307

308308
**Next step:**
309309
Run `/deepwork_jobs.implement` to generate the instruction files for each step based on this specification.
@@ -337,9 +337,9 @@ Before creating the job.yml, ensure:
337337
338338
### job.yml
339339
340-
The complete YAML specification file (example shown in Step 4 above).
340+
The complete YAML specification file (example shown in Step 5 above).
341341
342-
**Location**: `deepwork/[job_name]/job.yml`
342+
**Location**: `.deepwork/jobs/[job_name]/job.yml`
343343
344344
(Where `[job_name]` is the name of the new job being created)
345345

.deepwork/jobs/deepwork_jobs/steps/implement.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Read the `job.yml` specification file and create all the necessary files to make
1111
### Step 1: Read and Validate the Specification
1212

1313
1. **Locate the job.yml file**
14-
- Read `deepwork/[job_name]/job.yml` from the define step (Where `[job_name]` is the name of the new job that was created in the define step)
14+
- Read `.deepwork/jobs/[job_name]/job.yml` from the define step (Where `[job_name]` is the name of the new job that was created in the define step)
1515
- Parse the YAML content
1616

1717
2. **Validate the specification**
@@ -144,13 +144,9 @@ If a step in the job.yml has `stop_hooks` defined, the generated instruction fil
144144
145145
This alignment ensures the AI agent knows exactly what will be validated and can self-check before completing.
146146
147-
### Step 4: Copy job.yml to Job Directory
147+
### Step 4: Verify job.yml Location
148148
149-
Copy the validated `job.yml` from the work directory to `.deepwork/jobs/[job_name]/job.yml`:
150-
151-
```bash
152-
cp deepwork/[job_name]/job.yml .deepwork/jobs/[job_name]/job.yml
153-
```
149+
Verify that `job.yml` is in the correct location at `.deepwork/jobs/[job_name]/job.yml`. The define step should have created it there. If for some reason it's not there, you may need to create or move it.
154150

155151
### Step 5: Sync Commands
156152

.github/workflows/validate.yml

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,12 @@ on:
44
pull_request:
55
branches: ["*"]
66

7-
permissions:
8-
contents: write
9-
107
jobs:
11-
format:
8+
tests:
129
runs-on: ubuntu-latest
1310

1411
steps:
1512
- uses: actions/checkout@v4
16-
with:
17-
ref: ${{ github.head_ref }}
18-
token: ${{ secrets.GITHUB_TOKEN }}
1913

2014
- name: Install uv
2115
uses: astral-sh/setup-uv@v4
@@ -30,56 +24,10 @@ jobs:
3024
- name: Install dependencies
3125
run: uv sync --extra dev
3226

33-
- name: Run ruff formatting
34-
run: uv run ruff format src/ tests/
35-
36-
- name: Run ruff linting with auto-fix
37-
run: uv run ruff check --fix src/ tests/
38-
39-
- name: Re-run formatting after auto-fix
40-
run: uv run ruff format src/ tests/
41-
42-
- name: Verify all issues are fixed
27+
- name: Check formatting (ruff)
4328
run: |
44-
uv run ruff check src/ tests/
4529
uv run ruff format --check src/ tests/
46-
47-
- name: Check for changes
48-
id: check_changes
49-
run: |
50-
if [[ -n "$(git status --porcelain)" ]]; then
51-
echo "has_changes=true" >> $GITHUB_OUTPUT
52-
else
53-
echo "has_changes=false" >> $GITHUB_OUTPUT
54-
fi
55-
56-
- name: Commit and push formatting changes
57-
if: steps.check_changes.outputs.has_changes == 'true'
58-
run: |
59-
git config --local user.email "github-actions[bot]@users.noreply.github.com"
60-
git config --local user.name "github-actions[bot]"
61-
git add -A
62-
git commit -m "style: auto-format code with ruff"
63-
git push
64-
65-
tests:
66-
runs-on: ubuntu-latest
67-
68-
steps:
69-
- uses: actions/checkout@v4
70-
71-
- name: Install uv
72-
uses: astral-sh/setup-uv@v4
73-
with:
74-
version: "latest"
75-
76-
- name: Set up Python
77-
uses: actions/setup-python@v5
78-
with:
79-
python-version: "3.11"
80-
81-
- name: Install dependencies
82-
run: uv sync --extra dev
30+
uv run ruff check src/ tests/
8331
8432
- name: Run tests
8533
run: uv run pytest tests/ -v

README.md

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,6 @@
44
55
DeepWork is a tool for defining and executing multi-step workflows with AI coding assistants like Claude Code, Google Gemini, and GitHub Copilot. It enables you to decompose complex tasks into manageable steps, with clear inputs, outputs, and dependencies.
66

7-
## Status: Phase 1 MVP Complete ✅
8-
9-
**Version**: 0.1.0
10-
**Test Coverage**: 166 tests passing
11-
12-
### What's Implemented
13-
14-
- ✅ Job definition parsing and validation
15-
- ✅ Job registry for tracking installed workflows
16-
- ✅ Multi-platform support (Claude Code, Gemini, Copilot)
17-
- ✅ Jinja2-based skill file generation
18-
- ✅ Git integration for work branch management
19-
- ✅ CLI with `install` command
20-
- ✅ Core skills: `deepwork.define` and `deepwork.refine`
21-
227
## Installation
238

249
### Prerequisites
@@ -46,27 +31,35 @@ deepwork install --platform claude # or gemini, copilot
4631

4732
This will:
4833
- Create `.deepwork/` directory structure
49-
- Initialize job registry
50-
- Generate core DeepWork skills
34+
- Generate core DeepWork jobs
35+
- Install DeepWork jobs for your AI assistant
36+
- Configure hooks for your AI assistant to enable policies
5137

5238
## Quick Start
5339

54-
### 1. Define a Workflow
5540

56-
Use Claude Code (or your AI assistant) to define a new job:
41+
42+
### 1. Define a Job
43+
Jobs are multi-step workflows where each Step has clear input and output artifacts, making them easier to manage effectively.
44+
45+
The process of defining a job itself is actually a DeepWork job. You can see it at `.deepwork/jobs/deepwork_jobs/`.
46+
47+
To start the process, just run the first Step in the job:
5748

5849
```
59-
/deepwork.define
50+
/deepwork_jobs.define
6051
```
6152

6253
Follow the interactive prompts to:
63-
- Name your workflow
54+
- Name your job
6455
- Define steps with inputs/outputs
6556
- Specify dependencies between steps
6657

58+
It will also prompt you to go on the the next Step in the job.
59+
6760
### 2. Execute Steps
6861

69-
Run individual steps of your workflow:
62+
Run individual steps of your job:
7063

7164
```
7265
/your_job_name.step_1
@@ -83,7 +76,7 @@ The AI will:
8376
Use the refine skill to update existing jobs:
8477

8578
```
86-
/deepwork.refine
79+
/deepwork_jobs.refine
8780
```
8881

8982
## Example: Competitive Research Workflow
@@ -215,9 +208,6 @@ ruff format src/
215208
## Documentation
216209

217210
- **[Architecture](doc/architecture.md)**: Complete design specification
218-
- **[Template Review](doc/TEMPLATE_REVIEW.md)**: Skill template documentation
219-
- **[Status](STATUS.md)**: Implementation progress
220-
- **[Next Steps](NEXT_STEPS.md)**: Future development roadmap
221211

222212
## Project Structure
223213

@@ -227,7 +217,6 @@ deepwork/
227217
│ ├── cli/ # Command-line interface
228218
│ ├── core/ # Core functionality
229219
│ │ ├── parser.py # Job definition parsing
230-
│ │ ├── registry.py # Job registry management
231220
│ │ ├── detector.py # Platform detection
232221
│ │ └── generator.py # Skill file generation
233222
│ ├── templates/ # Jinja2 templates

claude.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ my-project/
155155
## Key Files to Reference
156156

157157
- `doc/architecture.md` - Comprehensive architecture documentation
158-
- `readme.md` - High-level project overview
158+
- `README.md` - High-level project overview
159159
- `shell.nix` - Development environment setup
160160

161161
## Development Guidelines
@@ -206,9 +206,3 @@ If a job exists in `src/deepwork/standard_jobs/`, it is a standard job and MUST
206206
3. **Performance**: Job import completes in <10 seconds
207207
4. **Extensibility**: New AI platforms can be added in <2 days
208208
5. **Quality**: 90%+ test coverage, zero critical bugs
209-
210-
## Questions or Issues?
211-
212-
- See `doc/architecture.md` for detailed design documentation
213-
- Check `readme.md` for high-level concepts
214-
- Reference implementation phases for current work focus

0 commit comments

Comments
 (0)