# Plan Execute

> プランモード — Orchestrator がワークフロー設計・実行・自律ループ・レビューを統括する。「プランモードで」と言われたときに起動。

- Skill: `okikusan-public/plan-execute` (Agent Skill)
- Install (CLI): `npx skillmds@latest add okikusan-public/plan-execute`
- Raw SKILL.md: https://api.skillmd.com/api/skills/okikusan-public/plan-execute/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: okikusan-public (https://skillmd.com/u/okikusan-public)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/okikusan-public/plan-execute

---


# Plan-Execute スキル v2 (KIK-609)

Orchestrator が中心となり、7名のエージェント体制でワークフロー設計→実行→自律ループ→レビューを行う。

## トリガー

「プランモードで」「プランで」「プラン立てて」「プランモードで実行」等の発言。

## エージェント構成（7名）

| エージェント | タイプ | 役割 | 参加条件 |
|:---|:---|:---|:---|
| **Orchestrator** | 親+ファシリテーター | プラン策定・実行指示・結果評価・自律ループ判断・レビュー統合 | 常時 |
| **Context Analyst** | 実行補助 | 金融市場の歴史的文脈 + マクロ環境を一体で事前分析（LLMの知識活用） | 投資判断時 |
| **Strategist** | Plan | ワークフロー設計。Growth/Value/Macro/Contrarian の4視点で選択肢を設計 | 常時 |
| **Lesson Checker** | Plan | 過去のlesson（制約条件）がワークフローに反映されているかチェック | 常時 |
| **Devil's Advocate** | Plan | 盲点・バイアス・見落とし・逆張り視点を指摘 | 常時 |
| **Quantitative Reviewer** | Review | 定量チェック + Gate Keeper機能（数値整合性・税コスト・通貨配分・単元株・制約充足・全ステップ実行確認） | 常時 |
| **Qualitative + Risk Reviewer** | Review | 定性チェック（テーゼ整合・conviction尊重・カタリスト）+ リスク（地政学・マクロ・市場過熱・PF構造・銘柄固有） | 常時 |

### Orchestrator ルール

- **定量根拠義務**: エージェントの指摘を却下する場合、必ず定量根拠を明示する。「感覚的に小さい」「影響は限定的」は禁止。PF比率・閾値との比較を数値で示すこと
- **自律進行**: Phase間の移行はユーザー確認なしで進行。確認は Phase 6 のアクション実行承認のみ
- **プログレス表示**: 各Phase開始時にユーザーに1行の進捗を表示する:
  ```
  [1/6] コンテキスト取得中...
  [2/6] ワークフロー設計中...
  [3/6] 分析実行中...
  [4/6] 結果評価中（自律ループ）...
  [5/6] レビュー中...
  [6/6] 最終レポート作成中...
  ```
- **判断原則（最重要）**: 全ての出力に対して「このレポートを受け取ったユーザーが、次の行動を迷わず実行できるか？」を自問する。迷うポイントがあれば、自分で補完してから提示する。具体的には:
  - 「売れと提案したが、売った金で何をすればいい？」→ 資金使途・再投資先・条件別投入計画を補完
  - 「候補が出ているが、いつ買えばいい？」→ トリガー条件（F&G/RSI/VIX等）を補完
  - 「ホールドと言われたが、いつまで待つ？」→ 見直し期限・撤退条件を補完
  - 「数字が概算で信頼できない」→ what-if実行値で置き換える
  - 「リスクが列挙されているが対処法がない」→ 各リスクに具体的対応策を補完
  - 「市場が変わったらどうなる？」→ シナリオ別の条件分岐を補完
  - 「似た銘柄や代替候補がない」→ スクリーニングで候補を補完
  - 「税コストや手数料が考慮されていない」→ user_profileから計算して補完

## 動作フロー

### Phase 1: Pre-Plan

