概要
provider: claude-terminal で、長い system prompt や structured output schema を Claude Code 起動時の argv に載せないようにしたい。
現状は tmux new-session ... claude --system-prompt <長文> --json-schema <JSON> の形で起動しており、facet や workflow 指示、schema が大きい場合に OS / tmux / CLI の引数長制限へ当たる可能性がある。
背景
claude-terminal では step prompt 本体は tmux load-buffer の stdin 経由で貼り付けているため、通常の argv 長制限には乗らない。
一方で、Claude Code 起動時の systemPrompt と outputSchema は src/infra/claude-terminal/command.ts で argv に積まれている。
args.push("--system-prompt", options.systemPrompt.trim());
args.push("--json-schema", JSON.stringify(options.outputSchema));
このため、長い system prompt や JSON schema を使う workflow では、claude-terminal だけが起動コマンド長の制限で失敗し得る。
仕様方針
1. Claude Code 起動 argv は短く保つ
claude-terminal の tmux new-session では、model、permission、mcp config、session id など、短い起動制御オプションだけを argv に載せる。
長文になり得る以下は argv に載せない。
systemPrompt
outputSchema / JSON schema
- structured output 用の長い追加指示
2. 長文 instruction は paste prompt 側へ寄せる
systemPrompt と structured output 指示は、terminal 起動後に送信する step prompt 側へ合成する。
例:
<system prompt / role instruction>
---
<structured output instruction if needed>
---
<step prompt>
tmux load-buffer は stdin 経由で本文を渡すため、argv 長制限の影響を受けにくい。
3. structured output の検証は TAKT 側で維持する
--json-schema を argv で渡さない場合でも、TAKT 側の outputSchema は保持し、応答後の抽出・検証は現在と同じように行う。
つまり、Claude Code への schema 直指定を必須にせず、prompt 上の指示と TAKT 側 validation で structured output 契約を守る。
4. 将来 file 指定が使える場合は別途検討する
Claude Code CLI が system prompt / schema の file 指定を安定して提供している場合は、将来的に file 経由へ切り替えてもよい。
ただし初回修正では、provider の動作を安定させるため、長文を prompt paste 側へ寄せる方針を優先する。
非目的
claude headless provider の挙動を変更すること
- Claude Code CLI の private / undocumented option に依存すること
- structured output validation を弱めること
- prompt 本文そのもののサイズ制限を解決すること
受け入れ条件
claude-terminal の起動コマンドに長文 --system-prompt を渡さない
claude-terminal の起動コマンドに長文 --json-schema を渡さない
- system prompt は step prompt と一緒に Claude terminal へ送信される
- output schema がある場合、structured output 用の指示は prompt 側に含まれる
- output schema の抽出・検証は TAKT 側で継続される
- 長い system prompt / schema を持つ workflow でも、
tmux new-session の argv 長制限に当たりにくくなる
claude-terminal の command builder / client / response normalizer のテストが更新される
概要
provider: claude-terminalで、長い system prompt や structured output schema を Claude Code 起動時の argv に載せないようにしたい。現状は
tmux new-session ... claude --system-prompt <長文> --json-schema <JSON>の形で起動しており、facet や workflow 指示、schema が大きい場合に OS / tmux / CLI の引数長制限へ当たる可能性がある。背景
claude-terminalでは step prompt 本体はtmux load-bufferの stdin 経由で貼り付けているため、通常の argv 長制限には乗らない。一方で、Claude Code 起動時の
systemPromptとoutputSchemaはsrc/infra/claude-terminal/command.tsで argv に積まれている。このため、長い system prompt や JSON schema を使う workflow では、
claude-terminalだけが起動コマンド長の制限で失敗し得る。仕様方針
1. Claude Code 起動 argv は短く保つ
claude-terminalのtmux new-sessionでは、model、permission、mcp config、session id など、短い起動制御オプションだけを argv に載せる。長文になり得る以下は argv に載せない。
systemPromptoutputSchema/ JSON schema2. 長文 instruction は paste prompt 側へ寄せる
systemPromptと structured output 指示は、terminal 起動後に送信する step prompt 側へ合成する。例:
tmux load-bufferは stdin 経由で本文を渡すため、argv 長制限の影響を受けにくい。3. structured output の検証は TAKT 側で維持する
--json-schemaを argv で渡さない場合でも、TAKT 側のoutputSchemaは保持し、応答後の抽出・検証は現在と同じように行う。つまり、Claude Code への schema 直指定を必須にせず、prompt 上の指示と TAKT 側 validation で structured output 契約を守る。
4. 将来 file 指定が使える場合は別途検討する
Claude Code CLI が system prompt / schema の file 指定を安定して提供している場合は、将来的に file 経由へ切り替えてもよい。
ただし初回修正では、provider の動作を安定させるため、長文を prompt paste 側へ寄せる方針を優先する。
非目的
claudeheadless provider の挙動を変更すること受け入れ条件
claude-terminalの起動コマンドに長文--system-promptを渡さないclaude-terminalの起動コマンドに長文--json-schemaを渡さないtmux new-sessionの argv 長制限に当たりにくくなるclaude-terminalの command builder / client / response normalizer のテストが更新される