# Claude Code Hooks・Skills・Schedulerで定常業務を自動操縦にする
## はじめに
Claude Codeを使い始めて最初に感じるのは「対話ベースで動かすと便利」という感覚だ。でも少し使い込んでくると、「毎回同じ手順を踏んでいる」「定期的に自動で動かしたい」という欲求が生まれてくる。
その欲求に応えるのがHooks・Skills・Schedulerの3つの仕組みだ。これらを使いこなすことで、Claude Codeは「話しかけると動くAI」から「放置しておいても動く自律エンジン」に変わる。2026年の最新仕様では23種のイベントに対応するHooksが整備され、組み合わせの幅が大きく広がった。
## 3本柱の役割:Hooks・Skills・Scheduler
3つの役割をざっと説明する。
**Hooks(イベント駆動型)**:Claude Codeの特定のイベント(ツール使用前後、セッション開始・終了など)に反応して処理を実行する仕組みだ。「ファイルを保存したら自動でlintを走らせる」「危険なコマンドが来たらブロックする」といった使い方ができる。
**Skills(ワークフロー定義)**:繰り返すノウハウをパッケージ化してAIに注入する仕組みだ。「Qiita記事を書くときは常にこの手順で」「コードレビューはこの観点で」という手続きをAIに覚えさせておける。descriptionを書いておくと、AIが文脈を見て自律的に該当Skillを発動してくれる。
**Scheduler(時刻駆動型)**:定期的に自律実行させる仕組みだ。毎朝8時にデイリーブリーフィングを生成、毎週月曜に週次レポートを作成、毎晩21時に仕訳処理を実行——という定常業務を完全自動化できる。
イベント駆動(Hooks)と時刻駆動(Scheduler)の使い分けが重要で、「何かが起きたときに動かしたい」ならHooks、「決まった時刻に動かしたい」ならSchedulerを選ぶ。
## Hooksの実践活用パターン
Hooksには4種類の実装タイプがある。Shellスクリプト(最も基本的)、HTTPエンドポイント(外部サービス連携)、LLMプロンプト(AI判断をHookに組み込む)、別のClaude Codeエージェント(エージェント間連携)だ。
ここで覚えておきたいのが「システムプロンプトはお願い、Hooksは約束」という違いだ。システムプロンプトは「AIへのお願い」であり、実行を保証しない。一方Hooksは「確実に動く処理」だ。だから、フォーマット・lint・テストの実行は、お願いベースのシステムプロンプトではなくHooksで設定するのが正解だ。これを知ってから設定の組み方が変わった。
実際によく使われるパターンを3つ挙げる。
**PreToolUse(ツール使用前)で危険なコマンドをブロック**
`rm -rf`系のコマンドが実行されそうになったら、Hooksで検知してブロックするか、ユーザーに確認を求める。自動化の怖さへの最も実用的な対策だ。
**PostToolUse(ツール使用後)でファイル変更後に自動フォーマット**
コードを書いたり編集したりした直後に、自動でprettierやblack(Python)を走らせる。「コードを書いた後にフォーマットを手動で実行し忘れた」というレビュー指摘を根絶できる。
**Stop(セッション終了)で作業ログを記録**
作業が完了したタイミングで、何をしたかのサマリーをSlackやファイルに出力する。本ブログのエージェントシステムでは、この仕組みで各エージェントの完了をDiscordに通知している。
企業での活用データとして、Hooks活用でQAチェック工数を約40%削減した事例もある。「必ず動く処理」をHooksで確保することで、チェック漏れそのものを構造的に排除できる。
## Skillsの設計パターン
Skillsのフォルダ構成はシンプルだ。
```
.claude/skills/スキル名/
├── SKILL.md # スキルの定義(AIが読む)
├── references/ # ルール・テンプレート
└── scripts/ # 処理スクリプト
```
50個のSkillを作り込んだエンジニアの事例から学べる設計のコツが3つある。
**1スキル1責務**
「コードレビューもドキュメント生成もやるSkill」を作ると、どちらも中途半端になる。1つのSkillは1つの目的に絞ると、AIの動作が安定する。
**descriptionを丁寧に書く**
SKILL.mdのdescriptionを具体的に書いておくと、AIが「今の文脈ではこのSkillを使うべき」と自律的に判断して発動してくれる。descriptionが曖昧だと、明示的に呼ばない限り使われない。
**アンブレラパターン**
複数のSkillを束ねる「メタSkill」を作るパターンだ。「ブログ執筆」というSkillの中に「リサーチ」「執筆」「トーンチェック」という子Skillが入る構造にすることで、大規模なワークフローを管理しやすくなる。
## Schedulerで定常業務を「自動操縦」にする
Schedulerは「Desktop Scheduler」と「Cloud Scheduler」の2段階がある。Desktop Schedulerはローカルマシンが起動しているときだけ動き、Cloud Schedulerはクラウドで動くため24時間稼働する。
運用の順序としては「手動→Desktop Scheduler→Cloud Scheduler」という段階を踏むのがいい。いきなりCloud Schedulerに本番タスクを設定して痛い目を見た話も聞くので、手動で動作を確認してからDesktopで頻度を調整し、安定したらCloudに昇格させる流れがオススメだ。
実践例として使いやすいのが日次レポートと週次サマリーだ。「毎朝8時に昨日のGitHubのPRをまとめてSlackに投稿」「毎週月曜に先週の作業ログから週次レポートを生成」といった定常業務は、一度設定すれば完全に自動化できる。
## 3つを組み合わせた実例
本ブログの記事生成パイプラインは、まさにこの3つの組み合わせで動いている。Schedulerで定期的にネタを収集し、Skillsで記事執筆のワークフローを定義し、HooksでDiscordへの完了通知を自動送信する。人間がやることは「ネタを投稿する」だけで、あとは全部自動だ。
コードレビュー自動化もよく聞く実践例だ。PRが作成されたイベントをHooksで検知し、「コードレビューSkill」を発動して指摘事項を自動生成し、GitHubのPRコメントに投稿する。レビュー依頼してから結果が返ってくるまでの時間が、数分に短縮される。
## まとめ
Hooks・Skills・Schedulerの3つは、それぞれ単体でも便利だが、組み合わせてこそ本領を発揮する。「必ず動く保証(Hooks)」「繰り返しノウハウの再利用(Skills)」「自動起動(Scheduler)」の3つが揃ったとき、Claude Codeはようやく「話しかけると動くツール」から「放置しておいても動く業務自動化エンジン」に変わる。
まず試すなら、`Stop`フックに「セッション終了時のSlack通知」を設定することをおすすめする。5分で設定でき、「確実に動く」Hooksの感触を体験できるはずだ。

コメント