1. `python3 scripts/get_context.py "<ユーザー入力>"` でグラフコンテキストを取得
2. `python3 scripts/extract_constraints.py "<ユーザー入力>"` でlesson制約を取得（投資判断の可能性がある場合）
3. `config/user_profile.yaml` からユーザー前提設定を参照（ファイルがない場合はデフォルト値）
4. 投資判断を伴う場合 → **Context Analyst** に金融市場の歴史的文脈を取得させる
5. **直近イベントスキャン**: 保有銘柄の決算日・材料を WebSearch または yfinance で事前確認。決算7日以内の銘柄がある場合、Phase 2 の Strategist に「決算タイミングを考慮した設計」を指示。
6. **対象銘柄の個別コンテキスト取得**: PF全体クエリだけでなく、アクション対象になりそうな銘柄ごとに `get_context.py` を実行し、過去のメモ・テーゼ・lesson を取得。

#### Context Analyst の観点

| カテゴリ | 例 |
|:---|:---|
| 市場サイクル | 「2022年FRB利上げでグロース-30%」「利上げ停止後12ヶ月で+15%」 |
| テーマの歴史 | 「AIテーマは2023年開始、2024年バブル懸念、2025年実需で再評価」 |
| バブルパターン | 「ITバブル(2000年)のPER100超 vs 現在のAI半導体PER100超」 |
| 地政学の前例 | 「2018年米中貿易戦争でAMZN-20%」「2022年ロシアウクライナでエネルギー急騰」 |
| F&Gの歴史 | 「F&G80超が1ヶ月持続後の調整は平均-8%、回復45日」 |
| 金利サイクル | 「利上げ停止→最初の利下げまでの期間、株式は歴史的に好調」 |

### Phase 2: Plan（3名並列）

Strategist + Lesson Checker + Devil's Advocate を並列起動。

#### Strategist の4視点

Strategist は以下の4視点でワークフローを設計する（独立エージェントではなく1名で4視点を内包）:

- **Growth視点**: EPS成長率、テーマの初動、Forward PER
- **Value視点**: PER/PBR、割安度スコア、配当利回り
- **Macro視点**: 金利サイクル、F&G、セクターローテーション
- **Contrarian視点**: コンセンサスに流されていないか、見落としはないか

#### Strategist の思考プロセス

各視点で「何を考えるか」だけでなく「どう考えるか」の思考ステップを実行する:

**Growth視点の思考ステップ:**
1. PFの現テーマを確認 → AI以外に何が足りない？
2. 足りないテーマで screen-stocks を実行（market-darling / growth / high-growth プリセット）
3. 既存銘柄の同業・競合もチェック（NVDA保有→AMD/AVGOは候補か？）
4. テーマ追加がPF構造（集中度・通貨配分）に与える影響を考慮

**Value視点の思考ステップ:**
1. PFの含み損銘柄を確認 → 入替先候補はあるか？
2. PFギャップ（地域・セクター）を確認 → ギャップを埋める割安株はあるか？
3. user_profile の preferred_regions で取扱可能地域のみ screen-stocks を実行
4. バリュートラップ判定を忘れない（低PER+成長マイナスは罠）

**Macro視点の思考ステップ:**
1. 現在のF&G/RSI/VIXから市場サイクルの位置を判断
2. 過熱圏ならディフェンシブ寄り（配当・低Beta）、恐怖圏なら攻め（成長・シクリカル）
3. 金利方向から有利なセクターを特定（金利低下→グロース有利、金利上昇→金融有利）
4. 原油・為替の変動がPF銘柄に与える影響を個別に評価

**Contrarian視点の思考ステップ:**
1. 他の3視点の結論を確認 → 全員が同じ方向を向いていないか？
2. 全員「待て」なら → 少額でも動くべき理由はないか
3. 全員「買え」なら → 本当に今か？1週間待つ理由はないか
4. 市場のコンセンサスと逆のポジションに価値がないか確認

#### Strategist の追加必須観点

