---
name: automate
description: 成功した手順やセッションの作業内容を仕組み化（skill / script / rule / hook）したいとき。「これ仕組み化したい」「自動化したい」「次回も再現できるようにしたい」などに使う。
---

# Automate - セッション内容の仕組み化

セッション内の手作業・繰り返し判断・成功した手順を抽出し、再現可能な仕組み（skill / script / rule / hook）に落とす plan を作って実装まで進める。

## `/learn` との棲み分け

| トリガー                                     | コマンド    |
| -------------------------------------------- | ----------- |
| ミスを起点に再発防止したい（1 件）           | `/learn`    |
| 成功した手順を再現可能にしたい               | `/automate` |
| セッション全体を俯瞰して仕組み化したい       | `/automate` |

## 引数

`$ARGUMENTS` — 仕組み化したい対象のヒント（省略可）

- 省略時: セッション全体を振り返って自動抽出
- 指定時: そのヒントを軸にセッションを掘る

## Step 1: 候補抽出

セッションを振り返り、以下のパターンを検出してユーザーに列挙する:

- **手作業の繰り返し** — 同じ Bash / Read / Edit の連続、同じ判断ループ
- **明文化されていない判断基準** — Claude が文脈から推測した判断（次回も同じ判断ができる保証なし）
- **未自動化の成功手順** — 複数ステップの操作が成功したが skill 化されていない

ヒントが指定された場合は、そのヒントに該当する候補だけ抽出する。

**出力フォーマット:**

```
### 仕組み化候補

1. **xxx 手順** — Bash 5 回 + Edit 3 回の流れ。skill 化候補
2. **yyy 判断基準** — 「A の場合は B」と判断したが rules になし。rule 追加候補
3. **zzz 同期処理** — 毎回手動で実行。hook 化候補
```

## Step 2: 候補の分類と提案

各候補を以下のいずれかに分類し、具体的な実装案を出す:

| 種別   | 出力先                       | 適用例                            |
| ------ | ---------------------------- | --------------------------------- |
| skill  | `skills/<name>/SKILL.md`     | 対話を伴う手順                    |
| script | `scripts/<name>.ts`          | 機械的な処理                      |
| rule   | `.ai/rules/<name>.md`        | 判断基準・厳守事項                |
| hook   | `.claude/settings.json`      | 前後で必ず実行する処理            |

**事前確認（必須）:**

```bash
ls skills/    # 既存 skill と重複しないか
ls scripts/   # 既存 script と重複しないか
ls .ai/rules/ # rule は既存ファイルに統合できないか
```

## Step 3: plan 出力 + 承認

`docs/automate/YYYY-MM-DD-<topic>.md` に plan を書き出す。日付は `TZ=Asia/Tokyo date +%Y-%m-%d` で取得する。

**plan フォーマット:**

```markdown
# Automate Plan - YYYY-MM-DD - <topic>

## セッション要約
- 対象: <ヒント or "セッション全体">
- 検出パターン数: N

## 仕組み化候補

### 1. <候補名>
- **種別**: skill / script / rule / hook
- **検出根拠**: セッション内で〜が N 回繰り返された / 〜の判断が rules になかった等
- **提案実装**:
  - ファイル: `skills/<name>/SKILL.md`
  - 概要: <1〜2 行>
  - 主要ステップ: <箇条書き>
- **想定効果**: 次回以降 X 分節約 / 判断のブレを防ぐ等
- **依存・前提**: <既存スクリプト・skill との関係>

### 2. <候補名>
（同形式）

## 実装順序
1. <候補1> — 独立、すぐ実装可
2. <候補2> — <候補1> に依存
3. ...

## スキップ候補
- <候補名> — 理由（既に存在 / 1 回限り / 過剰設計等）
```

書き出したら、`AskUserQuestion` で以下を選ばせる:

- **全候補を実装**
- **個別選択**（カンマ区切り番号入力、例: `1,3,5`）
- **キャンセル**

## Step 4: 実装 + PR

承認分を実装し、`/pr` で PR を作成する。

- skill / script / rule の新規作成は通常通りファイル編集
- **hook 追加は `update-config` skill に委譲する** — `.claude/settings.json` の編集は専用 skill 経由

## ルール

- **過剰仕組み化を避ける** — 1 セッションで 1 回しか発生しなかった作業は仕組み化しない（「今後も繰り返す」確証があるものだけ）
- **既存 skill / script と重複しない** — Step 2 の前に必ず `ls` で確認
- **rule 追加は `.ai/rules/` の既存ファイルに統合できないか先に検討** — 新ファイルを乱立させない
- **hook 追加は `update-config` skill に委譲**
- **plan 承認時は `AskUserQuestion` を使う**
- **個別選択時はカンマ区切り番号入力** — `/analyze` と同じ UX
- **スキップ候補も plan に明記** — なぜ仕組み化しないかを残す
- **日付は JST で取得** — `TZ=Asia/Tokyo date +%Y-%m-%d`
