Skip to Content
Tares

How do I have a second model review docs updates in a Node/TypeScript app before each commit?

Tares lets Claude Code write your docs updates while the OpenAI Codex CLI reviews the plan and every commit, in a challenger session. A blocking finding stops Claude and sends it back to amend the same commit. If you disagree with a finding, /tares:challenger-waive waives it. The review runs on your laptop and Tares records the exchange.

How it works

A challenger session pairs Claude Code (the author) with Codex (the critic). Nothing in it is specific to Node or TypeScript, and a commit that touches only Markdown goes through the same review as any other commit.

  • Plan check. When you approve a plan and Claude leaves plan mode, the plugin passes the plan to Codex in a read-only sandbox. Codex tags each finding [P1] (the plan fails as written), [P2] (will cause rework) or [P3] (advice). The critique reaches Claude as context. A plan critique never blocks. Claude revises, or tells you why it disagrees.
  • Commit check. After each git commit, the plugin runs a Codex review of that commit. No findings means Claude carries on.
  • Blocking findings. A [P1] or [P2] finding blocks Claude. It must fix the problem and fold the fix into the same commit with git commit --amend, or make a new commit if the reviewed one is already on a remote. The amended commit is reviewed again as round 2, and so on. The loop stops at 8 rounds per commit and 5 turn ends per session, and after that the findings come back as context.
  • Never blocking. [P3] findings, a Codex timeout, an error or an inconclusive review.
  • Waivers. /tares:challenger-waive lists the blocking findings and waives one or all. The waiver is remembered for that finding on later rounds and shipped to Tares as a challenge_waived event.

The checks run in Claude Code hooks on your laptop, against your OpenAI account. Tares never calls Codex and never holds up a review. If Tares is slow or down, the plugin retries shipping on the next hook.

Set it up

  1. Start Tares and its MCP endpoint, or use a Tares Cloud instance, which serves the endpoint itself:

    tares up tares mcp --transport streamable-http
  2. In Claude Code, add the Tares plugin from the glassflow/tares marketplace and install tares@tares. You need plugin version 0.2 or later. The install asks for the Tares URL and the MCP endpoint. On a secured instance it also asks for a read + ingest API key.

  3. Install the Codex CLI from npm and sign in to it. Codex is billed to your OpenAI account.

  4. Give the summarizer an Anthropic API key under Settings > Model providers, or set ANTHROPIC_API_KEY. Tares Cloud instances come with one.

  5. Open Claude Code in your Node/TypeScript repo and say “make this a challenger session”, or type /tares:challenger. The first marked session creates the Challenger workflow project for you.

  6. Ask Claude to update the docs: a README section, an API page, a changelog entry. Review the plan, approve it, and let Claude commit. Each commit gets its Codex review before Claude moves on.

  7. If a blocking finding is wrong, run /tares:challenger-waive. To make commit reviews advisory for good, set the plugin option challenger_mode to advise. The default is strict.

  8. If Codex needs to run your project’s commands to check a docs change, set codex_sandbox to workspace-write. It is read-only by default.

  9. Type /exit. A Tares agent writes the session summary and proposes what the next session in this repo should remember. You accept or reject each proposal.

If you would rather have a whole crew build the work, tares factory crew up asks whether a second model checks every commit. Start with Get started. Run tares factory doctor there to see whether Claude Code has a TypeScript language server for your repo. It reads tsconfig.json and package.json to find your languages.

tares factory crew up tares factory doctor

What you get

  • Every docs commit is critiqued before Claude moves on, and wrong claims or gaps are caught while the change is still one commit.
  • A fix loop with limits: amend, re-review, repeat, capped at 8 rounds per commit.
  • A way out. A waiver ends a dispute you have already decided, and Tares records it.
  • One timeline per session on the Challenger workflow project. Each commit shows a Findings (N) or Pass badge, and the Claude and Codex exchange reads as one thread.
  • A summary with five sections: what was asked and built, the plan and how Codex changed it, each commit and what Codex caught, cost, and memory proposals.
  • Memory that carries over. The plugin hands the accepted proposals to Claude when the next session in that repo starts.
  • Predictable cost. A session with a plan and three commits is typically five to eight Codex runs, billed by OpenAI. The summarizer is one metered Tares agent run.

The full walkthrough is in Challenge Claude Code with a second model.

When something else fits

  • If you do not want a second model’s opinion on every commit, set challenger_mode to advise, or leave sessions unmarked. Unmarked sessions stream like any other and no review runs.
  • If you want a whole project built and merged without driving each prompt, use the software factory crew. Its settings let a second model check every commit.

Still stuck? Get help

Last updated on