- **キャッシュ等価物の棚卸し**: PF内のMMF・短期債ETF（SHV等）について「保有継続（利回り確保）vs 現金化（柔軟性向上）」を検討。キャッシュ温存戦略時は特に重要
- **ETFアクション候補**: GLDM/JEPI/SHV等のETFについても、アクション対象として検討する（ヘルスチェックで「問題なし」でも戦略的に不要なら売却候補）
- **PF全銘柄の役割分類**: リスク資産/安全資産/キャッシュ等価物に分類し、アクション対象外の銘柄にも「ホールド理由」を明記
- **スクリーニング地域の制限**: `config/user_profile.yaml` の `screening.preferred_regions` に記載された地域のみスクリーニング対象とする。`excluded_regions` は除外する。設定がない場合は全地域を対象とする

Orchestrator は3名の結果を統合し、Lesson Checker が FAIL の場合はワークフローを修正（最大2回）。

### Phase 3: Execute

プランに従ってスキル/スクリプトを順次実行する。

### Phase 4: 結果評価 + 自律ループ

Orchestrator が実行結果を評価し、必要に応じて追加実行・プラン修正を自律的に行う。

| 評価結果 | アクション |
|:---|:---|
| 問題なし | Phase 5（Review）へ進む |
| 情報不足を検出 | 追加スクリプトをピンポイント実行 → Phase 4に戻る |
| 新事実が判明（決算日等） | プランを修正 → Phase 3に戻る |
| アクション候補を検出 | what-if を自動実行して数値付き提案を生成 → Phase 4に戻る |

#### 自律ループの具体例

**例1: 決算日判明**
Phase 3で health 実行 → Phase 4で「NFLX決算が今日と判明」
→ Orchestrator: 「NFLX利確をプランから除外」→ Phase 3に戻り修正プランで再実行

**例2: 含み益集中検出**
Phase 3で health 実行 → Phase 4で「AMZN含み益68%集中を検出」
→ Orchestrator: what-if --remove "AMZN:5" と "AMZN:7" を自動実行 → 比較表生成 → Phase 5へ

**例3: テーマギャップ検出**
Phase 3で health 実行 → Phase 4で「AIテーマのみ、他テーマ0%」
→ Orchestrator: テーマ別候補スクリーニングを追加実行 → Phase 5へ

#### 自律ループの制限
- 最大2回まで追加実行/プラン修正
- 3回目は打ち切りしてPhase 5へ進む

#### 自律補完の原則

Phase 3 の実行結果を評価する際、以下を自問する:
**「この分析結果だけで、ユーザーに完全な提案ができるか？」**

できない場合は、不足を自分で特定し、追加のスクリプト実行・WebSearch・what-ifで補完してから Phase 5 に進む。ユーザーに「何を追加実行しますか？」と聞かない。

#### 自律調査ルール（厳守）

- 新事実検出時（決算結果・急騰急落・ニュース等）→ **WebSearch で即座に調査**。ユーザーに「確認しますか？」と聞かない
- 情報収集・追加分析の要否をユーザーに確認しない
- ユーザーへの確認は Phase 6（最終まとめ）でアクション実行の承認を得る時のみ
- Phase 1→2→3→4→5→6 はユーザー確認なしで自律進行
- ユーザーに中断権はある（いつでも「止めて」で停止）

#### 情報収集の優先順位

| 優先度 | 手段 | 所要時間 | 用途 |
|:---|:---|:---|:---|
| 1st | WebSearch | 数秒 | 決算結果・ニュース・速報の即時確認 |
| 2nd | yfinance | 数秒 | 株価・財務データ・決算日の取得 |
| 3rd | run_research.py | 30-60秒 | Grok API での深掘りリサーチ（詳細が必要な場合のみ） |

### Phase 5: Review（2名並列）

Quantitative Reviewer + Qualitative/Risk Reviewer を並列起動。

#### Quantitative Reviewer の判断原則

**「数字を見て、ユーザーが電卓なしで判断できるか？」**

以下のチェックリストは参考。原則に基づき、リストにない問題も自律的に検出・指摘する:

#### Quantitative Reviewer のチェックリスト（Gate Keeper機能含む）

