Releases: Unsupervisedcom/deepwork
Releases · Unsupervisedcom/deepwork
0.5.1
0.5.0
Added
- Installer now auto-adds permission for
make_new_job.shscript, allowing Claude to run job creation without manual configuration - Manual release workflow (
create-release.yml) that automates version releases:- Takes version number as input, validates format
- Updates CHANGELOG.md: converts Unreleased section to new version with date
- Adds fresh Unreleased section with placeholder categories
- Updates pyproject.toml version and runs uv sync for lock file
- Commits changes directly to main, creates tag, and publishes GitHub release
Changed
- Commit job now requires changelog entries go to
[Unreleased]section and explicitly prohibits modifying version numbers
Fixed
Removed
0.4.0
Added
- Doc specs (document specifications) as a first-class feature for formalizing document quality criteria
- New src/deepwork/schemas/doc_spec_schema.py with JSON schema validation
- New src/deepwork/core/doc_spec_parser.py with parser for frontmatter markdown doc spec files
- Doc spec files stored in .deepwork/doc_specs/ directory with quality criteria and example documents
- Auto-creates .deepwork/doc_specs/ directory during deepwork install
- Extended job.yml output schema to support doc spec references
- Outputs can now be strings (backward compatible) or objects with file and optional doc_spec fields
- Example: outputs: [{file: "report.md", doc_spec: ".deepwork/doc_specs/monthly_report.md"}]
- The doc_spec uses the full path to the doc spec file, making references self-documenting
- Doc spec-aware skill generation
- Step skills now include doc spec quality criteria, target audience, and example documents
- Both Claude and Gemini templates updated for doc spec rendering
- Document detection workflow in deepwork_jobs.define
- Steps 1.5, 1.6, 1.7 guide users through creating doc specs for document-oriented jobs
- Pattern indicators: "report", "summary", "create", "monthly", "for stakeholders"
- Doc spec improvement workflow in deepwork_jobs.learn
- Steps 3.5, 4.5 capture doc spec-related learnings and update doc spec files
- New OutputSpec dataclass in parser for structured output handling
- Comprehensive doc spec documentation in doc/doc-specs.md
- New test fixtures for doc spec validation and parsing
- Comprehensive tests for generator doc spec integration (9 new tests)
- test_load_doc_spec_returns_parsed_spec - Verifies doc spec loading
- test_load_doc_spec_caches_result - Verifies caching behavior
- test_load_doc_spec_returns_none_for_missing_file - Graceful handling of missing files
- test_generate_step_skill_with_doc_spec - End-to-end skill generation with doc spec
- test_build_step_context_includes_doc_spec_info - Context building verification
Changed
- BREAKING: Renamed document_type to doc_spec throughout the codebase
- Job.yml field: document_type → doc_spec (e.g., outputs: [{file: "report.md", doc_spec: ".deepwork/doc_specs/report.md"}])
- Class: DocumentTypeDefinition → DocSpec (backward compat alias provided)
- Methods: has_document_type() → has_doc_spec(), validate_document_type_references() → validate_doc_spec_references()
- Template variables: has_document_type → has_doc_spec, document_type → doc_spec
- Internal: _load_document_type() → _load_doc_spec(), _doc_type_cache → _doc_spec_cache
- Step.outputs changed from list[str] to list[OutputSpec] for richer output metadata
- SkillGenerator.generate_all_skills() now accepts project_root parameter for doc spec loading
- Updated deepwork_jobs to v0.6.0 with doc spec-related quality criteria
Fixed
- Fixed COMMAND rules promise handling to properly update queue status
- When an agent provides a promise tag for a FAILED command rule, the queue entry is now correctly updated to SKIPPED status
- Previously, FAILED queue entries remained in FAILED state even after being acknowledged via promise
- This ensures the rules queue accurately reflects rule state throughout the workflow
- Fixed quality criteria validation logic in skill template (#111)
- Changed promise condition from AND to OR: promise OR all criteria met now passes
- Changed failure condition from OR to AND: requires both criteria NOT met AND promise missing to fail
- This corrects the logic so the promise mechanism properly serves as a bypass for quality criteria
Migration Guide
- Update job.yml files: Change document_type: to doc_spec: in output definitions
- Update any code importing DocumentTypeDefinition: Use DocSpec instead (alias still works)
- Run deepwork install to regenerate skills with updated terminology
0.3.1
0.3.0
Added
- Cross-platform hook wrapper system for writing hooks once and running on multiple platforms
wrapper.py: Normalizes input/output between Claude Code and Gemini CLIclaude_hook.shandgemini_hook.sh: Platform-specific shell wrappersrules_check.py: Cross-platform rule evaluation hook
- Platform documentation in
doc/platforms/with hook references and learnings - Claude Code platform documentation (
doc/platforms/claude/) update.jobfor maintaining standard jobs (#41)make_new_job.shscript and templates directory for job scaffolding (#37)- Default rules template file created during
deepwork install(#42) - Full e2e test suite: define → implement → execute workflow (#45)
- Automated tests for all shell scripts and hook wrappers (#40)
- Rules system v2 with frontmatter markdown format in
.deepwork/rules/- Detection modes: trigger/safety (default), set (bidirectional), pair (directional)
- Action types: prompt (show instructions), command (run idempotent commands)
- Variable pattern matching with
{path}(multi-segment) and{name}(single-segment) - Queue system in
.deepwork/tmp/rules/queue/for state tracking and deduplication
- New core modules:
pattern_matcher.py: Variable pattern matching with regex-based capturerules_queue.py: Queue system for rule state persistencecommand_executor.py: Command action execution with variable substitution
- Updated
rules_check.pyhook to use v2 system with queue-based deduplication
Changed
- BREAKING: Refactored "commands" terminology to "skills" throughout the codebase
- Directory structure changed from
.claude/commands/to.claude/skills/ - Directory structure changed from
.gemini/commands/to.gemini/skills/ - Class renamed:
CommandGenerator→SkillGenerator - Enum renamed:
CommandLifecycleHook→SkillLifecycleHook - Class attributes renamed:
commands_dir→skills_dir,command_template→skill_template - Methods renamed:
get_commands_dir()→get_skills_dir(),generate_all_commands()→generate_all_skills(), etc. - Template files renamed:
command-job-step.md.jinja→skill-job-step.md.jinja, etc.
- Directory structure changed from
- BREAKING: Removed
uw.prefix convention for hidden steps- Step skills now use clean filenames (e.g.,
job_name.step_id.mdinstead ofuw.job_name.step_id.md) - Hidden steps use
user-invocable: falsein YAML frontmatter instead - The
exposedfield in job.yml now controls theuser-invocablefrontmatter setting
- Step skills now use clean filenames (e.g.,
- CLI output messages updated to use "skills" terminology
- Standardized on "ask structured questions" phrasing across all jobs (#48)
- deepwork_jobs bumped to v0.5.0, deepwork_rules to v0.2.0
- Documentation updated with v2 rules examples and configuration
Fixed
- Stop hooks now properly return blocking JSON (#38)
- Various CI workflow fixes (#35, #46, #47, #51, #52)
- Command rule errors now include promise skip instructions with the exact rule name
- Previously, failed command rules only showed "Command failed" with no guidance
- Now each failed rule shows:
To skip, include <promise>Rule Name</promise> in your response - This allows agents to understand how to proceed when a command rule fails
Removed
- v1 rules format (
.deepwork.rules.yml) - now only v2 frontmatter markdown format is supported
Migration Guide
- Run
deepwork install --platform claudeto regenerate skills in the new location - Remove old
.claude/commands/and.gemini/commands/directories manually - Update any custom code that imports
CommandGeneratororCommandLifecycleHook
0.2.0
0.1.1
Add policy to enforce version updates (#23) * Add version and changelog update policy Add a new policy that triggers when files in src/ are modified, requiring evaluation of whether version bumps and changelog entries are needed. The policy enforces explicit action - either updating pyproject.toml and CHANGELOG.md, or justifying why no update is needed. * Bump version to 0.1.1 Update version for new features including learn step, policy enhancements, CLA reorganization, and improved hook handling. * Update changelog with comprehensive 0.1.1 changes Include all changes from commits since 0.1.0 tag with PR references: - compare_to policy option for flexible change detection - learn command replacing refine - supplementary markdown file support - browser automation capability consideration - platform-specific reload instructions - CLA reorganization and fixes - README PyPI install instructions * Revise CHANGELOG with recent updates and fixes Updated changelog with changes to CLA files, job steps, and versioning policy. --------- Co-authored-by: Claude <noreply@anthropic.com>
Initial Release
Initial public release