From claude-code-harness
Read-only delegation to Cursor agent for questions, sanity checks, second opinions, and design reviews. No writes, safe for investigation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-code-harness:cursor-ask [question][question]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
cursor-agent (Composer) に **read-only** で質問・調査・設計相談・敵対的レビューを委譲する軽量スキル。
cursor-agent (Composer) に read-only で質問・調査・設計相談・敵対的レビューを委譲する軽量スキル。
cursor-companion.sh task は引数なしで --mode ask (hard read-only stop) が自動で付くため、--write を渡さない限り cursor 側は ファイル書き込み・コマンド実行ができない。これにより worktree 隔離・cherry-pick・Lead diff review がすべて不要になる。
cursor:ask "この設計判断、Composer 視点でどう思う?"
cursor:ask "TASK_BASE_REF からの diff を読んで、見落としを 3 つ挙げて"
cursor:ask "harness-mem の cross-project N-call、楽観的すぎる前提はある?"
用途:
| ケース | 例 |
|---|---|
| 質問 | "この型エラーの根本原因は?" |
| 調査 | "scripts/ 配下で curl を使ってる箇所を全部挙げて理由付きで" |
| 設計相談 | "この abstraction、3 年後に保守できる?" |
| 敵対的視点 | "この PR の最大の弱点を 1 つだけ挙げて" |
敵は 冗長さ であって進捗報告ではない。起動時に何を聞くか・どう進めるかを簡潔に明示してから実行する。冗長な繰り返し・中身のない前置きだけを禁ずる。
🚀 cursor / composer-2.5-fast / ask
これから: <質問の要点> を composer に投げて、結果を 3-5 行で要約
banner 1 行 + 計画 1-2 行。1 秒以内に出し、即 Step 2 へ。
→ composer に問い合わせ中)違反例 (冗長):
× 「cursor に質問を投げる準備をします」→ bash → 「投げます」(中身のない前置き + 言い換え)
× 「ask モードは読み取り専用なので安全です」と再説明(既知事実の繰り返し)
× ★ Insight ──── まず cursor の状態を確認します: ...
正常例 (簡潔 + 計画明示):
🚀 cursor / composer-2.5-fast / ask
これから: 設計の弱点を composer に問い、結果を 3-5 行で要約
上記 Narration Rules に従い、banner + 計画 (3 行以内) を出してから Step 1 へ。
Step 0 で banner + 計画 (3 行以内) は出し切っているので、ここでは banner 行が出ていることを確認する。banner は:
🚀 cursor / composer-2.5-fast / ask
以降は委譲開始の 1 行ステータス等で進捗を見せてよい。冗長な繰り返しのみ避ける。
composer-2.5-fast は scripts/model-routing.sh --host cursor --role worker --field model で解決される値の代表表記。実際の resolved model は cursor-companion 側のログに出る。
$ARGUMENTS を質問文として渡す。--write は絶対に付けない。scripts/cursor-companion.sh を相対パスで呼ぶと consumer repo の cwd 直下に見えず exit するため、CLAUDE_PLUGIN_ROOT / HARNESS_PLUGIN_ROOT を hooks.json と同じ valid_root パターンで解決する (Issue #193 §2):
QUESTION="$ARGUMENTS"
if [ -z "$QUESTION" ]; then
echo "ERROR: question required. Usage: cursor:ask \"<your question>\"" >&2
exit 1
fi
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"
bash "${HARNESS_PLUGIN_ROOT}/scripts/cursor-companion.sh" task "$1"
' _ "$QUESTION"
これだけで cursor-agent 側は --mode ask (hard read-only stop) に locked される。--force / --yolo も付かない。
cursor の出力をそのまま貼らない。host (Claude/Codex) が読んで 3-5 行に要約 する:
要約後、最後に literal で次の一文を出力する:
↑この結果は host が要約します。Enter キーで次へ進むか、新規 prompt で別の指示を出してください。
cursor は不透明なサブプロセスであり、Harness のガードレール (R01-R13) は内部に適用されない。read-only 委譲でも以下の前提条件を満たすこと。
| 項目 | 内容 | 設定場所 |
|---|---|---|
| Secret 遮断 | .cursorignore で .env / *.pem / *.key / .ssh / .aws / .git を読取対象から除外 | repo root .cursorignore |
| Egress allowlist | ~/.claude/settings.json の sandbox.network.allowedDomains に *.cursor.sh を追加 | user settings |
| Filesystem allowlist | 同 sandbox.filesystem.allowWrite に ~/.cursor を追加 (cursor-agent が状態書込を行うため) | user settings |
| permissions.json | ~/.cursor/permissions.json の terminalAllowlist / mcpAllowlist は read mode でも有効 (allowlist は best-effort、security boundary ではない) | user config |
詳細は .claude/rules/cursor-cli-only.md を参照。
| 通常の cursor 委譲で必要 | ask mode では不要 | 理由 |
|---|---|---|
| 隔離 worktree | 不要 | cursor は書き込みできない |
| Lead diff review | 不要 | 差分が生まれない |
| cherry-pick | 不要 | 同上 |
worker-report.v1 / self_review 5 件 | 不要 | 実装をしないため |
.cursorignore を怠ると秘密ファイルが cursor 推論に渡るLead (Claude/Codex) ──[cursor-companion.sh task]──> cursor-agent (--mode ask, locked read-only)
│
└──[Step 3: 3-5 行要約]──> User
Worker 介在なし。Reviewer 介在なし。worker-report.v1 / review-result.v1 契約は発生しない。
cursor-do — 書込タスク委譲(worktree + Lead review + cherry-pick の full containment)breezing --cursor — Reviewer のみ cursor に逃がす lean second-opinion レーンharness-review --cursor — レビューを cursor (composer-2.5-fast) に second-opinion として依頼.claude/rules/cursor-cli-only.md — Cursor backend governance (trust boundary, prohibited flags)npx claudepluginhub chachamaru127/claude-code-harness --plugin claude-code-harnessDelegates a single write task to Cursor Composer in an isolated worktree, then reviews the diff and cherry-picks to main. Use when you want Cursor to implement one focused change under human review.
Consults Codex CLI for second opinions on code reviews, designs, or implementations by crafting context-based prompts, executing via bash with configurable depth (light/normal/deep), and summarizing results.
Provides solutions to Cursor IDE pitfalls including AI Composer errors, context overflow, security gotchas, configuration issues, and team workflow problems.