Skip to content

feat(cursor): /cursor:ask + /cursor:do + read=lean across breezing/harness-review - #182

Merged
Chachamaru127 merged 1 commit into
mainfrom
feat/cursor-ask-do
May 30, 2026
Merged

Chachamaru127 merged 1 commit into
mainfrom
feat/cursor-ask-do

Conversation

@Chachamaru127

@Chachamaru127 Chachamaru127 commented May 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

Cursor backend に 3 つの軽量経路を追加。これまで `cursor-companion.sh task --write` 経由の team-full delegation しかなかった状態を、用途別に分割。

経路 用途 containment
`/cursor:ask` (新) 質問・調査・設計相談・敵対的レビュー read = lean (worktree 不要)
`/cursor:do` (新) 1 件の write タスク委譲 write = full (worktree + Lead diff + cherry-pick)
`/breezing --cursor --reviewer-only` (改修) Reviewer のみ Composer 委譲 read = lean に最適化 (workspace 引数削除)
`/harness-review --cursor` (新 flag) second-opinion 並走 read = lean (Opus reviewer 必須併走)

Before / After

Before After
cursor を呼ぶ唯一の skill 路線が `breezing` の team フロー `/cursor:ask` / `/cursor:do` で 1 タスク単位の lean 経路
read mode (`--mode ask`) でも worktree + cherry-pick が SKILL 例示で必須に見えた read mode は worktree 不要・cherry-pick 不要・Lead diff review 不要を product contract で明示
harness-review は Codex のみ second-opinion 対応 cursor を second-opinion として並走可能 (`--cursor` flag、Opus reviewer 必須併走)
cursor 出力を review schema に統合する仕組みなし `dual_review.cursor_verdict` optional field を追加 (既存 consumer 互換)
`.claude/rules/cursor-cli-only.md` に read mode の lean path 記述なし 「Read mode delegation (lean path)」section を 35 行で追加、Topology 図 + ケース表 + 4 点 trust boundary を明示

設計の核

read = lean / write = full の対称分割

read mode で省略できる重い containment 5 種(worktree / Lead diff review / cherry-pick / worker-report.v1 / --workspace)と、read mode でも保持必須の 4 点軽い trust boundary(`.cursorignore` / egress `*.cursor.sh` / filesystem `~/.cursor` / permissions.json best-effort)を表で固定。

cursor を primary reviewer に昇格させない不変ルール

`harness-work` の「実装したバックエンドが自分の出力をレビューしてはならない」と整合させるため、cursor は second-opinion only、Opus reviewer 必須併走、advisory 扱い。primary verdict は Opus reviewer から取る。

Worker agent 介在なし (Phase 85 SSOT 準拠)

`/cursor:do` / `/breezing --cursor` / `/harness-review --cursor` のいずれも、Lead が直接 `cursor-companion.sh` を呼ぶ。Worker agent (`claude-code-harness:worker`) は spawn しない(`.claude/rules/cursor-cli-only.md` Topology 節)。

Files

20 ファイル変更:

  • 新規 skill 2 個: `skills/cursor-ask/`, `skills/cursor-do/`
  • 既存 skill edit: `skills/breezing/`, `skills/harness-review/`
  • 新規 reference: `skills/harness-review/references/cursor-review.md`
  • 既存 reference edit: `skills/harness-review/references/dual-review.md`
  • rule edit: `.claude/rules/cursor-cli-only.md` (Read mode section 追加)
  • mirror: codex/.codex/skills/ + opencode/skills/ 同期
  • CHANGELOG.md [Unreleased] entries

Test plan

  • `bash tests/validate-plugin.sh` — 101/101 PASS (sandoff)
  • `bash scripts/ci/check-consistency.sh` — 全合格 (sandoff)
  • mirror sync: skills/cursor-ask + skills/cursor-do を opencode + codex 両方に伝播
  • description / description-en 完全一致(locale resolver の bilingual contract 準拠)
  • Cursor support tier `internal-compatible` のまま不変

Note

`scripts/cursor-companion.sh` は 無改修。既に read-only mode で `--workspace` を optional 扱い (workspace guard は `--write` 時のみ発火) のため、read-only caller は `task ""` だけで起動可能。

`scripts/sync-skill-mirrors.sh` は新規 skill を codex mirror に伝播しないため manual copy で対応。sync script の改修は別 PR で追跡候補。

🤖 Generated with Claude Code

Summary by CodeRabbit

リリースノート

  • 新機能

    • Cursor との読み取り専用委譲(cursor-ask)を追加しました。質問・調査・設計相談を read-only で実施できます。
    • 単一の書き込みタスク委譲フロー(cursor-do)を追加。専用 worktree でのレビュー・cherry-pick を自動化。
    • harness-review に --cursor オプション追加。Cursor を second-opinion として並走可能に。
    • breezing の reviewer-only モードで Cursor 対応を強化。
  • 改善

    • Backend 解決ロジックの安全性向上(Phase 88)。resolver 経由の一元化により誤フォールバックを防止。

Review Change Stack

…rness-review

