実践 Claude Code入門を読んでわかった、指示追従性を上げる 3 つの仕組み
요약
본 기술 기사는 Claude Code 환경에서 AI의 지시 이행률(指示追従性)을 높이는 세 가지 핵심 메커니즘, 즉 '슬래시 커맨드', '스킬', 그리고 '훅'의 역할과 사용법을 설명합니다. 단순히 프롬프트(CLAUDE.md)에 규칙을 작성하는 것만으로는 AI가 지시를 완벽하게 따르지 못할 수 있으므로, 각 메커니즘의 강점과 적절한 활용처를 구분하여 조합하는 것이 중요합니다. 특히 '훅'은 쉘 레벨에서 작동하므로 가장 강력한 강제력을 제공하여, 절대 빠져서는 안 되는 규칙(예: 기밀 정보 검사)을 구현하는 데 최적화되어 있습니다.
핵심 포인트
- Claude Code의 지시 이행률 향상을 위해 세 가지 메커니즘(슬래시 커맨드, 스킬, 훅)을 구분하여 사용해야 합니다.
- 슬래시 커맨드는 '워크플로우'나 '흐름'을 정의하는 데 적합하며, 명확한 실행 단계를 문서화합니다.
- 스킬은 프로젝트 전반에 걸친 특정 '도구 사용 방법'이나 코딩 규칙 등 컨텍스트를 분리하여 관리할 때 유용합니다.
- 훅(Hook)은 쉘 레벨에서 작동하므로 가장 강력한 강제력을 가지며, 기밀 정보 검사처럼 절대적으로 지켜져야 하는 필수 규칙을 구현하는 데 최적입니다.
- 가장 효과적인 방법은 이 세 가지 메커니즘을 조합하여 (예: 커맨드로 흐름 정의 → 훅으로 최종 검증) AI의 신뢰도를 극대화하는 것입니다.
この記事を読むとわかること
- Claude Code の「スラッシュコマンド・スキル・フック」の役割と使い分け
- 「100%守らせたいルール」をどこに書くべきか
- 実際に Zenn 投稿用リポジトリでこの 3 つを組み合わせた具体例
課題:CLAUDE.md だけでは指示が守られない
Claude Code を使い始めて最初に感じたのは、「CLAUDE.md にルールを書いても、たまに無視される」という問題でした。
たとえば:
- 「push の前に必ず確認して」と書いてもいきなり push される
- 「機密情報を記事に書かない」と書いてもチェック漏れがありそうで怖い
- 同じ手順を毎回プロンプトで書くのが面倒
『実践 Claude Code入門』を読んだら、これは CLAUDE.md(プロンプトベース)の限界 で、解決には 3 つの異なる仕組み を使い分ければよい、と書かれていました。
解決策:3 つの仕組みの役割整理
書籍を読んでまとめた整理がこちらです。
| 仕組み | 役割 | いつ発動するか | 強制力 |
|---|---|---|---|
| スラッシュコマンド | 「流れ」の定義 | ユーザーが /foo と打つ | 中(プロンプト) |
| スキル | 「やり方」の定義 | Claude が状況判断で読み込む | 中(プロンプト) |
| フック | 「ルール」の強制 | 特定イベント時に shell 実行 | 強(exit 2 で block) |
実装方法が違うだけでなく、何を守らせるか という観点で書く場所を変えるのがコツです。
スラッシュコマンド — 暗黙的な手順を明示化
「ワークフロー」をファイル化したもの。.claude/commands/<name>.md に置くと /<name> で発動します。
書籍では効果的な作り方として以下 3 点が強調されていました。
- 単一責任:1 つのコマンドは 1 つの目的に集中する
- 適切な粒度:1 回の作業セッションで完了する一連の手順をまとめる
- 明確な実行フロー:各ステップで何をするか・どのツールを使うかを具体的に定義する
実例として、Zenn記事を公開する /publish を書いてみました(抜粋)。
description: Zenn記事を git add → commit → push で公開する
「push 前に確認」という暗黙のお作法を コマンドの手順として明文化 したことで、Claude が毎回同じ流れで動いてくれます。
スキル — ツールの使い方を教える
スラッシュコマンドが「流れ」なら、スキルは「やり方」。
プロジェクト全体に関わるものは CLAUDE.md に、細かいものはスキルに書くとコンテキストの節約になる。
スキルの肝は description フィールドの 具体的なトリガーワード(例:「Zenn記事の作成時」)を書くこと。Claude Codeが必要な時だけスキル本体を読み込んでくれるので、CLAUDE.md にすべてを詰め込んでコンテキストを圧迫する状況を避けられます。
書籍によれば、規約系(言語ごとのコーディングルールなど)はスキルに切り出すのが特に有効とのこと。
フック — 100%守らせたいルールはここに
CLAUDE.md やスラッシュコマンドはあくまでプロンプトベースなので、たまに守られないことがあります。
絶対に守らせたいルールは フック に書きます。代表的なものは以下。
| フック | タイミング・用途 |
|---|---|
PreToolUse | ツール実行前。ブロック可能 |
PostToolUse | ツール実行後。フォーマット等 |
Notification | ユーザー通知 |
Stop | 作業終了通知 |
実例として、Zenn記事に機密情報が混入しないよう、git commit git push 直前に staged 変更をスキャンする hook を作りました。
.claude/settings.json で hook を登録します。
{
"hooks": {
"PreToolUse": [
...
スクリプト側は、標準入力で渡される tool_input.command を読んで git commit か git push なら git diff --cached の 追加行のみ をパターンマッチング、検出したら exit 2 で停止する、という単純な作り。
input=$(cat)
command_str=$(echo "$input" | jq -r '.tool_input.command // "")'
if echo "$command_str" | grep -qE 'git[[:space:]]+commit'; then
...
これが効くのは「Claude が忘れても、shell は忘れない」から。プロンプトをいくら工夫するより確実です。
3 つを組み合わせた所感
実際にこの Zenn 投稿用リポジトリで以下を組み合わせてみました。
- スラッシュコマンド:
/publish/article-from-memo/article-from-errorなど 5 本 - スキル: 今回は規模が小さいので使わず、CLAUDE.md に集約
- フック: 機密情報スキャン(PreToolUse on Bash)
結果として「/publish
公開フロー → push 前に 사용자 확인 → hook 에서 기밀 체크
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기