---
session: S04
exercise: B-1
title: 自動化の提案を出させる
duration: 8min
difficulty: 1
prerequisite: [B-0]
phases:
  提案させる: 3min
  読む: 3min
  1件だけ作らせる: 2min
files_to_edit:
  - .claude/  # 選んだ提案に対応するファイル1本を AI に作らせます
  - memo.md   # ## B-1 に選んだ理由を書きます
hints: hints/step05_comment_insert.md
challenge: false
tags: [Skill, 自動化の提案, 読むSkillと書くSkill]
---

# 演習B-1 自動化の提案を出させる

| 項目 | 内容 |
|---|---|
| 所要時間 | 8分 |
| 難易度 | 易 |
| 使うもの | Claude Code パネル ／ `claude-automation-recommender` Skill |
| 前提 | [B-0](exB0_start_kadaiB.md) で Skill 3種を配置し、パネルを開き直していること |
| 次のステップ | [B-2 Plan モードでバグを探す](exB2_plan_hunt.md) |

---

## 目的

初見のプロジェクトに対して、「どこを自動化すると効くか」を AI に提案させます。

演習Aでは、講師が用意したハーネス（`CLAUDE.md` と `.claude/`）をそのまま配置しました。実務では、その中身を誰かが考えて書く必要があります。ゼロから考えると重い作業ですが、**たたき台なら AI が出せます。** このステップでは、たたき台の出させ方と、出てきたものの読み方を確認します。

もう1つの狙いは、**読むだけの Skill と、書く Skill を区別する**ことです。ここで使う Skill は提案しかしません。ファイルを1つも書き換えません。この性質は SKILL.md の中に宣言されています。

---

## 操作

### 1. 提案を依頼する

Claude Code パネルで、次のとおり送ります。

```
@kadaiB のプロジェクトに合った自動化を提案してください。
```

Skill の名前は書いていません。**それでも `claude-automation-recommender` が自動で選ばれます。** 選ばれる理由は B-5 で扱います。

### 2. 発火したことを確認する

応答の冒頭に、次の1行が出ます。

```
この Skill は読み取りのみを行います。ファイルの作成・変更はしません。
```

さらに応答のいちばん最後、実行サマリーの「従った設定」欄に `claude-automation-recommender` の名前が出ます。この2か所で発火を確認してください。

出ていない場合は、依頼の言い方を変えて試します。

```
このプロジェクトに Claude Code の設定を仕込むとしたら何が効きますか。提案してください。
```

### 3. 5カテゴリの提案を読む

次の5つのカテゴリごとに、1件から2件の提案が返ってきます。

| カテゴリ | 何を提案してくるか |
|---|---|
| MCP サーバー | 外部のデータやツールに繋ぐ口。データベース、課題管理、社内ドキュメントなど |
| Skill | 繰り返す作業手順の固定。レビュー観点、書式の決まりなど |
| フック | 特定の操作の前後に自動で走らせる処理。保存後の整形、危険なコマンドの遮断など |
| サブエージェント | 専任の役割を分ける。大量のコードを読む点検作業など |
| プラグイン | 上記をまとめて配る単位 |

各提案には「効く理由」が付いています。**この欄に、このプロジェクトで実際に見たファイル名が挙がっているかを確認してください。** `pom.xml` や `EquipmentServiceImpl.java` のような具体名が出ていれば、プロジェクトを読んだ上での提案です。「一般的にテストは重要です」のような一般論だけなら、読まずに書いています。

### 4. 1件だけ選んで作らせる

提案の最後に、上位3件の優先順位が付いています。その中から**1件だけ**選び、実装を依頼します。

```
この提案のうち〈選んだ提案の名前〉を、実際に .claude/ の下に作ってください。
```

Skill を選んだ場合は `.claude/skills/〈名前〉/SKILL.md` が、フックを選んだ場合は `.claude/settings.json` への追記が行われます。

### 5. 作られたものを開いて読む

作られたファイルを VSCode で開いてください。**中身を読まずに次に進まないでください。** 特に次の2点を見ます。

