Claude 4.x 最新プロンプトエンジニアリングガイドと推奨構成
曖昧な指示は避け、具体的に書く。
# Bad
ダッシュボードを作って
# Good
分析ダッシュボードを作成してください。グラフにはRechartsを使い、
日次/週次/月次の切り替えフィルターを含めてください。
Claudeは構造化プロンプトの訓練を受けている。XMLタグで意味を明確にする。
<instructions>やること・振る舞い方</instructions>
<context>背景情報、データ、ドキュメント</context>
<task>このインタラクションでの具体的な依頼</task>
<output_format>期待する出力形式</output_format>
1つの良い例は段落の説明に勝る。入出力ペアを2-3個示す。
<examples>
<example>
<input>ユーザーがログインできない</input>
<output>認証トークンの期限切れが原因です。リフレッシュトークンのフローを確認してください。</output>
</example>
</examples>
複雑な問題ではステップバイステップの推論を促す。 ただし Extended Thinking が有効な場合は「ステップバイステップで考えて」は不要(冗長でトークン浪費)。
あなたは: [役割]
目標: [達成すべきゴール]
制約:
- [制約1]
- [制約2]
不明な場合: 明示的にそう伝え、1つ明確化の質問をする
手動の budget_tokens ではなく、effort パラメータで深さを制御する。
client.messages.create(
model="claude-opus-4-6",
max_tokens=64000,
thinking={"type": "adaptive"},
output_config={"effort": "high"}, # max, high, medium, low
messages=[...],
)
Claude Opus 4.6 以降、最後の assistant ターンでの prefill は非サポート。
代替手段:
前置きなしで直接回答してください。"Here is..." のようなフレーズで始めないでください。Claude 4.x は以前より積極的。過剰な強調は逆効果 (overtriggering)。
# Bad (過剰)
CRITICAL: You MUST ALWAYS use this tool when...
# Good (適切)
このツールは~の場合に使ってください。
<use_parallel_tool_calls>
依存関係のない複数のツール呼び出しは並列で実行してください。
</use_parallel_tool_calls>
Claude Opus 4.6 はサブエージェントを過剰に使う傾向がある。
サブエージェントは以下の場合に使用:
- タスクが並列実行可能
- 独立したコンテキストが必要
- 独立したワークストリーム
単純なタスク、単一ファイル編集、ステップ間のコンテキスト維持が必要な場合は直接作業する。
アクションの可逆性と影響範囲を考慮してください。
ローカルで可逆的なアクション(ファイル編集、テスト実行)は自由に。
破壊的・共有システムへのアクション(ファイル削除、force-push、外部投稿)は確認後に。
アプローチを決めたらコミットしてください。
推論に直接矛盾する新情報がない限り、決定を再考しないでください。
<investigate_before_answering>
開いていないコードを推測しないでください。
ユーザーが特定ファイルを参照した場合、回答前にファイルを必ず読んでください。
根拠のある、ハルシネーションのない回答をしてください。
</investigate_before_answering>
直接要求されたか明らかに必要な変更のみ行う。
依頼されていない機能追加、リファクタリング、「改善」はしない。
仮定の将来要件のための設計はしない。
フロンティアLLMは約150-200の指示を合理的に処理可能。 各行について「これを削除するとClaudeはミスするか?」と自問し、Noなら削除。
~/.claude/CLAUDE.md # 全セッション共通(グローバル)
./CLAUDE.md # プロジェクトルート(git管理、チーム共有)
./CLAUDE.local.md # 個人設定(gitignore)
親ディレクトリ/CLAUDE.md # モノレポ用
子ディレクトリ/CLAUDE.md # オンデマンド読み込み
@ インポートで他ファイル参照プロジェクト概要は @README.md を参照。
npmコマンドは @package.json を確認。
CLAUDE.md を軽量に保つため、ドメイン知識はスキルに分離する。
.claude/skills/
├── skill-name/
│ └── SKILL.md
---