# Workflow の方針

## Context

Workflow は制約付きの強制的な作業フロー。`/<slug>` で明示的に呼び出し、依存 Knowledge を context に inject してから実行する。Knowledge（`#<slug>`）は `docs/plan/memory.md` 側で定義。

## 決定事項

### 呼び出しと依存

- 呼び出し: `/<slug>`
- 名前空間はフラット、slug は kebab-case（小文字英数とハイフン）
- frontmatter `requires: [knowledge-slug, ...]` で依存 Knowledge を slug 参照
- 実行時は依存 Knowledge 本文を context に inject してから Workflow 本文を実行

### 呼び出し制御フラグ

| フラグ           | 意味                                                    | デフォルト |
| ---------------- | ------------------------------------------------------- | ---------- |
| `auto_invoke`    | description が LLM context に載り、LLM が自発的に呼べる | **OFF**    |
| `user_invocable` | ユーザーが `/<slug>` で明示的に呼べる                   | **ON**     |

`auto_invoke` の ON 化は人間の判断、または consolidation からの offer 経由のみ。同じ制御は Knowledge 側（`memory.md`）でも採用。

### 格納先とファイル形式

- `.insomnia/workflow/<slug>.md`（ファイル名 = slug がそのまま識別子、`name` field は持たない）
- `.insomnia/memory/` は session-derived state 専用、Workflow は配置しない
- frontmatter + Markdown 本文
- frontmatter フィールド: `description`, `auto_invoke`, `user_invocable`, `requires`

### 生成・更新ポリシー

Workflow は**人間が書く**、または consolidation が offer して人間が承認する。自動書き込みは禁止:

- consolidation（`memory.md` 参照）の write tool schema に `workflow` カテゴリを含めないことで構造的に担保
- 新規作成 / 手順追加・更新は `Event::Notification` で提案し、人間承認で反映

### Offer 契機

consolidation が以下を検出した場合、Client に Notification を投げる:

- 再利用価値ある手続きの Workflow 化（新規作成）
- 既存 Workflow への改善提案（手順追加・更新）
- `auto_invoke` ON 化（頻繁に `user_invoke` されているものを検出）

## Scope 外

### 恒久除外（本設計方針として採用しない）

- Workflow の自律生成（offer までで留める。LLM が勝手に新規 Workflow を生成する経路は設けない）

### 将来検討（運用で必要性が見えたら追加）

- DSL 化や step 粒度の制約 — 初期は Markdown 本文そのまま実行
- Workflow 実行中の中断・再開・トランザクション管理
- 品質検証フロー: empirical prompt tuning pattern（`docs/ref/memory-systems.md` §6）相当の**新規 subagent 試走 + 構造化報告**を Workflow に適用。判定対象は本文の不明瞭点・裁量補完・要件達成率。Knowledge 単体の検証は設けず、`requires` 経由で Workflow から使われる前提で間接回収。SKILL 的用途（Workflow 経由しない `#knowledge`）は人間レビューに委ねる

## 関連

- `memory.md`: Knowledge 定義、extract/consolidation、Offer の配送経路