| チェック | 判定 |
|:---|:---|
| Orchestratorの全ステップが実行されたか | PASS/FAIL |
| 問題検出時にアクション提案があるか | PASS/FAIL |
| 提案に株数・金額・税コストが含まれているか | PASS/FAIL |
| 単元株が正しいか（日本株100株単位、SGX100株単位等） | PASS/FAIL |
| 通貨配分60%上限を超えていないか | PASS/FAIL |
| user_profileの前提が参照されているか | PASS/FAIL |
| 数値の整合性（what-if資金収支、HHI変化等） | PASS/FAIL |
| 税コスト計算が正確か（購入時為替レート考慮） | PASS/FAIL |

#### Qualitative + Risk Reviewer の判断原則

**「この提案に従って、ユーザーが後悔しない判断ができるか？」**

以下の観点は参考。原則に基づき、リストにない盲点も自律的に検出・指摘する:

#### Qualitative + Risk Reviewer の観点

**定性チェック:**
- テーゼとの整合性（利確理由がテーゼ崩壊に基づいているか、テクニカルだけか）
- lesson/conviction尊重（ユーザーが確信を持って購入した銘柄を数値だけで否定していないか）
- カタリスト検証（決算日、材料、テーマ動向を確認しているか）
- テーマの妥当性（推奨テーマが市場環境と整合しているか）

**リスクチェック:**
- 地政学リスク（米中対立、台湾有事、中東情勢、制裁 → PF銘柄のサプライチェーン影響）
- マクロリスク（金利、為替、インフレ、リセッション確率）
- 市場リスク（F&G過熱、VIX急騰、決算シーズン）
- PF構造リスク（通貨集中、セクター集中、テーマ集中、含み益集中）
- 銘柄固有リスク（流動性、規制、カントリーリスク）

#### レビューFAIL時の対応
- FAIL → Orchestrator が不足分を特定し、**不足分のみ**再実行（全やり直しではない）
- 例: Quantitative FAIL（税コスト未反映）、Qualitative PASS → 税コスト計算のみ追加 → Quantitative のみ再レビュー

### Phase 6: 最終まとめ

全 PASS → Orchestrator が判断原則に基づき最終レポートを作成。

#### 判断原則（出力の自己評価）

Orchestrator は最終レポート作成前に自問する:
**「このレポートを受け取ったユーザーが、次の行動を迷わず実行できるか？」**

迷うポイントが1つでもあれば、Phase 3-4 に戻って補完するか、レポート内で自ら補完してから提示する。

#### 参考構成

以下は出力の参考構成であり、必須ではない。Orchestrator は判断原則に基づき、状況に応じて構成を変更・追加・省略できる:

1. エグゼクティブサマリー（1-2行の結論）
2. PF現状スコアカード
3. 要アクション + 資金使途（売却がある場合、回収資金の条件別投入計画をセットで）
4. 候補銘柄リスト（各アクションと紐づけて提示）
5. 「何もしない」との比較
6. リスクマップ + 各リスクへの具体的対応策
7. 未解決事項
8. 次回チェックポイント

**重要**: セクションの有無や順序よりも、「ユーザーが行動できるか」が判断基準。売却提案があるのに再投資先がない、候補があるのに条件がない等の「片手落ち」を自分で検出・補完すること。

## Phase間の出力スキーマ

各Phaseは以下の必須フィールドを次Phaseに渡す:

| Phase | 必須出力 |
|:---|:---|
| Phase 1 | context, constraints[], user_profile, upcoming_events[] |
| Phase 2 | workflow_steps[], lesson_check: PASS/FAIL, devils_advocate_concerns[] |
| Phase 3 | health_results, screening_candidates[], what_if_results[], market_data |
| Phase 4 | revised_plan?, additional_findings[], action_proposals[], autonomous_research[] |
| Phase 5 | quantitative: PASS/FAIL + reasons[], qualitative: PASS/FAIL + reasons[] |
| Phase 6 | 判断原則に基づく最終レポート（参考構成参照） |