Cursor backend に 3 つの軽量経路を追加し、これまで cursor-companion.sh task
--write 経由の team-full delegation しかなかった状態を、用途別に分割する。

## 追加 skill

- skills/cursor-ask (/cursor:ask): 質問・調査・設計相談・敵対的レビューを
  cursor-agent (Composer) に read-only で委譲。cursor-companion.sh task は
  引数なしで --mode ask (hard read-only stop) になるため、--write を渡さない
  限り書き込み不可。worktree 隔離・cherry-pick・Lead diff review が不要。
- skills/cursor-do (/cursor:do): 1 件の write タスクを専用 worktree
  (.claude/worktrees/cursor-do-<id>) で cursor-companion.sh task --write
  --workspace に委譲し、Lead diff review → SHA 直接 cherry-pick → Plans.md
  cc:done [hash] 自動更新まで 8 step で完走。Worker agent 介在なし
  (cursor-cli-only.md Topology 節準拠)。

## 既存 skill 拡張

- skills/harness-review: --cursor flag 追加 (cursor-second-opinion mode)。
  references/cursor-review.md 新規で 4 点 trust boundary + verdict 統合
  ルールを文書化。cursor は primary reviewer に昇格させず、Opus reviewer
  必須併走、cursor 出力は dual_review.cursor_verdict に optional advisory
  として格納 (既存 consumer 互換)。
- skills/breezing: --cursor --reviewer-only の lean path から --workspace
  引数を削除 (read mode では companion guard が --write 時のみ発火、
  optional)。worktree 不要・cherry-pick 不要に最適化。
- skills/harness-review/references/dual-review.md: --dual --cursor で
  triple review (Claude + Codex + Cursor) サポート、cursor_verdict
  optional field を schema に追加。

## rule 更新

- .claude/rules/cursor-cli-only.md: 新 section "Read mode delegation
  (lean path)" を追加。read mode で省略できる重い containment 5 種
  (worktree / Lead diff review / cherry-pick / worker-report.v1 /
  --workspace) と保持必須の 4 点軽い trust boundary (.cursorignore /
  egress / filesystem / permissions.json) を表で固定。Topology 図 +
  適切ケース / 不適切ケース表 + cursor-ask / cursor-do / harness-review
  --cursor の cross-ref。

## Mirror & validation

- bash scripts/sync-skill-mirrors.sh で opencode/skills/ 同期、codex は
  manual copy (sync script が新規 skill を codex mirror に伝播しないため、
  追跡 issue 候補)。
- bash tests/validate-plugin.sh 101/101 PASS。
- bash scripts/ci/check-consistency.sh 全合格。
- VERSION / plugin.json / harness.toml 不変 (CLAUDE.md Version Management
  準拠、CHANGELOG [Unreleased] に詳細記載)。

## 設計判断

- scripts/cursor-companion.sh は無改修: 既に read-only mode で
  --workspace を optional 扱い (workspace guard は --write 時のみ発火)。
  read-only caller は task "<prompt>" だけで起動可能。
- cursor を review primary に昇格させない: harness-work の「実装した
  バックエンドが自分の出力をレビューしてはならない」不変ルールと整合。
  cursor は second-opinion 限定 / Opus reviewer 必須併走 / advisory 扱い。
- dual_review schema 不変: cursor_verdict を optional field として
  閉じ込め、HTML render / harness-accept など既存 consumer の parser を
  壊さない。
- 3 層 containment は write mode のみ: 専用 .git worktree + Lead diff
  review + cherry-pick (R01-R13) は write mode 必須。read mode では
  cursor 自身の hard read-only stop が十分な境界 (spike で実測済)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Repo admins can enable using credits for code reviews in their settings.

@coderabbitai

coderabbitai Bot commented May 30, 2026 •

Copy link
Copy Markdown

Walkthrough

このPRは、Cursor(Composer-2.5-fast)バックエンドへの複数の統合パスを新規定義する包括的なドキュメント更新である。read-only 質問委譲(cursor-ask)、write-mode worktree 隔離委譲(cursor-do)、harness-review second-opinion 並走、breezing lean reviewer-only 対応、ならびに Phase 88 backend 解決強化を追加し、各パスの UX 制約、trust boundary、フロー、関連スキル参照を明文化している。

Changes

Cursor 代理委譲フレームワーク構築

