Clawteam
win4r/ClawTeam-OpenClaw
Multi-agent swarm orchestration. An agent skill from win4r/ClawTeam-OpenClaw.
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.
SKILL.md written in Japanese; this summary is our English description.
$ npx skills add Chachamaru127/claude-code-harness --skill cursor-do -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Chachamaru127/claude-code-harness cursor-do --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/cursor-do .claude/skills/cursor-do && 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 "cursor-do" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills/cursor-do into .claude/skills/cursor-do/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-do", 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/cursor-doType 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 cursor-do -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Chachamaru127/claude-code-harness cursor-do --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/cursor-do .agents/skills/cursor-do && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cursor-do" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills/cursor-do into .agents/skills/cursor-do/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-do", 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 cursor-do -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Chachamaru127/claude-code-harness cursor-do --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/cursor-do .cursor/skills/cursor-do && 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 "cursor-do" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills/cursor-do into .cursor/skills/cursor-do/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-do", 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/cursor-do--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 cursor-do -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Chachamaru127/claude-code-harness cursor-do --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/cursor-do .gemini/skills/cursor-do && 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 "cursor-do" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills/cursor-do into .gemini/skills/cursor-do/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-do", 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 cursor-doInstalls 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 cursor-do -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/cursor-do .github/skills/cursor-do && 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 "cursor-do" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills/cursor-do into .github/skills/cursor-do/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-do", 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 cursor-do -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 cursor-do --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/cursor-do .opencode/skills/cursor-do && 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 "cursor-do" agent skill from https://github.com/Chachamaru127/claude-code-harness/tree/main/skills/cursor-do into .opencode/skills/cursor-do/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cursor-do", 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.
cursor-doHands one implementation task to Cursor Composer in an isolated git worktree, then reviews its diff and cherry-picks the result into the main branch.
A single write task is delegated to Cursor Composer through the `cursor-companion.sh` script, running inside a dedicated worktree so the main checkout stays untouched. When Composer finishes, the lead agent reviews the diff and cherry-picks it, which keeps one task to one cherry-pick without starting a team run. Cursor's output counts as untrusted until that review, and a reference file explains that the worktree, the diff review and the cherry-pick are the only real isolation.
The SKILL.md is written in Japanese. It opens with a one-line banner and a short plan, keeps progress to single-line statuses, and then runs a parallel pre-check of the branch and the `cursor-agent` binary before creating the worktree. If `cursor-agent` is missing it stops with an error that points to the setup script. Planning, review-only work, read-only investigation and multi-task runs are left to other skills.
9 steps, taken from the step headings 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:
ReadWriteEditBashGlobGrepFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitbashFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
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.
Cursor Composer Task Delegate loads about 4.4k tokens when it runs, and up to ~7.6k if it reads all its reference files. Until then it costs about 107 tokens; SKILL.md has 809 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.
- secret / `.env` / 認証情報を含まないかallowed-tools: Read, Write, Edit, Bash, Glob, GrepAutomated 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). 809 words, ~4,390 tokens.
.claude/skills/cursor-do/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.1 件の実装タスクを Cursor Composer (composer-2.5-fast) に専用 worktree 内で委譲し、Lead が diff をレビューしてから main へ cherry-pick する skill。breezing の team フローを起こさず、1 タスク 1 cherry-pick を最短経路で回す。
封じ込めは Cursor 側にはない (references/cursor-cli-only.md)。専用 .git を持つ worktree + Lead diff review + cherry-pick (R01-R13 経路) の 3 点だけが実効的な境界。cursor の出力は Lead レビューまで untrusted として扱う。
敵は 冗長さ であって進捗報告ではない。breezing と同じ契約。起動時に banner + 実行計画を簡潔に明示してから実行する。見やすい進捗報告は歓迎、冗長な繰り返しのみ禁止。
🚀 cursor / composer-2.5-fast / feat/foo-bar / Add login form validation
これから:
1. pre-check (branch / cursor-agent) → 専用 worktree 作成
2. composer に実装委譲 (--write)
3. diff レビュー → cherry-pick → Plans.md 更新banner 1 行 (🚀 cursor / composer-2.5-fast / <branch> / <task>) + 計画 2-4 行。1 秒以内に出し、即 Step 1 へ。
✓ worktree 作成: .claude/worktrees/cursor-do-...)違反例 (冗長):
× 「composer 2.5 で実装する流れですね、まず確認します」(中身のない前置き)
× 「Cursor を呼ぶ前に branch を見ます」 → bash → 「branch を確認しました」(言い換え)
× ★ Insight ──── Cursor の強みは…正常例 (簡潔 + 計画明示):
🚀 cursor / composer-2.5-fast / feat/foo-bar / Add login form validation
これから: worktree 作成 → composer に実装委譲 → diff レビュー → cherry-pick引数 $ARGUMENTS をタスク説明として受ける。空なら直前の明示依頼と選択済み Plans.md を読み、対象を回収する。
それでも対象を特定できない場合だけ、以下のマーカーを出力してユーザーに 1 行タスクを要求し、入力後に Step 2 へ進む:
CURSOR_DO_AWAITING_TASK: provide a one-line task description as $ARGUMENTS引数があれば、即 1 行 echo:
🚀 cursor / composer-2.5-fast / <current-branch> / <task-first-60-chars><current-branch> は Step 2 で取得する値だが、Step 1 では未取得のため … でも可。Step 2 直後に確定値を 1 行で再出力する。Step 0 の banner + 実行計画 (5 行以内) はここで出し切り、以降は各ステップの 1 行ステータスで進捗を見せる。冗長な繰り返しのみ避ける。
1 つの bash 呼び出しで以下を並列に取り、結果だけを 1 ブロックで受ける。個別の説明は出さない。
bash -c '
set +e
echo "==BRANCH=="; git branch --show-current
echo "==VERSION=="; cat VERSION 2>/dev/null
echo "==PLANS_TAIL=="; tail -n 12 Plans.md 2>/dev/null
echo "==CURSOR_AGENT=="
CURSOR_AGENT_BIN="${CURSOR_AGENT_BIN:-}"
if [ -z "$CURSOR_AGENT_BIN" ]; then
# `agent`(公式の新表記)→ `cursor-agent`(legacy alias)の順に探す。
# `agent` は汎用的な名前なので、symlink 解決後の実パスの「成分」に
# cursor-agent が完全一致で現れる場合だけ採用する(部分文字列一致だと
# /x/cursor-agent-not-really/agent のようなディレクトリ名で突破される)。
for _c in agent cursor-agent; do
_p="$(command -v "$_c" 2>/dev/null)" || continue
[ -n "$_p" ] || continue
_r="$(realpath "$_p" 2>/dev/null || readlink -f "$_p" 2>/dev/null || echo "$_p")"
case "/$_r/" in */cursor-agent/*) CURSOR_AGENT_BIN="$_p"; break ;; esac
done
if [ -z "$CURSOR_AGENT_BIN" ] && [ -x "$HOME/.local/bin/cursor-agent" ]; then
CURSOR_AGENT_BIN="$HOME/.local/bin/cursor-agent"
fi
fi
if [ -z "$CURSOR_AGENT_BIN" ]; then
echo "NOT_INSTALLED"
else
"$CURSOR_AGENT_BIN" --version 2>/dev/null || echo "NOT_INSTALLED"
fi
'判定:
CURSOR_AGENT=NOT_INSTALLED → ERROR: cursor-agent not found (exit 3 expected from companion). Install via setup-cursor.sh. を出し終了。BRANCH が main / master → WARN: on protected branch — cherry-pick target is HEAD of this branch. Confirm intent or switch. を出し継続。HARNESS_PLUGIN_ROOT / CLAUDE_PLUGIN_ROOT が未設定だと :-. fallback が consumer repo の cwd に解決し、scripts/cursor-companion.sh が見えず起動不能になる (Issue #193 §2)。hooks.json と同じ valid_root パターンで堅牢に解決する。
bash -c '
set -euo pipefail
valid_root() {
[ -n "${1:-}" ] && [ -f "$1/scripts/cursor-companion.sh" ] && { [ -f "$1/.claude-plugin/plugin.json" ] || [ -f "$1/.codex-plugin/plugin.json" ] || [ -f "$1/.cursor-plugin/plugin.json" ]; }
}
HARNESS_PLUGIN_ROOT="${HARNESS_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-}}"
ROOT="$HARNESS_PLUGIN_ROOT"
if ! valid_root "$ROOT"; then
ROOT=""
if [ -n "${CLAUDE_SKILL_DIR:-}" ]; then
probe="$(cd "${CLAUDE_SKILL_DIR}" && pwd)"
while [ "$probe" != "/" ] && ! valid_root "$probe"; do
probe="$(cd "$probe/.." && pwd)"
done
valid_root "$probe" && ROOT="$probe"
fi
fi
if ! valid_root "$ROOT"; then
ROOT=""
for c in "${CLAUDE_PROJECT_DIR:-}" "$PWD" \
"$HOME/.claude/plugins/marketplaces/claude-code-harness-marketplace" \
"$HOME/.claude/plugins/cache/claude-code-harness-marketplace/claude-code-harness/"*; do
if valid_root "$c"; then ROOT="$c"; break; fi
done
fi
if ! valid_root "$ROOT"; then
echo "ERROR: claude-code-harness plugin root not found (no scripts/cursor-companion.sh)" >&2
exit 2
fi
HARNESS_PLUGIN_ROOT="$ROOT"
BACKEND=$(bash "${HARNESS_PLUGIN_ROOT}/scripts/resolve-impl-backend.sh" --backend cursor --role worker)
MODEL=$(bash "${HARNESS_PLUGIN_ROOT}/scripts/model-routing.sh" --host cursor --role worker --field model)
echo "PLUGIN_ROOT=${HARNESS_PLUGIN_ROOT}"
echo "BACKEND=$BACKEND"
echo "MODEL=$MODEL"
'返却値: PLUGIN_ROOT (Step 5 で使う) / BACKEND (必ず cursor) / MODEL (通常 composer-2.5-fast)。BACKEND または MODEL が空なら ERROR: backend/model resolution failed を 1 行で出して終了。PLUGIN_ROOT 解決失敗は上記スクリプトが exit 2 で報告する。
衝突しない id を作って worktree を切る。main tree や $HOME を指してはならない (companion 側 guard で exit 2 になる)。WT_DIR は絶対パスで作る (Step 5 の --workspace は companion の is not a directory ガードで相対パスを exit 2 にすることがあるため、Issue #193 §4)。
bash -c '
set -euo pipefail
REPO_ROOT="$(git rev-parse --show-toplevel)"
cd "$REPO_ROOT"
ID="$(date +%Y%m%d-%H%M%S)-$$"
WT_DIR="$REPO_ROOT/.claude/worktrees/cursor-do-${ID}"
BASE_REF="$(git rev-parse HEAD)"
BASE_BRANCH="$(git branch --show-current)"
WT_BRANCH="cursor-do/${ID}"
mkdir -p "$REPO_ROOT/.claude/worktrees"
git worktree add -b "${WT_BRANCH}" "${WT_DIR}" "${BASE_REF}"
echo "REPO_ROOT=${REPO_ROOT}"
echo "WT_DIR=${WT_DIR}"
echo "WT_BRANCH=${WT_BRANCH}"
echo "BASE_REF=${BASE_REF}"
echo "BASE_BRANCH=${BASE_BRANCH}"
'返却された WT_DIR / WT_BRANCH / BASE_REF / BASE_BRANCH を以降の Step で使う。失敗時 (branch 名衝突等) は ID を作り直して 1 回だけ retry。2 回連続失敗で ERROR: worktree creation failed を出し終了。
Lead が直接 companion を呼ぶ (references/cursor-cli-only.md Topology 節 — 非 claude backend では Worker 介在なし)。プロンプトは引数の task そのまま + 必要な追補のみ。冗長な前置きは付けない。
bash -c '
set -euo pipefail
valid_root() {
[ -n "${1:-}" ] && [ -f "$1/scripts/cursor-companion.sh" ] && { [ -f "$1/.claude-plugin/plugin.json" ] || [ -f "$1/.codex-plugin/plugin.json" ] || [ -f "$1/.cursor-plugin/plugin.json" ]; }
}
HARNESS_PLUGIN_ROOT="${HARNESS_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-}}"
ROOT="${PLUGIN_ROOT:-$HARNESS_PLUGIN_ROOT}"
if ! valid_root "$ROOT"; then
ROOT=""
if [ -n "${CLAUDE_SKILL_DIR:-}" ]; then
probe="$(cd "${CLAUDE_SKILL_DIR}" && pwd)"
while [ "$probe" != "/" ] && ! valid_root "$probe"; do
probe="$(cd "$probe/.." && pwd)"
done
valid_root "$probe" && ROOT="$probe"
fi
fi
if ! valid_root "$ROOT"; then
ROOT=""
for c in "${CLAUDE_PROJECT_DIR:-}" "$PWD" \
"$HOME/.claude/plugins/marketplaces/claude-code-harness-marketplace" \
"$HOME/.claude/plugins/cache/claude-code-harness-marketplace/claude-code-harness/"*; do
if valid_root "$c"; then ROOT="$c"; break; fi
done
fi
if ! valid_root "$ROOT"; then
echo "ERROR: claude-code-harness plugin root not found (no scripts/cursor-companion.sh)" >&2
exit 2
fi
HARNESS_PLUGIN_ROOT="$ROOT"
PROMPT="<task-description>
Purpose and why: <expected outcome and user need>
Owned paths and non-goals: <assigned files/modules and excluded work>
Definition of done: <observable conditions and required checks>
Contract and authorization references: <selected plan/spec paths and original user instruction or applicable approval record>
Available evidence: <observed state, prior attempts, findings and artifact paths>
Constraints:
- Choose the implementation method within the assigned scope. Other workers may be active; preserve their edits.
- Recover missing context from the supplied contracts and read-only inspection first. State minor assumptions; stop only the action that needs a material decision or missing authorization.
- Complete authorized reversible work without asking again. Inferred scope is not authorization for protected operations.
- Preserve required TDD and validation. After required checks pass, add checks only for new changes, failures, or unresolved concerns.
- Match existing code style and naming.
- Create exactly one git commit if your environment supports it; otherwise leave one dirty changeset for Lead auto-commit.
- Do not touch .claude-plugin/settings*, .claude/settings*, .eslintrc*, biome.json, tsconfig*.json.
- Return the result, decision reasons, changed paths, check commands/results and remaining limitations. A success claim alone is not evidence."
bash "${HARNESS_PLUGIN_ROOT}/scripts/cursor-companion.sh" task \
--write \
--workspace "${WT_DIR}" \
"${PROMPT}"
' 2>&1判定:
ERROR: cursor returned is_error/empty result を出し終了。worktree は Step 8 のクリーンアップで削除worktree 内で Composer が作成した変更を読み、目視レビュー + contract grep の二段ゲートを通す (harness-work 「Lead の cherry-pick 前ゲート」と同じ契約)。
注意 (Issue #193 §1): Cursor Composer は --write でファイル編集を行うが commit は作らないことがある。worktree が dirty なまま放置すると Step 7 の cherry-pick 対象から漏れ、ユーザー視点で「完了したのに main に何も入らない」状態になる。本 Step 冒頭で dirty なら、既存 commit がある場合は amend、commit がない場合は Lead 側で 1 commit にまとめる。
bash -c '
set -euo pipefail
cd "${WT_DIR}"
# Composer は dirty changeset を返すことがあるため、既存 commit に fold する
if [ -n "$(git status --porcelain)" ]; then
git add -A
if [ "$(git rev-list --count "${BASE_REF}..HEAD")" -gt 0 ]; then
git -c user.name="cursor-composer" -c user.email="cursor-composer@local" \
commit --amend --no-edit --no-verify
echo "==AUTO_AMENDED=="
else
git -c user.name="cursor-composer" -c user.email="cursor-composer@local" \
commit --no-verify -m "cursor: ${TASK_SUMMARY:-cursor-do delegated change}"
echo "==AUTO_COMMITTED=="
fi
git log -1 --oneline
fi
echo "==LOG=="
git log --oneline "${BASE_REF}..HEAD"
echo "==STAT=="
git diff --stat "${BASE_REF}..HEAD"
echo "==DIFF=="
git diff "${BASE_REF}..HEAD"
'TASK_SUMMARY は引数 task の先頭 60 文字以内に圧縮した文字列を Lead が事前に export しておく (例: TASK_SUMMARY="Add login form validation")。未設定なら fallback メッセージ cursor-do delegated change を使う。--no-verify を付けるのは worktree 内の編集を「Lead レビュー前の中間 commit」として扱うため (cherry-pick 後の main commit で R01-R13 と pre-commit hook を通す)。
Lead は diff 全文を Read し、以下を確認する:
.claude-plugin/settings*, .eslintrc*, etc.) を変更していないか.env / 認証情報を含まないかWT_DIR) 内で実行する:[ ! -f "${WT_DIR}/tests/test-support-claim-wording.sh" ] || (cd "${WT_DIR}" && bash tests/test-support-claim-wording.sh)
[ ! -f "${WT_DIR}/scripts/ci/check-consistency.sh" ] || (cd "${WT_DIR}" && bash scripts/ci/check-consistency.sh)
[ ! -f "${WT_DIR}/tests/validate-plugin.sh" ] || (cd "${WT_DIR}" && bash tests/validate-plugin.sh)判定:
git reset で巻き戻すか、Cursor に再委譲 (Step 5 を 1 回だけ retry)。2 回失敗で REQUEST_CHANGES: <理由> を出し、worktree を残したまま終了ABORT: protected path violation を出し worktree 削除worktree から main tree に cherry-pick する。Cursor prompt は exactly one commit 契約だが、Composer は dirty changeset を返すことがあるため Step 6 で commit/amend する。複数 commit が残った場合は main tree を触る前に停止する。
さらに cherry-pick 前に Plans.md の staged / unstaged 差分がないことを確認する。理由: 既存差分がある状態で後続の git add Plans.md && git commit --amend を行うと、task と無関係な plan/status 編集を Cursor の code commit に巻き込むため。
SHA 直接指定 (branch 名経由ではない) で reviewer state drift を避ける (MEMORY: reviewer_state_drift)。
bash -c '
set -euo pipefail
COMMIT_COUNT="$(cd "${WT_DIR}" && git rev-list --count "${BASE_REF}..HEAD")"
if [ "${COMMIT_COUNT}" -eq 0 ]; then
echo "ERROR: no commits to cherry-pick"
exit 1
fi
if [ "${COMMIT_COUNT}" -ne 1 ]; then
echo "ERROR: cursor returned ${COMMIT_COUNT} commits; expected exactly one. Keep worktree for manual review: ${WT_DIR}"
exit 1
fi
if ! git diff --quiet -- Plans.md || ! git diff --cached --quiet -- Plans.md; then
echo "ERROR: Plans.md has pre-existing local edits; refusing to cherry-pick before the cursor:do marker amend"
exit 1
fi
SHA="$(cd "${WT_DIR}" && git rev-parse HEAD)"
git cherry-pick "${SHA}"
echo "==CHERRY_PICKED=="
git log --oneline -n 1
'cherry-pick で conflict が出たら git cherry-pick --abort し、CHERRY_PICK_CONFLICT: <files> を 1 行で示して終了 (worktree は残す、ユーザー判断)。
cherry-pick 後、Plans.md に対応行があれば該当タスクのマーカーを更新する。 上記の clean precondition を通過しているため、ここで発生する Plans.md 差分は marker-only diff として扱う:
| <task> | ... | cc:done [<merged-sha>] |該当行の特定: 引数 task 文字列の先頭 40 文字で grep し、ヒットした最初の cc:TODO / cc:WIP / cc:todo 行を cc:done [<sha>] に置換する。ヒットなしなら更新スキップ (Plans.md 外のタスクとして扱う)。
マーカーを更新した場合、その編集は cherry-pick commit に含める。未コミットの Plans.md を残して cleanup / 完了報告へ進んではならない。
以下の amend block は、上記 precondition 通過後に実行した marker-only diff だけを対象にする:
bash -c '
set -euo pipefail
if git diff --quiet -- Plans.md; then
echo "PLANS_UPDATED=0"
else
git add Plans.md
git commit --amend --no-edit
echo "PLANS_UPDATED=1"
echo "MERGED_SHA=$(git rev-parse HEAD)"
fi
'cherry-pick 成功後、worktree を delete する。失敗 path では呼ばれない(worktree を残してユーザー判断)。
bash -c '
set -euo pipefail
git worktree remove --force "${WT_DIR}"
git branch -D "${WT_BRANCH}" 2>/dev/null || true
echo "==CLEANUP=="
git worktree list | grep -v "cursor-do-" || true
'完了報告は 1 ブロック で出す。中間ナレーションなし:
cursor:do completed
task: <task-first-60-chars>
commits: <count>
base: <BASE_REF> → cherry-picked into <BASE_BRANCH>
plans: <updated|skipped (no match)>
files: <changed-file-count> changed, +<inserts> -<deletes>
checks: <commands, results and evidence paths>
unverified: <remaining limitations or none observed within the checked scope>| 層 | 役割 | skip 可否 |
|---|---|---|
専用 .git worktree | cursor の書込を main tree から隔離 | 不可(必須) |
| Lead diff review | untrusted cursor 出力の品質ゲート | 不可(必須) |
| contract-grep ゲート | docs / locale / matrix 固定文字列の保護 | 不可(必須) |
| cherry-pick → main | R01-R13 guard rail を通す唯一の経路 | 不可(必須) |
| Plans.md cc:done 更新 | 台帳との sync | 該当行なければ skip 可 |
--force / --yolo を companion に渡す(Cursor 公式 "Never use").claude-plugin/settings*, .eslintrc*, tsconfig*.json, etc.) を Step 5 の prompt で許可する$HOME / / / main tree を --workspace に指定するcc:* マーカーを task と無関係に書き換えるcursor:ask — 読取専用の質問・調査・敵対的視点 (worktree 不要)breezing --cursor — 複数タスクを team フローで cursor 委譲する場合harness-work — claude backend の default フロー (Worker agent 経由)references/cursor-cli-only.md — Cursor backend governance + Topology (旧 .claude/rules/cursor-cli-only.md の全文がここに移設済み)© Chachamaru127, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/cursor-do of Chachamaru127/claude-code-harness.
Open the folder on GitHubat commit 2b2b748
Cursor Composer Task Delegate 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 |
|---|---|---|---|---|---|---|
| Cursor Composer Task Delegate this skillChachamaru127/claude-code-harness | 3.2k | — | ~4.4k | Automated safety check: Notes | MIT | |
| Clawteamwin4r/ClawTeam-OpenClaw | 1.5k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Work With PR Lifecyclecode-yeongyu/oh-my-openagent | 70k | — | ~4.6k | Automated safety check: Pass | Custom licence | |
| Ad ReviewCorridorTech/PoseCap | 224 | — | ~2.4k | Automated safety check: Notes | Apache-2.0 | |
| Workflow Code ReviewdavidYichengWei/agentic-engineering-framework | 158 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Worktree Cleanupvchelaru/FlatRedBall | 578 | — | ~810 | Automated safety check: Pass | MIT |
win4r/ClawTeam-OpenClaw
Multi-agent swarm orchestration. An agent skill from win4r/ClawTeam-OpenClaw.
code-yeongyu/oh-my-openagent
Takes a task through to a merged pull request in an isolated git worktree, splitting it into small independent PRs and looping on CI and review gates until they pass.
CorridorTech/PoseCap
Two-axis fresh-context code review per WORKFLOW §10. An agent skill from CorridorTech/PoseCap.
davidYichengWei/agentic-engineering-framework
代码评审。协调 5 个专项 reviewer subagent 对代码进行并行多维度审查。可由用户直接触发,也可由主 agent 加载后作为 Judge 执行。
vchelaru/FlatRedBall
Remove a subagent's .claude/worktrees/agent-<id dir after its PR merges.
NikiforovAll/claude-code-rules
Review changed code for reuse, quality, and efficiency using three parallel disposable subagents.
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
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.
Chachamaru127/claude-code-harness
Routes a review request to the right mode and reference file in the claude-code-harness project: code, plan or scope review, a quick closeout, a dual Claude-and-Codex opinion, or a security-only pass.
Categories
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. sh` script, running inside a dedicated worktree so the main checkout stays untouched. When Composer finishes, the lead agent reviews the diff and cherry-picks it, which keeps one task to one cherry-pick without starting a team run.
Cursor Composer Task Delegate fits situations like: handing a single file edit or refactor to Cursor Composer; running a delegated change in a separate worktree before it reaches main; reviewing Composer's diff before cherry-picking it.
Run `npx skills add Chachamaru127/claude-code-harness --skill cursor-do -a claude-code`. Or copy the skill folder (skills/cursor-do in Chachamaru127/claude-code-harness) into .claude/skills/cursor-do in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Chachamaru127/claude-code-harness --skill cursor-do -a codex`. Or copy the skill folder (skills/cursor-do in Chachamaru127/claude-code-harness) into .agents/skills/cursor-do 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 cursor-do -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cursor-do, .gemini/skills/cursor-do, .github/skills/cursor-do and .opencode/skills/cursor-do in your project.
Going by SKILL.md and its folder, Cursor Composer Task Delegate needs the command-line tools its instructions call (git and bash). Our summary lists: The `cursor-agent` CLI, installed with the setup script; Git with worktree support. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Glob, Grep.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Cursor Composer Task Delegate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Cursor Composer Task Delegate: Clawteam (win4r/ClawTeam-OpenClaw, 1.5k stars), Work With PR Lifecycle (code-yeongyu/oh-my-openagent, 70k stars), Ad Review (CorridorTech/PoseCap, 224 stars) and Workflow Code Review (davidYichengWei/agentic-engineering-framework, 158 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.