Repository navigation
feat(cursor): /cursor:ask + /cursor:do + read=lean across breezing/harness-review - #182
Conversation
…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>
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
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、フロー、関連スキル参照を明文化している。 ChangesCursor 代理委譲フレームワーク構築
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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
📒 Files selected for processing (20)
.claude/rules/cursor-cli-only.mdCHANGELOG.mdPlans.mdcodex/.codex/skills/cursor-ask/SKILL.mdcodex/.codex/skills/cursor-do/SKILL.mdcodex/.codex/skills/harness-review/SKILL.mdcodex/.codex/skills/harness-review/references/cursor-review.mdcodex/.codex/skills/harness-review/references/dual-review.mdopencode/skills/breezing/SKILL.mdopencode/skills/cursor-ask/SKILL.mdopencode/skills/cursor-do/SKILL.mdopencode/skills/harness-review/SKILL.mdopencode/skills/harness-review/references/cursor-review.mdopencode/skills/harness-review/references/dual-review.mdskills/breezing/SKILL.mdskills/cursor-ask/SKILL.mdskills/cursor-do/SKILL.mdskills/harness-review/SKILL.mdskills/harness-review/references/cursor-review.mdskills/harness-review/references/dual-review.md
| ``` | ||
| Lead (Claude) ──[cursor-companion.sh task "<prompt>"]──> cursor-agent (--mode ask, locked) | ||
| │ | ||
| └──[3-5 行要約]──> User | ||
| ``` |
There was a problem hiding this comment.
コードフェンスに言語指定を付けてください。
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 -->
| ### 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。 | ||
|
|
There was a problem hiding this comment.
[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).
| ``` | ||
| × 「cursor に質問を投げる準備をします」→ bash → 「投げます」 | ||
| × 「ask モードは読み取り専用なので安全です」と再説明 | ||
| × ★ Insight ──── まず cursor の状態を確認します: ... | ||
| ``` |
There was a problem hiding this comment.
未指定のコードフェンス言語を付与してください。
該当ブロックが言語未指定のため、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.
| ``` | ||
| × 「composer 2.5 で実装する流れですね、まず確認します」 | ||
| × 「Cursor を呼ぶ前に branch を見ます」 → bash → 「branch を確認しました」 | ||
| × ★ Insight ──── Cursor の強みは… | ||
| ``` |
There was a problem hiding this comment.
フェンスコードブロックに言語タグを追加してください。
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.
| ``` | ||
| ⚠️ cursor review (read-only): model=composer-2.5-fast / R01-R13 は cursor-agent 内部に適用されない / 出力は Lead 評定まで untrusted | ||
| ``` |
There was a problem hiding this comment.
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.
| | 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 | |
There was a problem hiding this comment.
表セル内の | をエスケープしてください。
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.
| ``` | ||
| × 「cursor に質問を投げる準備をします」→ bash → 「投げます」 | ||
| × 「ask モードは読み取り専用なので安全です」と再説明 | ||
| × ★ Insight ──── まず cursor の状態を確認します: ... | ||
| ``` |
There was a problem hiding this comment.
未指定フェンスを言語付きフェンスへ統一してください。
例示コードブロックに言語がないため 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.
| ``` | ||
| × 「composer 2.5 で実装する流れですね、まず確認します」 | ||
| × 「Cursor を呼ぶ前に branch を見ます」 → bash → 「branch を確認しました」 | ||
| × ★ Insight ──── Cursor の強みは… | ||
| ``` |
There was a problem hiding this comment.
コードフェンスの言語指定漏れを解消してください。
例示・テンプレートのフェンスに言語指定がなく 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.
| ``` | ||
| ⚠️ cursor review (read-only): model=composer-2.5-fast / R01-R13 は cursor-agent 内部に適用されない / 出力は Lead 評定まで untrusted | ||
| ``` |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
Summary
Cursor backend に 3 つの軽量経路を追加。これまで `cursor-companion.sh task --write` 経由の team-full delegation しかなかった状態を、用途別に分割。
Before / After
設計の核
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 ファイル変更:
Test plan
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 を second-opinion として並走可能に。改善