CtrlK
BlogDocsLog inGet started
Tessl Logo

cursor-ask

Read-only delegate to cursor-agent (Composer) for questions, investigation, design discussion, and adversarial sanity checks. No worktree, no cherry-pick, no Lead diff review — cursor-agent is locked to ask mode and cannot write. Use when user says: ask cursor, cursor sanity check, get a second opinion, adversarial review, design discussion, investigate with cursor, cursor:ask. Do NOT load for: implementation, refactor, file edits, commit/push work, anything requiring write access (use cursor:do or breezing --cursor instead).

SKILL.md
Quality
Evals
Security

cursor:ask — Read-Only Cursor Delegate

cursor-agent (Composer) に read-only で質問・調査・設計相談・敵対的レビューを委譲する軽量スキル。

cursor-companion.sh task は引数なしで --mode ask (hard read-only stop) が自動で付くため、--write を渡さない限り cursor 側は ファイル書き込み・コマンド実行ができない。これにより worktree 隔離・cherry-pick・Lead diff review がすべて不要になる。

Quick Reference

cursor:ask "この設計判断、Composer 視点でどう思う?"
cursor:ask "TASK_BASE_REF からの diff を読んで、見落としを 3 つ挙げて"
cursor:ask "harness-mem の cross-project N-call、楽観的すぎる前提はある?"

用途:

ケース
質問"この型エラーの根本原因は?"
調査"scripts/ 配下で curl を使ってる箇所を全部挙げて理由付きで"
設計相談"この abstraction、3 年後に保守できる?"
敵対的視点"この PR の最大の弱点を 1 つだけ挙げて"

Narration Rules (UX Contract)

敵は 冗長さ であって進捗報告ではない。起動時に何を聞くか・どう進めるかを簡潔に明示してから実行する。冗長な繰り返し・中身のない前置きだけを禁ずる。

起動時に必ず出すもの (banner + plan、3 行以内)

🚀 cursor / composer-2.5-fast / ask
これから: <質問の要点> を composer に投げて、結果を 3-5 行で要約

banner 1 行 + 計画 1-2 行。1 秒以内に出し、即 Step 2 へ。

進捗報告は出してよい

  • 委譲開始の 1 行 (→ composer に問い合わせ中)
  • 判断に必要な経緯を 1 行で

禁止 (= 冗長さ)

  • 同じ事実の 2 回言い換え: cursor-companion の結果を後段で再説明しない
  • 中身のない前置き: 「使い方を確認します」だけの行など tool call で自明な宣言
  • 3 行以上の経緯振り返り: 必要なら 1 行に圧縮
  • 起動シーケンス中の ★ Insight ブロック: Insight は最終要約で 1 回のみ

違反例 (冗長):

× 「cursor に質問を投げる準備をします」→ bash → 「投げます」(中身のない前置き + 言い換え)
× 「ask モードは読み取り専用なので安全です」と再説明(既知事実の繰り返し)
× ★ Insight ──── まず cursor の状態を確認します: ...

正常例 (簡潔 + 計画明示):

🚀 cursor / composer-2.5-fast / ask
これから: 設計の弱点を composer に問い、結果を 3-5 行で要約

Execution Flow

Step 0: 起動時 banner + plan

上記 Narration Rules に従い、banner + 計画 (3 行以内) を出してから Step 1 へ。

Step 1: banner 確認

Step 0 で banner + 計画 (3 行以内) は出し切っているので、ここでは banner 行が出ていることを確認する。banner は:

🚀 cursor / composer-2.5-fast / ask

以降は委譲開始の 1 行ステータス等で進捗を見せてよい。冗長な繰り返しのみ避ける。

composer-2.5-fastscripts/model-routing.sh --host cursor --role worker --field model で解決される値の代表表記。実際の resolved model は cursor-companion 側のログに出る。

Step 2: helper root 解決 + 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 も付かない。

Step 3: 結果を host が 3-5 行で要約

cursor の出力をそのまま貼らない。host (Claude/Codex) が読んで 3-5 行に要約 する:

  • 結論
  • なぜそう言えるか (cursor が挙げた根拠の核)
  • 注意点 / 追加調査が必要な点
  • 次の一手 (もしあれば)

要約後、最後に literal で次の一文を出力する:

↑この結果は host が要約します。Enter キーで次へ進むか、新規 prompt で別の指示を出してください。

Trust Boundary

cursor は不透明なサブプロセスであり、Harness のガードレール (R01-R13) は内部に適用されない。read-only 委譲でも以下の前提条件を満たすこと。

必須前提

項目内容設定場所
Secret 遮断.cursorignore.env / *.pem / *.key / .ssh / .aws / .git を読取対象から除外repo root .cursorignore
Egress allowlist~/.claude/settings.jsonsandbox.network.allowedDomains*.cursor.sh を追加user settings
Filesystem allowlistsandbox.filesystem.allowWrite~/.cursor を追加 (cursor-agent が状態書込を行うため)user settings
permissions.json~/.cursor/permissions.jsonterminalAllowlist / mcpAllowlist は read mode でも有効 (allowlist は best-effort、security boundary ではない)user config

詳細は .claude/rules/cursor-cli-only.md を参照。

ask mode で省略できるもの

通常の cursor 委譲で必要ask mode では不要理由
隔離 worktree不要cursor は書き込みできない
Lead diff review不要差分が生まれない
cherry-pick不要同上
worker-report.v1 / self_review 5 件不要実装をしないため

それでも残るリスク

  • 読み取り漏洩: .cursorignore を怠ると秘密ファイルが cursor 推論に渡る
  • 誤った情報の鵜呑み: cursor 出力は untrusted。Step 3 の要約で必ず host が判断軸を残す
  • allowlist 過信: Cursor 公式は "Allowlists are best-effort convenience. They are not a security guarantee." と明言。allowlist に依存しない

Topology

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 契約は発生しない。

Related Skills / Rules

  • 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)
Repository
Chachamaru127/claude-code-harness
Last updated
First committed

Also appears in

Chachamaru127/claude-code-harness
In sync

since Jul 27, 2026

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.