Layer / File(s) Summary
Cursor 運用ポリシーと信頼境界定義
.claude/rules/cursor-cli-only.md, Plans.md
read mode delegation lean path(--mode ask デフォルト、省略可能/必須要素の整理)、トポロジー、残存リスク、関連スキル参照を新規定義。Phase 88 で backend 解決入口の一本化と resolver 経由確認手順を規定。
cursor-ask(読み取り専用委譲)スキル
codex/.codex/skills/cursor-ask/SKILL.md, opencode/skills/cursor-ask/SKILL.md
Cursor Composer へ質問・調査・敵対的レビューを read-only で委譲する仕様を codex/opencode 両方で定義。UX ハード契約(中間ナレーション禁止、最初 1 行要件)、実行フロー(ステップ 0-3、3-5 行要約、固定文)、trust boundary(.cursorignore・allowlist・permissions.json)、トポロジー を明記。
cursor-do(write-mode委譲)スキル
codex/.codex/skills/cursor-do/SKILL.md, opencode/skills/cursor-do/SKILL.md
単一 write タスクを専用 worktree で委譲し、Lead diff レビュー→SHA cherry-pick→Plans.md 更新→クリーンアップの 8-step プロセスを codex/opencode 両方で定義。UX ハード契約、ステップ別処理、Full Containment 階層、禁止事項を明文化。
harness-review cursor second-opinion 統合
codex/.codex/skills/harness-review/SKILL.md, opencode/skills/harness-review/SKILL.md, references/cursor-review.md, references/dual-review.md
Quick Reference と Mode Decision に --cursor(cursor-second-opinion)を追加。新規参照ドキュメント cursor-review.md に mandatory banner・delegate コマンド制約・trust boundary・verdict 統合ルール・不可逆ガードを規定。dual-review.md を拡張して cursor 併用(second-opinion only)と degrade 条件を追記。
breezing cursor reviewer-only 統合
skills/breezing/SKILL.md, opencode/skills/breezing/SKILL.md
reviewer-only mode (--cursor --reviewer-only) セクションを更新。cursor-companion を --write/--workspace なしの read-only デフォルトで起動し、出力を dual_review.cursor_verdict に格納、APPROVE 確定を Opus reviewer に依存させる lean path を明確化。
Changelog 横断参照
CHANGELOG.md
[Unreleased] に /cursor:ask(read-only 軽量スキル)、/cursor:do(write worktree 8-step)、/harness-review --cursor(second-opinion)、/breezing --cursor --reviewer-only(lean 最適化)を Added/Changed で記載し、.claude/rules/cursor-cli-only.md への参照を追加。

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Chachamaru127/claude-code-harness#181: /breezing の "Cursor Backend Fast Path" ナレーション制約と --cursor --reviewer-only lean path の更新が、主 PR の breezing cursor 統合と直接重複。

  • Chachamaru127/claude-code-harness#176: 主 PR の .claude/rules/cursor-cli-only.md(Lead→cursor-companion 直通、worker 介在なし)と backend wiring / contract-gate ルールが直接関連。

  • Chachamaru127/claude-code-harness#175: scripts/cursor-companion.sh の read-only/--mode ask 前提(書込・実行ガード)が、主 PR の cursor-companion/ask 運用ルール定義と強く連動。

Poem

🐰 Composer への軽い手渡し、read のみで十分かな~
Lead が cherry-pick で統合する、信頼の八段階ダンス 🍒
ask は質問・do は書込・review は二番手で、
ルールを編む rabbit の手に、cursor も素直に従う 📝✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR タイトルは「feat(cursor): /cursor:ask + /cursor:do + read=lean across breezing/harness-review」であり、PR 本体の主要な変更内容(Cursor バックエンドへの新しい軽量経路の追加と最適化)を正確に反映している。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/cursor-ask-do

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.claude/rules/cursor-cli-only.md:
- Around line 80-84: The fenced code block containing the diagram starting with
"Lead (Claude) ──[cursor-companion.sh task \"<prompt>\"]──> cursor-agent (--mode
ask, locked)" is missing a language tag and triggers markdownlint MD040; update
the opening fence to include a language (e.g., change ``` to ```text) so the
block is explicitly marked as text and the linter warning is resolved.

In `@CHANGELOG.md`:
- Around line 9-19: Add a Before/After table under the [Unreleased] section
summarizing the major behavioral changes introduced by /cursor:ask, /cursor:do,
/harness-review --cursor, and /breezing --cursor --reviewer-only; the table
should have columns "Before" and "After" and rows for: delegation mode (no
cursor vs read-only ask and write-do flows), containment requirements
(worktree/cherry-pick/Lead diff review required vs read-only lean path
optional), reviewer role/trust boundary (cursor not used as primary; advisory
verdict placed in dual_review.cursor_verdict;
.cursorignore/egress/filesystem/permissions.json constraints), and operational
impact (workerless cursor-cli-only topology vs prior worker-mediated flows);
insert this concise table immediately inside the [Unreleased] block so readers
see the high-level diffs for the listed symbols (/cursor:ask, /cursor:do,
/harness-review --cursor, /breezing --cursor --reviewer-only).

