タスク指示書: CLI provider の長い prompt を opt-in 一時ファイル参照方式で渡せるようにする
背景
Windows の一部ターミナル環境で、Cursor provider などの CLI provider が長い prompt を command line argument として渡すことで、コマンドライン文字数制限に当たり起動に失敗する可能性がある。
現状確認済みの事実として、少なくとも Cursor provider は systemPrompt + prompt を結合した長い文字列を cursor-agent の argv に直接渡している。これを、ユーザーが明示的に有効化した場合のみ、一時ファイルに書き出して短い参照指示だけを argv に渡す方式へ切り替えられるようにする。
ゴール
長い prompt を argv に直接載せる CLI provider について、opt-in 設定で一時ファイル参照方式を使えるように実装する。特に Cursor provider で動作することを必須とする。
明示要件
- 一時ファイル方式を実装する。
- 一時ファイル方式はデフォルト有効にしない。
- Windows の一部ターミナルだけの問題なので、オプショナルな opt-in として提供する。
- 一時ファイル方式では、長い prompt 本文をファイルへ書き、CLI に渡す argv には「そのファイルを参照せよ」という短い指示を渡す。
- 実装後、該当 provider のテストを追加・更新する。
参照資料
Planner は最初に以下を実際に開いて確認すること。
src/infra/cursor/client.ts
src/__tests__/cursor-client.test.ts
src/shared/utils/spawn.ts
src/infra/claude-headless/client.ts
src/infra/kiro/client.ts
src/infra/copilot/client.ts
- provider 設定型・設定読み込み・provider options の定義箇所
- 既存の一時ファイル作成・cleanup パターンがあればその実装箇所
作業項目
優先度: 高
src/infra/cursor/client.ts
- Cursor provider に opt-in の一時ファイル参照方式を実装する。
- 既存の通常モードでは、現行どおり prompt 本文を argv に渡す挙動を維持する。
- opt-in が有効な場合のみ、以下の挙動に切り替える。
systemPrompt と prompt を結合した完全な prompt 本文を一時ファイルに書く。
cursor-agent の argv には prompt 本文を直接渡さず、ファイルを読むよう指示する短い prompt を渡す。
- 例:
Read the full task instruction from this file and follow it exactly: <path>
- 実行完了後、作成した一時ファイルを削除する。
- provider 実行が失敗した場合も、一時ファイル cleanup を行う。
- 一時ファイルの配置場所は、Cursor が確実に読める場所をコード調査で判断して決めること。
--workspace 指定との関係を確認する。
- 一時ファイル名は衝突しにくく、実行ごとに分離される形にする。
provider 設定型・設定読み込み
- Cursor provider の設定または provider options に、一時ファイル参照方式を opt-in できる設定項目を追加する。
- 設定名は既存の provider option 命名規約に合わせる。
- デフォルト値は無効にする。
- 設定が CLI entrypoint、workflow config、provider factory などを経由して Cursor provider まで伝搬する場合は、必要な配線をすべて実装する。
- 設定スキーマ、型定義、バリデーション、ドキュメント生成対象がある場合は整合させる。
src/__tests__/cursor-client.test.ts
- 既存の「prompt が argv に渡される」テストを、通常モードの契約として維持・更新する。
- opt-in 有効時のテストを追加する。
- argv に完全な長い prompt 本文が含まれないこと。
- argv には一時ファイルを読む短い指示が含まれること。
- 一時ファイルに完全な prompt 本文が書かれること。
- provider 実行後に一時ファイルが削除されること。
- provider 実行が失敗しても cleanup されること。
- ファイルシステム操作を伴うため、既存テストの mock パターンを確認し、同じ流儀で実装する。
優先度: 中
src/infra/claude-headless/client.ts
- 長い prompt を argv に直接渡しているかを確認する。
- Cursor と同じ opt-in 設定方式を適用できる場合は、一時ファイル参照方式を実装する。
- CLI のファイル参照指示で成立しない技術的理由がある場合は、Cursor のみ実装対象とし、その理由を計画レポートに明記する。
src/infra/kiro/client.ts
- 長い prompt を argv に直接渡しているかを確認する。
- Cursor と同じ opt-in 設定方式を適用できる場合は、一時ファイル参照方式を実装する。
- 適用しない場合は、技術的理由を計画レポートに明記する。
src/infra/copilot/client.ts
- 長い prompt を argv に直接渡しているかを確認する。
- Cursor と同じ opt-in 設定方式を適用できる場合は、一時ファイル参照方式を実装する。
- 適用しない場合は、技術的理由を計画レポートに明記する。
関連テスト
- Cursor 以外にも実装した provider がある場合、それぞれ通常モードと opt-in 有効時のテストを追加・更新する。
- 新しい provider option が呼び出しチェーンを通る場合、必要に応じて統合テストを追加する。
優先度: 低
ドキュメント・設定例
- 既存の provider options 設定ドキュメントがある場合のみ、追加した opt-in 設定を追記する。
- Windows の一部ターミナルで command line length 制限に当たる場合に使う設定であることを簡潔に記載する。
実装上の注意
- 一時ファイル方式は opt-in にする。デフォルト挙動を変えない。
- prompt 本文の内容は一時ファイル方式でも欠落・改変しない。
- ファイル参照用の短い argv prompt は、元 prompt の代替ではなく、元 prompt 全文を読むための指示に限定する。
- 一時ファイル cleanup は成功・失敗の両方で行う。
- 新しい設定項目を追加する場合、型・バリデーション・設定読み込み・provider への受け渡しを漏らさない。
- 既存の provider 実行エラー処理を不必要に変更しない。
確認方法
npm test -- cursor-client
- 関連 provider を実装した場合は、それぞれの provider test を実行する。
npm test
npm run lint
npm run build
再現・検証観点
- 通常モードでは、従来どおり prompt 本文が argv に渡される。
- opt-in 有効時は、長い prompt 本文が argv に含まれない。
- opt-in 有効時は、一時ファイルに完全な prompt 本文が保存される。
- opt-in 有効時は、CLI に渡される prompt が一時ファイル参照指示になっている。
- provider 実行後、一時ファイルが残らない。
- provider 実行失敗時も、一時ファイルが残らない。
Open Questions
- 追加する opt-in 設定項目を置くべき正確な設定階層と命名は、既存の provider option 実装を確認して決定すること。
- Cursor 以外の CLI provider がファイル参照指示で実用可能かは、各 provider の既存実装と実行前提を確認して判断すること。
タスク指示書: CLI provider の長い prompt を opt-in 一時ファイル参照方式で渡せるようにする
背景
Windows の一部ターミナル環境で、Cursor provider などの CLI provider が長い prompt を command line argument として渡すことで、コマンドライン文字数制限に当たり起動に失敗する可能性がある。
現状確認済みの事実として、少なくとも Cursor provider は
systemPrompt + promptを結合した長い文字列をcursor-agentの argv に直接渡している。これを、ユーザーが明示的に有効化した場合のみ、一時ファイルに書き出して短い参照指示だけを argv に渡す方式へ切り替えられるようにする。ゴール
長い prompt を argv に直接載せる CLI provider について、opt-in 設定で一時ファイル参照方式を使えるように実装する。特に Cursor provider で動作することを必須とする。
明示要件
参照資料
Planner は最初に以下を実際に開いて確認すること。
src/infra/cursor/client.tssrc/__tests__/cursor-client.test.tssrc/shared/utils/spawn.tssrc/infra/claude-headless/client.tssrc/infra/kiro/client.tssrc/infra/copilot/client.ts作業項目
優先度: 高
src/infra/cursor/client.tssystemPromptとpromptを結合した完全な prompt 本文を一時ファイルに書く。cursor-agentの argv には prompt 本文を直接渡さず、ファイルを読むよう指示する短い prompt を渡す。Read the full task instruction from this file and follow it exactly: <path>--workspace指定との関係を確認する。provider 設定型・設定読み込み
src/__tests__/cursor-client.test.ts優先度: 中
src/infra/claude-headless/client.tssrc/infra/kiro/client.tssrc/infra/copilot/client.ts関連テスト
優先度: 低
ドキュメント・設定例
実装上の注意
確認方法
npm test -- cursor-clientnpm testnpm run lintnpm run build再現・検証観点
Open Questions