### リトライルール

| フェーズ | 最大回数 | 超過時 |
|:---|:---|:---|
| Phase 2 Lesson Checker FAIL | 2回 | WARN付きで続行 |
| Phase 4 自律ループ | 2回 | Phase 5に進む |
| Phase 5 レビューFAIL | 2回 | WARN付きで出力 |

3回目のFAILは打ち切り: 「⚠️ 以下の点が未解決ですが結果を提示します」

## 問題検出→自動提案トリガー（Phase 4で適用）

| 検出内容 | 自動提案内容 |
|:---|:---|
| 含み益が1銘柄にPF含み益の50%超集中 | 部分利確の具体案（株数・売却代金・税コスト試算） |
| RSI 70超 + デッドクロス同時発生 | 利確検討の具体案（何株売るか、税引後手取りはいくらか） |
| 株主還元率が3年以上連続減少 | 売却の具体案（全売却 or 入替先候補をスクリーニング） |
| ヘルスチェックでEXIT判定 | 売却 + 同セクター/テーマで代替候補3銘柄をスクリーニング |
| テーマギャップ | テーマ別の候補銘柄上位3を提示（最低投資額付き） |
| F&G 80超 + 新規買い増し提案 | 「市場過熱中」の警告を付与。キャッシュ温存との比較を提示 |

## 提案時の制約

- 単元株バリデーション: 日本株は100株単位、SGXは100株単位で提案
- 通貨配分チェック: USD 60%上限。入替先がUSD建ての場合は警告
- user_profile.yaml: 手数料・税コストを自動計算（ファイルがない場合はデフォルト値）
- F&G 80超: 新規買い増しには「市場過熱中」警告を付与

### 提案の必須項目

全てのアクション提案には以下をセットで含める:
- **出口戦略**: 損切りライン / 利確目標 / 見直し条件
- **再エントリー基準**: 利確後に買い戻す条件（該当する場合）
- **時間制限**: 「N週間以内に変化がなければ見直し」
- **候補銘柄リスト**: 売却後の再投資先候補（「今は買わない」場合でも提示）

候補銘柄リストには以下を含める:
- PFギャップ（地域・テーマ・通貨）から逆算した候補上位3-5銘柄
- 各候補の最低投資額・テーマ・地域・PER・配当利回り
- PFへの改善効果（通貨配分変化、地域分散改善度）
- キャッシュ温存を推奨する場合は再投入トリガー条件（F&G、RSI、VIX等）

## エスカレーション判定基準

以下のいずれかに該当する場合、Context Analyst を召集し、Plan Phase で3名並列を実行:
- ユーザーの意図が売買・入替・リバランス・調整を含む
- extract_constraints.py が action_type として swap_proposal / new_buy / sell / rebalance / adjust を返す
- プラン内に what-if / adjust / rebalance コマンドが含まれる
- Phase 4の自律ループでアクション提案が生成された場合

情報照会のみ（snapshot, analyze, health 等）の場合は Context Analyst 不要、Plan Phase も軽量版（Strategist のみ）で実行可能。

## 利用可能なスキル/スクリプト一覧

| スキル | スクリプト | 用途 |
|:---|:---|:---|
| screen-stocks | run_screen.py | スクリーニング |
| stock-report | generate_report.py | 個別銘柄レポート |
| stock-portfolio | run_portfolio.py | PF管理（snapshot/analyze/health/forecast/what-if/adjust/rebalance/simulate/review） |
| stress-test | run_stress_test.py | ストレステスト |
| market-research | run_research.py | 市場・業界・銘柄リサーチ |
| watchlist | manage_watchlist.py | ウォッチリスト |
| investment-note | manage_note.py | 投資メモ |
| graph-query | run_graph_query.py | ナレッジグラフ検索 |
| — | market_dashboard.py | 市況ダッシュボード |
| — | get_context.py | グラフコンテキスト取得 |
| — | extract_constraints.py | lesson制約抽出 |

