agtx One-Shot Project Runner
fynnfluegge/agtx
Runs a whole project unattended on an agtx kanban board, decomposing the goal, starting tasks, unblocking workers and merging each result.
Starts a background runner that works through ready batches of tasks from Plans.md one cycle at a time via Breezing, with status and stop controls.
SKILL.md written in Japanese; this summary is our English description.
$ npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Chachamaru127/claude-code-harness harness-loop --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Chachamaru127/claude-code-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills-codex/harness-loop .claude/skills/harness-loop && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "harness-loop" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills-codex/harness-loop into .claude/skills/harness-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-loop", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Chachamaru127/claude-code-harness/tree/main/skills-codex/harness-loopType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Chachamaru127/claude-code-harness harness-loop --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chachamaru127/claude-code-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills-codex/harness-loop .agents/skills/harness-loop && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "harness-loop" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills-codex/harness-loop into .agents/skills/harness-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-loop", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Chachamaru127/claude-code-harness harness-loop --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chachamaru127/claude-code-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills-codex/harness-loop .cursor/skills/harness-loop && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "harness-loop" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills-codex/harness-loop into .cursor/skills/harness-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-loop", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Chachamaru127/claude-code-harness.git --path skills-codex/harness-loop--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Chachamaru127/claude-code-harness harness-loop --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chachamaru127/claude-code-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills-codex/harness-loop .gemini/skills/harness-loop && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "harness-loop" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills-codex/harness-loop into .gemini/skills/harness-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-loop", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Chachamaru127/claude-code-harness harness-loopInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Chachamaru127/claude-code-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills-codex/harness-loop .github/skills/harness-loop && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "harness-loop" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills-codex/harness-loop into .github/skills/harness-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-loop", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Chachamaru127/claude-code-harness harness-loop --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Chachamaru127/claude-code-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills-codex/harness-loop .opencode/skills/harness-loop && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "harness-loop" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills-codex/harness-loop into .opencode/skills/harness-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "harness-loop", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
harness-loopStarts a background runner that works through ready batches of tasks from Plans.md one cycle at a time via Breezing, with status and stop controls.
The skill launches a real background process rather than a simulated loop. Each cycle picks one ready batch, meaning tasks marked cc:TODO or cc:WIP whose dependencies are met, hands it to Breezing, checks the result and moves to the next batch. Run state is written under .claude/state/codex-loop/ in the project root.
You start it with $harness-loop all or limit it to a range of task IDs from Plans.md, and tune it with options for maximum cycles, maximum workers per cycle, a named plan, pacing and an executor that falls back to one task per local worker. harness codex-loop status shows progress and stop asks it to halt. Before starting, the agent checks the plan's goal, definition of done and approvals, and it does not treat a successful launch as proof the work is finished. The SKILL.md is written in Japanese.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2b2b748. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
codexbashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Harness Loop loads about 2.2k tokens when it runs. Until then it costs about 77 tokens; SKILL.md has 660 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Chachamaru127/claude-code-harness at commit 2b2b748, republished under its MIT licence (© Chachamaru127). 660 words, ~2,168 tokens.
.claude/skills/harness-loop/SKILL.md (or your agent's skills folder).Codex 版の harness-loop は、説明だけの擬似ループではなく、
実際にバックグラウンドで回るランナーを起動する。
$harness-loop は、1 回だけの実装依頼ではなく、
「今すぐ実行できる未完了タスクのまとまりを、Breezing で自動実行し続ける当番」を起動する入口。
ここでいう ready batch は、Depends が満たされていて、今すぐ並列実行できる cc:TODO / cc:WIP のまとまり。
1 cycle は 1 task ではなく、原則として 1 ready batch を処理する。
人が横でずっと見張る代わりに、 「同時に進められる作業をまとめて見つける → Breezing に任せる → 結果を確認する → 次のまとまりへ進む」 を繰り返す監督係を、裏で常駐させるイメージ。
| 入力 | 動作 |
|---|---|
$harness-loop all | 未完了タスク全体を長時間ループで開始 |
$harness-loop 41.1-41.4 | 範囲を絞って開始 |
$harness-loop JLB3R-02..JLB3R-08 | Plans.md の task ID 順で範囲を絞って開始 |
$harness-loop all --max-cycles 3 | 最大 3 サイクルで停止 |
$harness-loop all --max-workers 4 | 1 cycle の ready batch を最大 4 worker までに制限 |
$harness-loop all --max-workers max | ready batch 内で実行可能なタスク数を上限として並列化 |
$harness-loop all --plan roadmap | named Plans の roadmap を対象にループ実行 |
$harness-loop all --executor task | 旧来の 1 task per cycle local worker 実行へ逃がす |
$harness-loop all --pacing night | サイクル間の待機を長めにする |
$harness-loop status | 現在の実行状況を確認 |
$harness-loop stop | 進行中ジョブを止めてループ停止要求を出す |
harness codex-loop start all範囲指定:
harness codex-loop start 41.1-41.4 --max-cycles 5 --pacing worker
harness codex-loop start JLB3R-02..JLB3R-08 --max-cycles 5 --pacing worker
harness codex-loop start all --max-workers max --pacing worker
harness codex-loop start all --plan roadmap --max-cycles 5
harness codex-loop start all --executor task --max-cycles 5START..END は、Plans.md に並んでいる task ID をそのまま使う範囲指定。
英字やハイフンを含む task ID は .. を優先する。
41.1-41.4 のような従来の数値レンジも引き続き使える。
--max-workers は、Breezing が 1 cycle で同時に動かす worker 数の上限。
max は、選択範囲内で Depends が満たされた ready task の数をそのまま上限にする。
--executor task は、Breezing ではなく local worker に 1 task だけ渡す互換用の逃げ道。
問題切り分けや、並列実行したくない危険な作業で使う。
複数 Plans.md がある repo では、長時間 run の起動時に --plan NAME を明示する。
runner は開始時に解決した Plans file を cycle 間で保持するため、途中で active plan を切り替えない。
起動前に、選択済み plan の目的、担当範囲、DoD、spec、検証証拠、原依頼と承認の参照を確認する。状態確認だけの依頼で start を呼ばない。
再開時は最新の run state と選択済み plan を読み、決定と理由、失敗履歴、残る判断、直前の advisor response を回収する。助言で元の契約や承認境界を置き換えない。
不足は読み取りで補い、軽微な仮定を明示する。承認済み可逆作業は再確認せず進め、保護操作や STOP は既定の停止条件を守る。
起動成功は作業完了の証拠ではない。status、job の実結果、DoD と review の証拠を照合して報告する。必須チェック後の追加検証は新しい変更、失敗、未解決の懸念がある場合に限る。
harness codex-loop status
harness codex-loop status --jsonharness codex-loop stop.claude/state/codex-loop/ に Harness loop の実行状態を書き出すcc:TODO / cc:WIP を集め、ready batch を作る--max-workers で ready batch の同時実行数を制限する--executor task の時だけ、互換用 local worker が 1 task per cycle で codex exec を起動する(CODEX_LOOP_TASK_DRIVER=companion の時だけ bash "${HARNESS_PLUGIN_ROOT}/scripts/codex-companion.sh" task --background --write ... を使う)Codex 0.123.0 以降の background agent は realtime handoff で transcript delta を受け取れる。
この delta は「状況把握用の追記」であり、毎回ユーザーへ返答する合図ではない。
ひとことで: background agent は、必要な時だけ報告し、何も判断が変わらない時は明示的に沈黙する。
たとえると、見張り役が廊下でずっと実況するのではなく、異常・完了・判断待ちだけを知らせる形。
報告してよいタイミング:
already running、stop 受理など、ユーザー操作に関わる lifecycle 境界RESULT: APPROVED / RESULT: BLOCKEDREQUEST_CHANGES、plateau、advisor STOP で止まる時status を実行した時、または明示的に途中状況を聞いた時沈黙するタイミング:
runner.log / jobs/*.log に既に残る細かな stdout だけが増えた時pacing 待機中で、次 cycle まで新しい判断材料がない時途中報告の頻度:
harness codex-loop status --json と project root の .claude/state/codex-loop/runner.log に寄せ、会話側には要点だけ出す。Advisor / Reviewer drift との関係:
advisor-request.v1 に response がない、review-result.v1 が返らない、contract が未承認などの異常は必ず state / log に残し、必要ならユーザーへ報告する。PLAN / CORRECTION / STOP の相談役、Reviewer は最終品質判定役のまま分離する。| 値 | 用途 | 待機秒数 |
|---|---|---|
worker | 通常の開発ループ | 270 |
ci | 短めに確認したい時 | 270 |
plateau | 行き詰まり気味の再試行 | 1200 |
night | 長めの放置実行 | 3600 |
Codex 版 harness-loop は、Codex native の会話・実行キャッシュと、Harness が共有する project state を分けて扱う。
.claude/state/ 配下に置く。Claude 側の advisor / review / checkpoint と共有するため、harness codex-loop status もここを読む。.claude/state/codex-loop/ 配下に置く。これは「Codex 全体の正本」ではなく、Harness loop runner の job / cycle / log 用 state。${CODEX_HOME:-~/.codex} 配下に残る Codex 自身の thread / transcript / cache。Harness loop の task status、advisor history、review result の正本にはしない。.Codex/ や ~/.Codex を正本 path として案内しない。大文字 Codex ディレクトリは historical drift と見なす。つまり、.claude/state/codex-loop/ は「この project の Harness loop state」であり、Codex native state 全体の固定保存先ではない。
以下はすべて project root 基準。
.claude/state/codex-loop/run.json.claude/state/codex-loop/cycles.jsonl.claude/state/codex-loop/runner.log.claude/state/codex-loop/current-job.json.claude/state/codex-loop/jobs/*.json.claude/state/codex-loop/jobs/*.log.claude/state/codex-loop/jobs/*.out.claude/state/advisor/history.jsonl.claude/state/advisor/last-request.json.claude/state/advisor/last-response.json.claude/state/locks/codex-loop.lock.dAdvisor は「代わりに実装する役」ではなく、「次の一手だけ返す相談役」。 loop では次の 3 箇所でだけ呼ぶ。
| タイミング | reason_code | 何をするか |
|---|---|---|
| 高リスク task の初回実行前 | high-risk-preflight | 先に固める観点を聞く |
| 同じ原因の 2 回目失敗後 | retry-threshold | 方針変更か局所修正かを聞く |
| plateau による停止直前 | plateau-pre-escalation | 本当に止めるべきかを聞く |
decision は 3 種だけ。
| decision | loop の扱い |
|---|---|
PLAN | advice を次の executor prompt 先頭に足して再実行 |
CORRECTION | 局所修正の指示として再実行 |
STOP | loop を停止し、理由を state と runner.log に残す |
同じ trigger は trigger_hash = task_id + reason_code + normalized_error_signature で 1 回だけ相談する。
相談回数は task ごとに最大 3 回で、それ以上はユーザー判断に上げる。
already running で止まる。--executor task を使う。status と runner.log を見れば、今どこで止まっているか追いやすい。「Phase 41 の残タスクを、今日の間は自動で回したい」なら:
harness codex-loop start 41.1-41.4 --max-cycles 8 --max-workers max --pacing worker途中で様子を見る:
harness codex-loop status夜になって止めたい:
harness codex-loop stopCodex では Claude の /loop と同じ wake-up 機構をそのまま使えない。
その代わり、Codex loop runner を土台にして、
Harness 側で状態管理と再入制御を持ち、実作業は Breezing の batch 実行に寄せる。
そうすると、長時間タスクでも「止める」「再開する」「今の状態を見る」が素直になり、
依存関係を満たした作業だけを安全にまとめて進められる。
© Chachamaru127, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills-codex/harness-loop of Chachamaru127/claude-code-harness.
Open the folder on GitHubat commit 2b2b748
Harness Loop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Harness Loop this skillChachamaru127/claude-code-harness | 3.2k | — | ~2.2k | Automated safety check: Notes | MIT | |
| agtx One-Shot Project Runnerfynnfluegge/agtx | 1.7k | — | ~3.8k | Automated safety check: Pass | Apache-2.0 | |
| Cursor Orchestratecursor/plugins | 10k | — | ~1.1k | Automated safety check: Pass | None | |
| GSD Quick Batchopen-gsd/gsd-core | 10k | — | ~1.4k | Automated safety check: Notes | MIT | |
| AutopilotYeachan-Heo/oh-my-claudecode | 40k | 1 repos | ~4.4k | Automated safety check: Pass | MIT | |
| MemPalace Task HandoffMemPalace/mempalace | 59k | — | ~1.9k | Automated safety check: Pass | MIT |
fynnfluegge/agtx
Runs a whole project unattended on an agtx kanban board, decomposing the goal, starting tasks, unblocking workers and merging each result.
cursor/plugins
Splits a large goal into a tree of parallel Cursor cloud agents, with planners, workers and verifiers coordinated by a script and reporting through structured handoffs.
open-gsd/gsd-core
Runs several small /gsd-quick tasks as one batch, with a single coordinator that plans them, dispatches workers per item and owns all shared writes and worktree merges.
Yeachan-Heo/oh-my-claudecode
Takes a short product idea through requirements, design, planning, parallel implementation, QA cycles and multi-reviewer validation to produce working code.
MemPalace/mempalace
Creates, hands off, claims, executes and closes agent tasks through the MemPalace logstream, with approval of the exact task before it is recorded.
the-open-engine/zeroshot
Use Zeroshot to prepare, run, observe, or troubleshoot explicit multi-agent software work locally or on Zeroshot Cloud.
Chachamaru127/claude-code-harness
Diagnoses failing CI pipelines and tests, deciding first whether the test or the implementation is at fault, and hands hard cases to a dedicated fixer subagent.
Chachamaru127/claude-code-harness
Hands one implementation task to Cursor Composer in an isolated git worktree, then reviews its diff and cherry-picks the result into the main branch.
Chachamaru127/claude-code-harness
Renders a single HTML page showing each acceptance criterion as verified or not, with a ship, wait, or reject recommendation for non-engineers.
Chachamaru127/claude-code-harness
Repeats a long task as a series of scheduled wake-ups, each re-entering with fresh context and calling harness-work for one task per cycle.
Chachamaru127/claude-code-harness
Creates and maintains Plans.md task plans with a spec delta, updates task markers and syncs plan progress with the implementation.
Chachamaru127/claude-code-harness
Runs a release for any project that keeps a Keep a Changelog file on GitHub, from version bump to merge, tag and GitHub Release after a single approval.
Categories
Starts a background runner that works through ready batches of tasks from Plans.md one cycle at a time via Breezing, with status and stop controls. The skill launches a real background process rather than a simulated loop. Each cycle picks one ready batch, meaning tasks marked cc:TODO or cc:WIP whose dependencies are met, hands it to Breezing, checks the result and moves to the next batch.
Harness Loop fits situations like: running many independent plan tasks unattended over a long session; limiting an autonomous run to a range of Plans.md task IDs; checking the progress of a running background loop; stopping a loop that is partway through its batches.
Run `npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a claude-code`. Or copy the skill folder (skills-codex/harness-loop in Chachamaru127/claude-code-harness) into .claude/skills/harness-loop in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a codex`. Or copy the skill folder (skills-codex/harness-loop in Chachamaru127/claude-code-harness) into .agents/skills/harness-loop in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Chachamaru127/claude-code-harness --skill harness-loop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/harness-loop, .gemini/skills/harness-loop, .github/skills/harness-loop and .opencode/skills/harness-loop in your project.
Going by SKILL.md and its folder, Harness Loop needs the command-line tools its instructions call (codex and bash). Our summary lists: The harness command-line tool; A Plans.md file listing tasks and their dependencies. Its frontmatter pre-approves these tools: Read, Bash.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Harness Loop is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Harness Loop: agtx One-Shot Project Runner (fynnfluegge/agtx, 1.7k stars), Cursor Orchestrate (cursor/plugins, 10k stars), GSD Quick Batch (open-gsd/gsd-core, 10k stars) and Autopilot (Yeachan-Heo/oh-my-claudecode, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Chachamaru127 (a GitHub user) maintains it in Chachamaru127/claude-code-harness, which has 3,154 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on October 5, 2026.
Source: Chachamaru127/claude-code-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.