Skip to content

0.3.0

Choose a tag to compare

@nhorton nhorton released this 19 Jan 00:22
· 236 commits to main since this release
53bd81e

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