<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: fluentdb-dev</title>
    <description>The latest articles on DEV Community by fluentdb-dev (@fluentdbdev).</description>
    <link>https://dev.to/fluentdbdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4091413%2F2d5979d4-5404-4a18-ac3d-6600698af482.png</url>
      <title>DEV Community: fluentdb-dev</title>
      <link>https://dev.to/fluentdbdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fluentdbdev"/>
    <language>en</language>
    <item>
      <title>Use OpenSpec to Separate Coding, Review, and Verification</title>
      <dc:creator>fluentdb-dev</dc:creator>
      <pubDate>Mon, 24 Aug 2026 05:42:18 +0000</pubDate>
      <link>https://dev.to/fluentdbdev/use-openspec-to-separate-coding-review-and-verification-5ecm</link>
      <guid>https://dev.to/fluentdbdev/use-openspec-to-separate-coding-review-and-verification-5ecm</guid>
      <description>&lt;p&gt;ithyno combines a desktop app or VS Code extension with OpenSpec Skills and ithyno Skills. OpenSpec Skills define the change. ithyno Skills assign implementation, review, and verification to separate AI sessions. The app visualizes their progress.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fulloirc6vrs7t8mcl3vo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fulloirc6vrs7t8mcl3vo.png" alt="ithyno running inside VS Code with active changes and the Manager terminal" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When one coding session is no longer enough
&lt;/h2&gt;

&lt;p&gt;This article is for developers who use coding agents for real feature work. It is not about autocomplete or one-off questions. It focuses on work that no longer fits in one agent session.&lt;/p&gt;

&lt;p&gt;You may recognize some of these situations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The agent starts coding before the expected behavior is clear.&lt;/li&gt;
&lt;li&gt;Requirements are scattered across chat history.&lt;/li&gt;
&lt;li&gt;The same session writes the code and approves its own work.&lt;/li&gt;
&lt;li&gt;A second session reviews the wrong branch or an old diff.&lt;/li&gt;
&lt;li&gt;Active changes become a collection of terminals and mental notes.&lt;/li&gt;
&lt;li&gt;A process exits, but you do not know if the requested work is complete.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may want one session to implement a change. Another session can review it. A third session can verify it. These sessions can use the same tool and model. They can also use different ones. The important distinction is the &lt;strong&gt;role&lt;/strong&gt;, not the vendor.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;ithyno&lt;/strong&gt; for this workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with an agreed specification
&lt;/h2&gt;

&lt;p&gt;Before choosing an agent, first decide &lt;strong&gt;what should change&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is the idea behind spec-driven development.&lt;/p&gt;

&lt;p&gt;A chat prompt should not be the only source of requirements. Spec-driven development records the expected behavior before coding starts. The specification becomes a shared agreement. The developer and every agent role can read it.&lt;/p&gt;

&lt;p&gt;That changes the workflow from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prompt → code → hope that the result matches the intent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agree on behavior → plan the change → implement → review → verify
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is not documentation for its own sake. The goal is to preserve the original intent. Implementation details should not replace requirements. Agents should not silently add new scope.&lt;/p&gt;

&lt;h2&gt;
  
  
  What OpenSpec provides
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Fission-AI/OpenSpec" rel="noopener noreferrer"&gt;OpenSpec&lt;/a&gt; is a lightweight framework for spec-driven development. It is designed for AI coding assistants. The developer and the assistant agree on the change before coding starts.&lt;/p&gt;

&lt;p&gt;OpenSpec keeps the current system behavior and proposed changes as files in the repository.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;openspec/specs/&lt;/code&gt; describes the current agreed behavior.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;openspec/changes/&amp;lt;change-id&amp;gt;/&lt;/code&gt; contains one proposed change.&lt;/li&gt;
&lt;li&gt;A change can include a proposal, spec updates, design notes, and tasks.&lt;/li&gt;
&lt;li&gt;Completed changes can be archived into the living specifications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main files of a change are easy to inspect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;openspec/changes/&amp;lt;change-id&amp;gt;/
├── proposal.md
├── design.md
├── tasks.md
└── specs/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;proposal.md&lt;/code&gt; explains why the change is needed. &lt;code&gt;tasks.md&lt;/code&gt; tracks the work. The &lt;code&gt;specs/&lt;/code&gt; directory records the behavior added or changed. &lt;code&gt;design.md&lt;/code&gt; is used when implementation decisions need a separate explanation.&lt;/p&gt;

