Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .claude/commands/deepwork_jobs.define.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ hooks:
4. **Concise Summary**: Is the summary under 200 characters and descriptive?
5. **Rich Description**: Does the description provide enough context for future refinement?
6. **Valid Schema**: Does the job.yml follow the required schema (name, version, summary, steps)?
7. **File Created**: Has the job.yml file been created in `deepwork/[job_name]/job.yml`?
7. **File Created**: Has the job.yml file been created in `.deepwork/jobs/[job_name]/job.yml`?

If ANY criterion is not met, continue working to address it.
If ALL criteria are satisfied, include `<promise>QUALITY_COMPLETE</promise>` in your response.
Expand Down Expand Up @@ -192,9 +192,9 @@ stop_hooks:

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

**File Location**: `deepwork/[job_name]/job.yml`
**File Location**: `.deepwork/jobs/[job_name]/job.yml`

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

**Format**:
```yaml
Expand Down Expand Up @@ -357,12 +357,12 @@ User: Yes, that's perfect!

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

[Creates deepwork/competitive_research/job.yml with the complete spec]
[Creates .deepwork/jobs/competitive_research/job.yml with the complete spec]

✓ Job specification created!

**File created:**
- deepwork/competitive_research/job.yml
- .deepwork/jobs/competitive_research/job.yml

**Next step:**
Run `/deepwork_jobs.implement` to generate the instruction files for each step based on this specification.
Expand Down Expand Up @@ -396,9 +396,9 @@ Before creating the job.yml, ensure:

### job.yml

The complete YAML specification file (example shown in Step 4 above).
The complete YAML specification file (example shown in Step 5 above).

**Location**: `deepwork/[job_name]/job.yml`
**Location**: `.deepwork/jobs/[job_name]/job.yml`

(Where `[job_name]` is the name of the new job being created)

Expand Down Expand Up @@ -466,7 +466,7 @@ Verify the job.yml output meets ALL quality criteria before completing:
4. **Concise Summary**: Is the summary under 200 characters and descriptive?
5. **Rich Description**: Does the description provide enough context for future refinement?
6. **Valid Schema**: Does the job.yml follow the required schema (name, version, summary, steps)?
7. **File Created**: Has the job.yml file been created in `deepwork/[job_name]/job.yml`?
7. **File Created**: Has the job.yml file been created in `.deepwork/jobs/[job_name]/job.yml`?

If ANY criterion is not met, continue working to address it.
If ALL criteria are satisfied, include `<promise>QUALITY_COMPLETE</promise>` in your response.
Expand Down
10 changes: 3 additions & 7 deletions .claude/commands/deepwork_jobs.implement.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Read the `job.yml` specification file and create all the necessary files to make
### Step 1: Read and Validate the Specification

1. **Locate the job.yml file**
- 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)
- 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)
- Parse the YAML content

2. **Validate the specification**
Expand Down Expand Up @@ -213,13 +213,9 @@ If a step in the job.yml has `stop_hooks` defined, the generated instruction fil

This alignment ensures the AI agent knows exactly what will be validated and can self-check before completing.

### Step 4: Copy job.yml to Job Directory
### Step 4: Verify job.yml Location

Copy the validated `job.yml` from the work directory to `.deepwork/jobs/[job_name]/job.yml`:

```bash
cp deepwork/[job_name]/job.yml .deepwork/jobs/[job_name]/job.yml
```
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.

### Step 5: Sync Commands

Expand Down
2 changes: 1 addition & 1 deletion .deepwork/jobs/deepwork_jobs/job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ steps:
4. **Concise Summary**: Is the summary under 200 characters and descriptive?
5. **Rich Description**: Does the description provide enough context for future refinement?
6. **Valid Schema**: Does the job.yml follow the required schema (name, version, summary, steps)?
7. **File Created**: Has the job.yml file been created in `deepwork/[job_name]/job.yml`?
7. **File Created**: Has the job.yml file been created in `.deepwork/jobs/[job_name]/job.yml`?

If ANY criterion is not met, continue working to address it.
If ALL criteria are satisfied, include `<promise>QUALITY_COMPLETE</promise>` in your response.
Expand Down
12 changes: 6 additions & 6 deletions .deepwork/jobs/deepwork_jobs/steps/define.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,9 @@ stop_hooks:

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

**File Location**: `deepwork/[job_name]/job.yml`
**File Location**: `.deepwork/jobs/[job_name]/job.yml`

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

**Format**:
```yaml
Expand Down Expand Up @@ -298,12 +298,12 @@ User: Yes, that's perfect!

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

[Creates deepwork/competitive_research/job.yml with the complete spec]
[Creates .deepwork/jobs/competitive_research/job.yml with the complete spec]

✓ Job specification created!

**File created:**
- deepwork/competitive_research/job.yml
- .deepwork/jobs/competitive_research/job.yml

**Next step:**
Run `/deepwork_jobs.implement` to generate the instruction files for each step based on this specification.
Expand Down Expand Up @@ -337,9 +337,9 @@ Before creating the job.yml, ensure:

### job.yml

The complete YAML specification file (example shown in Step 4 above).
The complete YAML specification file (example shown in Step 5 above).

**Location**: `deepwork/[job_name]/job.yml`
**Location**: `.deepwork/jobs/[job_name]/job.yml`

