Uses
How I build with AI coding agents: Claude Code writes, Codex reviews, and I decide what ships.
Claude Code writes, a Stop hook asks Codex to review the diff, and only high-confidence bugs send the work back.
Two agents with different jobs: one writes, the other checks. I stay the one who decides what ships.
Claude Codewriter
Main coding agent in the terminal, running Opus. It reads the codebase, plans, edits and verifies its own work.
Codex CLIreviewer
Reviews every change Claude makes, runs QA in a browser on demand, and takes standalone tasks with high reasoning effort.
GitHub Copilotinline
Inline completions while I type in the editor.
A small bash + jq tool wires Codex into Claude Code through hooks, so every change gets a second pair of eyes without me asking.
UserPromptSubmithook
On each prompt, snapshot the working tree into a temporary git index (my staging area stays untouched). That tree is the review base.
Stophook
When Claude finishes a turn that changed code, Codex reviews the diff against the base in read-only mode, with my recent prompts and any plan or spec files as context.
Only real bugs block
Codex returns structured findings. Only high-confidence P0/P1 issues block Claude; medium ones go to a log. No style nitpicks, and Codex never edits code.
Claude can push back
Claude verifies each finding and either fixes it or answers CODEX-REJECT with a reason. Rejected findings are remembered and not raised again.
Never in the way
Rounds are capped, a Codex failure or timeout never blocks, accounts fall back when one hits a quota, and the loop can be turned off per repo or for a few hours.
/qaskill
Starts or reuses the dev server, then lets Codex write and run test cases through a headless, isolated Playwright browser.
Guard rails
A request guard blocks dangerous endpoints, passwords stay in a 0600 secrets file and are redacted from logs, and the result comes back as a report with screenshots for Claude to triage.
The Superpowers plugin turns good engineering habits into skills the agent must follow, so it does not jump straight into code.
brainstorming1 · design
Before any new feature, the agent asks questions one at a time, plays back what it understood and waits for my approval of the design.
using-git-worktrees2 · isolate
The work happens on its own branch in a separate worktree, so my main checkout stays clean.
writing-plans3 · plan
The approved design becomes a plan of small tasks with exact files, steps and checks, written for an engineer with no context.
subagent-driven-development4 · build
Each task goes to a fresh subagent, so context stays small; independent tasks can run in parallel with dispatching-parallel-agents.
test-driven-development5 · test
Write the failing test, make it pass, then refactor. When something breaks, systematic-debugging finds the root cause before any fix.
requesting / receiving code review6 · review
A reviewer checks each task against the plan; feedback is verified on its merits, not accepted blindly.
verification-before-completion7 · verify
No "done" without running the checks and showing the output: tests, lint, a browser screenshot.
finishing-a-development-branch8 · ship
Once everything passes, choose to merge, open a PR, keep the branch or discard it.
Feature dev · Code review · Frontend designplugin
Guided feature work with codebase exploration, PR reviews, and design guidance for new UI.
Context7plugin
Pulls current library docs into the session instead of relying on what the model remembers.
Cavemanplugin
Terse output mode plus a compressor for memory files, so long sessions spend tokens on code, not prose.
Custom skillsskill
/codex-review to toggle the loop, /codex-model to pick the reviewer model and effort, /qa, plus React best-practice and agent orchestration skills.
Playwright
The agent opens the app, clicks through it and screenshots the result before calling a UI change done.
Chrome DevTools
Performance traces, network and console inspection, Lighthouse and accessibility checks from inside the session.
Codegraph
A SQLite knowledge graph of the codebase: one call returns the relevant symbols, call paths and blast radius instead of a grep-and-read loop.
ESLint
Lints exactly the files that changed, so edits match the project rules.
CLAUDE.mdglobal + per repo
Standing rules, like "query the code graph before grep", plus each project's architecture notes and conventions.
Persistent memory
Facts and feedback that should outlive one session are saved as small notes the agent reads next time.
RTKPreToolUse hook
Rewrites shell commands through a Rust proxy that trims noisy output, typically saving 60-90% of tokens on git, test and build output.
Status line
A custom status line shows the model, how much context is left, the folder and the git branch at a glance.
For bigger jobs I run several agents at once in Orca, a desktop app for coding agents, with one of them coordinating the rest.
Parallel worktreesorca-cli
Each agent (Claude Code or Codex) gets its own git worktree and terminal, so parallel work never collides.
Coordinator + workersorchestration
A coordinator breaks the job into a task DAG with dependencies, dispatches tasks to workers and waits for worker_done or an escalation.
Messages & decision gates
Workers and the coordinator talk through threaded messages and blocking ask/reply; decision gates stop the flow until results are checked.
Handoffs
A whole task can be handed to another agent in another worktree when it should own it end to end.
Linearorca-linear
Work starts from a Linear ticket and ends with the PR link, a completion comment and the ticket moved to the next state.
Hooks to the dashboard
Claude Code hooks report every agent event (prompts, tool calls, permission requests, stops) back to Orca, so I see all agents in one place.
WebStorm
Main IDE for React and TypeScript.
VS Code
Quick edits, notes and markdown.
Next.js · React · TypeScript
Default stack for product UIs and this site.
Playwright · Vitest · axe-core
The checks the agents run before anything is called done.