In `@codex/.codex/skills/cursor-ask/SKILL.md`:
- Around line 46-50: The markdown has multiple code fences without a language
tag (violating markdownlint MD040); update each triple-backtick block shown (the
blocks containing lines like "× 「cursor に質問を投げる準備をします」→ bash → 「投げます」", "🚀
cursor / composer-2.5-fast / ask", and the cursor/Claude flow diagram) by adding
an explicit language tag (e.g., ```text) to the opening fence so all unlabeled
code blocks in SKILL.md (the blocks at the commented ranges such as the Japanese
instruction lines, the rocket/status lines, and the flow diagram) are labeled
and satisfy MD040.

In `@codex/.codex/skills/cursor-do/SKILL.md`:
- Around line 29-33: The fenced code blocks in SKILL.md are missing language
tags which triggers MD040; update each triple-backtick block (the examples like
the composer/Cursor dialogue and the other blocks indicated around the file) to
include an appropriate language tag (e.g., `text` or `bash`/`md` where
applicable) so they become ```text (or ```bash/```md) instead of bare ```;
ensure you apply this consistently for the blocks referenced (the dialog/code
examples and the other occurrences noted) so the markdown linter no longer flags
MD040.

In `@codex/.codex/skills/harness-review/references/cursor-review.md`:
- Around line 15-17: Update the two fenced code blocks that lack language tags —
the block that starts with "⚠️ cursor review (read-only):
model=composer-2.5-fast ..." and the block that begins with "diff レビュー
(base_ref={BASE_REF}, head=HEAD):" — by changing their opening fences from ```
to ```text so both code fences include the language tag for lint compatibility.

In `@opencode/skills/cursor-ask/SKILL.md`:
- Around line 41-45: The markdown has several fenced code blocks without a
language tag (MD040); update each fence in SKILL.md to include a language (e.g.,
use "text" or "bash") for the blocks at the ranges currently shown (the block
containing 「cursor に質問を投げる準備をします」→ bash → 「投げます」 and the other blocks at 48-50,
62-64, 101-103, 137-141). Open the SKILL.md file, locate each triple-backtick
fence for those snippets and add an appropriate language identifier immediately
after the opening ``` (e.g., ```text or ```bash) so markdownlint no longer flags
MD040.

In `@opencode/skills/cursor-do/SKILL.md`:
- Around line 24-28: Several fenced code blocks in SKILL.md lack a language
specifier (triggering markdownlint MD040); edit each fenced block that contains
Japanese dialog or shell snippets (for example the block starting with "×
「composer 2.5 で実装する流れですね、まず確認します」" and the other blocks noted around the comment
ranges) and add the language tag text immediately after the opening triple
backticks (i.e., change ``` to ```text) so all listed blocks (including the ones
around the other quoted snippets) include a language specifier.

In `@opencode/skills/harness-review/references/cursor-review.md`:
- Around line 15-17: Add explicit language markers "text" to the two fenced code
blocks that currently start with ``` (the block containing "⚠️ cursor review..."
around Line 15 and the longer diff-like block around Line 31) so they become
```text; update both occurrences to satisfy markdownlint and ensure the blocks
render as plain text.

In `@Plans.md`:
- Line 220: The table cell contains an unescaped pipe in the grep regex (`grep
-niE "composer.*cursor backend|コンポーザー.*cursor"`) which breaks Markdown table
parsing; update that regex in Plans.md so the pipe is escaped as `\|` (i.e.,
change `...cursor backend|コンポーザー...` to `...cursor backend\|コンポーザー...`) and scan
the same table cell for any other literal `|` characters and escape them as `\|`
to prevent MD056 errors.

In `@skills/cursor-ask/SKILL.md`:
- Around line 46-50: The Markdown code fences in SKILL.md are missing language
identifiers (violating MD040); update each example fence (the blocks shown
around lines 46-50 and likewise at 53-55, 67-69, 106-108, 142-146) to use a
language tag, e.g., replace ``` with ```text for those example blocks so they
become language-specified fenced code blocks; ensure you modify all occurrences
referenced and keep the existing block contents unchanged.

In `@skills/cursor-do/SKILL.md`:
- Around line 29-33: The Markdown code fences in SKILL.md (e.g., the example
block starting with “× 「composer 2.5 で実装する流れですね、まず確認します」” and the other blocks
at the indicated ranges) are missing a language specifier and trigger MD040;
update each triple-backtick fence in those examples to use "```text" (apply the
same change to the other listed blocks such as 36-38, 44-46, 50-52, 195-197,
217-224) so all example/template fences consistently include the language tag.

In `@skills/harness-review/references/cursor-review.md`:
- Around line 15-17: The fenced code blocks at the two review notes (the block
starting at "⚠️ cursor review..." around Line 15 and the longer diff/example
block around Line 31) are missing language tags; update both opening
triple-backtick fences to use the text language tag (i.e., ```text) so syntax
highlighting and tooling treat them as plain text, leaving the block contents
unchanged and keeping closing ``` as-is.

In `@skills/harness-review/references/dual-review.md`:
- Line 13: Update the schema example in the review-result.v1 JSON to include
dual_review.cursor_verdict as an optional field and document its allowed values;
add "cursor_verdict" under the dual_review object with an enum of permitted
strings (e.g., "unavailable", "timeout", "APPROVE", "REQUEST_CHANGES") and
ensure any examples and descriptive text that mention cursor behavior (the line
referencing `cursor_verdict: unavailable`) are consistent with this schema
change so the contract no longer diverges from the example.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 993d8f37-2f6d-47f0-bea0-828dfc5d74d3

📥 Commits

Reviewing files that changed from the base of the PR and between 8d756fd and 94c328c.

📒 Files selected for processing (20)
  • .claude/rules/cursor-cli-only.md
  • CHANGELOG.md
  • Plans.md
  • codex/.codex/skills/cursor-ask/SKILL.md
  • codex/.codex/skills/cursor-do/SKILL.md
  • codex/.codex/skills/harness-review/SKILL.md
  • codex/.codex/skills/harness-review/references/cursor-review.md
  • codex/.codex/skills/harness-review/references/dual-review.md
  • opencode/skills/breezing/SKILL.md
  • opencode/skills/cursor-ask/SKILL.md
  • opencode/skills/cursor-do/SKILL.md
  • opencode/skills/harness-review/SKILL.md
  • opencode/skills/harness-review/references/cursor-review.md
  • opencode/skills/harness-review/references/dual-review.md
  • skills/breezing/SKILL.md
  • skills/cursor-ask/SKILL.md
  • skills/cursor-do/SKILL.md
  • skills/harness-review/SKILL.md
  • skills/harness-review/references/cursor-review.md
  • skills/harness-review/references/dual-review.md

Comment on lines +80 to +84
```
Lead (Claude) ──[cursor-companion.sh task "<prompt>"]──> cursor-agent (--mode ask, locked)
│
└──[3-5 行要約]──> User
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

コードフェンスに言語指定を付けてください。

Line 80 の fenced code block が言語未指定で、markdownlint(MD040)警告対象です。text などを明示してください。

修正例
-```
+```text
 Lead (Claude) ──[cursor-companion.sh task "<prompt>"]──> cursor-agent (--mode ask, locked)
        │
        └──[3-5 行要約]──> User
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

[warning] 80-80: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/rules/cursor-cli-only.md around lines 80 - 84, The fenced code block
containing the diagram starting with "Lead (Claude) ──[cursor-companion.sh task
""]──> cursor-agent (--mode ask, locked)" is missing a language tag
and triggers markdownlint MD040; update the opening fence to include a language
(e.g., change totext) so the block is explicitly marked as text and the
linter warning is resolved.


</details>

<!-- fingerprinting:phantom:triton:hawk -->

<!-- This is an auto-generated comment by CodeRabbit -->

Comment thread CHANGELOG.md
Comment on lines +9 to +19
### Added

- **`/cursor:ask` — Cursor (Composer) への読み取り専用デリゲート**: 質問・調査・設計相談・敵対的レビューを cursor-agent (composer-2.5-fast) に read-only で投げる軽量スキル。`cursor-companion.sh task` は引数なしで default `--mode ask` (hard read-only stop) になるため、`--write` 未指定で **worktree 隔離・cherry-pick・Lead diff review がすべて不要**。3 秒以内に応答開始、結果を host (Claude) が 3-5 行で要約。用途: 「この設計の弱点は?」「セカンドオピニオンが欲しい」「敵対的視点で見て」等。`.cursorignore` で secret 遮断、`*.cursor.sh` egress allowlist + `~/.cursor` filesystem allowlist が前提条件。
- **`/cursor:do` — 1 件の write タスクを Cursor Composer に委譲**: 専用 worktree (`.claude/worktrees/cursor-do-<id>`) を切って `cursor-companion.sh task --write --workspace <wt>` で実装委譲し、Lead が diff レビュー → SHA 直接 cherry-pick → Plans.md `cc:done [hash]` 自動更新まで 8 ステップで完走。breezing の team フローを起こさず 1 タスク 1 cherry-pick の最短経路。Worker agent 介在なし (`cursor-cli-only.md` Topology 節準拠)。封じ込めは Cursor 側にはなく、専用 `.git` worktree + Lead diff review + cherry-pick (R01-R13) の 3 点が実効的境界。

### Changed

- **`/harness-review --cursor` — Cursor second-opinion レーン追加**: cursor (composer-2.5-fast) を harness-review の **second-opinion only** として並走させる lean モード。primary verdict は Opus reviewer が必ず取り、cursor 出力は `dual_review.cursor_verdict` に **advisory** として格納 (optional field、既存 consumer 互換)。cursor を primary reviewer に昇格させない不変ルール (`harness-work`「実装したバックエンドが自分の出力をレビューしてはならない」と整合)。新規 `references/cursor-review.md` で 4 点 trust boundary (.cursorignore + permissions.json best-effort + egress `*.cursor.sh` + filesystem `~/.cursor`) と verdict 統合ルール (Opus REQUEST_CHANGES は即 REQUEST、Opus APPROVE + cursor REQUEST_CHANGES は divergence_notes に記録) を文書化。`--dual --cursor` で triple review (Claude + Codex + Cursor)。
- **`/breezing --cursor --reviewer-only` — read = lean に最適化**: Reviewer のみ Composer に逃がす既存 lean path から `--workspace <wt>` 引数を削除 (read mode では companion guard が `--write` 時のみ発火するため optional)。`bash scripts/cursor-companion.sh task "<review prompt>"` だけで worktree 不要・cherry-pick 不要・Lead diff review 不要の最短 path に。primary verdict は Opus reviewer 必須併走、cursor は advisory として `dual_review.cursor_verdict` に格納。
- **`.claude/rules/cursor-cli-only.md` に Read mode delegation (lean path) section 追加**: cursor-companion 引数なしで default `--mode ask` (hard read-only stop) になる仕様、read mode で省略できる重い containment 5 種 (worktree / Lead diff review / cherry-pick / worker-report.v1 / --workspace) と、read mode でも保持必須の 4 点軽い trust boundary (`.cursorignore` / egress allowlist / filesystem allowlist / permissions.json best-effort)、適切ケース / 不適切ケース表、Topology 図を 35 行で明示。`cursor-ask` / `cursor-do` / `harness-review --cursor` の 3 経路を cross-ref。

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

[Unreleased] の major 変更に Before/After 表を追加してください。

今回の追加内容(/cursor:ask・/cursor:do・/harness-review --cursor・/breezing --cursor --reviewer-only)は影響範囲が大きいため、[Unreleased] 内に要点をまとめた Before/After 表を入れておくと、Keep a Changelog 形式の運用に揃います。

As per coding guidelines, CHANGELOG.md: "Keep CHANGELOG in Keep a Changelog format; include Before/After tables for major changes."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CHANGELOG.md` around lines 9 - 19, Add a Before/After table under the
[Unreleased] section summarizing the major behavioral changes introduced by
/cursor:ask, /cursor:do, /harness-review --cursor, and /breezing --cursor
--reviewer-only; the table should have columns "Before" and "After" and rows
for: delegation mode (no cursor vs read-only ask and write-do flows),
containment requirements (worktree/cherry-pick/Lead diff review required vs
read-only lean path optional), reviewer role/trust boundary (cursor not used as
primary; advisory verdict placed in dual_review.cursor_verdict;
.cursorignore/egress/filesystem/permissions.json constraints), and operational
impact (workerless cursor-cli-only topology vs prior worker-mediated flows);
insert this concise table immediately inside the [Unreleased] block so readers
see the high-level diffs for the listed symbols (/cursor:ask, /cursor:do,
/harness-review --cursor, /breezing --cursor --reviewer-only).

Comment on lines +46 to +50
```
× 「cursor に質問を投げる準備をします」→ bash → 「投げます」
× 「ask モードは読み取り専用なので安全です」と再説明
× ★ Insight ──── まず cursor の状態を確認します: ...
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

未指定のコードフェンス言語を付与してください。

該当ブロックが言語未指定のため、markdownlint (MD040) に違反しています。text(または適切な言語)を明示してください。

修正例
-```
+```text
 × 「cursor に質問を投げる準備をします」→ bash → 「投げます」
 × 「ask モードは読み取り専用なので安全です」と再説明
 × ★ Insight ──── まず cursor の状態を確認します: ...

- +text
🚀 cursor / composer-2.5-fast / ask


-```
+```text
🚀 cursor / composer-2.5-fast / ask

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


-```
+```text
Lead (Claude) ──[cursor-companion.sh task]──> cursor-agent (--mode ask, locked read-only)
       │
       └──[Step 3: 3-5 行要約]──> User
</details>
 


Also applies to: 53-55, 67-69, 106-108, 142-146

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

[warning] 46-46: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @codex/.codex/skills/cursor-ask/SKILL.md around lines 46 - 50, The markdown
has multiple code fences without a language tag (violating markdownlint MD040);
update each triple-backtick block shown (the blocks containing lines like "×
「cursor に質問を投げる準備をします」→ bash → 「投げます」", "🚀 cursor / composer-2.5-fast / ask",
and the cursor/Claude flow diagram) by adding an explicit language tag (e.g.,

blocks at the commented ranges such as the Japanese instruction lines, the
rocket/status lines, and the flow diagram) are labeled and satisfy MD040.

Comment on lines +29 to +33
```
× 「composer 2.5 で実装する流れですね、まず確認します」
× 「Cursor を呼ぶ前に branch を見ます」 → bash → 「branch を確認しました」
× ★ Insight ──── Cursor の強みは…
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

フェンスコードブロックに言語タグを追加してください。

MD040 の警告箇所です。text(または適切な言語)を付けることで lint を解消できます。

Also applies to: 36-38, 44-46, 50-52, 195-197, 217-224

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 29-29: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@codex/.codex/skills/cursor-do/SKILL.md` around lines 29 - 33, The fenced code
blocks in SKILL.md are missing language tags which triggers MD040; update each
triple-backtick block (the examples like the composer/Cursor dialogue and the
other blocks indicated around the file) to include an appropriate language tag
(e.g., `text` or `bash`/`md` where applicable) so they become ```text (or
```bash/```md) instead of bare ```; ensure you apply this consistently for the
blocks referenced (the dialog/code examples and the other occurrences noted) so
the markdown linter no longer flags MD040.

Comment on lines +15 to +17
```
⚠️ cursor review (read-only): model=composer-2.5-fast / R01-R13 は cursor-agent 内部に適用されない / 出力は Lead 評定まで untrusted
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

fenced code block に言語タグを付けてください。

Line 15 と Line 31 のコードフェンスに言語指定がなく、lint 互換性が落ちます。text などを付与して統一してください。

修正例
-```
+```text
 ⚠️ cursor review (read-only): model=composer-2.5-fast / R01-R13 は cursor-agent 内部に適用されない / 出力は Lead 評定まで untrusted

- +text
diff レビュー (base_ref={BASE_REF}, head=HEAD):

<git diff の要点 or branch range>

観点:

  • 仕様逸脱 / 範囲外変更
  • 既存テスト regression リスク
  • secret / 認証情報の混入
  • protected path (settings*, .eslintrc*, tsconfig*.json) への変更

verdict は APPROVE / REQUEST_CHANGES / NEEDS_INFO のいずれかで返す。

Also applies to: 31-43

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 15-15: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@codex/.codex/skills/harness-review/references/cursor-review.md` around lines
15 - 17, Update the two fenced code blocks that lack language tags — the block
that starts with "⚠️ cursor review (read-only): model=composer-2.5-fast ..." and
the block that begins with "diff レビュー (base_ref={BASE_REF}, head=HEAD):" — by
changing their opening fences from ``` to ```text so both code fences include
the language tag for lint compatibility.

Comment thread Plans.md
| Task | 内容 | DoD | Depends | Status |
|------|------|-----|---------|--------|
| 88.1 | `[Resolver 必須化]` `[tdd:skip:skill-prose-and-spec-delta]` `skills/breezing/SKILL.md` と `skills/harness-work/SKILL.md` の backend 判定記述から「env `HARNESS_IMPL_BACKEND` を直読みして判定する」経路を排除し、「必ず `bash "${HARNESS_PLUGIN_ROOT}/scripts/resolve-impl-backend.sh"` の出力を backend として使う(env unset でも project env.local / user file を precedence で拾う)」に統一する。`spec.md` Execution Backend Contract に resolver-only 入口の 1 行を追加。 | (a) `skills/breezing/SKILL.md` の「env `HARNESS_IMPL_BACKEND=cursor` の時に有効」等の env 直読み判定文が resolver 経由に書き換わる、(b) `grep -nE "env .*HARNESS_IMPL_BACKEND.* の時" skills/breezing/SKILL.md` が backend 判定文脈で 0 件(説明的言及は可、判定ロジックとしては不可)、(c) `spec.md` に「resolve-impl-backend.sh を唯一の入口、env 直読み禁止」の 1 行、(d) mirror (`codex/.codex/skills/`, `opencode/skills/`) 同期、(e) `bash scripts/ci/check-consistency.sh` PASS | - | cc:todo |
| 88.2 | `[composer 自然言語マッピング]` `[tdd:skip:trigger-prose-only]` `skills/breezing/SKILL.md` と `skills/harness-work/SKILL.md` に「composer / コンポーザー / Composer で / composer 2.5 / composer モード」を cursor backend のトリガー語として正式定義する。現状は「違反例」中の言及のみで、正規トリガーとして未定義。host が自然言語「composer モードで」を受けたら `--cursor` 相当(resolve-impl-backend 経由で cursor へ)に解釈する規約を明示。 | (a) `skills/breezing/SKILL.md` に composer トリガー語マッピング表 or 1 段落("composer/コンポーザー → cursor backend, model composer-2.5-fast")、(b) `grep -niE "composer.*cursor backend|コンポーザー.*cursor" skills/breezing/SKILL.md` が 1 件以上(trigger 定義として)、(c) frontmatter `trigger` または description にも composer を含める検討(任意)、(d) mirror 同期、(e) `bash scripts/ci/check-consistency.sh` PASS | - | cc:todo |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

表セル内の | をエスケープしてください。

Line 220 の grep 正規表現内 | が Markdown の列区切りとして解釈され、MD056(列数不一致)を引き起こします。\| にエスケープしてください。

修正例
-(b) `grep -niE "composer.*cursor backend|コンポーザー.*cursor" skills/breezing/SKILL.md` が 1 件以上(trigger 定義として),
+(b) `grep -niE "composer.*cursor backend\|コンポーザー.*cursor" skills/breezing/SKILL.md` が 1 件以上(trigger 定義として),

As per coding guidelines, 「{agents/worker.md,Plans.md}: Worker contracts (v4.3.0+): Worker must provide 5 self_review entries in worker-report.v1. Modification of cc:* markers in Plans.md is auto-denied by NG-1.」

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 220-220: Table column count
Expected: 5; Actual: 6; Too many cells, extra data will be missing

(MD056, table-column-count)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Plans.md` at line 220, The table cell contains an unescaped pipe in the grep
regex (`grep -niE "composer.*cursor backend|コンポーザー.*cursor"`) which breaks
Markdown table parsing; update that regex in Plans.md so the pipe is escaped as
`\|` (i.e., change `...cursor backend|コンポーザー...` to `...cursor
backend\|コンポーザー...`) and scan the same table cell for any other literal `|`
characters and escape them as `\|` to prevent MD056 errors.

Comment on lines +46 to +50
```
× 「cursor に質問を投げる準備をします」→ bash → 「投げます」
× 「ask モードは読み取り専用なので安全です」と再説明
× ★ Insight ──── まず cursor の状態を確認します: ...
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

未指定フェンスを言語付きフェンスへ統一してください。

例示コードブロックに言語がないため MD040 に抵触しています。text 指定で統一するのが安全です。

Also applies to: 53-55, 67-69, 106-108, 142-146

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 46-46: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/cursor-ask/SKILL.md` around lines 46 - 50, The Markdown code fences in
SKILL.md are missing language identifiers (violating MD040); update each example
fence (the blocks shown around lines 46-50 and likewise at 53-55, 67-69,
106-108, 142-146) to use a language tag, e.g., replace ``` with ```text for
those example blocks so they become language-specified fenced code blocks;
ensure you modify all occurrences referenced and keep the existing block
contents unchanged.

Comment thread skills/cursor-do/SKILL.md
Comment on lines +29 to +33
```
× 「composer 2.5 で実装する流れですね、まず確認します」
× 「Cursor を呼ぶ前に branch を見ます」 → bash → 「branch を確認しました」
× ★ Insight ──── Cursor の強みは…
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

コードフェンスの言語指定漏れを解消してください。

例示・テンプレートのフェンスに言語指定がなく MD040 違反になっています。text 指定で統一してください。

Also applies to: 36-38, 44-46, 50-52, 195-197, 217-224

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 29-29: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/cursor-do/SKILL.md` around lines 29 - 33, The Markdown code fences in
SKILL.md (e.g., the example block starting with “× 「composer 2.5
で実装する流れですね、まず確認します」” and the other blocks at the indicated ranges) are missing a
language specifier and trigger MD040; update each triple-backtick fence in those
examples to use "```text" (apply the same change to the other listed blocks such
as 36-38, 44-46, 50-52, 195-197, 217-224) so all example/template fences
consistently include the language tag.

Comment on lines +15 to +17
```
⚠️ cursor review (read-only): model=composer-2.5-fast / R01-R13 は cursor-agent 内部に適用されない / 出力は Lead 評定まで untrusted
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

fenced code block の言語タグ不足を修正してください。

Line 15 と Line 31 は言語指定なしのため、text 指定を追加してください。

修正例
-```
+```text
 ⚠️ cursor review (read-only): model=composer-2.5-fast / R01-R13 は cursor-agent 内部に適用されない / 出力は Lead 評定まで untrusted

- +text
diff レビュー (base_ref={BASE_REF}, head=HEAD):

<git diff の要点 or branch range>

観点:

  • 仕様逸脱 / 範囲外変更
  • 既存テスト regression リスク
  • secret / 認証情報の混入
  • protected path (settings*, .eslintrc*, tsconfig*.json) への変更

verdict は APPROVE / REQUEST_CHANGES / NEEDS_INFO のいずれかで返す。

Also applies to: 31-43

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 15-15: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/harness-review/references/cursor-review.md` around lines 15 - 17, The
fenced code blocks at the two review notes (the block starting at "⚠️ cursor
review..." around Line 15 and the longer diff/example block around Line 31) are
missing language tags; update both opening triple-backtick fences to use the
text language tag (i.e., ```text) so syntax highlighting and tooling treat them
as plain text, leaving the block contents unchanged and keeping closing ```
as-is.


- Codex CLI がインストール済み(`scripts/codex-companion.sh setup --json` で確認)
- Codex が利用不可の場合、Claude 単独レビューにフォールバック
- `--cursor` 併用時は cursor-agent がインストール済み (`setup-cursor.sh --check`)。利用不可なら `cursor_verdict: unavailable` で degrade

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

cursor_verdict の契約をスキーマ例にも反映してください。

Line 13 で cursor_verdict: unavailable を記録すると定義されていますが、下部の review-result.v1 JSON 例に dual_review.cursor_verdict が存在せず、契約が分裂しています。スキーマ例にも optional フィールドとして追加し、unavailable | timeout | APPROVE | REQUEST_CHANGES など許容値を明示して統一してください。

修正例(ドキュメント差分)
   "dual_review": {
     "claude_verdict": "APPROVE | REQUEST_CHANGES",
     "codex_verdict": "APPROVE | REQUEST_CHANGES | unavailable | timeout",
+    "cursor_verdict": "APPROVE | REQUEST_CHANGES | unavailable | timeout",
     "merged_verdict": "APPROVE | REQUEST_CHANGES",
     "divergence_notes": "判定が分かれた場合の理由。例: Claude は Performance で major 検出、Codex は問題なし"
   },
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/harness-review/references/dual-review.md` at line 13, Update the
schema example in the review-result.v1 JSON to include
dual_review.cursor_verdict as an optional field and document its allowed values;
add "cursor_verdict" under the dual_review object with an enum of permitted
strings (e.g., "unavailable", "timeout", "APPROVE", "REQUEST_CHANGES") and
ensure any examples and descriptive text that mention cursor behavior (the line
referencing `cursor_verdict: unavailable`) are consistent with this schema
change so the contract no longer diverges from the example.

@Chachamaru127
Chachamaru127 merged commit 07b6d0b into main May 30, 2026
10 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request May 30, 2026
@Chachamaru127 Chachamaru127 mentioned this pull request May 30, 2026
3 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant