Skip to content

Releases: Unsupervisedcom/deepwork

0.5.1

24 Jan 20:34
28fc9cb

Choose a tag to compare

Added

Changed

Fixed

Removed

0.5.0

24 Jan 20:32
8732620

Choose a tag to compare

Added

  • Installer now auto-adds permission for make_new_job.sh script, 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

23 Jan 19:06
e3c4e5a

Choose a tag to compare

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

20 Jan 22:12
5e18bf4

Choose a tag to compare

Added

  • created rule mode for matching only newly created files

0.3.0

19 Jan 00:22
53bd81e

Choose a tag to compare

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 CLI
    • claude_hook.sh and gemini_hook.sh: Platform-specific shell wrappers
    • rules_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.job for maintaining standard jobs (#41)
  • make_new_job.sh script 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 capture
    • rules_queue.py: Queue system for rule state persistence
    • command_executor.py: Command action execution with variable substitution
  • Updated rules_check.py hook 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: CommandGeneratorSkillGenerator
    • Enum renamed: CommandLifecycleHookSkillLifecycleHook
    • Class attributes renamed: commands_dirskills_dir, command_templateskill_template
    • Methods renamed: get_commands_dir()get_skills_dir(), generate_all_commands()generate_all_skills(), etc.
    • Template files renamed: command-job-step.md.jinjaskill-job-step.md.jinja, etc.
  • BREAKING: Removed uw. prefix convention for hidden steps
    • Step skills now use clean filenames (e.g., job_name.step_id.md instead of uw.job_name.step_id.md)
    • Hidden steps use user-invocable: false in YAML frontmatter instead
    • The exposed field in job.yml now controls the user-invocable frontmatter setting
  • 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 claude to regenerate skills in the new location
  • Remove old .claude/commands/ and .gemini/commands/ directories manually
  • Update any custom code that imports CommandGenerator or CommandLifecycleHook

0.2.0

16 Jan 01:14
eb95477

Choose a tag to compare

Prepare changelog and bump version to 0.2.0 (#54)

* Prepare release 0.2.0

- Update CHANGELOG.md with all changes since 0.1.1
- Bump version from 0.1.2 to 0.2.0

* Update uv.lock for 0.2.0

---------

Co-authored-by: Claude <noreply@anthropic.com>

0.1.1

15 Jan 18:41
98c9a90

Choose a tag to compare

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

14 Jan 18:37
2fbbcf6

Choose a tag to compare

Initial public release