(Where `[job_name]` is the name of the new job being created)

Expand Down
10 changes: 3 additions & 7 deletions .deepwork/jobs/deepwork_jobs/steps/implement.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Read the `job.yml` specification file and create all the necessary files to make
### Step 1: Read and Validate the Specification

1. **Locate the job.yml file**
- 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)
- 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)
- Parse the YAML content

2. **Validate the specification**
Expand Down Expand Up @@ -144,13 +144,9 @@ If a step in the job.yml has `stop_hooks` defined, the generated instruction fil

This alignment ensures the AI agent knows exactly what will be validated and can self-check before completing.

### Step 4: Copy job.yml to Job Directory
### Step 4: Verify job.yml Location

Copy the validated `job.yml` from the work directory to `.deepwork/jobs/[job_name]/job.yml`:

```bash
cp deepwork/[job_name]/job.yml .deepwork/jobs/[job_name]/job.yml
```
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.

### Step 5: Sync Commands

Expand Down
58 changes: 3 additions & 55 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,12 @@ on:
pull_request:
branches: ["*"]

permissions:
contents: write

jobs:
format:
tests:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
token: ${{ secrets.GITHUB_TOKEN }}

- name: Install uv
uses: astral-sh/setup-uv@v4
Expand All @@ -30,56 +24,10 @@ jobs:
- name: Install dependencies
run: uv sync --extra dev

- name: Run ruff formatting
run: uv run ruff format src/ tests/

- name: Run ruff linting with auto-fix
run: uv run ruff check --fix src/ tests/

- name: Re-run formatting after auto-fix
run: uv run ruff format src/ tests/

- name: Verify all issues are fixed
- name: Check formatting (ruff)
run: |
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/

- name: Check for changes
id: check_changes
run: |
if [[ -n "$(git status --porcelain)" ]]; then
echo "has_changes=true" >> $GITHUB_OUTPUT
else
echo "has_changes=false" >> $GITHUB_OUTPUT
fi

- name: Commit and push formatting changes
if: steps.check_changes.outputs.has_changes == 'true'
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add -A
git commit -m "style: auto-format code with ruff"
git push

tests:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v4
with:
version: "latest"

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install dependencies
run: uv sync --extra dev
uv run ruff check src/ tests/

- name: Run tests
run: uv run pytest tests/ -v
43 changes: 16 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,6 @@

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.

## Status: Phase 1 MVP Complete ✅

**Version**: 0.1.0
**Test Coverage**: 166 tests passing

### What's Implemented

- ✅ Job definition parsing and validation
- ✅ Job registry for tracking installed workflows
- ✅ Multi-platform support (Claude Code, Gemini, Copilot)
- ✅ Jinja2-based skill file generation
- ✅ Git integration for work branch management
- ✅ CLI with `install` command
- ✅ Core skills: `deepwork.define` and `deepwork.refine`

## Installation

### Prerequisites
Expand Down Expand Up @@ -46,27 +31,35 @@ deepwork install --platform claude # or gemini, copilot

This will:
- Create `.deepwork/` directory structure
- Initialize job registry
- Generate core DeepWork skills
- Generate core DeepWork jobs
- Install DeepWork jobs for your AI assistant
- Configure hooks for your AI assistant to enable policies

## Quick Start

### 1. Define a Workflow

Use Claude Code (or your AI assistant) to define a new job:

### 1. Define a Job
Jobs are multi-step workflows where each Step has clear input and output artifacts, making them easier to manage effectively.

The process of defining a job itself is actually a DeepWork job. You can see it at `.deepwork/jobs/deepwork_jobs/`.

To start the process, just run the first Step in the job:

```
/deepwork.define
/deepwork_jobs.define
```

Follow the interactive prompts to:
- Name your workflow
- Name your job
- Define steps with inputs/outputs
- Specify dependencies between steps

It will also prompt you to go on the the next Step in the job.

### 2. Execute Steps

Run individual steps of your workflow:
Run individual steps of your job:

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

```
/deepwork.refine
/deepwork_jobs.refine
```

## Example: Competitive Research Workflow
Expand Down Expand Up @@ -215,9 +208,6 @@ ruff format src/
## Documentation

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

## Project Structure

Expand All @@ -227,7 +217,6 @@ deepwork/
│ ├── cli/ # Command-line interface
│ ├── core/ # Core functionality
│ │ ├── parser.py # Job definition parsing
│ │ ├── registry.py # Job registry management
│ │ ├── detector.py # Platform detection
│ │ └── generator.py # Skill file generation
│ ├── templates/ # Jinja2 templates
Expand Down
8 changes: 1 addition & 7 deletions claude.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ my-project/
## Key Files to Reference

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

## Development Guidelines
Expand Down Expand Up @@ -206,9 +206,3 @@ If a job exists in `src/deepwork/standard_jobs/`, it is a standard job and MUST
3. **Performance**: Job import completes in <10 seconds
4. **Extensibility**: New AI platforms can be added in <2 days
5. **Quality**: 90%+ test coverage, zero critical bugs

## Questions or Issues?

- See `doc/architecture.md` for detailed design documentation
- Check `readme.md` for high-level concepts
- Reference implementation phases for current work focus
Loading