&lt;p&gt;These artifacts are ordinary project files. They are not tied to one chat session. A later session can read the same intent. It does not need to rebuild the context from chat history.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff1bmsdjxavtj0e5jh1d5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff1bmsdjxavtj0e5jh1d5.png" alt="OpenSpec requirements shown in the ithyno Specs view" width="800" height="598"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a closer look at how these files map to the project workflow, see &lt;a href="https://fluentdb-dev.github.io/ithyno-pages/architecture/openspec-kanban/" rel="noopener noreferrer"&gt;OpenSpec and the ithyno Kanban model&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turn one OpenSpec change into role-based work
&lt;/h2&gt;

&lt;p&gt;OpenSpec defines the change. ithyno gives that change to separate roles.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OpenSpec change
    │
    ├── code role   → implement the tasks
    ├── review role → compare the result with the proposal and specs
    └── verify role → run the applicable project checks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each role receives the same change. Each role has a different responsibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;

&lt;p&gt;The code worker reads the proposal, spec changes, and tasks. It implements the requested behavior. It also updates task progress.&lt;/p&gt;

&lt;h3&gt;
  
  
  Review
&lt;/h3&gt;

&lt;p&gt;The review worker does not continue implementation. It compares the result with the agreed scope. It records whether the change passes or needs rework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verify
&lt;/h3&gt;

&lt;p&gt;The verify worker runs the checks that apply to the project. It then records the result. A missing optional script is different from a failed required test. The role evaluates the available evidence. It does not blindly run a fixed command list.&lt;/p&gt;

&lt;p&gt;Implementation, review, and verification require different judgments. One long session carries its implementation assumptions into the review. Separate roles reduce that problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2qi0412vixm8eq3x9fuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2qi0412vixm8eq3x9fuj.png" alt="Agent roles configured in ithyno beside the Manager terminal" width="799" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Assign multiple agents
&lt;/h2&gt;

&lt;p&gt;“Multiple agents” can sound like a mix of competing products. Role-based execution does not require that mix.&lt;/p&gt;

&lt;p&gt;All of the following are valid arrangements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Sonnet for code and Claude Fable for review.&lt;/li&gt;
&lt;li&gt;Codex GPT-5.6-Sol for code and GPT-5.6-Terra for review.&lt;/li&gt;
&lt;li&gt;AGY calling Claude Sonnet 4.6 for code and Gemini 3.1 Pro for review.&lt;/li&gt;
&lt;li&gt;Claude Sonnet for code and Codex GPT-5.6-Terra for review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same model can also handle both roles when code and review run in separate sessions. Model names and availability may change as each CLI evolves.&lt;/p&gt;

&lt;p&gt;An agent entry defines a worker and its responsibility. A project can reuse the same CLI and model. It can also mix them. ithyno selects a supported route for the chosen Manager and worker.&lt;/p&gt;

&lt;p&gt;The current setup guide documents role configuration and verified routes: &lt;a href="https://fluentdb-dev.github.io/ithyno-pages/multi-agent-setup-and-dispatch/" rel="noopener noreferrer"&gt;Configure role-based agent workers&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dispatch the roles in sequence
&lt;/h2&gt;

&lt;p&gt;A Manager coordinates the change through its required stages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;proposed → code → review → verify → merge and archive
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The app creates the dispatch command for the selected Manager. It can enter the command into the terminal it started. You can also copy the command and paste it into that terminal yourself.&lt;/p&gt;

&lt;p&gt;The Manager CLI then invokes the installed ithyno dispatch Skill. The command format depends on the CLI. A slash-command client and a skill-name client may use these forms:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/ithy-opsx:dispatch add-session-timeout
ithy-opsx-dispatch add-session-timeout
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The stages of one change stay in order. Review starts after the implementation it needs to inspect. Verification does not replace review. Different changes can run at the same time when isolated execution is enabled.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcsi4k3gpqw4y9q2bsyx5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcsi4k3gpqw4y9q2bsyx5.png" alt="A dispatched worker processing an OpenSpec change" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each active change can use its own Git worktree and branch. This keeps uncommitted files separate. The developer can still inspect every result with normal Git commands.&lt;/p&gt;

