{"slug": "show-hn-ever-wanted-to-call-codex-from-claude-code-my-harness-orchestrator", "title": "Show HN: Ever Wanted to Call Codex from Claude Code? My Harness Orchestrator", "summary": "A developer has released a Claude skill that lets coding agents like Grok Bot, Cursor Agent, Claude Code, and Codex orchestrate one another as one-shot subagents, enabling a parent agent to outsource heavy tasks to other harnesses and synthesize results. The skill, built for Grok Bot to conserve its weekly usage meter, allows users to dispatch tasks such as UI implementation to Claude Code (Opus) and visual review to Codex, with the author noting that a differently-trained harness provides valuable second opinions. The protocol works across any agent that can run a CLI, and the skill is available in the Agent Skills format.", "body_md": "**Orchestration for coding agents — stay in the parent, outsource to other harnesses, then synthesize.**\n\nEver wanted to call **Codex** from **Claude Code**?\n\nEver wanted **Grok Build** to invoke **Claude Code**?\n\nEver wanted **Claude Code** to send a diff to **GPT** for a second opinion?\n\nEver ran out of **Grok Bot** usage after heavy tasks?\n\nThat's this skill. You have an **orchestrator** — **Grok Bot**, **Cursor Agent** / **cursor-agent**, Claude Code, Codex, whoever you are already in. It writes a brief, dispatches another coding-agent harness as a **one-shot subagent**, then the parent synthesizes.\n\nThe other harness is not an oracle. A model reviewing its own work reproduces its own blind spots; a differently-trained harness does not. That worth is destroyed the moment you forward its answer without judging it.\n\nThis is a [Claude skill](https://code.claude.com/docs/en/skills) in the [Agent Skills](https://agentskills.io) format. The same protocol works from Cursor Agent, **cursor-agent**, **Grok Bot** (if that Bot can run a CLI), and any other agent that can run a CLI in the background.\n\nI built it as **orchestration for Grok Bot**.\n\n**Grok Bot** is Cursor’s persistent-agent product — its own weekly usage meter on your Cursor account. That meter is not Cursor Agent’s Grok 4.6 pool, and it is not Grok Build CLI. It resets weekly. It is drawn down by agent steps and tokens, not by message count: one heavy task can burn a large share of the week, even on Ultra.\n\nThis skill is how I stop spending that meter on the heavy slice. While the Bot still has usage, it writes a short brief and **outsources** the long run to Claude Code, Codex, or Grok Build CLI (those CLIs bill their own accounts). The Bot synthesizes. That is conservation.\n\nIf Grok Bot weekly usage is already gone, the Bot cannot orchestrate. Wait for the weekly reset, use on-demand if you have it, or switch the parent to Cursor Agent / Claude Code / Codex.\n\n**cursor-agent** is a different parent (Cursor’s CLI). Same protocol, separate product from Grok Bot.\n\nThese are **my** defaults, not the protocol. The skill will not pick a harness from the job type. You name the CLI, or you pin defaults in a **user config file** the parent is instructed to read, or it asks once.\n\nI find **Opus** (Claude Code) superior at **UI work** — layout, interaction, the thing on the screen. I find **GPT / Codex** superior at **reviewing**, especially **visual review**: screenshots plus the named CSS/JS, then a verdict on whether the defect is real.\n\nSo my default loop is: ship the UI with Opus, capture shots, dispatch Codex to confirm or refute, then the parent decides. Not the other way around, and never a paste-through of the subagent's report.\n\nGoing the other direction is the same idea. If you are already in Codex or Grok Build and the job is a UI slice, dispatch Claude Code / Opus to implement it.\n\nAuthor defaults (not the protocol):\n\n| Job | I dispatch |\n|---|---|\n| Heavy slice while I am still in Grok Bot (save Bot usage) | Claude Code, Codex, or Grok Build CLI — brief, then synthesize |\n| UI implementation, layout, interaction | Claude Code (Opus) |\n| Diff / correctness review | Codex |\n| Visual review (screenshots + named sources) | Codex |\n| Pressure-test a plan (assume it is flawed) | a different harness than the one that wrote it |\n| Stuck bug, two fixes already failed | a different harness than the parent |\n\n**How to ask** (from whatever agent you are in):\n\n*Orchestrate this — outsource the slice to Codex.**From Grok Bot: have Claude Code do this UI slice — named paths only.** Ask Codex to review this diff.**Get a visual review from Codex of the screenshots I just took.** Ask Grok Build to try to refute this plan.**Ask Codex from Claude Code*/*have Grok Build invoke Claude Code.*\n\n**Worth a run:** second opinions, adversarial review of plans, visual confirmation, unstuck diagnosis, a bounded implement slice assigned to that harness.\n\n**Not worth a run:** naming, style, formatting, or anything the parent can already answer from context.\n\nThe parent writes a **bounded brief** (named paths and a tight investigation — not a pasted dump), runs `scripts/spawn.sh`\n\nin the background, then reports:\n\n- What was asked\n- The harness verdict (quoted)\n- Where it agrees and disagrees, with reasons\n- A recommendation\n\nIf you only paste the subagent's answer, you wasted the run.\n\n```\nnpx skills add ptmrio/harness-subagent -g\n```\n\nThat is the [skills.sh](https://skills.sh) installer: one command, copies the whole skill (`SKILL.md`\n\n, `references/`\n\n, `scripts/`\n\n, `assets/`\n\n, `evals/`\n\n) into the agents on this machine — Cursor Agent, Claude Code, Codex, and the rest the CLI detects. `-g`\n\nis user-level, so it is not tied to one repo. Grok Bot is a separate app; it only uses this skill if that Bot can run a CLI and can load the skill (or you point it at `SKILL.md`\n\n).\n\nThe CLIs do not load this file. The **skill** tells the parent to read it when you did not name a harness (utterance → this file → ask once). It lives **outside** the skill clone so updates cannot overwrite it.\n\n```\n~/.config/harness-subagent/config.toml\n```\n\nCopy `assets/config.example.toml`\n\nthere (`spec`\n\n, `spec-ui`\n\n, `plan`\n\n, `plan-ui`\n\n, `implement`\n\n, `implement-ui`\n\n, `code-review-task`\n\n, `code-review-adversarial`\n\n, `code-review-visual`\n\n). Override path: `$HARNESS_SUBAGENT_CONFIG`\n\n. Schema: `references/user-config.md`\n\n.\n\nGit clone if you do not want `npx`\n\n:\n\n```\ngit clone https://github.com/ptmrio/harness-subagent.git ~/.claude/skills/harness-subagent\n```\n\nWindows PowerShell:\n\n```\ngit clone https://github.com/ptmrio/harness-subagent.git \"$HOME\\.claude\\skills\\harness-subagent\"\n```\n\nCursor also loads `~/.claude/skills/`\n\n. Native Cursor path if you prefer: `~/.cursor/skills/harness-subagent`\n\n.\n\nAlready have a checkout? Copy the skill root, not just `SKILL.md`\n\n:\n\n```\nmkdir -p ~/.claude/skills/harness-subagent\ncp SKILL.md LICENSE README.md ~/.claude/skills/harness-subagent/\ncp -r references scripts assets evals ~/.claude/skills/harness-subagent/\n```\n\nThen ask in those words: orchestrate this, get a second opinion, pressure-test a plan or diff, or call Codex / Claude Code / Grok as a subagent.\n\nAt least one of `claude`\n\n, `codex`\n\n, `grok`\n\n, or `cursor-agent`\n\non `PATH`\n\nand logged in. Optional extras: `gemini`\n\n, `opencode`\n\n, `droid`\n\n(not in `scripts/spawn.sh`\n\nyet) — see `references/more-clis.md`\n\n. Windows, WSL, Linux, and macOS.\n\nOn native Windows the parent must run `scripts/spawn.sh`\n\nthrough Git Bash (`%ProgramFiles%\\Git\\bin\\bash.exe`\n\n) as a **file argument**. WSL `bash.exe`\n\nand a PowerShell-quoted `bash -lc`\n\none-liner will not work.\n\n[MIT](/ptmrio/harness-subagent/blob/main/LICENSE) — Gerhard Petermeir / [ptmrio](https://github.com/ptmrio). Issues welcome; PRs are not the default.", "url": "https://wpnews.pro/news/show-hn-ever-wanted-to-call-codex-from-claude-code-my-harness-orchestrator", "canonical_source": "https://github.com/ptmrio/harness-subagent", "published_at": "2026-08-23 12:51:15+00:00", "updated_at": "2026-08-23 13:14:29.057476+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "artificial-intelligence"], "entities": ["Claude Code", "Codex", "Grok Bot", "Cursor Agent", "cursor-agent", "Grok Build", "Claude", "Agent Skills"], "alternates": {"html": "https://wpnews.pro/news/show-hn-ever-wanted-to-call-codex-from-claude-code-my-harness-orchestrator", "markdown": "https://wpnews.pro/news/show-hn-ever-wanted-to-call-codex-from-claude-code-my-harness-orchestrator.md", "text": "https://wpnews.pro/news/show-hn-ever-wanted-to-call-codex-from-claude-code-my-harness-orchestrator.txt", "jsonld": "https://wpnews.pro/news/show-hn-ever-wanted-to-call-codex-from-claude-code-my-harness-orchestrator.jsonld"}}