deepwork 0.5.1__py3-none-any.whl → 0.7.0a1__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.
Files changed (66) hide show
  1. deepwork/__init__.py +1 -1
  2. deepwork/cli/hook.py +3 -4
  3. deepwork/cli/install.py +70 -117
  4. deepwork/cli/main.py +2 -2
  5. deepwork/cli/serve.py +133 -0
  6. deepwork/cli/sync.py +93 -58
  7. deepwork/core/adapters.py +91 -102
  8. deepwork/core/generator.py +19 -386
  9. deepwork/core/hooks_syncer.py +1 -1
  10. deepwork/core/parser.py +270 -1
  11. deepwork/hooks/README.md +0 -44
  12. deepwork/hooks/__init__.py +3 -6
  13. deepwork/hooks/check_version.sh +54 -21
  14. deepwork/mcp/__init__.py +23 -0
  15. deepwork/mcp/quality_gate.py +347 -0
  16. deepwork/mcp/schemas.py +263 -0
  17. deepwork/mcp/server.py +253 -0
  18. deepwork/mcp/state.py +422 -0
  19. deepwork/mcp/tools.py +394 -0
  20. deepwork/schemas/job.schema.json +347 -0
  21. deepwork/schemas/job_schema.py +27 -239
  22. deepwork/standard_jobs/deepwork_jobs/doc_specs/job_spec.md +9 -15
  23. deepwork/standard_jobs/deepwork_jobs/job.yml +146 -46
  24. deepwork/standard_jobs/deepwork_jobs/steps/define.md +100 -33
  25. deepwork/standard_jobs/deepwork_jobs/steps/errata.md +154 -0
  26. deepwork/standard_jobs/deepwork_jobs/steps/fix_jobs.md +207 -0
  27. deepwork/standard_jobs/deepwork_jobs/steps/fix_settings.md +177 -0
  28. deepwork/standard_jobs/deepwork_jobs/steps/implement.md +22 -138
  29. deepwork/standard_jobs/deepwork_jobs/steps/iterate.md +221 -0
  30. deepwork/standard_jobs/deepwork_jobs/steps/learn.md +2 -26
  31. deepwork/standard_jobs/deepwork_jobs/steps/test.md +154 -0
  32. deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template +2 -0
  33. deepwork/templates/claude/settings.json +16 -0
  34. deepwork/templates/claude/skill-deepwork.md.jinja +37 -0
  35. deepwork/templates/gemini/skill-deepwork.md.jinja +37 -0
  36. deepwork-0.7.0a1.dist-info/METADATA +317 -0
  37. deepwork-0.7.0a1.dist-info/RECORD +64 -0
  38. deepwork/cli/rules.py +0 -32
  39. deepwork/core/command_executor.py +0 -190
  40. deepwork/core/pattern_matcher.py +0 -271
  41. deepwork/core/rules_parser.py +0 -559
  42. deepwork/core/rules_queue.py +0 -321
  43. deepwork/hooks/rules_check.py +0 -759
  44. deepwork/schemas/rules_schema.py +0 -135
  45. deepwork/standard_jobs/deepwork_jobs/steps/review_job_spec.md +0 -208
  46. deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.example +0 -86
  47. deepwork/standard_jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh +0 -38
  48. deepwork/standard_jobs/deepwork_rules/hooks/global_hooks.yml +0 -8
  49. deepwork/standard_jobs/deepwork_rules/hooks/user_prompt_submit.sh +0 -16
  50. deepwork/standard_jobs/deepwork_rules/job.yml +0 -49
  51. deepwork/standard_jobs/deepwork_rules/rules/.gitkeep +0 -13
  52. deepwork/standard_jobs/deepwork_rules/rules/api-documentation-sync.md.example +0 -10
  53. deepwork/standard_jobs/deepwork_rules/rules/readme-documentation.md.example +0 -10
  54. deepwork/standard_jobs/deepwork_rules/rules/security-review.md.example +0 -11
  55. deepwork/standard_jobs/deepwork_rules/rules/skill-md-validation.md +0 -46
  56. deepwork/standard_jobs/deepwork_rules/rules/source-test-pairing.md.example +0 -13
  57. deepwork/standard_jobs/deepwork_rules/steps/define.md +0 -249
  58. deepwork/templates/claude/skill-job-meta.md.jinja +0 -77
  59. deepwork/templates/claude/skill-job-step.md.jinja +0 -235
  60. deepwork/templates/gemini/skill-job-meta.toml.jinja +0 -76
  61. deepwork/templates/gemini/skill-job-step.toml.jinja +0 -162
  62. deepwork-0.5.1.dist-info/METADATA +0 -381
  63. deepwork-0.5.1.dist-info/RECORD +0 -72
  64. {deepwork-0.5.1.dist-info → deepwork-0.7.0a1.dist-info}/WHEEL +0 -0
  65. {deepwork-0.5.1.dist-info → deepwork-0.7.0a1.dist-info}/entry_points.txt +0 -0
  66. {deepwork-0.5.1.dist-info → deepwork-0.7.0a1.dist-info}/licenses/LICENSE.md +0 -0