&lt;p&gt;Worktrees are optional. They are not required to start using ithyno. See &lt;a href="https://fluentdb-dev.github.io/ithyno-pages/architecture/openspec-worktree/" rel="noopener noreferrer"&gt;OpenSpec worktrees&lt;/a&gt; for details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Completion must leave evidence
&lt;/h2&gt;

&lt;p&gt;Agent CLIs report success in different ways. A worker may exit with code &lt;code&gt;0&lt;/code&gt; without producing the requested result.&lt;/p&gt;

&lt;p&gt;ithyno does not rely only on terminal output or process status. Review and verification roles write structured results into the change. The Manager reads those results. It then continues, requests rework, or stops.&lt;/p&gt;

&lt;p&gt;A review worker can write a &lt;code&gt;review.md&lt;/code&gt; file like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;verdict&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;needs-rework&lt;/span&gt;
&lt;span class="na"&gt;summary&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;implementation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;is&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;missing&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;edge&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;case."&lt;/span&gt;
&lt;span class="na"&gt;findings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;severity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;high&lt;/span&gt;
    &lt;span class="na"&gt;file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;src/auth.ts&lt;/span&gt;
    &lt;span class="na"&gt;line&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;42&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Token&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;expiry&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;validation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;is&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;missing."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a shared chain of evidence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;specification → implementation diff → review result → verification result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The developer and later agent sessions inspect the same files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fywgu068wuqik3ft94zez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fywgu068wuqik3ft94zez.png" alt="Completed OpenSpec changes in the ithyno dashboard" width="799" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where ithyno fits
&lt;/h2&gt;

&lt;p&gt;ithyno does not replace OpenSpec, Git, or the agent CLIs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenSpec defines the agreed change.&lt;/li&gt;
&lt;li&gt;Agent sessions perform role-specific work.&lt;/li&gt;
&lt;li&gt;Git branches and worktrees isolate implementation.&lt;/li&gt;
&lt;li&gt;Review and verification artifacts record outcomes.&lt;/li&gt;
&lt;li&gt;ithyno coordinates these parts as one project workflow.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ithyno is available as a VS Code extension and an Electron app. Both use the same repository files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F96qonr68lr16o2xfhr90.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F96qonr68lr16o2xfhr90.png" alt="ithyno running as a dedicated Electron application" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Current status
&lt;/h2&gt;

&lt;p&gt;ithyno is currently an alpha project. Agent CLIs change quickly. Permissions, command arguments, and child-agent features can change between releases. The documentation lists supported settings and verified routes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Read the &lt;a href="https://fluentdb-dev.github.io/ithyno-pages/installation/?utm_source=hashnode&amp;amp;utm_medium=article&amp;amp;utm_campaign=introducing_ithyno" rel="noopener noreferrer"&gt;installation guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Follow &lt;a href="https://fluentdb-dev.github.io/ithyno-pages/project-creation-flow/?utm_source=hashnode&amp;amp;utm_medium=article&amp;amp;utm_campaign=introducing_ithyno" rel="noopener noreferrer"&gt;Start a simple project&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Configure &lt;a href="https://fluentdb-dev.github.io/ithyno-pages/multi-agent-setup-and-dispatch/?utm_source=hashnode&amp;amp;utm_medium=article&amp;amp;utm_campaign=introducing_ithyno" rel="noopener noreferrer"&gt;role-based agent workers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;View the source and releases on &lt;a href="https://github.com/fluentdb-dev/ithyno?utm_source=hashnode&amp;amp;utm_medium=article&amp;amp;utm_campaign=introducing_ithyno" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You do not need another vendor to separate these responsibilities. Start with one shared specification. Then give planning, implementation, review, and verification their own roles.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://fluentdb-dev.github.io/ithyno-pages/architecture/?utm_source=hashnode&amp;amp;utm_medium=article&amp;amp;utm_campaign=introducing_ithyno" rel="noopener noreferrer"&gt;architecture overview&lt;/a&gt; for more detail.&lt;/p&gt;

&lt;p&gt;Feedback from real projects is welcome. If a CLI route fails or the workflow does not fit your project, &lt;a href="https://github.com/fluentdb-dev/ithyno/issues" rel="noopener noreferrer"&gt;open an issue&lt;/a&gt;. If ithyno is useful to you, consider starring the repository.&lt;/p&gt;

&lt;p&gt;Disclosure: This article was edited with AI assistance and reviewed by the author.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
