<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DevFlow</title><link>https://devflow.cloud/</link><description>Recent content on DevFlow</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://devflow.cloud/index.xml" rel="self" type="application/rss+xml"/><item><title>Agents</title><link>https://devflow.cloud/docs/architecture/agents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/architecture/agents/</guid><description>&lt;p&gt;Skills are thin orchestrators. They load state, decide what to dispatch, and spawn&#10;agents — the work happens in the agents, each in its own fresh context window.&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Agent&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Quality&lt;/th&gt;&lt;th&gt;Balanced&lt;/th&gt;&lt;th&gt;Budget&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;codebase-mapper&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Analyzes a codebase from a specific angle (stack, architecture, quality, or concerns) and writes structured findings.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;debugger&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort xhigh&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Investigates bugs using a structured scientific method with persistent session state across context resets.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;executor&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort xhigh&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Executes planned tasks with atomic git commits, handles deviations, and manages checkpoints during builds.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;integration-checker&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Verifies that separately-built features connect properly and end-to-end user workflows actually work.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;job-checker&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Reviews execution plans before they run to verify they will actually achieve the objective goal.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;objective-researcher&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Researches how to implement an objective — discovers best practices, patterns, and pitfalls before planning begins.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;planner&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort xhigh&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Creates detailed execution plans for objectives with task breakdown, dependency ordering, and built-in quality checks.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;project-researcher&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Researches the domain ecosystem for a new project — stack options, architecture patterns, features, and common pitfalls.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;research-synthesizer&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Combines findings from multiple parallel research agents into a unified summary for roadmap creation.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;roadmapper&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort high&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Creates project roadmaps by breaking requirements into ordered objectives with success criteria and dependency mapping.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;security-auditor&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort xhigh&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Scans codebase for security vulnerabilities in a specific domain: secrets, auth flows, or dependency risks.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;ui-evaluator&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort high&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Machine-judges the visual correctness of Flutter UI states by capturing each declared surface, scoring it through the offline visual-eval engine, and writing evidence the verifier consumes.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;verifier&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Verifies that built code actually achieves the objective goal, not just that tasks were completed.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="how-an-agent-is-defined"&gt;How an agent is defined&lt;/h2&gt;&#10;&lt;p&gt;Each agent is a single markdown file in &lt;code&gt;plugins/devflow/agents/&lt;/code&gt; with YAML&#10;frontmatter and an XML-structured body:&lt;/p&gt;</description></item><item><title>config.json</title><link>https://devflow.cloud/docs/configuration/config-json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/configuration/config-json/</guid><description>&lt;p&gt;&lt;code&gt;.planning/config.json&lt;/code&gt; is created by &lt;code&gt;/devflow:new-project&lt;/code&gt; and edited by&#10;&lt;code&gt;/devflow:settings&lt;/code&gt;. You can also edit it directly.&lt;/p&gt;&#10;&lt;h2 id="the-shipped-defaults"&gt;The shipped defaults&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;yolo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;depth&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;standard&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;job_checker_enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;workflow&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;research&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;job_check&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;verifier&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;auto_advance&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;verifier_checkpoints&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;decision_queue&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;planning&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;commit_docs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;search_gitignored&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;parallelization&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;job_level&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;task_level&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;skip_checkpoints&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;max_concurrent_agents&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;min_jobs_for_parallel&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;gates&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_project&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_objectives&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_roadmap&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_breakdown&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_job&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;execute_next_job&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;issues_review&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_transition&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;editGate&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;strict&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;safety&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;always_confirm_destructive&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;always_confirm_external_services&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;workstreams&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;worktree_prefix&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;../{project}-ws-&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;branch_prefix&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;df/ws-&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;merge_strategy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;squash&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;repo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;milestone_prefix&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;v&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;labels&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;objective&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;devflow:objective&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;in_progress&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;devflow:in-progress&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;gaps&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;devflow:gaps&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;awareness&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;cache_ttl_minutes&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;peer_stale_days&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;branch_patterns&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;feature/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;df/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;fix/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;proposal/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;org_project_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;sibling_repos&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;eden_libs_path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;daemon&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;notifications&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;notify_on_start&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;notify_on_complete&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;auto_launch&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;multi_project&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;cross_shell&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;status_line&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="top-level"&gt;Top-level&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Field&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Values&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Meaning&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;mode&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;interactive&lt;/code&gt; / &lt;code&gt;yolo&lt;/code&gt; / &lt;code&gt;autonomous&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;yolo&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;How checkpoints behave — see below&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;depth&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;quick&lt;/code&gt; / &lt;code&gt;standard&lt;/code&gt; / &lt;code&gt;comprehensive&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;standard&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Default planning depth when the intent model does not override it&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;job_checker_enabled&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;boolean&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Whether plans are reviewed before execution&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="mode"&gt;mode&lt;/h3&gt;&#10;&lt;p&gt;The single most consequential setting.&lt;/p&gt;</description></item><item><title>Context rot</title><link>https://devflow.cloud/docs/concepts/context-rot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/context-rot/</guid><description>&lt;h2 id="what-it-is"&gt;What it is&lt;/h2&gt;&#10;&lt;p&gt;Context rot is the quality degradation that happens as an LLM fills its context&#10;window. It is not a single failure — it is a slow slide:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Early reconnaissance (files read, commands run, dead ends explored) stays in the&#10;window forever, crowding out the information that matters now.&lt;/li&gt;&#10;&lt;li&gt;Instructions given at turn 3 compete with 200 turns of tool output by turn 200.&lt;/li&gt;&#10;&lt;li&gt;The model starts repeating itself, re-reading files it already has, and&#10;re-deriving conclusions it already reached.&lt;/li&gt;&#10;&lt;li&gt;Errors compound, because a wrong assumption made early is now &amp;ldquo;established&#10;context&amp;rdquo; that later turns treat as settled.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;A single Claude Code session that researches, plans, builds and verifies a feature&#10;will hit this. Not because the model is bad, but because by the time it writes the&#10;code that matters, the signal it needs is buried under everything it did to get&#10;there.&lt;/p&gt;</description></item><item><title>Core workflow</title><link>https://devflow.cloud/docs/commands/core-workflow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/commands/core-workflow/</guid><description>&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Arguments&lt;/th&gt;&lt;th&gt;What it does&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:new-project&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[--auto]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Set up a new project from scratch — asks what you&amp;#39;re building, researches the domain, defines requirements, and creates a development roadmap.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:discuss-objective&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;objective-number&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Capture implementation decisions for an objective before planning — lock in preferences so research and planning don&amp;#39;t drift into assumptions.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:research-objective&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[objective]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Research how to build something before planning it — discovers best practices, architecture patterns, and pitfalls for the domain.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:plan-objective&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[objective] [--auto] [--research] [--skip-research] [--gaps] [--skip-verify] [--work TYPE] [--tdd POSTURE] [--depth LEVEL] [--model PROFILE]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Create a detailed execution plan for an objective, breaking it into concrete tasks with success criteria.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:execute-objective&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;phase-number&amp;gt; [--gaps-only]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Execute all planned tasks for an objective, running independent tasks in parallel for speed.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:build&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;objective-number-or-description&amp;gt; [--pause] [--skip-research] [--work TYPE] [--tdd POSTURE] [--depth LEVEL] [--model PROFILE]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Build a feature from start to finish — plans the work, executes it, and verifies the result in one command.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:verify-work&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[objective number, e.g., &amp;#39;4&amp;#39;]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Test what was built by walking through expected behavior and checking it matches reality.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:quick&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[--full]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Small features (single executor, no planner, no verifier) — between micro (1-line) and build (multi-subsystem). Cutoff: &amp;lt;5 files, &amp;lt;200 LOC, no new abstractions.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:micro&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;description&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Sub-30-LOC, single-file changes. The cheapest DevFlow path (~2k tokens). Use for typo fixes, single-line bug fixes, prop renames, dependency bumps, missing semicolons.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:debug&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[issue description]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Investigate bugs using a structured approach that survives context resets. Tracks hypotheses, evidence, and progress across sessions.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="choosing-a-tier"&gt;Choosing a tier&lt;/h2&gt;&#10;&lt;p&gt;The single biggest cost lever in DevFlow is picking the right entry point.&lt;/p&gt;</description></item><item><title>df-tools CLI</title><link>https://devflow.cloud/docs/reference/df-tools/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/reference/df-tools/</guid><description>&lt;p&gt;&lt;code&gt;df-tools&lt;/code&gt; is a CommonJS CLI, not a library. Roughly fifty skill and agent files&#10;call it. Skills resolve it through the home mirror:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;node ~/.claude/devflow/bin/df-tools.cjs &amp;lt;command&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;args&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;--raw&lt;span class="o"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;--raw&lt;/code&gt; emits compact JSON instead of pretty-printed — use it when piping.&lt;/p&gt;&#10;&lt;p&gt;Throughout this site the command is written &lt;code&gt;df-tools &amp;lt;command&amp;gt;&lt;/code&gt; for brevity.&lt;/p&gt;&#10;&lt;h2 id="complete-command-surface"&gt;Complete command surface&lt;/h2&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Subcommands&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;awareness&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;benchmark&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;changelog&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;update&lt;/code&gt; &lt;code&gt;check&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;check-todos&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;commit&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;config-ensure-section&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;config-get&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;config-set&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;context&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;current-timestamp&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;decision-queue&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;defaults-table&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;init&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;deprecation&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;detect&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;novel-domain&lt;/code&gt; &lt;code&gt;brownfield-map&lt;/code&gt; &lt;code&gt;flutter-ui-scope&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;dup-detect&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;find-objective&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;flutter-ui&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;setup&lt;/code&gt; &lt;code&gt;eval&lt;/code&gt; &lt;code&gt;bootstrap&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;frontmatter&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;get&lt;/code&gt; &lt;code&gt;set&lt;/code&gt; &lt;code&gt;merge&lt;/code&gt; &lt;code&gt;validate&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;generate&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;uat&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;generate-slug&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;gh&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;status&lt;/code&gt; &lt;code&gt;sync-objectives&lt;/code&gt; &lt;code&gt;comment&lt;/code&gt; &lt;code&gt;close-issue&lt;/code&gt; &lt;code&gt;sync-release&lt;/code&gt; &lt;code&gt;resolve&lt;/code&gt; &lt;code&gt;sync&lt;/code&gt; &lt;code&gt;pull&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;global-config&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;handoff&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;create&lt;/code&gt; &lt;code&gt;complete&lt;/code&gt; &lt;code&gt;list&lt;/code&gt; &lt;code&gt;get&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;history-digest&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;init&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;execute-objective&lt;/code&gt; &lt;code&gt;plan-objective&lt;/code&gt; &lt;code&gt;new-project&lt;/code&gt; &lt;code&gt;new-milestone&lt;/code&gt; &lt;code&gt;quick&lt;/code&gt; &lt;code&gt;resume&lt;/code&gt; &lt;code&gt;verify-work&lt;/code&gt; &lt;code&gt;objective-op&lt;/code&gt; &lt;code&gt;todos&lt;/code&gt; &lt;code&gt;milestone-op&lt;/code&gt; &lt;code&gt;map-codebase&lt;/code&gt; &lt;code&gt;security-audit&lt;/code&gt; &lt;code&gt;progress&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;initiatives&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;intent&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;resolve&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;list-todos&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;micro&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;migrate&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;plan&lt;/code&gt; &lt;code&gt;apply&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;milestone&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;complete&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;objective&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;next-decimal&lt;/code&gt; &lt;code&gt;add&lt;/code&gt; &lt;code&gt;insert&lt;/code&gt; &lt;code&gt;remove&lt;/code&gt; &lt;code&gt;complete&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;objective-job-index&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;objectives&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;list&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;org-awareness&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;override&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;planning&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;sibling-trd-scan&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;progress&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;project-accept&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;project-decline&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;project-hygiene&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;check&lt;/code&gt; &lt;code&gt;move&lt;/code&gt; &lt;code&gt;archive&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;project-state&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;requirements&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;mark-complete&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;resolve-model&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;roadmap&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;get-objective&lt;/code&gt; &lt;code&gt;analyze&lt;/code&gt; &lt;code&gt;update-job-progress&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;scaffold&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;session-audit&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;skill-active&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;skill-route&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;state&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;update&lt;/code&gt; &lt;code&gt;get&lt;/code&gt; &lt;code&gt;patch&lt;/code&gt; &lt;code&gt;advance-job&lt;/code&gt; &lt;code&gt;record-metric&lt;/code&gt; &lt;code&gt;update-progress&lt;/code&gt; &lt;code&gt;add-decision&lt;/code&gt; &lt;code&gt;add-blocker&lt;/code&gt; &lt;code&gt;resolve-blocker&lt;/code&gt; &lt;code&gt;record-session&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;state-snapshot&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;summary-extract&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;survey&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;decimal-objectives&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;sync-roadmap&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;telemetry&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;template&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;select&lt;/code&gt; &lt;code&gt;fill&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;todo&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;complete&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;transcript-export&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;trd-tdd&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;inspect&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;tui&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;validate&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;consistency&lt;/code&gt; &lt;code&gt;health&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;verify&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;job-structure&lt;/code&gt; &lt;code&gt;objective-completeness&lt;/code&gt; &lt;code&gt;references&lt;/code&gt; &lt;code&gt;commits&lt;/code&gt; &lt;code&gt;artifacts&lt;/code&gt; &lt;code&gt;key-links&lt;/code&gt; &lt;code&gt;trd-pre&lt;/code&gt; &lt;code&gt;api-contract&lt;/code&gt; &lt;code&gt;flutter-ui-bootstrap&lt;/code&gt; &lt;code&gt;flutter-state-coverage&lt;/code&gt; &lt;code&gt;flutter-ui-eval&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;verify-path-exists&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;verify-summary&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;websearch&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;workstreams&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;analyze&lt;/code&gt; &lt;code&gt;provision&lt;/code&gt; &lt;code&gt;reconcile&lt;/code&gt; &lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="the-commands-you-will-use-directly"&gt;The commands you will use directly&lt;/h2&gt;&#10;&lt;h3 id="state"&gt;State&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state &lt;span class="c1"&gt;# load and print&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state get &amp;lt;key&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state patch --key value&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state advance-job&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state update-progress&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state add-decision --objective &lt;span class="m"&gt;4&lt;/span&gt; --summary &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt; --rationale &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state add-blocker --text &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state resolve-blocker --text &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state record-metric --objective &lt;span class="m"&gt;4&lt;/span&gt; --job &lt;span class="m"&gt;02&lt;/span&gt; --duration &lt;span class="m"&gt;620&lt;/span&gt; --tasks &lt;span class="m"&gt;3&lt;/span&gt; --files &lt;span class="m"&gt;7&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state record-session --stopped-at &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt; --resume-file &amp;lt;path&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools state-snapshot&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="commits"&gt;Commits&lt;/h3&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools commit &lt;span class="s2"&gt;&amp;#34;feat(api): add rate limiting&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools commit &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt; --files src/a.go src/b.go&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools commit &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt; --amend&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is what &lt;code&gt;gate-commits&lt;/code&gt; redirects raw &lt;code&gt;git commit&lt;/code&gt; to. It preserves objective&#10;scope and task IDs and updates &lt;code&gt;STATE.md&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>GitHub integration</title><link>https://devflow.cloud/docs/guides/github/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/guides/github/</guid><description>&lt;p&gt;Opt-in. Disabled by default. Every operation is a no-op when the integration is&#10;off, &lt;code&gt;gh&lt;/code&gt; is missing, or auth has expired — GitHub failures never block your&#10;workflow.&lt;/p&gt;&#10;&lt;h2 id="enable"&gt;Enable&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;github&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;repo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;owner/name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;milestone_prefix&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;v&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;labels&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;objective&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;devflow:objective&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;in_progress&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;devflow:in-progress&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;gaps&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;devflow:gaps&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Prerequisites: the &lt;code&gt;gh&lt;/code&gt; CLI installed and authenticated. If the auth flow needs a&#10;TTY, hand it off with &lt;code&gt;/devflow:handoff&lt;/code&gt;.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools gh status &lt;span class="c1"&gt;# is the integration reachable?&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="what-syncs-and-when"&gt;What syncs, and when&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Trigger&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Action&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Manual equivalent&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;End of &lt;code&gt;/devflow:new-project&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;One milestone per roadmap version, one issue per objective; numbers persisted to &lt;code&gt;.planning/.gh-mapping.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;df-tools gh sync-objectives&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verifier finds gaps&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Posts the &lt;code&gt;gaps:&lt;/code&gt; block from &lt;code&gt;VERIFICATION.md&lt;/code&gt; as an issue comment&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;df-tools gh comment &amp;lt;obj&amp;gt; @file:path&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verification passes&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Closes the issue with a link to the verification report&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;df-tools gh close-issue &amp;lt;obj&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Tag push &lt;code&gt;vX.Y.Z&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Release notes generated from &lt;code&gt;SUMMARY.md&lt;/code&gt; files since the previous tag&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;df-tools gh sync-release vX.Y.Z&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Manual&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Any of the above&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/devflow:gh-sync [objectives|release &amp;lt;tag&amp;gt;|status]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Additional CLI surface:&lt;/p&gt;</description></item><item><title>Installation</title><link>https://devflow.cloud/docs/getting-started/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/getting-started/installation/</guid><description>&lt;h2 id="install"&gt;Install&lt;/h2&gt;&#10;&lt;p&gt;In Claude Code, add the marketplace and install the plugin:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin marketplace add AO-Cyber-Systems/devflow-claude&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin install devflow@aocyber&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can do the same thing through the Claude Desktop plugin UI: open the plugins&#10;panel, add the &lt;code&gt;AO-Cyber-Systems/devflow-claude&lt;/code&gt; marketplace, then install&#10;&lt;code&gt;devflow&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Verify it took:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:help&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="what-installation-registers"&gt;What installation registers&lt;/h2&gt;&#10;&lt;p&gt;Enabling the plugin wires up four things automatically. You do not edit&#10;&lt;code&gt;settings.json&lt;/code&gt; by hand.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Thing&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Count&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Where it lives&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Skills (slash commands)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;31&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;plugins/devflow/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Subagents&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;13&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;plugins/devflow/agents/*.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hooks&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;15 files, 12 registered&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;plugins/devflow/hooks/hooks.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status line&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;declared in &lt;code&gt;plugin.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="the-runtime-mirror"&gt;The runtime mirror&lt;/h2&gt;&#10;&lt;p&gt;Skills and agents reference shared files with &lt;code&gt;@~/.claude/devflow/...&lt;/code&gt; paths.&#10;Those &lt;code&gt;@path&lt;/code&gt; references are resolved by Claude Code and &lt;strong&gt;do not&lt;/strong&gt; interpolate&#10;&lt;code&gt;${CLAUDE_PLUGIN_ROOT}&lt;/code&gt;, so the plugin cannot reference its own bundled runtime&#10;directly.&lt;/p&gt;</description></item><item><title>File structure</title><link>https://devflow.cloud/docs/reference/file-structure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/reference/file-structure/</guid><description>&lt;h2 id="project-root"&gt;Project root&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.planning/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; PROJECT.md vision, constraints, `kind` on frontmatter&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; REQUIREMENTS.md scoped v1/v2 requirements with stable IDs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ROADMAP.md objectives in dependency order, with checkboxes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; STATE.md decisions, blockers, position, session history&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; MILESTONES.md archive of completed milestones&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SESSION_PICKUP.md resume note written by `status pause`&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; STATE_ARCHIVE.md rolled-off state history&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; config.json workflow configuration&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; state.json machine-readable position mirror&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="subdirectories"&gt;Subdirectories&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; research/ domain research (new-project)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; codebase/ brownfield mapping (map-codebase)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; todos/pending/ captured ideas&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; todos/done/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; debug/ active debug sessions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; debug/resolved/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; decisions/pending/ parked DECISION-NNN.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; milestones/ archived milestone directories&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; quick/ quick-job records&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="per-objective"&gt;Per objective&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; objectives/NN-objective-name/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; OBJECTIVE.md goal, success criteria, `work` on frontmatter&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; CONTEXT.md your preferences (discuss-objective)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; RESEARCH.md ecosystem research (research-objective)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; NN-YY-JOB.md atomic execution plan, one per job&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; NN-YY-SUMMARY.md execution outcome and evidence&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; VERIFICATION.md verification results&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; UAT.md acceptance walkthrough&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; verification/ Maestro YAML flows, capture manifests&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="markers-and-caches"&gt;Markers and caches&lt;/h2&gt;&#10;&lt;p&gt;Rarely touched, but they explain otherwise-confusing behaviour.&lt;/p&gt;</description></item><item><title>Hooks</title><link>https://devflow.cloud/docs/architecture/hooks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/architecture/hooks/</guid><description>&lt;p&gt;Hooks run in a separate process, receive the tool call as JSON on stdin, and can&#10;inject context, warn, or block execution outright. They are the difference between&#10;a convention and a rule.&lt;/p&gt;&#10;&lt;p&gt;All hooks are declared in &lt;code&gt;plugins/devflow/hooks/hooks.json&lt;/code&gt; and registered&#10;automatically when the plugin is enabled. Every command uses&#10;&lt;code&gt;${CLAUDE_PLUGIN_ROOT}&lt;/code&gt; for path resolution.&lt;/p&gt;&#10;&lt;h2 id="enforcement--these-can-block"&gt;Enforcement — these can block&lt;/h2&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Hook&lt;/th&gt;&lt;th&gt;Event&lt;/th&gt;&lt;th&gt;What it does&lt;/th&gt;&lt;th&gt;Escape hatch&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;changelog-on-tag.js&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip"&gt;PreToolUse (Bash)&lt;/span&gt; &lt;/td&gt;&#10; &lt;td&gt;Blocks &lt;code&gt;git tag -a vX.Y.Z&lt;/code&gt; unless CHANGELOG.md has a &lt;code&gt;## [X.Y.Z]&lt;/code&gt; heading and the three release manifests carry matching versions.&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_CHANGELOG_GATE=1&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;gate-commits.js&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip"&gt;PreToolUse (Bash)&lt;/span&gt; &lt;/td&gt;&#10; &lt;td&gt;Blocks raw &lt;code&gt;git commit&lt;/code&gt; and redirects to &lt;code&gt;df-tools commit&lt;/code&gt;, which preserves objective scope and task IDs and updates STATE.md. Detection is invocation-aware: heredoc bodies and quoted arguments are stripped first, so prose that merely mentions the command is not gated.&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;DEVFLOW_ALLOW_RAW_COMMIT=1&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;gate-edits.js&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip"&gt;PreToolUse (Edit|Write|MultiEdit)&lt;/span&gt; &lt;/td&gt;&#10; &lt;td&gt;Strict DENY by default in ambient mode. Allows edits when a live &lt;code&gt;.planning/.skill-active&lt;/code&gt; marker exists (resolved from both the local and the main checkout, so worktree-isolated agents are not denied by a marker they cannot see), when the prompt carries an override phrase, or when the env escape is set. Targets outside the project root are never gated. Severity is per-project via &lt;code&gt;gates.editGate&lt;/code&gt;.&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_EDIT_GATE=1&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;gate-interactive.js&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip"&gt;PreToolUse (Bash)&lt;/span&gt; &lt;/td&gt;&#10; &lt;td&gt;Intercepts TTY-requiring commands and routes them to the handoff watcher rather than letting them hang on a prompt no one can answer.&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;guard-no-progress.js&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip"&gt;PreToolUse (*)&lt;/span&gt; &lt;/td&gt;&#10; &lt;td&gt;Detects the same tool being called with identical arguments repeatedly: warns at 3, escalates to &lt;code&gt;ask&lt;/code&gt; at 5, and resets whenever the agent varies its approach. Step limits cannot catch a stuck loop — they only fire once the whole budget is spent.&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_PROGRESS_GUARD=1&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;route-intent.js&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip"&gt;UserPromptSubmit&lt;/span&gt; &lt;/td&gt;&#10; &lt;td&gt;Matches the prompt against build/plan/verify/debug intent and injects a directive to route through the matching skill instead of editing code directly. Regexes require imperative form, so plain questions do not trip it.&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h3 id="gate-edits-is-the-one-you-will-meet"&gt;gate-edits is the one you will meet&lt;/h3&gt;&#10;&lt;p&gt;In ambient mode — DevFlow project detected, no skill running — &lt;code&gt;gate-edits&lt;/code&gt;&#10;&lt;strong&gt;denies&lt;/strong&gt; &lt;code&gt;Edit&lt;/code&gt;, &lt;code&gt;Write&lt;/code&gt; and &lt;code&gt;MultiEdit&lt;/code&gt; by default. That is intentional: it is&#10;what forces work through skills instead of ad-hoc edits that leave no plan, no&#10;summary and no atomic commits.&lt;/p&gt;</description></item><item><title>Model profiles</title><link>https://devflow.cloud/docs/configuration/model-profiles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/configuration/model-profiles/</guid><description>&lt;h2 id="switching-profile"&gt;Switching profile&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:set-profile quality&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:set-profile balanced&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:set-profile budget&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or for one run only, without changing any files:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:build 4 --model budget&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="the-assignment-table"&gt;The assignment table&lt;/h2&gt;&#10;&lt;p&gt;Generated from &lt;code&gt;references/model-profiles.json&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Agent&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Quality&lt;/th&gt;&lt;th&gt;Balanced&lt;/th&gt;&lt;th&gt;Budget&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;codebase-mapper&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Analyzes a codebase from a specific angle (stack, architecture, quality, or concerns) and writes structured findings.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;debugger&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort xhigh&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Investigates bugs using a structured scientific method with persistent session state across context resets.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;executor&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort xhigh&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Executes planned tasks with atomic git commits, handles deviations, and manages checkpoints during builds.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;integration-checker&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Verifies that separately-built features connect properly and end-to-end user workflows actually work.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;job-checker&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Reviews execution plans before they run to verify they will actually achieve the objective goal.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;objective-researcher&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Researches how to implement an objective — discovers best practices, patterns, and pitfalls before planning begins.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;planner&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort xhigh&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Creates detailed execution plans for objectives with task breakdown, dependency ordering, and built-in quality checks.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;project-researcher&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Researches the domain ecosystem for a new project — stack options, architecture patterns, features, and common pitfalls.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;research-synthesizer&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Combines findings from multiple parallel research agents into a unified summary for roadmap creation.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;roadmapper&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort high&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Creates project roadmaps by breaking requirements into ordered objectives with success criteria and dependency mapping.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;security-auditor&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort xhigh&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Scans codebase for security vulnerabilities in a specific domain: secrets, auth flows, or dependency risks.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;ui-evaluator&lt;/code&gt;&lt;br&gt;&lt;span class="chip"&gt;effort high&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Machine-judges the visual correctness of Flutter UI states by capturing each declared surface, scoring it through the offline visual-eval engine, and writing evidence the verifier consumes.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;opus&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;verifier&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Verifies that built code actually achieves the objective goal, not just that tasks were completed.&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;sonnet&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span class="chip gold"&gt;haiku&lt;/span&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;The assignment is not uniform, and that is the point. Under &lt;code&gt;budget&lt;/code&gt;, &lt;code&gt;planner&lt;/code&gt;&#10;still drops only to Sonnet while &lt;code&gt;codebase-mapper&lt;/code&gt; drops to Haiku — a bad plan&#10;costs a whole build, a slightly worse codebase map costs a re-read.&lt;/p&gt;</description></item><item><title>Parallel workstreams</title><link>https://devflow.cloud/docs/guides/workstreams/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/guides/workstreams/</guid><description>&lt;p&gt;Wave parallelism runs independent &lt;em&gt;jobs&lt;/em&gt; inside one objective. Workstreams run&#10;independent &lt;em&gt;objectives&lt;/em&gt; — each in its own git worktree and branch.&lt;/p&gt;&#10;&lt;div class="callout warn"&gt;&lt;p class="callout-title"&gt;User-typed only&lt;/p&gt;&#10; &lt;code&gt;/devflow:workstreams&lt;/code&gt; carries &lt;code&gt;disable-model-invocation: true&lt;/code&gt;. Claude cannot fire&#10;it. Creating and merging concurrent worktrees is not something to trigger by&#10;accident.&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="the-cycle"&gt;The cycle&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:workstreams setup # analyse independence, provision worktrees&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:workstreams status # what&amp;#39;s running where&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:workstreams run # execute across streams&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:workstreams merge # merge completed streams back&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="setup-analyses-independence-first"&gt;Setup analyses independence first&lt;/h2&gt;&#10;&lt;p&gt;Not every pair of objectives can run concurrently. &lt;code&gt;setup&lt;/code&gt; runs a dependency&#10;analysis and excludes objectives that touch the same modules, because the merge&#10;would conflict and you would spend more time resolving than you saved.&lt;/p&gt;</description></item><item><title>Quickstart</title><link>https://devflow.cloud/docs/getting-started/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/getting-started/quickstart/</guid><description>&lt;p&gt;This walks the shortest path that still exercises the whole loop. Use a scratch&#10;directory — you are going to let agents write code.&lt;/p&gt;&#10;&lt;h2 id="1-initialise"&gt;1. Initialise&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir hello-devflow &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; hello-devflow &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git init&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude --dangerously-skip-permissions&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the session:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:new-project&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;DevFlow asks what you&amp;rsquo;re building, researches the domain, scopes requirements into&#10;v1 and v2, and writes a roadmap. You will be asked to confirm at three gates&#10;(project, requirements, roadmap) — that is &lt;code&gt;gates.confirm_*&lt;/code&gt; doing its job.&lt;/p&gt;</description></item><item><title>Status and navigation</title><link>https://devflow.cloud/docs/commands/status-navigation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/commands/status-navigation/</guid><description>&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Arguments&lt;/th&gt;&lt;th&gt;What it does&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:status&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[check | pause | resume]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Consolidated status/resume/pause/health — `/devflow:status [resume|pause|check]`.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:help&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Show available DevFlow commands and usage guide.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:todo&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;add|list&amp;gt; [args...]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Manage todos: capture an idea/task or view the morning standup across local &amp;#43; GitHub &amp;#43; peer sources.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:decide&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[&amp;lt;decision-id&amp;gt; &amp;lt;choice&amp;gt;]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Resolve a parked decision and resume autonomous execution.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:awareness&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[--peer-only|--org-only] [--quarter Q] [--product P] [--refresh [peer|org]] [--no-fetch] [--raw]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Show cross-repo awareness: peer view (who&amp;#39;s working on what in this repo) and org-wide progress (Product Roadmap). Renders both views by default.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:tui&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[--once] [--raw] [--no-color] [--reset-only]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Open the program-aware TUI viewer — read-only terminal UI showing parallel sessions, org tree, and active initiatives in three stacked panels. tmux-safe; reflows narrow terminals.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="devflowstatus"&gt;/devflow:status&lt;/h2&gt;&#10;&lt;p&gt;The consolidated status command. Four behaviours, one entry point.&lt;/p&gt;</description></item><item><title>The loop</title><link>https://devflow.cloud/docs/concepts/the-loop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/the-loop/</guid><description>&lt;p&gt;DevFlow&amp;rsquo;s lifecycle is a loop you can enter and leave at any point. Each phase&#10;produces artifacts on disk; the next phase reads them. Nothing is passed through&#10;the conversation.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;new-project → discuss-objective → plan-objective → execute-objective → verify-work → milestone complete&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └───────────────────────────────── next milestone ──────────────────────────────────────┘&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="1-new-project"&gt;1. new-project&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt; &lt;code&gt;/devflow:new-project&lt;/code&gt; · &lt;strong&gt;Agents:&lt;/strong&gt; &lt;code&gt;project-researcher&lt;/code&gt;, &lt;code&gt;research-synthesizer&lt;/code&gt;, &lt;code&gt;roadmapper&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Interviews you, researches the domain in parallel, scopes requirements into v1/v2,&#10;and orders objectives into a roadmap.&lt;/p&gt;</description></item><item><title>Gates and enforcement</title><link>https://devflow.cloud/docs/configuration/gates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/configuration/gates/</guid><description>&lt;p&gt;DevFlow has two kinds of gate and they are easy to confuse.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Confirmation gates&lt;/strong&gt; are workflow pauses configured in &lt;code&gt;config.json&lt;/code&gt; — points&#10;where DevFlow asks you before proceeding.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Enforcement gates&lt;/strong&gt; are hooks that block tool calls outright. They are not&#10;configurable per-decision; they are on or off.&lt;/p&gt;&#10;&lt;h2 id="confirmation-gates"&gt;Confirmation gates&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;gates&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_project&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_objectives&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_roadmap&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_breakdown&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_job&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;execute_next_job&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;issues_review&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;confirm_transition&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Gate&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Fires when&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;confirm_project&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;after &lt;code&gt;PROJECT.md&lt;/code&gt; is drafted&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;confirm_objectives&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;after objectives are proposed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;confirm_roadmap&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;after the roadmap is assembled&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;confirm_breakdown&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;after an objective is broken into jobs&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;confirm_job&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;before each job executes&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;execute_next_job&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;between jobs&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;issues_review&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;when verification finds gaps&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;confirm_transition&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;at milestone transitions&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Turn them off as you build trust on a project. &lt;code&gt;confirm_roadmap&lt;/code&gt; is the one worth&#10;keeping longest — a wrong roadmap costs the most to discover late.&lt;/p&gt;</description></item><item><title>Glossary</title><link>https://devflow.cloud/docs/reference/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/reference/glossary/</guid><description>&lt;p&gt;&lt;strong&gt;Ambient mode&lt;/strong&gt; — a session in a DevFlow project with no skill currently running.&#10;&lt;code&gt;gate-edits&lt;/code&gt; denies direct edits in this mode by default.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Atomic commit&lt;/strong&gt; — one commit per task, carrying objective scope and task ID.&#10;Produced by &lt;code&gt;df-tools commit&lt;/code&gt;, enforced by &lt;code&gt;gate-commits&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Checkpoint&lt;/strong&gt; — a formalised stop in an execution plan. Three types:&#10;&lt;code&gt;human-verify&lt;/code&gt;, &lt;code&gt;decision&lt;/code&gt;, &lt;code&gt;human-action&lt;/code&gt;. Behaviour depends on &lt;code&gt;mode&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Confidence tag&lt;/strong&gt; — &lt;code&gt;VERIFIED&lt;/code&gt; or &lt;code&gt;SUSPECTED&lt;/code&gt; on every finding from&#10;&lt;code&gt;codebase-mapper&lt;/code&gt; and &lt;code&gt;security-auditor&lt;/code&gt;. Only &lt;code&gt;VERIFIED&lt;/code&gt; findings are acted on&#10;downstream.&lt;/p&gt;</description></item><item><title>Managing the plan</title><link>https://devflow.cloud/docs/commands/planning-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/commands/planning-management/</guid><description>&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Arguments&lt;/th&gt;&lt;th&gt;What it does&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:objective&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;add|remove&amp;gt; [args...]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Add or remove an objective from the current milestone roadmap.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:milestone&lt;/code&gt;&lt;br&gt;&lt;span class="chip warn"&gt;type it yourself&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;new|audit|complete|gaps&amp;gt; [args...]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Manage milestones: start a new one, audit a finished one, complete it, or plan gap-closure objectives.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:list-objective-assumptions&lt;/code&gt;&lt;br&gt;&lt;span class="chip warn"&gt;type it yourself&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[objective]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;See what Claude plans to do for an objective before it starts, so you can course-correct early.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:sync-roadmap&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[--dry-run] [--interactive] [--raw]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Reconcile ROADMAP.md checkbox state against on-disk SUMMARY.md presence. Default: silently corrects drift; --dry-run previews; --interactive prompts per change.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:cleanup&lt;/code&gt;&lt;br&gt;&lt;span class="chip warn"&gt;type it yourself&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Archive old objective directories from completed milestones to reduce clutter.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="callout warn"&gt;&lt;p class="callout-title"&gt;Most of these are user-typed only&lt;/p&gt;</description></item><item><title>Plugin layout</title><link>https://devflow.cloud/docs/architecture/plugin-layout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/architecture/plugin-layout/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plugins/devflow/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .claude-plugin/plugin.json manifest — name, version, statusLine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── skills/&amp;lt;name&amp;gt;/SKILL.md user-invocable slash commands&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── agents/&amp;lt;agent&amp;gt;.md subagent prompts&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── hooks/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── hooks.json event registrations, auto-loaded&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── sync-runtime.js SessionStart: mirrors devflow/ → ~/.claude/devflow/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── *.js the rest of the hooks&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── devflow/ runtime, mirrored to ~/.claude/devflow/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── bin/df-tools.cjs the central CLI&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── bin/lib/*.cjs df-tools internals&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── workflows/&amp;lt;name&amp;gt;.md workflow bodies, referenced via @~/.claude/devflow/...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── references/&amp;lt;name&amp;gt;.md static docs agents read at runtime&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── templates/&amp;lt;name&amp;gt;.md files copied into user projects&amp;#39; .planning/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="skills"&gt;Skills&lt;/h2&gt;&#10;&lt;p&gt;A skill is a directory containing exactly one &lt;code&gt;SKILL.md&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>The .planning directory</title><link>https://devflow.cloud/docs/concepts/planning-directory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/planning-directory/</guid><description>&lt;p&gt;&lt;code&gt;.planning/&lt;/code&gt; is the project&amp;rsquo;s memory. It is the reason DevFlow survives context&#10;resets: nothing important lives in the conversation.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.planning/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; PROJECT.md vision, context, `kind` — loaded on nearly every operation&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; REQUIREMENTS.md scoped v1/v2 requirements with stable IDs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ROADMAP.md objectives in dependency order, with checkboxes&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; STATE.md decisions, blockers, position, session memory&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; MILESTONES.md archive of completed milestones&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; config.json workflow configuration&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; state.json machine-readable position mirror&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; research/ domain research from new-project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; codebase/ brownfield mapping from map-codebase&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; todos/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pending/ captured ideas awaiting work&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; done/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; debug/ active debug sessions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; resolved/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; decisions/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pending/ parked DECISION-NNN.md awaiting your answer&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; milestones/ archived milestone directories&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; objectives/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; NN-objective-name/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; OBJECTIVE.md goal, success criteria, `work` type&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; CONTEXT.md your implementation preferences (discuss-objective)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; RESEARCH.md ecosystem research (research-objective)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; NN-YY-JOB.md atomic execution plan, one per job&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; NN-YY-SUMMARY.md execution outcome, decisions, evidence&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; VERIFICATION.md post-execution verification results&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; UAT.md user acceptance walkthrough&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; verification/ Maestro YAML flows, capture manifests&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="the-files-you-will-actually-read"&gt;The files you will actually read&lt;/h2&gt;&#10;&lt;h3 id="projectmd"&gt;PROJECT.md&lt;/h3&gt;&#10;&lt;p&gt;Short by design — it is loaded on nearly every operation, so every line costs&#10;context on every command. Vision, constraints, key decisions, and the project&#10;&lt;code&gt;kind&lt;/code&gt; on frontmatter.&lt;/p&gt;</description></item><item><title>The handoff watcher</title><link>https://devflow.cloud/docs/guides/handoff/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/guides/handoff/</guid><description>&lt;p&gt;Some commands cannot run in an agent&amp;rsquo;s non-interactive Bash. Without a mechanism,&#10;Claude has to stop and ask you to paste &lt;code&gt;! cmd&lt;/code&gt;, which breaks both its flow and&#10;your concentration.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;devflow-watch&lt;/code&gt; is a small local daemon that closes that loop.&lt;/p&gt;&#10;&lt;h2 id="quick-start"&gt;Quick start&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;devflow-watch start &lt;span class="c1"&gt;# start the daemon for the current project&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;devflow-watch status &lt;span class="c1"&gt;# verify&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;devflow-watch stop&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That is the whole setup. From then on, when Claude tries to run something on the&#10;allowlist, the &lt;code&gt;gate-interactive&lt;/code&gt; hook queues it instead of failing, the daemon&#10;executes it in your interactive shell, and the &lt;code&gt;route-results&lt;/code&gt; hook injects the&#10;result into Claude&amp;rsquo;s next turn.&lt;/p&gt;</description></item><item><title>Your first project</title><link>https://devflow.cloud/docs/getting-started/first-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/getting-started/first-project/</guid><description>&lt;p&gt;&lt;code&gt;/devflow:new-project&lt;/code&gt; is the only command that creates &lt;code&gt;.planning/&lt;/code&gt; from nothing.&#10;Everything downstream reads what it writes, so it is worth understanding what&#10;comes out.&lt;/p&gt;&#10;&lt;h2 id="the-interview"&gt;The interview&lt;/h2&gt;&#10;&lt;p&gt;DevFlow asks what you&amp;rsquo;re building. Answer in prose — a paragraph is plenty. It&#10;uses your answer to decide how much research it needs and what &lt;code&gt;kind&lt;/code&gt; the project&#10;is.&lt;/p&gt;&#10;&lt;p&gt;You can skip the interview entirely with &lt;code&gt;--auto&lt;/code&gt;, which makes reasonable&#10;assumptions and moves straight to research. Use it when you already know exactly&#10;what you want and would rather correct a draft than answer questions.&lt;/p&gt;</description></item><item><title>Advanced execution</title><link>https://devflow.cloud/docs/commands/advanced-execution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/commands/advanced-execution/</guid><description>&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Arguments&lt;/th&gt;&lt;th&gt;What it does&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:workstreams&lt;/code&gt;&lt;br&gt;&lt;span class="chip warn"&gt;type it yourself&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;setup|status|merge|run&amp;gt; [args...]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Run independent objectives in parallel using git worktrees, then merge results back.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:flow&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;description of the multi-step flow&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Orchestrate a multi-step DevFlow workflow by chaining skills. Use when the user wants to invoke a sequence of skills as one ask (e.g., &amp;#34;build and sync to github&amp;#34;, &amp;#34;research, plan, then build&amp;#34;, &amp;#34;ship and announce&amp;#34;).&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:handoff&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;command to run interactively or via user shell&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Hand off a TTY-required or shell-env-dependent command to the user&amp;#39;s shell.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="devflowworkstreams"&gt;/devflow:workstreams&lt;/h2&gt;&#10;&lt;p&gt;Runs independent &lt;em&gt;objectives&lt;/em&gt; in parallel using git worktrees, then merges them&#10;back. This is a level above wave parallelism — waves parallelise jobs inside one&#10;objective; workstreams parallelise whole objectives.&lt;/p&gt;</description></item><item><title>Environment variables</title><link>https://devflow.cloud/docs/configuration/environment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/configuration/environment/</guid><description>&lt;h2 id="escape-hatches"&gt;Escape hatches&lt;/h2&gt;&#10;&lt;p&gt;Prefer one-off use over exporting. An exported escape hatch is a removed gate.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DEVFLOW_ALLOW_RAW_COMMIT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; git commit -m &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Variable&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Effect&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_ALLOW_RAW_COMMIT=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Allow raw &lt;code&gt;git commit&lt;/code&gt;, bypassing &lt;code&gt;gate-commits&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_EDIT_GATE=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Disable &lt;code&gt;gate-edits&lt;/code&gt; entirely&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_CHANGELOG_GATE=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Allow &lt;code&gt;git tag -a&lt;/code&gt; without a changelog entry&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_PROGRESS_GUARD=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Disable the repeated-call guard&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_INTERACTIVE_GATE=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Disable interactive-command interception&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="session-behaviour"&gt;Session behaviour&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Variable&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Effect&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_CLASSIFY=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Skip session classification and the routing preamble&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_AWARENESS_POPULATE=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Skip the background awareness cache warm&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_ORG_CONTEXT=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Skip org-context injection at planning time&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_HANDOFF_INJECT=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Skip handoff result injection&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_SKIP_HANDOFF_RESULTS=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Skip handoff result routing&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="paths-and-overrides"&gt;Paths and overrides&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Variable&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Effect&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_HOME&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Override the runtime mirror location (default &lt;code&gt;~/.claude/devflow&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_AUDIT_LOG_PATH&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Where the Stop-hook audit log is written&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_MODEL_PROFILE&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Force a model profile for the session&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_OWNED&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Marks a path as DevFlow-managed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="handoff-daemon"&gt;Handoff daemon&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Variable&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Effect&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_HANDOFF_PID_FILE&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Override the daemon PID file location&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_WATCH_ALLOW_FILE&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Path to a custom allowlist&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_HANDOFF_RESULT_TTL_MS&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;How long an unconsumed result stays valid&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="deprecated"&gt;Deprecated&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Variable&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Status&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DEVFLOW_STRICT_EDITS=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No longer needed — strict is the default. Use &lt;code&gt;gates.editGate&lt;/code&gt; to &lt;em&gt;relax&lt;/em&gt; it.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="claude-code-variables"&gt;Claude Code variables&lt;/h2&gt;&#10;&lt;p&gt;Two are worth an explicit position, because tuning them looks helpful and is not.&lt;/p&gt;</description></item><item><title>Existing codebases</title><link>https://devflow.cloud/docs/getting-started/existing-codebase/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/getting-started/existing-codebase/</guid><description>&lt;p&gt;DevFlow&amp;rsquo;s default assumption is a greenfield project. On an existing codebase, the&#10;roadmapper needs to know what is already there or it will plan work that duplicates&#10;or contradicts it.&lt;/p&gt;&#10;&lt;h2 id="map-first"&gt;Map first&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:map-codebase&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This dispatches &lt;code&gt;codebase-mapper&lt;/code&gt; agents in parallel, each analysing a different&#10;angle:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Stack&lt;/strong&gt; — languages, frameworks, build tooling, dependency posture.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Architecture&lt;/strong&gt; — module boundaries, data flow, entry points.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Quality&lt;/strong&gt; — test coverage shape, conventions actually followed (not the ones&#10;in the style guide).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Concerns&lt;/strong&gt; — things that will bite: coupling, dead code, risky patterns.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Findings land in &lt;code&gt;.planning/codebase/&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>The intent model</title><link>https://devflow.cloud/docs/concepts/intent-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/intent-model/</guid><description>&lt;p&gt;Uniform rigor is wrong in both directions: it over-tests throwaway spikes and&#10;under-tests payment paths. DevFlow&amp;rsquo;s intent model derives the right posture from&#10;two declarations.&lt;/p&gt;&#10;&lt;h2 id="the-two-axes"&gt;The two axes&lt;/h2&gt;&#10;&lt;p&gt;&lt;span class="microlabel"&gt;Project kinds&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span class="chip gold"&gt;api&lt;/span&gt; &lt;span class="chip gold"&gt;app&lt;/span&gt; &lt;span class="chip gold"&gt;library&lt;/span&gt; &lt;span class="chip gold"&gt;ui-lib&lt;/span&gt; &lt;span class="chip gold"&gt;cli&lt;/span&gt; &lt;span class="chip gold"&gt;plugin&lt;/span&gt; &lt;/p&gt;&#10;&lt;p&gt;&lt;span class="microlabel"&gt;Work types&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span class="chip gold"&gt;feature&lt;/span&gt; &lt;span class="chip gold"&gt;port&lt;/span&gt; &lt;span class="chip gold"&gt;refactor&lt;/span&gt; &lt;span class="chip gold"&gt;foundation&lt;/span&gt; &lt;span class="chip gold"&gt;bugfix&lt;/span&gt; &lt;span class="chip gold"&gt;prototype&lt;/span&gt; &lt;span class="chip gold"&gt;spike&lt;/span&gt; &lt;/p&gt;&#10;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;kind&lt;/code&gt;&lt;/strong&gt; is declared once, on &lt;code&gt;PROJECT.md&lt;/code&gt; frontmatter. It says what sort of&#10;software this is.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;work&lt;/code&gt;&lt;/strong&gt; is declared per objective, on &lt;code&gt;OBJECTIVE.md&lt;/code&gt; frontmatter, or inherited&#10;from &lt;code&gt;PROJECT.md&lt;/code&gt;&amp;rsquo;s &lt;code&gt;default_work&lt;/code&gt;. It says what sort of change this objective is.&lt;/p&gt;</description></item><item><title>UI evaluation</title><link>https://devflow.cloud/docs/guides/ui-eval/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/guides/ui-eval/</guid><description>&lt;p&gt;Screenshots that a human glances at are not evidence. The UI eval pipeline captures&#10;each declared UI state, scores it through an offline visual-eval engine, and writes&#10;machine-readable evidence the &lt;code&gt;verifier&lt;/code&gt; consumes and gates on.&lt;/p&gt;&#10;&lt;h2 id="running-it"&gt;Running it&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:ui-eval 6&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:ui-eval path/to/manifest.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="the-pipeline"&gt;The pipeline&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;declare surfaces → capture each state → score offline → evidence → verifier gates&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (manifest) (Maestro / Playwright) (visual-eval) (JSON) (pass / fail)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;ui-evaluator&lt;/code&gt; agent drives it. Backend selection is automatic: Flutter&#10;surfaces go through Maestro, web through Playwright.&lt;/p&gt;</description></item><item><title>Integrations and analysis</title><link>https://devflow.cloud/docs/commands/integrations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/commands/integrations/</guid><description>&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Arguments&lt;/th&gt;&lt;th&gt;What it does&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:gh-sync&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[objectives|release &amp;lt;tag&amp;gt;|status|&amp;lt;objective_id&amp;gt;]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Sync DevFlow planning state to GitHub — create/update objective issues, generate release notes, or push a single objective&amp;#39;s state (body &amp;#43; sticky comment &amp;#43; Project v2 fields).&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:initiatives&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[sync [--initiative &amp;lt;slug&amp;gt;] [--project-id &amp;lt;id&amp;gt;] [--force]] | [list [--home &amp;lt;path&amp;gt;]] | [show &amp;lt;slug&amp;gt;]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Manage strategic initiative context — sync GitHub Epics to disk, list cached initiatives, or show a single initiative body. Planner reads these at plan time.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:ui-eval&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[objective number or manifest path]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Run the UI visual-evaluation pipeline on a Flutter surface or objective: capture each declared UI state, score it through the offline visual-eval engine, and write machine-judged evidence the verifier consumes.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:security-audit&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[optional: path scope like &amp;#39;src/api&amp;#39; or focus filter like &amp;#39;secrets-only&amp;#39;, &amp;#39;auth-only&amp;#39;, &amp;#39;deps-only&amp;#39;]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Scan the codebase for security vulnerabilities — checks for secrets, auth flaws, dependency risks, and OWASP Top 10 issues.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:map-codebase&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;[optional: specific area to map, e.g., &amp;#39;api&amp;#39; or &amp;#39;auth&amp;#39;]&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Analyze an existing codebase to understand its stack, architecture, conventions, and concerns before starting new work.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="devflowgh-sync"&gt;/devflow:gh-sync&lt;/h2&gt;&#10;&lt;p&gt;Pushes planning state to GitHub. One-way: planning files stay authoritative,&#10;GitHub is derivative.&lt;/p&gt;</description></item><item><title>Telemetry and auditing</title><link>https://devflow.cloud/docs/guides/telemetry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/guides/telemetry/</guid><description>&lt;p&gt;Everything here is local. It reads your own session transcripts on your own machine&#10;and writes to your own filesystem. Nothing is transmitted.&lt;/p&gt;&#10;&lt;h2 id="context-composition"&gt;Context composition&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools context --limit &lt;span class="m"&gt;150&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools context --root /path/to/projects --raw&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Recomputes where the context window actually goes, from your own transcripts: tool&#10;results versus tool-call inputs versus assistant text versus images, plus per-tool&#10;call counts and averages.&lt;/p&gt;&#10;&lt;div class="callout"&gt;&lt;p class="callout-title"&gt;Images are priced per block&lt;/p&gt;&#10; &lt;code&gt;df-tools context&lt;/code&gt; prices images at roughly 1,500 tokens per block rather than by&#10;base64 length. Counting base64 characters overstates image cost by about 25× —&#10;that was the one real error in the original context audit.&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;See &lt;a href="https://devflow.cloud/docs/concepts/context-discipline/"&gt;context discipline&lt;/a&gt; for what to do with&#10;the numbers.&lt;/p&gt;</description></item><item><title>Waves and checkpoints</title><link>https://devflow.cloud/docs/concepts/waves/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/waves/</guid><description>&lt;h2 id="wave-based-parallelism"&gt;Wave-based parallelism&lt;/h2&gt;&#10;&lt;p&gt;The planner records a dependency position on each job. At execution time, jobs are&#10;grouped into waves: everything in a wave is independent of everything else in that&#10;wave, so it can run concurrently.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wave 1: job 4-01 job 4-02 job 4-03 ← no dependencies, run together&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ │ │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────┴──────────┘&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wave 2: job 4-04 ← depends on wave 1 output&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Each job goes to its own &lt;code&gt;executor&lt;/code&gt; subagent with a fresh context window. This is&#10;not just a speed optimisation — it is the mechanism from&#10;&lt;a href="https://devflow.cloud/docs/concepts/context-rot/"&gt;context rot&lt;/a&gt;. Three jobs in a wave means three clean&#10;windows rather than one window carrying all three jobs&amp;rsquo; reconnaissance.&lt;/p&gt;</description></item><item><title>Changelog and releases</title><link>https://devflow.cloud/docs/guides/releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/guides/releases/</guid><description>&lt;h2 id="generating-an-entry"&gt;Generating an entry&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools changelog update --version v2.6.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools changelog update --version v2.6.0 --dry-run&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools changelog update --version 1.27.4 --from 6aafba1 --to dcfba83&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;df-tools changelog check 2.5.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Commits since the last tag are grouped by conventional-commit type:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Prefix&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Section&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;feat&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Added&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;fix&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fixed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;perf&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Performance&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;refactor&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Changed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;docs&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Documentation&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;test&lt;/code&gt;, &lt;code&gt;chore&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;grouped accordingly&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;unrecognised&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Other&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;code&gt;--from&lt;/code&gt; / &lt;code&gt;--to&lt;/code&gt; let you backfill an older release with an explicit commit range.&lt;/p&gt;&#10;&lt;h2 id="the-tag-gate"&gt;The tag gate&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;changelog-on-tag&lt;/code&gt; is a &lt;code&gt;PreToolUse(Bash)&lt;/code&gt; hook that fires when an annotated&#10;version tag is about to be created. It enforces two invariants:&lt;/p&gt;</description></item><item><title>Settings</title><link>https://devflow.cloud/docs/commands/settings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/commands/settings/</guid><description>&lt;div class="table-wrap"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Command&lt;/th&gt;&lt;th&gt;Arguments&lt;/th&gt;&lt;th&gt;What it does&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:settings&lt;/code&gt;&lt;br&gt;&lt;span class="chip warn"&gt;type it yourself&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;span style="color:var(--text-muted)"&gt;—&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;Configure which agents run, which AI models they use, and how the workflow behaves.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;/devflow:set-profile&lt;/code&gt;&lt;br&gt;&lt;span class="chip warn"&gt;type it yourself&lt;/span&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;&amp;lt;profile&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Switch between quality, balanced, and budget model profiles to control cost and capability.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;Both are user-typed only — Claude cannot fire them, because they rewrite&#10;&lt;code&gt;config.json&lt;/code&gt; and change cost characteristics for everything downstream.&lt;/p&gt;&#10;&lt;h2 id="devflowset-profile"&gt;/devflow:set-profile&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:set-profile quality&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:set-profile balanced&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/devflow:set-profile budget&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Switches the model tier for every agent at once. The mapping is not uniform — each&#10;agent has its own per-profile assignment, so &lt;code&gt;budget&lt;/code&gt; does not simply mean &amp;ldquo;Haiku&#10;everywhere&amp;rdquo;:&lt;/p&gt;</description></item><item><title>State and memory</title><link>https://devflow.cloud/docs/concepts/state/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/state/</guid><description>&lt;p&gt;DevFlow&amp;rsquo;s durability claim is simple: the things worth remembering were never in&#10;the context window, so losing the window loses nothing.&lt;/p&gt;&#10;&lt;h2 id="what-is-remembered"&gt;What is remembered&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Thing&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Where&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Survives&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Vision, constraints, &lt;code&gt;kind&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;PROJECT.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Requirements with IDs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;REQUIREMENTS.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Objectives and completion&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;ROADMAP.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Decisions and rationale&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;STATE.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Open blockers&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;STATE.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Position in the plan&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;STATE.md&lt;/code&gt; + &lt;code&gt;state.json&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;What each job did&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;SUMMARY.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Verification evidence&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;VERIFICATION.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Debug hypotheses and evidence&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;debug/&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;everything&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The conversation&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;context window&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nothing&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="reading-and-writing-state"&gt;Reading and writing state&lt;/h2&gt;&#10;&lt;p&gt;State is manipulated through &lt;code&gt;df-tools&lt;/code&gt; rather than by editing files, so the&#10;markdown and its JSON mirror stay consistent.&lt;/p&gt;</description></item><item><title>Context discipline</title><link>https://devflow.cloud/docs/concepts/context-discipline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/concepts/context-discipline/</guid><description>&lt;p&gt;DevFlow&amp;rsquo;s context guidance comes from an audit of roughly 93 million tokens of&#10;real message blocks. The figures below are measured, not estimated.&lt;/p&gt;&#10;&lt;h2 id="where-the-window-actually-goes"&gt;Where the window actually goes&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Component&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Share&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Who produces it&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Tool results (text)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;59.3%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the environment, read back in&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Tool-call inputs&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;33.8%&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;the agent&lt;/strong&gt; — file bodies, heredocs, patches&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Assistant text&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.5%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;prose to the user&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Images&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1.5%&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;screenshots&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Two tools account for 94% of tool-result tokens:&lt;/p&gt;</description></item><item><title>Troubleshooting</title><link>https://devflow.cloud/docs/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/troubleshooting/</guid><description>&lt;h2 id="a-hook-blocked-my-command"&gt;A hook blocked my command&lt;/h2&gt;&#10;&lt;p&gt;The model receives the denial reason and usually corrects itself. When you need to&#10;override deliberately:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DEVFLOW_ALLOW_RAW_COMMIT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; git commit -m &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Every gate and its escape hatch is listed on&#10;&lt;a href="https://devflow.cloud/docs/configuration/gates/"&gt;gates and enforcement&lt;/a&gt;. Prefer a one-off prefix over&#10;an export — an exported escape hatch is a gate you removed.&lt;/p&gt;&#10;&lt;p&gt;If you are overriding the same gate repeatedly, log it so the friction is&#10;measurable rather than anecdotal:&lt;/p&gt;</description></item><item><title>Contributing</title><link>https://devflow.cloud/docs/contributing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devflow.cloud/docs/contributing/</guid><description>&lt;p&gt;DevFlow is MIT licensed and developed in the open at&#10;&lt;a href="https://github.com/AO-Cyber-Systems/devflow-claude"&gt;AO-Cyber-Systems/devflow-claude&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="development-install"&gt;Development install&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/AO-Cyber-Systems/devflow-claude.git&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin marketplace add /absolute/path/to/devflow-claude&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin install devflow@aocyber&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The plugin directory is the source of truth for distribution; there is no npm&#10;publish step.&lt;/p&gt;&#10;&lt;h2 id="tests"&gt;Tests&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm &lt;span class="nb"&gt;test&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Node&amp;rsquo;s native test runner against &lt;code&gt;.test.cjs&lt;/code&gt; and &lt;code&gt;.test.js&lt;/code&gt; files adjacent to&#10;their source. There is no lint command.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plugins/devflow/devflow/bin/df-tools.test.cjs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plugins/devflow/devflow/bin/lib/*.test.cjs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plugins/devflow/hooks/*.test.js&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hooks are tested like any other module — they are plain Node scripts reading JSON&#10;on stdin.&lt;/p&gt;</description></item></channel></rss>