@@ -1,162 +0,0 @@
1
- {#
2
- Template: skill-job-step.toml.jinja
3
- Purpose: Generates individual step skill files for Gemini CLI
4
-
5
- Template Variables:
6
- Job Context:
7
- - job_name: string - Job identifier
8
- - job_summary: string - Short job summary
9
- - job_description: string|null - Full job description
10
-
11
- Step Metadata:
12
- - step_id: string - Step identifier
13
- - step_description: string - What this step does
14
- - step_number: int - Position in workflow (1-indexed)
15
- - total_steps: int - Total steps in job
16
- - is_standalone: bool - True if step can run independently
17
- - dependencies: list[string]|null - Required prior step IDs
18
- - next_step: string|null - Next step ID in workflow
19
- - instructions_file: string - Path to step instructions file
20
-
21
- Step Content:
22
- - instructions_content: string - Full instructions markdown
23
- - user_inputs: list|null - User parameters to gather:
24
- - name: string - Parameter name
25
- - description: string - What to ask for
26
- - file_inputs: list|null - Files from previous steps:
27
- - file: string - File path
28
- - from_step: string - Source step ID
29
- - outputs: list[string]|null - Output file paths
30
-
31
- Quality:
32
- - quality_criteria: list[string]|null - Criteria for completion
33
- - stop_hooks: list|null - Stop hook configurations (note: Gemini
34
- does not support automated hooks, so these are for manual verification)
35
-
36
- Note: Gemini uses TOML format with description + prompt fields.
37
- Commands use colon separator (/job_name:step_id) not period.
38
- #}
39
- # {{ job_name }}:{{ step_id }}
40
- #
41
- # {{ step_description }}
42
- #
43
- # Generated by DeepWork - do not edit manually
44
-
45
- description = "{{ step_description | replace('"', '\\"') }}"
46
-
47
- prompt = """
48
- # {{ job_name }}:{{ step_id }}
49
-
50
- {% if is_standalone %}
51
- **Standalone command** - can be run anytime
52
- {% else %}
53
- **Step {{ step_number }}/{{ total_steps }}** in **{{ job_name }}** workflow
54
- {% endif %}
55
-
56
- > {{ job_summary }}
57
-
58
- {% if dependencies %}
59
- ## Prerequisites (Verify First)
60
-
61
- Before proceeding, confirm these steps are complete:
62
- {% for dep in dependencies %}
63
- - `/{{ job_name }}:{{ dep }}`
64
- {% endfor %}
65
- {% endif %}
66
-
67
- ## Instructions
68
-
69
- **Goal**: {{ step_description }}
70
-
71
- {{ instructions_content }}
72
-
73
- {% if job_description %}
74
- ### Job Context
75
-
76
- {{ job_description }}
77
- {% endif %}
78
-
79
- {% if user_inputs or file_inputs %}
80
- ## Required Inputs
81
-
82
- {% if user_inputs %}
83
- **User Parameters** - Gather from user before starting:
84
- {% for input in user_inputs %}
85
- - **{{ input.name }}**: {{ input.description }}
86
- {% endfor %}
87
- {% endif %}
88
-
89
- {% if file_inputs %}
90
- **Files from Previous Steps** - Read these first:
91
- {% for input in file_inputs %}
92
- - `{{ input.file }}` (from `{{ input.from_step }}`)
93
- {% endfor %}
94
- {% endif %}
95
- {% endif %}
96
-
97
- ## Work Branch
98
-
99
- Use branch format: `deepwork/{{ job_name }}-[instance]-YYYYMMDD`
100
-
101
- - If on a matching work branch: continue using it
102
- - If on main/master: create new branch with `git checkout -b deepwork/{{ job_name }}-[instance]-$(date +%Y%m%d)`
103
-
104
- ## Outputs
105
-
106
- {% if outputs %}
107
- **Required outputs**:
108
- {% for output in outputs %}
109
- - `{{ output.file }}`{% if output.file.endswith('/') %} (directory){% endif %}
110
-
111
- {% if output.has_doc_spec and output.doc_spec %}
112
- **Doc Spec**: {{ output.doc_spec.name }}
113
- > {{ output.doc_spec.description }}
114
- **Definition**: `{{ output.doc_spec.path }}`
115
- {% if output.doc_spec.target_audience %}
116
- **Target Audience**: {{ output.doc_spec.target_audience }}
117
- {% endif %}
118
- {% if output.doc_spec.quality_criteria %}
119
- **Quality Criteria**:
120
- {% for criterion in output.doc_spec.quality_criteria %}
121
- {{ loop.index }}. **{{ criterion.name }}**: {{ criterion.description }}
122
- {% endfor %}
123
- {% endif %}
124
- {% endif %}
125
- {% endfor %}
126
- {% else %}
127
- No specific file outputs required.
128
- {% endif %}
129
-
130
- {% if quality_criteria or stop_hooks %}
131
- ## Quality Validation (Manual)
132
-
133
- **NOTE**: Gemini CLI does not support automated validation. Manually verify criteria before completing.
134
-
135
- {% if quality_criteria %}
136
- **Criteria (all must be satisfied)**:
137
- {% for criterion in quality_criteria %}
138
- {{ loop.index }}. {{ criterion }}
139
- {% endfor %}
140
- {% endif %}
141
- {% endif %}
142
- ## On Completion
143
-
144
- {% if is_standalone %}
145
- 1. Verify outputs are created
146
- 2. Inform user: "{{ step_id }} complete{% if outputs %}, outputs: {{ outputs | map(attribute='file') | join(', ') }}{% endif %}"
147
-
148
- This standalone command can be re-run anytime.
149
- {% else %}
150
- 1. Verify outputs are created
151
- 2. Inform user: "Step {{ step_number }}/{{ total_steps }} complete{% if outputs %}, outputs: {{ outputs | map(attribute='file') | join(', ') }}{% endif %}"
152
- {% if next_step %}
153
- 3. **Tell user next command**: `/{{ job_name }}:{{ next_step }}`
154
- {% else %}
155
- 3. **Workflow complete**: All steps finished. Consider creating a PR to merge the work branch.
156
- {% endif %}
157
- {% endif %}
158
-
159
- ---
160
-
161
- **Reference files**: `.deepwork/jobs/{{ job_name }}/job.yml`, `.deepwork/jobs/{{ job_name }}/{{ instructions_file }}`
162
- """
@@ -1,381 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: deepwork
3
- Version: 0.5.1
4
- Summary: Framework for enabling AI agents to perform complex, multi-step work tasks
5
- Project-URL: Homepage, https://github.com/deepwork/deepwork
6
- Project-URL: Documentation, https://github.com/deepwork/deepwork#readme
7
- Project-URL: Repository, https://github.com/deepwork/deepwork
8
- Project-URL: Issues, https://github.com/deepwork/deepwork/issues
9
- Author: DeepWork Contributors
10
- License: Business Source License 1.1
11
- License-File: LICENSE.md
12
- Keywords: agents,ai,automation,cli,workflow
13
- Classifier: Development Status :: 3 - Alpha
14
- Classifier: Intended Audience :: Developers
15
- Classifier: License :: Other/Proprietary License
16
- Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3.12
19
- Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
20
- Requires-Python: >=3.11
21
- Requires-Dist: click>=8.1.0
22
- Requires-Dist: gitpython>=3.1.0
23
- Requires-Dist: jinja2>=3.1.0
24
- Requires-Dist: jsonschema>=4.17.0
25
- Requires-Dist: pyyaml>=6.0
26
- Requires-Dist: rich>=13.0.0
27
- Provides-Extra: dev
28
- Requires-Dist: mypy>=1.0; extra == 'dev'
29
- Requires-Dist: pytest-cov>=4.0; extra == 'dev'
30
- Requires-Dist: pytest-mock>=3.10; extra == 'dev'
31
- Requires-Dist: pytest>=7.0; extra == 'dev'
32
- Requires-Dist: ruff>=0.1.0; extra == 'dev'
33
- Requires-Dist: types-pyyaml; extra == 'dev'
34
- Description-Content-Type: text/markdown
35
-
36
- # DeepWork
37
-
38
- > **Note**: DeepWork is in active development. We welcome feedback and contributions!
39
-
40
- > Framework for enabling AI agents to perform complex, multi-step work tasks
41
-
42
- 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.
43
-
44
- ## Supported Platforms
45
-
46
- | Platform | Status | Command Format | Hooks Support |
47
- |----------|--------|----------------|---------------|
48
- | **Claude Code** | Full Support | Markdown | Yes (stop_hooks, pre/post) |
49
- | **Gemini CLI** | Full Support | TOML | No (global only) |
50
- | OpenCode | Planned | Markdown | No |
51
- | GitHub Copilot CLI | Planned | Markdown | No (tool permissions only) |
52
-
53
- > **Tip:** New to DeepWork? Claude Code has the most complete feature support, including quality validation hooks and automated rules. For browser automation, Claude in Chrome (Anthropic's browser extension) works well with DeepWork workflows.
54
-
55
- ## Easy Installation
56
- In your Agent CLI (ex. `claude`), ask:
57
-
58
- ```
59
- Please fully install https://pypi.org/project/deepwork/ and make sure you see the new commands.
60
- ```
61
-
62
- ## Installation Details
63
-
64
-
65
- **Agents**: - be sure to perform all the steps, not just the package install.
66
-
67
- ### Prerequisites
68
-
69
- - Python 3.11 or higher
70
- - Git repository
71
- - One of: Claude Code or Gemini CLI
72
-
73
- ### Install DeepWork
74
-
75
- ```bash
76
- # Using Homebrew (macOS/Linux)
77
- brew tap unsupervisedcom/deepwork
78
- brew install deepwork
79
-
80
- # Using pipx (isolated environment)
81
- pipx install deepwork
82
-
83
- # Or using uv
84
- uv tool install deepwork
85
-
86
- # Or using pip
87
- pip install deepwork
88
- ```
89
-
90
- ### Install in Your Project
91
- ```bash
92
- cd your-project/
93
- deepwork install --platform claude
94
-
95
- # Or Gemini CLI, etc.
96
- deepwork install --platform gemini
97
- ```
98
-
99
- This will:
100
- - Create `.deepwork/` directory structure
101
- - Generate core DeepWork jobs
102
- - Install DeepWork jobs for your AI assistant
103
- - Configure hooks for your AI assistant to enable rules
104
-
105
- ## Quick Start
106
-
107
- ### 1. Define a Job
108
- Jobs are multi-step workflows where each Step has clear input and output artifacts, making them easier to manage effectively.
109
-
110
- The process of defining a job itself is actually a DeepWork job. You can see it at `.deepwork/jobs/deepwork_jobs/`.
111
-
112
- To start the process, just run the first Step in the job:
113
-
114
- ```
115
- /deepwork_jobs.define
116
- ```
117
-
118
- Follow the interactive prompts to:
119
- - Name your job
120
- - Define steps with inputs/outputs
121
- - Specify dependencies between steps
122
-
123
- It will also prompt you to go on the the next Step in the job.
124
-
125
- ### 2. Execute Steps
126
-
127
- Run individual steps of your job:
128
-
129
- ```
130
- /your_job_name.step_1
131
- ```
132
-
133
- The AI will:
134
- - Create a work branch
135
- - Execute the step's instructions
136
- - Generate required outputs
137
- - Guide you to the next step
138
-
139
- ### 3. Manage Workflows
140
-
141
- Use the refine skill to update existing jobs:
142
-
143
- ```
144
- /deepwork_jobs.refine
145
- ```
146
-
147
- ## Example: Competitive Research Workflow
148
-
149
- Here's a sample 4-step workflow for competitive analysis:
150
-
151
- **job.yml**:
152
- ```yaml
153
- name: competitive_research
154
- version: "1.0.0"
155
- summary: "Systematic competitive analysis workflow"
156
- description: |
157
- A comprehensive workflow for analyzing competitors in your market segment.
158
- Helps product teams understand the competitive landscape by identifying
159
- competitors, researching their offerings, and developing positioning strategies.
160
-
161
- changelog:
162
- - version: "1.0.0"
163
- changes: "Initial job creation"
164
-
165
- steps:
166
- - id: identify_competitors
167
- name: "Identify Competitors"
168
- description: "Research and list competitors"
169
- inputs:
170
- - name: market_segment
171
- description: "Market segment to analyze"
172
- - name: product_category
173
- description: "Product category"
174
- outputs:
175
- - competitors.md
176
- dependencies: []
177
-
178
- - id: primary_research
179
- name: "Primary Research"
180
- description: "Analyze competitors' self-presentation"
181
- inputs:
182
- - file: competitors.md
183
- from_step: identify_competitors
184
- outputs:
185
- - primary_research.md
186
- - competitor_profiles/
187
- dependencies:
188
- - identify_competitors
189
-
190
- # ... additional steps
191
- ```
192
-
193
- Usage:
194
- ```
195
- /competitive_research.identify_competitors
196
- # AI creates work branch and asks for market_segment, product_category
197
- # Generates competitors.md
198
-
199
- /competitive_research.primary_research
200
- # AI reads competitors.md
201
- # Generates primary_research.md and competitor_profiles/
202
- ```
203
-
204
- ## Architecture
205
-
206
- DeepWork follows a **Git-native, installation-only** design:
207
-
208
- - **No runtime daemon**: DeepWork is purely a CLI tool
209
- - **Git-based workflow**: All work happens on dedicated branches
210
- - **Skills as interface**: AI agents interact via generated skill files
211
- - **Platform-agnostic**: Works with any AI coding assistant that supports skills
212
-
213
- ### Directory Structure
214
-
215
- ```
216
- your-project/
217
- ├── .deepwork/
218
- │ ├── config.yml # Platform configuration
219
- │ ├── rules/ # Rule definitions (v2 format)
220
- │ │ └── rule-name.md # Individual rule files
221
- │ ├── tmp/ # Temporary state (gitignored)
222
- │ │ └── rules/queue/ # Rule evaluation queue
223
- │ └── jobs/ # Job definitions
224
- │ └── job_name/
225
- │ ├── job.yml # Job metadata
226
- │ └── steps/ # Step instructions
227
- ├── .claude/ # Claude Code skills (auto-generated)
228
- │ └── skills/
229
- │ ├── deepwork_jobs.define.md
230
- │ └── job_name.step_name.md
231
- └── .gemini/ # Gemini CLI skills (auto-generated)
232
- └── skills/
233
- └── job_name/
234
- └── step_name.toml
235
- ```
236
-
237
- **Note**: Work outputs are created on dedicated Git branches (e.g., `deepwork/job_name-instance-date`), not in a separate directory.
238
-
239
- ## Documentation
240
-
241
- - **[Architecture](doc/architecture.md)**: Complete design specification
242
- - **[Doc Specs](doc/doc-specs.md)**: Document specification format for output quality criteria
243
- - **[Contributing](CONTRIBUTING.md)**: Setup development environment and contribute
244
- - **[Nix Flakes Guide](doc/nix-flake.md)**: Comprehensive guide for using DeepWork with Nix flakes
245
-
246
- ## Development with Nix
247
-
248
- DeepWork is available as a Nix flake for reproducible development environments:
249
-
250
- ```bash
251
- # Using Nix flakes
252
- nix develop
253
-
254
- # Or with direnv (automatic activation - recommended)
255
- echo "use flake" > .envrc
256
- direnv allow
257
- ```
258
-
259
- The Nix environment provides all dependencies including Python 3.11, uv, pytest, ruff, and mypy.
260
-
261
- ### Installing DeepWork from Flake
262
-
263
- You can also install deepwork directly from the flake:
264
-
265
- ```bash
266
- # Install deepwork from this flake
267
- nix profile install github:Unsupervisedcom/deepwork
268
-
269
- # Or run it without installing
270
- nix run github:Unsupervisedcom/deepwork -- --help
271
-
272
- # Or build the package
273
- nix build github:Unsupervisedcom/deepwork
274
- ```
275
-
276
- ## Project Structure
277
-
278
- ```
279
- deepwork/
280
- ├── src/deepwork/
281
- │ ├── cli/ # Command-line interface
282
- │ ├── core/ # Core functionality
283
- │ │ ├── parser.py # Job definition parsing
284
- │ │ ├── detector.py # Platform detection
285
- │ │ ├── generator.py # Skill file generation
286
- │ │ ├── rules_parser.py # Rule parsing
287
- │ │ ├── pattern_matcher.py # Variable pattern matching
288
- │ │ ├── rules_queue.py # Rule state queue
289
- │ │ └── command_executor.py # Command action execution
290
- │ ├── hooks/ # Cross-platform hook wrappers
291
- │ │ ├── wrapper.py # Input/output normalization
292
- │ │ ├── rules_check.py # Rule evaluation hook
293
- │ │ ├── claude_hook.sh # Claude Code adapter
294
- │ │ └── gemini_hook.sh # Gemini CLI adapter
295
- │ ├── templates/ # Jinja2 templates
296
- │ │ ├── claude/ # Claude Code templates
297
- │ │ └── gemini/ # Gemini CLI templates
298
- │ ├── schemas/ # JSON schemas
299
- │ └── utils/ # Utilities (fs, yaml, git, validation)
300
- ├── tests/
301
- │ ├── unit/ # Unit tests
302
- │ ├── integration/ # Integration tests
303
- │ └── fixtures/ # Test fixtures
304
- └── doc/ # Documentation
305
- ```
306
-
307
- ## Features
308
-
309
- ### Job Definition
310
- Define structured, multi-step workflows where each step has clear requirements and produces specific results.
311
- - **Dependency Management**: Explicitly link steps with automatic sequence handling and cycle detection.
312
- - **Artifact Passing**: Seamlessly use file outputs from one step as inputs for future steps.
313
- - **Dynamic Inputs**: Support for both fixed file references and interactive user parameters.
314
- - **Human-Readable YAML**: Simple, declarative job definitions that are easy to version and maintain.
315
- - **Doc Specs**: Reference doc specs to enforce quality criteria on document outputs (see [doc specs documentation](doc/doc-specs.md)).
316
-
317
- ### Git-Native Workflow
318
- Maintain a clean repository with automatic branch management and isolation.
319
- - **Automatic Branching**: Every job execution happens on a dedicated work branch (e.g., `deepwork/my-job-2024`).
320
- - **Namespace Isolation**: Run multiple concurrent jobs or instances without versioning conflicts.
321
- - **Full Traceability**: All AI-generated changes, logs, and artifacts are tracked natively in your Git history.
322
-
323
- ### Automated Rules
324
- Enforce project standards and best practices without manual oversight. Rules monitor file changes and automatically prompt your AI assistant to follow specific guidelines when relevant code is modified.
325
- - **Automatic Triggers**: Detect when specific files or directories are changed to fire relevant rules.
326
- - **File Correspondence**: Define bidirectional (set) or directional (pair) relationships between files.
327
- - **Command Actions**: Run idempotent commands (formatters, linters) automatically when files change.
328
- - **Contextual Guidance**: Instructions are injected directly into the AI's workflow at the right moment.
329
-
330
- **Example Rule** (`.deepwork/rules/source-test-pairing.md`):
331
- ```markdown
332
- ---
333
- name: Source/Test Pairing
334
- set:
335
- - src/{path}.py
336
- - tests/{path}_test.py
337
- compare_to: base
338
- ---
339
- When source files change, corresponding test files should also change.
340
- Please create or update tests for the modified source files.
341
- ```
342
-
343
- **Example Command Rule** (`.deepwork/rules/format-python.md`):
344
- ```markdown
345
- ---
346
- name: Format Python
347
- trigger: "**/*.py"
348
- action:
349
- command: "ruff format {file}"
350
- run_for: each_match
351
- compare_to: prompt
352
- ---
353
- ```
354
-
355
- ### Multi-Platform Support
356
- Generate native commands and skills tailored for your AI coding assistant.
357
- - **Native Integration**: Works directly with the skill/command formats of supported agents.
358
- - **Context-Aware**: Skills include all necessary context (instructions, inputs, and dependencies) for the AI.
359
- - **Expanding Ecosystem**: Currently supports **Claude Code** and **Gemini CLI**, with more platforms planned.
360
-
361
- ## Contributing
362
-
363
- DeepWork is currently in MVP phase. Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for the full development guide.
364
-
365
- ## License
366
-
367
- DeepWork is licensed under the Business Source License 1.1 (BSL 1.1). See [LICENSE.md](LICENSE.md) for details.
368
-
369
- ### Key Points
370
-
371
- - **Free for non-competing use**: You can use DeepWork freely for internal workflow automation, education, research, and development
372
- - **Change Date**: On January 14, 2030, the license will automatically convert to Apache License 2.0
373
- - **Prohibited Uses**: You cannot use DeepWork to build products that compete with DeepWork or Unsupervised.com, Inc. in workflow automation or data analysis
374
- - **Contributing**: Contributors must sign our [Contributor License Agreement (CLA)](CLA/version_1/CLA.md)
375
-
376
- For commercial use or questions about licensing, please contact legal@unsupervised.com
377
-
378
- ## Credits
379
-
380
- - Inspired by [GitHub's spec-kit](https://github.com/github/spec-kit)
381
-
@@ -1,72 +0,0 @@
1
- deepwork/__init__.py,sha256=vcMnJioxhfoL6kGh4FM51Vk9UoLnQ76g6Ms7XDUItYA,748
2
- deepwork/cli/__init__.py,sha256=3SqmfcP2xqutiCYAbajFDJTjr2pOLydqTN0NN-FTsIE,33
3
- deepwork/cli/hook.py,sha256=y-VMejVKuysdA3SD300Lj4JF0g_nPdIrFk3RVFpunDk,2089
4
- deepwork/cli/install.py,sha256=ruV00zIsMu2miUR61i3l6qfNeVqFDiBI51DQCbagdzc,14717
5
- deepwork/cli/main.py,sha256=ohWspMA5yVjOPZDiFWt7yT4aH4o8MiOJfU67fuDkklM,616
6
- deepwork/cli/rules.py,sha256=hLv751CwAAHK1LaggBhfPbTVpPRUBbEON73ldYWijo8,760
7
- deepwork/cli/sync.py,sha256=BH3kuheDZMfRQOem0D09RzJJYDp0egbAW6Huu_YBS9M,7554
8
- deepwork/core/__init__.py,sha256=1g869QuwsYzNjQONneng2OMc6HKt-tlBCaxJbMMfoho,36
9
- deepwork/core/adapters.py,sha256=kQ6VcXrB4AcQBwMFhw0808h-3LWNbUV6mPTMvkzQwq8,21829
10
- deepwork/core/command_executor.py,sha256=O3LBdwT0Jshgw6l7I9va0tJbjIYO_wSnC6COz1RynrU,5373
11
- deepwork/core/detector.py,sha256=PThpFLH-ZVL8UqjVdGSnGA0mFbhc6_rp6V3_Yzw97kI,2466
12
- deepwork/core/doc_spec_parser.py,sha256=DF1B3Ku9XHxTjRN12b1DatkwTa0HlwpPbeJCL4teobU,5739
13
- deepwork/core/generator.py,sha256=iRUXFV2YTd7wUHCU772PhWxyPt59IrVNVlvsEWqhwNk,17229
14
- deepwork/core/hooks_syncer.py,sha256=iAGnnrvQUp54LsSArZn2OmCxxegvqR9RyFeZs1ZRLZU,7490
15
- deepwork/core/parser.py,sha256=C79AkGLnfqOYpNd6PG3oczlzFJCc5wYTm4QTzpVotR8,12097
16
- deepwork/core/pattern_matcher.py,sha256=wtrxFNSCMxk-47Nw4Ca-8769ll4weRvvQBLGsRERcKM,8073
17
- deepwork/core/rules_parser.py,sha256=r_Pay0Ug9FDGCEccpLnQjsQjSEUmECceh0Ac3Ayw4oE,17774
18
- deepwork/core/rules_queue.py,sha256=uCNuQzohUyEYGnCUv1nMDEYoLeTuiSHN44-kuXbSLDU,10069
19
- deepwork/hooks/README.md,sha256=t4rAd68oRx0-cbln4kfV0Sk2IWhGAGR7HB4McgBXTYE,4391
20
- deepwork/hooks/__init__.py,sha256=XpZkfndwJx40C59immzOfcxPbiTTrgPoL7nn_n12EyM,2019
21
- deepwork/hooks/check_version.sh,sha256=_dUyr2gLRs_QBt74LO-VPn91jeX4mo00Q_AKuzKkWYw,8801
22
- deepwork/hooks/claude_hook.sh,sha256=ViV8Cc9eLRwsyZ7T1tNP-kK3leAmFjbcjOOSU3NN-eE,1321
23
- deepwork/hooks/gemini_hook.sh,sha256=eUczJ3VUL5-q5Ic8V_WYpn5Ff_m2oliJ0FXMWaHi9jM,1316
24
- deepwork/hooks/rules_check.py,sha256=8a1UZxBU9HqU9Lmt2lYbOFsP3CflG7YBRWTDiGUpEXQ,25883
25
- deepwork/hooks/wrapper.py,sha256=HX_LtS5vfv-ZUhtR5jZqZCNBe90QPwW4ij9q-aRqbic,12956
26
- deepwork/schemas/__init__.py,sha256=PpydKb_oaTv8lYapN_nV-Tl_OUCoSM_okvsEJ8gNTpI,41
27
- deepwork/schemas/doc_spec_schema.py,sha256=qByBtd86vQaLNsLfMr4iwVdpmyowvVLzYOnXY7RnqLY,2049
28
- deepwork/schemas/job_schema.py,sha256=9bJ0FDz7hSs6xgckHXJl7pS2F8zsbjIk4lcPOgu9nIY,10664
29
- deepwork/schemas/rules_schema.py,sha256=CNv0_ambXTHZKFy81VCpew6KmHslSQPwLG7yd2x-z_0,4666
30
- deepwork/standard_jobs/deepwork_jobs/AGENTS.md,sha256=Y6I4jZ8DfN0RFY3UF5bgQRZvL7wQD9P0lgE7EZM6CGI,2252
31
- deepwork/standard_jobs/deepwork_jobs/job.yml,sha256=3Ekm4NAp0Oiy-EpeGkcmGhi6oeq5ey-IWSCYehGM9Xg,8036
32
- deepwork/standard_jobs/deepwork_jobs/make_new_job.sh,sha256=JArfFU9lEaJPRsXRL3rU1IMt2p6Bq0s2C9f98aJ7Mxg,3878
33
- deepwork/standard_jobs/deepwork_jobs/doc_specs/job_spec.md,sha256=G6w8EeoydnN1qvpxkXKCGiE7s41rtffDeoqOvhgF_pw,6975
34
- deepwork/standard_jobs/deepwork_jobs/steps/define.md,sha256=aMOnMR_GrhQdLKS2U8ypO4rcWpom8-sYEACVxQFPNbY,16275
35
- deepwork/standard_jobs/deepwork_jobs/steps/implement.md,sha256=2ms1RVkvoFL9raBL3Hjq6zn5LNYEcG9jcYiIwNkNtZY,10652
36
- deepwork/standard_jobs/deepwork_jobs/steps/learn.md,sha256=lVGHmNjN_74IVeAtc7dN5VDptUWU6kujSysvMgPZZ7k,12732
37
- deepwork/standard_jobs/deepwork_jobs/steps/review_job_spec.md,sha256=txfGuVjzhqwwJ5JSlcF9g4moBAx-7lXmvAXR6d0jiqU,6897
38
- deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md,sha256=uKDEwB3TxMLK-Zim3QQfkvaW5W6AVWHjWnH25aY6wCw,1478
39
- deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template,sha256=SUJL862C6-DnT9lK3sNIZ5T2wVgXN4YRph4FrKtFnLo,739
40
- deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.example,sha256=CHbGtH4R7wWlJV-_9QBkICPwb6VFuSMFZs4nAPyq6e0,2682
41
- deepwork/standard_jobs/deepwork_jobs/templates/doc_spec.md.template,sha256=OXpkFTsEm4CVkJQmx7f6rUZ9My5rHeY_ncaygARjEpA,764
42
- deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example,sha256=roRi6sIGFGmPCkoVW26HfuTBjAO8-pPsxI5-Gfg3rc0,2361
43
- deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template,sha256=3I-VQvqXVJNZ_Vb5Ik28JsrEbGKbyLTZcuKxdEmV5s0,1789
44
- deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example,sha256=HXcjVaQz2HsDiA4ClnIeLvysVOGrFJ_5Tr-pm6dhdwc,2706
45
- deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.template,sha256=6n9jFFuda4r549Oo-LBPKixFD3NvDl5MwEg5V7ItQBg,1286
46
- deepwork/standard_jobs/deepwork_rules/job.yml,sha256=JOLz2ISfG9PvKaQjOpEn9oLMY2HBaL-aRzKQDWKdvr0,2509
47
- deepwork/standard_jobs/deepwork_rules/hooks/capture_prompt_work_tree.sh,sha256=_roTZwALNfgR_hlhJ-HiH8a0tulMyxEi8eYFr8iwxtQ,1737
48
- deepwork/standard_jobs/deepwork_rules/hooks/global_hooks.yml,sha256=uZkGMROaICKik6-Mfa1dM-8608Y9L-VrYG5YAbVN8yw,186
49
- deepwork/standard_jobs/deepwork_rules/hooks/user_prompt_submit.sh,sha256=TxwYb7kBW-cfHmcQoruJBjCTWvdWbQVQIMplNgzMuOs,498
50
- deepwork/standard_jobs/deepwork_rules/rules/.gitkeep,sha256=tOhdLTAbVXm_Z4Gl85recPNonTC0kFwzw6NKpeqTmH8,337
51
- deepwork/standard_jobs/deepwork_rules/rules/api-documentation-sync.md.example,sha256=YaTuv-LseeqYSG6mk2LzORfyGJ0bGaXuTB8IJkwzrDI,260
52
- deepwork/standard_jobs/deepwork_rules/rules/readme-documentation.md.example,sha256=2uZHS-LjZfL81i7COJvIA0Q5lqa-aWyLx060ouSnlrw,305
53
- deepwork/standard_jobs/deepwork_rules/rules/security-review.md.example,sha256=gPAk5bWLqXm5mO6vlYAU7FGDQbNlXE-Fuf2mU4sru80,285
54
- deepwork/standard_jobs/deepwork_rules/rules/skill-md-validation.md,sha256=H-o8X92AerumY2nimLzX-PniN2FGWAPI4tNGMpEo7nM,1457
55
- deepwork/standard_jobs/deepwork_rules/rules/source-test-pairing.md.example,sha256=Uwg0l85nB69yY8MWwF46EUwx3UJ3qIHXb2ywxp_VNW0,320
56
- deepwork/standard_jobs/deepwork_rules/steps/define.md,sha256=TP3j90bh0zsGQniAo2GkX9xbLtB_XkaA4IudcbAZ0YY,8349
57
- deepwork/templates/__init__.py,sha256=APvjx_u7eRUerw9yA_fJ1ZqCzYA-FWUCV9HCz0RgjOc,50
58
- deepwork/templates/claude/AGENTS.md,sha256=7ickAhY8fNWhNCXPMG5nm6Jmv-XJvDM0PKC41EiQKyU,1828
59
- deepwork/templates/claude/skill-job-meta.md.jinja,sha256=SsK-_Tz5eeieaYGg9Q7S-MuaqbG7alWbKA0p2RcxhAg,2363
60
- deepwork/templates/claude/skill-job-step.md.jinja,sha256=L42OQbD1HCq8idIH5kYIZQY9rwuO3DTRrsfn_6jkLPU,8549
61
- deepwork/templates/gemini/skill-job-meta.toml.jinja,sha256=FOkRNP3pGbvwcwwt3k6WF_qsCIkj1AbLYtF3mlkqAsA,2157
62
- deepwork/templates/gemini/skill-job-step.toml.jinja,sha256=GFVsHdPet5buy3TM6CcZ9pepVT2re0G4WABJ1CCS5y8,4845
63
- deepwork/utils/__init__.py,sha256=AtvE49IFI8Rg36O4cNIlzB-oxvkW3apFgXExn8GSk6s,38
64
- deepwork/utils/fs.py,sha256=TbkcGGqck4lborFerbBLrpVMDUz3E5ZaW6X0_B2t76k,4821
65
- deepwork/utils/git.py,sha256=J4tAB1zE6-WMAEHbarevhmSvvPLkeKBpiRv1UxUVwYk,3748
66
- deepwork/utils/validation.py,sha256=SyFg9fIu1JCDMbssQgJRCTUNToDNcINccn8lje-tjts,851
67
- deepwork/utils/yaml_utils.py,sha256=INHhOmzC38fh7HYKLrq7vmS3dcuNsigH7_U71erS-hw,3127
68
- deepwork-0.5.1.dist-info/METADATA,sha256=y8X5xPFKdLEdrEqg5Hhx4KvRYXqE8r7R9VH3EaW-lT4,13363
69
- deepwork-0.5.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
70
- deepwork-0.5.1.dist-info/entry_points.txt,sha256=RhJBySzm619kh-yIdsAyfFXInAlY8Jm-39FLIBcOj2s,51
71
- deepwork-0.5.1.dist-info/licenses/LICENSE.md,sha256=W0EtJVYf0cQ_awukOCW1ETwNSpV2RKqnAGfoOjyz_K8,4126
72
- deepwork-0.5.1.dist-info/RECORD,,