Skip to content

Commit c4ac229

Browse files
nhortonclaude
andauthored
feat: run tests in parallel and update README quickstart flow (#324)
Add pytest-xdist for parallel test execution (-n=auto, --dist=worksteal). Update README quickstart to "do the task first, then capture it as a workflow" pattern — a more natural onboarding flow. Wrap Claude Desktop instructions in a collapsible details block. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e468be3 commit c4ac229

2 files changed

Lines changed: 65 additions & 21 deletions

File tree

README.md

Lines changed: 61 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,34 @@ AI agents are powerful, but they're unreliable. They go off-script, skip steps,
44

55
DeepWork fixes this with two systems: **Workflows** that force agents to follow a structured process step by step, and **Reviews** that automatically verify every change against your rules. Together, they make agents trustworthy enough to run autonomously on real work.
66

7-
## Install
7+
## Quickstart
88

99
### Claude Code (Terminal)
1010
```
1111
claude plugin marketplace add Unsupervisedcom/deepwork
1212
claude plugin install deepwork@deepwork-plugins
13+
14+
claude
15+
```
16+
17+
Then start a new session. First, do the task you want to automate — just ask Claude to do it, and work with Claude to refine it as you go:
18+
```
19+
Research our top 3 competitors and write a SWOT analysis for each one.
1320
```
21+
Then you will iterate with feedback as you go - `Don't include feature X from competitor Y - they are sunsetting it`, `Be sure to always include pricing approach in the analysis`, etc as you go.
1422

15-
Then start a new session and define your first job:
23+
Once you're happy with the result, turn it into a reusable workflow:
1624
```
17-
/deepwork Make a job for doing competitive research. It will take the URL of the competitor as an input, and should make report including a SWOT analysis for that competitor.
25+
/deepwork Create a job called "competitive_research" with a workflow called "update_swot" that does what we just did.
1826
```
27+
It will ask you some clarification questions to make sure it is tuning it in well for you, then make a repeatable flow.
1928

20-
### Claude Desktop
29+
Then you can call it anytime with `/deepwork update_swot`. It will do it repeatably and reliably.
30+
31+
For bonus points, try `/deepwork learn` after running your workflow as well, and watch it auto-tune itself.
32+
33+
<details>
34+
<summary><strong>Claude Desktop</strong></summary>
2135

2236
1. Enter Cowork mode (toggle at top of screen)
2337
2. Select `Customize with plugins` at the bottom of the page.
@@ -26,7 +40,8 @@ Then start a new session and define your first job:
2640
5. Select the deepwork plugin and click Install.
2741
6. In Cowork mode, select 'Start a deepwork workflow'
2842

29-
> **Note:** DeepWork stores job definitions in `.deepwork/jobs/` and creates work branches in Git. Your project folder should be a Git repository. If it isn't, run `git init` first, or ask Claude to do so.
43+
</details>
44+
3045

3146
---
3247

@@ -49,13 +64,19 @@ DeepWork gives you three complementary systems that work together to make agents
4964

5065
Workflows force the agent to follow a strict, step-by-step process. Each step has defined inputs, outputs, and quality checks. The agent can't skip ahead or go off-script — it must complete each step and pass its quality gates before moving on.
5166

52-
You define workflows by describing what you want in plain English. DeepWork asks you questions to refine the process, then generates a hardened multi-step workflow that the agent follows consistently every time.
67+
The fastest way to create a workflow: **do the task once with Claude, then turn it into a workflow.** Claude already has the full context of what worked, so it can generate a hardened, repeatable process from what it just did.
68+
69+
```
70+
Write a tutorial for the new export feature we just launched.
71+
```
72+
73+
Claude does the work. You review the result, give feedback, iterate. Once you're happy:
5374

5475
```
55-
/deepwork write a tutorial for how to use a new feature we just launched
76+
/deepwork Create a job called "tutorial_writer" with a workflow called "write_tutorial" that does what we just did.
5677
```
5778

58-
DeepWork asks you questions (~10 minutes), then writes the steps. After that, you can run it whenever:
79+
DeepWork asks you a few questions (~10 minutes), then generates the steps. After that, you can run it whenever:
5980

6081
```
6182
/deepwork tutorial_writer
@@ -114,25 +135,35 @@ Start a new Claude Code session after installing.
114135

115136
> **Note:** If your folder isn't a Git repo yet, run `git init` first.
116137
117-
### 2. Define Your First Workflow
138+
### 2. Do the Task Once
118139

119-
Start simple — something you do manually in 15-30 minutes:
140+
Start a fresh session and ask Claude to do the thing you want to automate. Something you do regularly that takes 15-60 minutes:
120141

121142
```
122-
/deepwork write a tutorial for how to use a new feature we just launched
143+
Audit our API endpoints for missing authentication checks and write up the findings.
123144
```
124145

125-
DeepWork asks you questions (~10 minutes) then writes the steps. You're creating a **reusable skill**you only do this once.
146+
Claude does the work. Review the output, give feedback, iterate until you're satisfied.
126147

127-
### 3. Run It
148+
### 3. Turn It Into a Workflow
149+
150+
Once you're happy with the result, tell DeepWork to capture it:
128151

129152
```
130-
/deepwork tutorial_writer
153+
/deepwork Create a job called "api_security_audit" with a workflow called "audit_and_report" that does what we just did.
154+
```
155+
156+
DeepWork asks a few questions to refine the process (~10 minutes), then generates a hardened, multi-step workflow. You're creating a **reusable skill** — you only do this once.
157+
158+
### 4. Run It Anytime
159+
160+
```
161+
/deepwork api_security_audit
131162
```
132163

133-
Claude follows the workflow step by step.
164+
Claude follows the workflow step by step, the same way every time.
134165

135-
### 4. Set Up Reviews
166+
### 5. Set Up Reviews
136167

137168
```
138169
/configure_reviews
@@ -144,13 +175,22 @@ DeepWork analyzes your project and creates `.deepreview` files with review rules
144175

145176
## Example: Competitive Research Workflow
146177

147-
You can make a DeepWork job that automatically runs deep competitive research:
148-
- Run `/deepwork` in Claude Code
149-
- Explain your process — _e.g. "Go look at my company's website and social channels to capture any new developments, look at our existing list of competitors, do broad web searches to identify any new competitors, and then do deep research on each competitor and produce a comprehensive set of md reports including a summary report for me."_
178+
Start a fresh Claude Code session and do the research yourself with Claude:
150179

151-
DeepWork asks you questions to improve the plan and makes a hardened automation workflow (~10 minutes). Then it documents how Claude should execute each step (~2-5 minutes).
180+
```
181+
Look at our company's website and social channels to capture recent developments.
182+
Then identify our top competitors, do deep research on each one, and write up a
183+
comprehensive set of reports including a summary with strategic recommendations.
184+
```
185+
186+
Claude does the research, writes the reports, you iterate. Once you're satisfied with the process:
187+
188+
```
189+
/deepwork Create a job called "competitive_research" with a workflow called
190+
"research_and_report" that does what we just did.
191+
```
152192

153-
After that, you can run the workflow at any time. Output looks something like:
193+
DeepWork captures the process as a reusable workflow (~10 minutes of Q&A). After that, you can run it anytime. Output looks something like:
154194

155195
```
156196
# On your work branch (deepwork/competitive_research-acme-2026-02-21):

pyproject.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ dev = [
3535
"pytest-mock>=3.15.1",
3636
"pytest-cov>=7.0.0",
3737
"pytest-asyncio>=1.3.0",
38+
"pytest-xdist>=3.5.0",
3839
"ruff>=0.15.8",
3940
"mypy>=1.19.1",
4041
"types-PyYAML",
@@ -68,6 +69,8 @@ addopts = [
6869
"--strict-markers",
6970
"--strict-config",
7071
"--showlocals",
72+
"-n=auto",
73+
"--dist=worksteal",
7174
"--cov=deepwork",
7275
"--cov-branch",
7376
"--cov-report=term-missing",
@@ -132,5 +135,6 @@ dev = [
132135
"pytest-asyncio>=1.3.0",
133136
"pytest-cov>=7.0.0",
134137
"pytest-mock>=3.15.1",
138+
"pytest-xdist>=3.5.0",
135139
"rich>=14.2.0",
136140
]

0 commit comments

Comments
 (0)