- 何をするものか、日本語で読んで理解できるか
- 自分の職場で使うとしたら、どこを書き換える必要があるか

---

## 自分で考える

提案は5つのカテゴリに分かれていました。

**あなたの職場のプロジェクトなら、どのカテゴリの提案がいちばん効くと思いますか。**

判断の材料は「いま人手でやっていて、毎回同じことを言っている作業は何か」です。レビューで毎回同じ指摘をしているなら Skill、保存のたびの整形や確認を忘れがちならフック、というように対応します。

選んだカテゴリと理由を、`memo.md` の `## B-1` に1行書いてください。

---

## 生成物の名前と場所

- `handson/.claude/` 配下に、選んだ提案に対応するファイル1本
  - Skill を選んだ場合: `handson/.claude/skills/〈名前〉/SKILL.md`
  - フックを選んだ場合: `handson/.claude/settings.json`（既存ファイルへの追記）
  - サブエージェントを選んだ場合: `handson/.claude/agents/〈名前〉.md`
- `handson/memo.md` の `## B-1`

---

## OK基準

- 5カテゴリすべての提案が返ってきた（カテゴリの抜けがない）
- 「効く理由」に `kadaiB` の実在するファイル名が挙がっている
- 提案を1件選んで実装を依頼し、ファイルが実際に作られた
- 作られたファイルを開いて中身を読んだ
- `memo.md` の `## B-1` に選んだ理由が書けた

---

## 追加と考察

この Skill は提案するだけで、ファイルを一切書き換えません。SKILL.md の先頭に次の1行が書かれているためです。

```
allowed-tools: Read, Glob, Grep
```

読む道具しか渡していないので、書きたくても書けません。だから手順4で「実際に作ってください」と別に頼む必要がありました。

**読むだけの AI と、書く AI を分けておく**のは、チームで安全に運用するときの基本的な分け方です。調査や点検は読み取り専用にしておけば、途中で余計な変更が混ざりません。演習Aで使った `reviewer` サブエージェントも同じ考え方で、読む道具だけを渡してあります。

もう1点、提案の質は「何を見たか」で決まります。この Skill は `README.md`、`CLAUDE.md`、ビルド定義、ソースの構造、テストの有無、既存の `.claude/` の順に読みます。**読む順番が SKILL.md に書いてあるから、毎回同じ品質で提案が出ます。** 人によって当たり外れが出ないことが、手順を固定する価値です。

---

## 発展課題

同じ質問を課題A に対して投げてください。

```
@kadaiA のプロジェクトに合った自動化を提案してください。
```

提案の内容はどう変わりましたか。`kadaiB` は Java と Maven のプロジェクト、`kadaiA` はあなたが作ったブラウザだけで動くアプリです。技術スタックが違うと提案が変わるなら、**この Skill は何を見て判断していると考えられますか。**

余裕があれば、提案の根拠に使われたファイルを自分でも開いて、同じ判断ができるか確かめてください。

---

## 詰まったときは

**Skill が発火しない**

`handson/.claude/skills/claude-automation-recommender/SKILL.md` が存在するか確認してください。存在するのに発火しない場合は、Claude Code のパネルを開き直してください。Skill の一覧はセッション開始時に読み込まれます。

**提案が3カテゴリしか出ない**

次のように追加で依頼してください。

```
5カテゴリすべてについて提案してください。該当が薄いカテゴリも、効きにくい理由を書いて1件は触れてください。
```

**提案の内容が一般論ばかりで、このプロジェクトの話になっていない**

読ませる対象を明示して、もう一度依頼してください。

```
@kadaiB/pom.xml と @kadaiB/src の構造を見た上で、このプロジェクト固有の提案に絞ってください。
```

**実装を依頼したら、想定と違う場所にファイルが作られた**

作られた場所を確認し、`handson/.claude/` の下に移動するよう依頼してください。`.claude/` の外に置かれたファイルは読み込まれません。

```
いま作ったファイルは handson/.claude/ の下に置く必要があります。移動してください。
```
