毎回おなじことを言うのが面倒になってきた
Claude Codeをしばらく使っていると、気づく。毎回おなじことを頼んでいる自分に。
コードを整えて。日本語で返して。エラーチェックして。全部、前も言ったやつだ。
ありがたいけど、さすがにだるい。
実はこの問題、ちゃんと解決策がある。HooksとSkillsという2つの仕組みだ。理屈は後回しにして、まず触ってみよう。
Hooks: ファイルを保存するたびに自動で動くやつ
Hooksは、Claude Codeが何かをしたタイミングで別の処理を自動で走らせる仕組みだ。
わかりやすい例を出す。Claude Codeがファイルを保存するたびに、コードの体裁を自動で整える。手で頼まなくても勝手にやってくれる。
やってみよう: Hooksを設定する
Claude Codeを起動して、こう話しかける。
.claude/settings.json に以下のHooksを設定して。
ファイルを編集したあとに prettier を自動で走らせたい。
Claude Codeが設定ファイルを書いてくれる。中身はこうなる。
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hook": "npx prettier --write $CLAUDE_FILE_PATH"
}
]
}
}
仕組みを整理しよう。
| 項目 | 説明 |
|---|---|
PostToolUse | 何かをした「後」に動く |
matcher | どのツールが動いたときに反応するか(ここではEditかWrite) |
hook | 実行するコマンド(ここではprettierでコード整形) |
これだけ。ファイルを編集するたびにprettierが走って、コードが勝手にきれいになる。
Hookが動くタイミング
3種類ある。
| タイミング | いつ動くか | 使い道 |
|---|---|---|
| PreToolUse | 何かをする前 | 危ないファイルの編集を防ぐ |
| PostToolUse | 何かをした後 | コード整形、リント実行 |
| Notification | 通知が出たとき | Slackに通知を飛ばす |
最初はPostToolUseだけで十分。何かした後にチェックを走らせる、これが圧倒的に出番が多い。
間違えても壊れない
Hooksの設定を間違えてもファイルが壊れたりはしない。動かなかったら設定を消せばいいだけ。気軽に試していい。
Skills: スラッシュコマンドで呼び出す技
Hooksが自動で動くものだとすると、Skillsは自分で呼び出すもの。
Claude Codeには最初からいくつかSkillが入っている。たとえば /commit と打てば、変更内容をまとめて保存してくれる。
/commit
Claude Codeが変更内容を見て、説明文をつけて、コミット(保存)まで全部やってくれる。
ほかにもある。
| コマンド | やってくれること |
|---|---|
/commit | 変更をまとめてGitに保存 |
/plan | やることを整理して計画を立てる |
/code-review | コードの問題点をチェックする |
で、ここからが本題。自分だけのSkillを作れる。
自分だけのSkillを作ってみる
Skillの正体はただのテキストファイル。拍子抜けするかもしれないけど、本当にそれだけ。
.claude/commands/ フォルダにマークダウンファイルを1つ置く。それで新しいスラッシュコマンドが使えるようになる。
フォルダ構成はこんな感じだ。
プロジェクト/
├── CLAUDE.md
├── .claude/
│ ├── settings.json ← Hooksの設定
│ └── commands/ ← Skillsの置き場所
│ ├── daily-report.md
│ └── make-readme.md
└── (あなたのプロジェクトファイル)
試しに、日報を自動で作るSkillを作ってみよう。Claude Codeにこう話しかける。
.claude/commands/ フォルダに daily-report.md というファイルを作って。
中身は以下のとおり:
今日の作業内容を振り返って、以下の形式で日報を作成してください。
## 今日やったこと
- 箇条書きで3つ以内
## 明日やること
- 箇条書きで3つ以内
## メモ
- 気づいたことがあれば
これで /daily-report が使える。
/daily-report
打つだけで、Claude Codeがその日の作業を振り返って日報を出してくれる。
Skillsはただのテキストファイル
日本語で「こうしてほしい」と書くだけでいい。プログラミングの知識はいらない。ファイル名がそのままコマンド名になる。daily-report.md なら /daily-report。
HooksとSkills、どう使い分ける?
| Hooks | Skills | |
|---|---|---|
| 起動方法 | 自動(設定したら忘れていい) | 手動(/コマンド名 で呼ぶ) |
| 設定場所 | .claude/settings.json | .claude/commands/ファイル名.md |
| 使い道 | コード整形、リント、通知 | 日報、README生成、レビュー |
| 判断基準 | 考えなくていいこと | 考えてから使うこと |
迷ったらSkillsから始めればいい。Hooksは慣れてからで十分だ。
もうひとつ作ってみよう
練習がてら、README自動生成のSkillも作る。
.claude/commands/ フォルダに make-readme.md を作って。
中身は以下のとおり:
このプロジェクトのファイル構成を読み取って、
README.mdを自動生成してください。
以下の項目を含めること:
- プロジェクトの概要(1行で)
- セットアップ手順
- 使い方
- ファイル構成の説明
/make-readme と打つだけで、プロジェクトの説明書ができあがる。
まとめ
Hooksで面倒な作業を自動化する。Skillsで自分専用のコマンドを増やす。
この2つを仕込んでおくと、Claude Codeに毎回おなじことを言わなくてよくなる。使い込むほど手に馴染んでくる道具になる。
次のレッスンでは、Gitを使ってファイルの変更履歴を管理する方法を学ぶ。「前の状態に戻したい」と思ったとき、Gitに救われる。
明日のアクション
.claude/commands/ フォルダに自分だけのSkillをひとつ作ってみよう。内容は何でもいい。「挨拶メールの下書きを作る」「議事録のテンプレートを出す」「今週のTODOを整理する」など、普段の仕事で繰り返しやっていることを思い浮かべて、それをSkillにしてみること。