tag:github.com,2008:https://github.com/Unsupervisedcom/deepwork/releasesRelease notes from deepwork2026-04-20T20:16:31Ztag:github.com,2008:Repository/1132406094/0.14.02026-04-20T20:16:35Z0.14.0<h3>Added</h3>
<ul>
<li>New <code>PLUG-REQ-001.15: Hook Script CLI Invocation</code> requirement in <code>doc/specs/deepwork/cli_plugins/PLUG-REQ-001-claude-code-plugin.md</code></li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>claude_plugin_hook_deepwork_invocation</code> review rule now requires plugin hook scripts to invoke the CLI via <code>uvx deepwork</code> instead of merely providing a <code>uvx deepwork</code> fallback (PLUG-REQ-001.15)</li>
<li>Plugin hook scripts (<code>post_commit_reminder.sh</code>, <code>deepschema_write.sh</code>, <code>post_compact.sh</code>) now invoke the <code>deepwork</code> CLI exclusively via <code>uvx deepwork ...</code>, matching the MCP server launch in <code>plugins/claude/.mcp.json</code></li>
<li>Flake <code>shellHook</code> no longer runs <code>uv tool install -e</code> — the editable user-level <code>deepwork</code> install is redundant now that plugin hooks go through <code>uvx</code></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Plugin hooks no longer fail when the end user has a stale user-level <code>deepwork</code> install (e.g., <code>uv tool install deepwork</code> pinned to an older release) that wins PATH lookup but lacks the hook module being requested. The 0.13.9 fallback still used PATH first; this release bypasses PATH entirely so hooks resolve to the same <code>uvx</code> cache that the MCP server populated</li>
</ul>
<h3>Removed</h3>nhortontag:github.com,2008:Repository/1132406094/0.13.92026-04-16T22:16:08Z0.13.9<h3>Added</h3>
<ul>
<li>New <code>claude_plugin_hook_deepwork_invocation</code> review rule in <code>plugins/claude/.deepreview</code> that flags plugin hook scripts which call bare <code>deepwork</code> without a <code>uvx deepwork</code> fallback</li>
</ul>
<h3>Changed</h3>
<h3>Fixed</h3>
<ul>
<li>Plugin hook scripts (<code>post_commit_reminder.sh</code>, <code>deepschema_write.sh</code>, <code>post_compact.sh</code>) now fall back to <code>uvx deepwork</code> when the bare <code>deepwork</code> binary is not on PATH. End-user installs launch the MCP server via <code>uvx deepwork serve</code>, so <code>deepwork</code> is not available as a command — previously these hooks failed with exit 127 on every Bash tool use, and Claude Code reported them as failed PostToolUse hooks (regression introduced in PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4245387529" data-permission-text="Title is private" data-url="https://github.com/Unsupervisedcom/deepwork/issues/361" data-hovercard-type="pull_request" data-hovercard-url="/Unsupervisedcom/deepwork/pull/361/hovercard" href="https://github.com/Unsupervisedcom/deepwork/pull/361">#361</a>)</li>
</ul>
<h3>Removed</h3>nhortontag:github.com,2008:Repository/1132406094/0.14.0a12026-04-15T23:02:09Z0.14.0a1<p>Pre-release <code>0.14.0a1</code> from branch <code>main</code>.</p>
<p><strong>To use this pre-release</strong>, subscribe to the pre-release plugin channel:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="claude plugin marketplace add Unsupervisedcom/deepwork#pre-release
claude plugin install deepwork@deepwork-plugins"><pre class="notranslate"><code>claude plugin marketplace add Unsupervisedcom/deepwork#pre-release
claude plugin install deepwork@deepwork-plugins
</code></pre></div>nhortontag:github.com,2008:Repository/1132406094/0.13.82026-04-15T22:49:31Z0.13.8<h3>Added</h3>
<h3>Changed</h3>
<ul>
<li>Renamed default reviewer agent from <code>reviewer</code> to <code>deepwork:reviewer</code> (plugin-namespaced) in review instructions output</li>
<li><code>/review</code> skill now checks for <code>deepwork:reviewer</code> agent availability before proceeding and directs users to <code>/reload-plugins</code> if missing</li>
</ul>
<h3>Fixed</h3>
<h3>Removed</h3>nhortontag:github.com,2008:Repository/1132406094/0.13.72026-04-14T16:58:58Z0.13.7<h3>Added</h3>
<h3>Changed</h3>
<h3>Fixed</h3>
<h3>Removed</h3>nhortontag:github.com,2008:Repository/1132406094/0.13.62026-04-14T15:40:41Z0.13.6<h3>Added</h3>
<h3>Changed</h3>
<ul>
<li>Deprecated the <code>steps/</code> folder pattern for job definitions — step instructions are now inlined in <code>job.yml</code>; moved supplemental reference files from <code>steps/</code> to job root directories</li>
<li>Repair workflow now instructs agents to <code>git rm</code> step instruction files after inlining</li>
<li>Moved <code>specs/</code> to <code>doc/specs/</code> and consolidated <code>docs/</code> into <code>doc/</code> to reduce root directory clutter</li>
</ul>
<h3>Removed</h3>
<ul>
<li><code>coverage_report.md</code> (stale snapshot)</li>
<li><code>job_refactor.md</code> (superseded planning notes)</li>
<li><code>CLAUDE_PLUGINS_README.md</code> (redundant with README.md)</li>
</ul>
<h3>Fixed</h3>
<h3>Removed</h3>nhortontag:github.com,2008:Repository/1132406094/0.13.52026-04-12T23:37:15Z0.13.5<h3>Added</h3>
<h3>Changed</h3>
<h3>Fixed</h3>
<h3>Removed</h3>nhortontag:github.com,2008:Repository/1132406094/0.13.42026-04-12T17:47:23Z0.13.4<h3>Added</h3>
<h3>Changed</h3>
<ul>
<li>Post-commit review reminder hook now short-circuits when all applicable (non-catch-all) review rules for the committed files are already marked as passed, emitting "No re-review needed" instead of nagging</li>
<li>Renamed all "Task tool" references to "Agent tool" across codebase to match Claude Code's current tool naming</li>
<li>Review formatter now emits <code>description</code>, <code>subagent_type</code>, and <code>prompt</code> fields (dropped <code>name</code> field) to match Agent tool signature</li>
<li>Hook wrapper tool mappings updated: <code>Task</code>/<code>task</code> → <code>Agent</code>/<code>agent</code></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Review instruction files now include a <code>## Project Root</code> directive stating the absolute project root so reviewer subagents read files from the correct working tree — fixes spurious findings in git-worktree setups where the subagent's cwd differed from the worktree the commits actually lived in (REVIEW-REQ-005.1.9)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Removed automatic DeepPlan workflow injection from startup_context.sh hook (no longer forces plan mode into DeepPlan)</li>
<li>Deprecated JOBS-REQ-014.5.1 (startup hook DeepPlan trigger) and REVIEW-REQ-006.3.3a (name field in review output)</li>
</ul>nhortontag:github.com,2008:Repository/1132406094/0.13.32026-04-10T02:46:23Z0.13.3<h3>Added</h3>
<ul>
<li><code>/record</code> skill: "watch and learn" approach to creating DeepWork workflows — users do their work normally, then <code>/deepwork learn</code> turns it into a repeatable job</li>
<li><code>/new_user</code> skill: guided onboarding that introduces DeepWork, offers review rule setup for code projects, and offers to record a first workflow</li>
<li><code>/deepwork learn</code> now routes to the <code>new_job</code> workflow when invoked after <code>/deepwork:record</code></li>
<li>Requirements specs PLUG-REQ-002 (record skill) and PLUG-REQ-003 (new user skill)</li>
<li>Anonymous DeepSchemas for both new skills</li>
</ul>
<h3>Changed</h3>
<ul>
<li>README install commands consolidated into a single <code>&&</code>-joined command ending with <code>/deepwork:new_user</code></li>
<li><code>deepwork setup</code> now opens <code>https://www.deepwork.md/success</code> in the default browser after completing configuration</li>
</ul>
<h3>Fixed</h3>
<h3>Removed</h3>nhortontag:github.com,2008:Repository/1132406094/0.13.22026-04-09T02:29:18Z0.13.2<h3>Added</h3>
<ul>
<li><code>deepwork setup</code> CLI command that auto-configures Claude Code settings (marketplace, plugin, MCP permissions, auto-update) (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4214177871" data-permission-text="Title is private" data-url="https://github.com/Unsupervisedcom/deepwork/issues/343" data-hovercard-type="pull_request" data-hovercard-url="/Unsupervisedcom/deepwork/pull/343/hovercard" href="https://github.com/Unsupervisedcom/deepwork/pull/343">#343</a>)</li>
<li><code>deepwork setup</code> also grants project-root-relative <code>Read</code>/<code>Write</code>/<code>Edit</code> permissions for <code>/.deepwork/**/*</code> so the plugin can operate on <code>.deepwork/</code> in every project without per-prompt approval</li>
<li>Integration tests for quality gate review caching (JOBS-REQ-004.5.7)</li>
<li>Requirements traceability coverage now at 100% (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4214458768" data-permission-text="Title is private" data-url="https://github.com/Unsupervisedcom/deepwork/issues/346" data-hovercard-type="pull_request" data-hovercard-url="/Unsupervisedcom/deepwork/pull/346/hovercard" href="https://github.com/Unsupervisedcom/deepwork/pull/346">#346</a>)
<ul>
<li>Added section-level REQ ID annotations to 32 existing test files for traceability</li>
<li>Wrote 218 new tests across 5 files for learning-agents requirements (LA-REQ-001, 003, 004, 005, 006, 010, 011)</li>
<li>Added 6 anonymous DeepSchemas for judgment-based learning-agents skill requirements (LA-REQ-002, 007, 008, 009, 012)</li>
<li>Added new PLUG-REQ-001.12 tests for session/agent identity injection hooks</li>
<li>New <code>req-ids-in-comments</code> requirement in the standard DeepSchema definition: requirement IDs must be placed in YAML comments, not requirement body text</li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>JOBS-REQ-004.5.7 strengthened to explicit MUST requirement for skipping already-passed reviews</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>DeepSchema PostToolUse hook (<code>deepschema_write</code>) no longer reports <code>File is not valid JSON</code> for YAML files whose name has no extension (e.g. <code>.deepreview</code>). The hook now parses target files and the referenced JSON Schema as YAML, which is a superset of JSON, so both formats are accepted regardless of file extension. DW-REQ-011.7.3 updated to match. (Mirrors the fix shipped in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4201893425" data-permission-text="Title is private" data-url="https://github.com/Unsupervisedcom/deepwork/issues/338" data-hovercard-type="pull_request" data-hovercard-url="/Unsupervisedcom/deepwork/pull/338/hovercard" href="https://github.com/Unsupervisedcom/deepwork/pull/338">#338</a> for the workflow quality gate.)</li>
<li><code>review:</code> blocks declared on <code>type: string</code> step outputs are now actually executed. Previously they were silently dropped because the review pipeline only matched against file paths, leaving authors with misconfigured-but-silent quality gates. String output reviews now produce synthetic <code>ReviewTask</code> objects with the string value carried on a new <code>ReviewTask.inline_content</code> field and rendered into the instruction file as a "Content to Review" section. New requirements: JOBS-REQ-004.8, REVIEW-REQ-005.1.8, REVIEW-REQ-009.1.7. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4228381537" data-permission-text="Title is private" data-url="https://github.com/Unsupervisedcom/deepwork/issues/350" data-hovercard-type="issue" data-hovercard-url="/Unsupervisedcom/deepwork/issues/350/hovercard" href="https://github.com/Unsupervisedcom/deepwork/issues/350">#350</a>)</li>
</ul>
<h3>Removed</h3>nhorton