playpark
ホーム会社概要サービスソリューションブログお知らせ気軽に相談する
playpark

あらゆる仕事を楽しむ

会社概要サービスソリューション気軽に相談する特定商取引法に基づく表記

© 2019-2026 合同会社playpark All Rights Reserved.

  1. ホーム
  2. ブログ
  3. Claude Code Skills設計 完全ガイド
  4. 【Claude Code】settings.json × CLAUDE.md 完全ガイド — 設定ファイルの使い分けと実践テンプレート
ブログ一覧に戻る
実験レポートClaude Code Skills設計 完全ガイド

【Claude Code】settings.json × CLAUDE.md 完全ガイド — 設定ファイルの使い分けと実践テンプレート

Claude Codeのsettings.json設定項目一覧・CLAUDE.mdとの使い分け早見表・hooks/permissionsによる事故防止パターンを網羅。コピペで使えるテンプレート付きで、settings.jsonの書き方からdotfiles管理まで実践的に解説。

2026年2月17日50分で読める
Claude CodeClaude Code カスタマイズsettings.jsonCLAUDE.mdAI開発環境CLIdotfileshooks
【Claude Code】settings.json × CLAUDE.md 完全ガイド — 設定ファイルの使い分けと実践テンプレート

Claude Code Skills設計 完全ガイド

(6記事)
  1. 1.【Claude Code】Skillsの設計思想と自作ガイド - 開発ワークフローを再利用可能にする
  2. 2.【Claude Code】SKILL.mdの書き方完全ガイド - Skills設計パターンと肥大化87%削減の実践
  3. 3.【Claude Code】Skillオーケストレーション設計 - 複数Skillを連携させる実践パターン
  4. 4.【Claude Code】auto-compact対策 完全ガイド - コンテキスト消失を防ぐ状態管理の設計パターン
  5. 5.【Claude Code】settings.json完全ガイド - CLAUDE.mdとの使い分けで最適なAI開発環境を構築
  6. 6.OpenClaw Docker 構築ガイド — モデル切替・Skills開発で自分だけのAIアシスタントを作る
シリーズ一覧ページを見る

「Claude Code、賢いんだけど...毎回同じこと言い直すの、ちょっとしんどくない?」

「テスト通してからコミットして」「mainには直接pushしないで」「ファイル読んでから編集して」。 プロジェクトのお作法を何度伝えても、新しい会話が始まればゼロからやり直し。AIって記憶力いいはずなのに、セッションまたぐと全部忘れてくれます(人間の上司かな?)。

Claude CodeにはCLAUDE.mdという仕組みがあって、ここにプロジェクトのルールを書いておけば毎回読み込んでくれる。公式ドキュメントにもサラッと載っています。でも、「何をどこまで書けばいいのか」は、あまり語られていません。

この記事では、settings.jsonの設定項目・CLAUDE.mdとの使い分け・hooks/permissionsによる事故防止まで、カスタマイズの全体像を実践パターンで整理します。

そんな時にGitHubで盛り上がっていたのがSuperClaude Framework。CLAUDE.mdの書き方からMODEの切り替えまで体系化されたOSSで、「これだ」と思って導入しました。正直、最初は「ここまでやる必要ある?」と半信半疑だったんですが、使い始めたらClaude Codeの挙動が明らかに変わった。mainへのpushは止まるし、ブレスト中にコード書き始めなくなるし。

その後、Claude CodeにSkills機能が追加されたタイミングで、SuperClaudeの中でも特に効いていた仕組みをSkill化。「開発効率と精度を上げてくれる部分はSkillに、ルールと原則はCLAUDE.mdに」という整理をして、今のdotfiles構成に落ち着きました。Skill化の際に直面したSKILL.mdの肥大化問題とその解決策については、別の記事で詳しく紹介しています。

今回は、SuperClaudeの導入からSkill化に至るまでの実践パターンを紹介します。

settings.json vs CLAUDE.md 使い分け早見表

まずは結論から。「どっちに書けばいいの?」で迷ったら、この表を見てください。

やりたいことsettings.jsonCLAUDE.md
mainへのpushを禁止permissions.deny で強制ブロック---
ファイル保存後に自動linthooks.PostToolUse で自動実行---
危険コマンドの禁止(rm -rf等)permissions.deny で強制ブロック---
コーディングスタイル指定---ルールとして記述
コミットメッセージ規約---ルールとして記述
設計方針・アーキテクチャ---原則として記述
テスト実行ルールhooks で自動化方針をルールとして記述
環境変数の設定env で注入---

判断基準はシンプル: 機械的に強制したいこと → settings.json、柔軟な判断が必要なこと → CLAUDE.md。

この記事で学べること

  • CLAUDE.mdの設計パターン(参照分離・ルール優先度システム)
  • settings.jsonのhooksで「うっかり事故」を自動で防ぐ方法
  • settings.json vs CLAUDE.md の使い分け判断フロー
  • コピペで使える設定テンプレート(settings.json / CLAUDE.md)
  • MODEファイルで状況に応じたAIの振る舞いを切り替える手法
  • dotfilesに含めて環境再現性を確保する構成

あわせて読みたい

OpenClaw Docker 構築ガイド — モデル切替・Skills開発で自分だけのAIアシスタントを作る
技術Tips23分

OpenClaw Docker 構築ガイド — モデル切替・Skills開発で自分だけのAIアシスタントを作る

OpenClaw を Docker Compose で本番構築する手順を解説。Gemini/ローカルLLMのモデル切替・フォールバック設定から、SKILL.md によるカスタムSkills開発まで。

読む

前提:Claude Codeの設定ファイル構造

Claude Codeのカスタマイズは、主に3つのレイヤーで行います。

レイヤーファイル影響範囲
グローバル~/.claude/CLAUDE.md全プロジェクト共通
プロジェクトプロジェクトルート/CLAUDE.mdそのプロジェクトのみ
設定~/.claude/settings.jsonhooks, permissions等

グローバルのCLAUDE.mdは「自分の開発スタイル」、プロジェクトのCLAUDE.mdは「そのリポジトリのお作法」。この2段構えがカスタマイズの出発点です。

あわせて読みたい

【Claude Code】auto-compact対策 完全ガイド - コンテキスト消失を防ぐ状態管理の設計パターン
技術Tips22分

【Claude Code】auto-compact対策 完全ガイド - コンテキスト消失を防ぐ状態管理の設計パターン

Claude Codeのauto-compactによるコンテキスト消失問題を解決する状態管理設計パターン。kickoff.jsonによる永続化・復帰ポイント設計など、Skills長時間ワークフローを確実に完遂する手法を解説。

読む

CLAUDE.mdの設計パターン:参照分離

「CLAUDE.mdに全部書く」のは最初のうちだけ。ルールが増えてくると1ファイルが肥大化して、メンテナンスが地獄になります(1000行超えたCLAUDE.mdを見た時の絶望感、想像してください)。

SuperClaudeが採用しているのが参照分離パターンです。

# CLAUDE.md(エントリポイント)

# SuperClaude Framework

Enhanced Claude Code framework with skill-based behavioral modes.

## Core Principles

@PRINCIPLES.md

## Behavioral Rules

@RULES.md

## MCP Server Reference

Use `/mcp-guide` skill for MCP server selection guidance.

@PRINCIPLES.mdという記法で外部ファイルを参照します。CLAUDE.md自体はたったの数行。エントリポイントとして「何がどこにあるか」を示すだけの役割に徹しています。

実際のディレクトリ構成

~/.claude/
├── CLAUDE.md          # エントリポイント(参照のみ)
├── PRINCIPLES.md      # ソフトウェア工学の原則
├── RULES.md           # 行動ルール(優先度付き)
├── hooks/             # カスタムhookスクリプト
└── settings.json      # hooks, permissions

なぜ分離するのか? 最初は「全部1ファイルでいいじゃん」と思ってました。実際やってみると、ルールを1行直したいだけなのに800行のCLAUDE.mdをスクロールする羽目になって、「これ、設定ファイルのリファクタリングが必要な設定ファイルって何なんだ」と。

分離してからは快適です。

  1. 関心の分離: 原則・ルール・モードは別の関心事。変更理由が違うファイルは分ける(SOLID原則のSそのもの。AIの設定にSOLID適用してる時点で病気かもしれない)
  2. 部分更新が楽: ルールだけ修正したい時にRULES.mdだけ触ればいい
  3. チーム共有しやすい: 「PRINCIPLES.mdだけチームで共有」「RULES.mdは個人カスタマイズ」という運用ができる

ルール優先度システム:全部同じ重みにしない

RULES.mdで特に気に入っているのが優先度システムです。

ルールを山ほど書いても、Claude Codeは全部を同じ重みで解釈しがちです。「テスト書いて」と「本番DB触らないで」が同じ優先度だと困りますよね(後者は人が死ぬやつ)。

## Rule Priority System

**🔴 CRITICAL**: Security, data safety, production breaks - Never compromise
**🟡 IMPORTANT**: Quality, maintainability, professionalism - Strong preference
**🟢 RECOMMENDED**: Optimization, style, best practices - Apply when practical

### Conflict Resolution Hierarchy

1. Safety First: Security/data rules always win
2. Scope > Features: Build only what's asked
3. Quality > Speed: Except in genuine emergencies
4. Context Matters: Prototype vs Production requirements differ

各ルールに🔴 CRITICALや🟡 IMPORTANTのラベルを付けて、さらに「ルール同士が矛盾した時の解決順序」まで定義しています。

実際のルール例

## Git Workflow

**Priority**: 🔴 **Triggers**: Session start, before changes, risky operations

- Always Check Status First: Start every session with `git status` and `git branch`
- Feature Branches Only: Create feature branches for ALL work
- Verify Before Commit: Always `git diff` to review changes before staging

✅ Right: `git checkout -b feature/auth` → work → commit → PR
❌ Wrong: Work directly on main/master branch

ポイントはTriggers(発動条件) を明記していること。これがないと、コードレビューの最中に突然「セッション開始時にはgit statusを実行します!」とか言い出す。いや、今それじゃないんだわ。

✅ Right / ❌ Wrongの具体例も地味に効きます。「feature branchで作業してね」だけだと3回に1回は無視されてたのが、悪い例を見せたらほぼ守るようになった。AIも人間と同じで、ダメなパターンを具体的に見せられると「あ、これやっちゃいけないんだ」と理解するらしい。

settings.json:hooksで「うっかり事故」を自動ブロック

CLAUDE.mdは「お願い」ですが、settings.jsonのhooksは「強制」です。AIが「うっかり」やらかす前に、プログラムで止めます。hooksを活用した品質管理の詳細はHooks × Skillsで品質ゲートを自動化するで掘り下げています。

PreToolUse: 実行前チェック

PreToolUseは「ツールが実行される前に介入する」hookです。たとえば、保護ブランチからの直接pushをブロックするような使い方ができます。

現在の運用では、ブランチ保護はpermissions.denyで網羅的にカバーしているため、PreToolUseは空配列([])にしています。denyリストに"Bash(git push --force:*)"や保護ブランチへのpushパターンを列挙することで、hookを使わずとも同等の保護が実現できます。

以前は以下のようなインラインhookでブランチチェックを行っていました。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash(git push:*)",
        "hooks": [
          {
            "type": "command",
            "command": "BR=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo \"\"); case \"$BR\" in dev|develop|main|master) echo '⛔ Blocked: pushing from protected branch' 1>&2; exit 2;; esac; exit 0"
          }
        ]
      }
    ]
  }
}

このアプローチでも問題なく動作しますが、permissions.denyと役割が重複するため、現在はdenyリストに一本化しています。hookはより複雑な条件分岐が必要なケース(環境変数によるルール切り替えなど)で活躍します。

PostToolUse: 実行後の自動処理

{
  "PostToolUse": [
    {
      "matcher": "Write|Edit|implement",
      "hooks": [
        {
          "type": "command",
          "command": "npm run format:fix && npm run lint:fix"
        }
      ]
    }
  ]
}

ファイルを書き込んだ後に自動でフォーマットとlint修正を走らせます。「フォーマットして」と毎回お願いしなくて済むのは地味にデカい。1日に何十回もEdit走るので、その度にフォーマット指示のトークンが浮く。塵も積もれば、API請求書を見る時の胃痛が少し軽くなるくらいの効果はあります。

permissions: 許可・拒否リストで事故を構造的に防止

{
  "permissions": {
    "allow": [
      "Read",
      "Write",
      "Edit",
      "MultiEdit",
      "Bash",
      "Task",
      "Skill",
      "WebSearch",
      "mcp__serena",
      "mcp__*"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)",
      "Bash(git push --force:*)",
      "Bash(curl:*)",
      "Bash(brew:*)"
    ]
  }
}

denyリストがなかなか長くなりますが、ここは手を抜かないほうがいい。rm -rf /を一発叩かれたら取り返しがつかないので(AIがそこまでやるとは思わないけど、保険は大事)。

実際の運用ではcurlやbrewもブロックしています。「ちょっとこのライブラリ入れますね」とAIが勝手にパッケージをインストールし始めるのを防ぐためです。依存関係は人間が判断するもの。

MODEファイル:状況に応じた振る舞いの切り替え(当時の設計)

Claude Codeに「いつも同じテンション」で対応されると、ちょっと困ることがあります。「この機能どう思う?」って相談したいだけなのに、3秒後にはファイル作り始めてる。逆に、設計が固まって「もう黙ってコード書いて」って時に限って「この実装方針でよろしいですか?」と聞いてくる。お前のタイミング感覚どうなってるんだ。

SuperClaudeにはこの課題に対応するMODEファイルという仕組みがありました。現在はMODEファイルの役割をRULES.mdのルール優先度システムとSkillsに移行し、独立したMODEファイルは廃止しています。ただし、考え方自体は今も有効なので、当時の設計を紹介します。

MODE_Brainstorming.md    # 協調的な探索モード
MODE_Introspection.md    # メタ認知・自己分析モード
MODE_Orchestration.md    # ツール最適化モード
MODE_Task_Management.md  # タスク管理モード
MODE_Token_Efficiency.md # トークン節約モード

Brainstorming Mode

# Brainstorming Mode

**Purpose**: Collaborative discovery for interactive requirements exploration

## Activation Triggers

- Vague project requests: "I want to build something..."
- Exploration keywords: brainstorm, explore, discuss, not sure
- Manual flags: `--brainstorm`, `--bs`

## Behavioral Changes

- Socratic Dialogue: Ask probing questions to uncover hidden requirements
- Non-Presumptive: Avoid assumptions, let user guide discovery
- Collaborative Exploration: Partner in discovery rather than directive

「まだ何を作るか固まってない」というフェーズで、Claude Codeが勝手にコードを書き始めないようにするモードです。質問を投げかけて、一緒に要件を掘り下げてくれる。導入前は「ちょっと考えたいだけなのに...」と思いながら生成されたコードをCtrl+Zする日々だったので、これは精神衛生上かなり助かりました。

Orchestration Mode

# Orchestration Mode

**Purpose**: Intelligent tool selection for optimal task routing

## Tool Selection Matrix

| Task Type     | Best Tool      | Alternative      |
| ------------- | -------------- | ---------------- |
| UI components | Magic MCP      | Manual coding    |
| Deep analysis | Sequential MCP | Native reasoning |
| Pattern edits | Morphllm MCP   | Individual edits |
| Symbol ops    | Serena MCP     | Manual search    |

MCP(Model Context Protocol)サーバーが複数ある環境で、「どのツールを使うのが最適か」を判断するモードです。Resource ManagementのZone設計(Green/Yellow/Red)でトークン消費量に応じた行動制御もできます。このように複数のSkillやツールを統括する設計は、Skillオーケストレーションの考え方にも通じています。

Token Efficiency Mode

長い会話でコンテキストが圧迫されてきた時に切り替えるモードです。シンボルと略語を使って30-50%のトークン削減を狙います。ちなみにこの30-50%、「大した差じゃないでしょ」と思うかもしれませんが、コンテキストウィンドウの終盤でこの余裕があるかないかで、会話を続行できるかリセットされるかが変わります。リセット = それまでの文脈が全部消える。つらい。

## Symbol Systems

| Symbol | Meaning   | Example                         |
| ------ | --------- | ------------------------------- |
| →      | leads to  | `auth.js:45 → 🛡️ security risk` |
| ✅     | completed | Task finished successfully      |
| ∵      | because   | `slow ∵ O(n²) algorithm`        |
| »      | sequence  | `build » test » deploy`         |

最初は「記号だらけで読みにくくないか」と思いましたが、慣れると情報密度が高くて快適です。build → test → deployの流れがbuild » test » deployで伝わるなら、それでいい。人間が読むわけじゃないし(自分でたまに読み返すと暗号文に見えるのは内緒)。

FLAGSでモードを柔軟に発動させる(当時の設計)

MODEファイルを直接指定する以外に、フラグシステムで柔軟に発動させる仕組みもありました。現在はFLAGS.mdも廃止し、同等の機能はSkillの引数やRULES.mdのTriggers定義で実現しています。当時の設計を参考として残しておきます。

# FLAGS.md(抜粋)

## Mode Activation Flags

--brainstorm # Brainstormingモード起動
--introspect # Introspectionモード起動
--orchestrate # Orchestrationモード起動
--task-manage # Task Managementモード起動

## Analysis Depth Flags

--think # 標準分析(~4Kトークン)
--think-hard # 深い分析(~10Kトークン)
--ultrathink # 最大深度分析(~32Kトークン)

## MCP Server Flags

--serena # Serena MCP有効化
--morph # Morphllm MCP有効化
--c7 # Context7 MCP有効化
--all-mcp # 全MCP有効化

--think-hardで分析の深さを指定したり、--serenaで特定のMCPサーバーを有効化したり。組み合わせて使えるので、タスクの複雑さに応じて段階的にリソースを投入できます。

フラグ同士が矛盾した時の優先順位も定義してあります。

## Flag Priority Rules

Safety First: --safe-mode > --validate > optimization flags
Depth Hierarchy: --ultrathink > --think-hard > --think
MCP Control: --no-mcp overrides all individual MCP flags

安全系のフラグが常に最優先。深夜テンションで--ultrathink --no-mcpとか入力しても、安全チェックだけは絶対にスキップされない。深夜の自分を信用しない仕組み、大事です。

あわせてチェック

この技術の導入、お手伝いします

記事で紹介した技術やツールの導入でお悩みですか?具体的な課題をお聞かせください。

気軽に相談する

dotfilesに含めて環境ごと管理する

ここまで育ててきたClaude Codeの設定、せっかくなのでdotfilesリポジトリに含めて管理しています。

dotfiles/
├── claude-code/
│   ├── CLAUDE.md
│   ├── PRINCIPLES.md
│   ├── RULES.md
│   ├── hooks/
│   └── settings.json
├── codex/
└── scripts/
    └── setup-skills.sh

Nixで管理しているので、新しいマシンでもnix run .#update一発でClaude Codeの設定が再現されます。「前のMacではうまくいったのに...」が発生しない。以前MacBook買い替えた時に丸1日かけて環境構築した記憶があるので、あの苦行が二度と発生しないだけで元が取れてます。

Claude CodeにSkills機能が追加されてからは、SuperClaudeの中で「これはSkillにしたほうが再利用しやすい」と感じた仕組み――ブログ公開フロー、SNS告知、コード分析あたり――を順次Skill化しました。開発効率と精度を上げてくれる部分をSkillに切り出して、CLAUDE.mdは本当にルールと原則だけに絞る。今のclaude-code/ディレクトリ構成はその結果です。Skillの設計思想や自作方法はSkillsの設計思想と自作ガイドで体系的にまとめています。

Skillsは別リポジトリに切り出して、シンボリックリンクで複数のAIエージェント間で共有する構成にしています。

# setup-skills.sh(抜粋)
# 複数ツールでSkillsを共有
ln -sf $SKILLS_REPO ~/.claude/skills
ln -sf $SKILLS_REPO ~/.codex/skills
ln -sf $SKILLS_REPO ~/.gemini/antigravity/skills

Claude Code、Codex、Antigravity...気がついたらAIエージェントが3つも住みついていて、それぞれにSkillsをコピーして回るのはさすがに無理。一箇所で管理してシンボリックリンクで配る方式にしました。AIツールのためにAI以前の技術(シンボリックリンク)を使ってるのは、なんとも言えない味わいがあります。

settings.json 設定リファレンス

「settings.jsonで何が設定できるの?」という疑問に答えるリファレンスです。

設定ファイルの種類と優先順位

Claude Codeには3種類の設定ファイルがあります。

ファイルパス管理者用途
user settings~/.claude/settings.jsonユーザー個人の全プロジェクト共通設定
project settings.claude/settings.jsonチームプロジェクト固有設定(Git管理推奨)
managed settings~/.claude/managed-settings.json組織管理者組織ポリシー(最優先で適用)

優先順位: managed-settings.json > project settings.json > user settings.json

managed-settings.json は組織のセキュリティポリシーを強制するためのファイルです。ここに書いた deny ルールは、他の設定で上書きできません。個人開発なら ~/.claude/settings.json だけで十分ですが、チーム開発では .claude/settings.json をリポジトリに含めて共通ルールを統一するのがおすすめです。

主要な設定項目一覧

{
  // パーミッション設定
  "permissions": {
    "allow": ["Read", "Write", "Edit", "Bash", "mcp__*"],
    "deny": ["Bash(rm -rf:*)", "Bash(sudo:*)"]
  },

  // Hooks設定(PreToolUse / PostToolUse)
  "hooks": {
    "PreToolUse": [],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [{ "type": "command", "command": "npm run format:fix" }]
      }
    ]
  },

  // 環境設定
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

permissions の記法パターン

deny / allow で使えるパターン記法をまとめます。

パターン意味例
ToolNameツール全体"Write"
ToolName(arg:*)引数のプレフィックスマッチ"Bash(git push:*)"
ToolName(exact_arg)引数の完全一致"Read(./.env)"
mcp__server__*MCPサーバーの全ツール"mcp__gh__*"
mcp__server__toolMCPサーバーの特定ツール"mcp__gh__merge_pull_request"

よくある質問(FAQ)

Q: settings.json と CLAUDE.md の使い分けは?

settings.json = 強制(プログラムで制御)。permissions と hooks はClaude Codeが必ず従います。 CLAUDE.md = 指示(自然言語)。コーディングスタイルや設計方針など、柔軟な判断が必要なルールに使います。

「mainにpushしない」のように絶対に破ってほしくないルールは settings.json の deny + hooks で。「テストを書いてからコミットして」のように状況に応じた判断が必要なルールは CLAUDE.md で。

Q: managed-settings.json は個人開発でも必要?

個人開発なら不要です。~/.claude/settings.json で十分カバーできます。managed-settings.json は組織のIT管理者が「全社員のClaude Codeにこのポリシーを強制する」ために使うファイルです。

Q: settings.json をシンボリックリンクで管理できる?

できます。dotfilesリポジトリから ln -sf ~/dotfiles/claude-code/settings.json ~/.claude/settings.json でリンクを張れば、複数マシンで同じ設定を再現できます。Nix(home-manager)で自動化する方法は本記事のdotfiles管理セクションを参照してください。

Q: model の設定はどうする?

Claude Codeのモデル設定は settings.json ではなく、CLI実行時のフラグ(--model)または環境変数 ANTHROPIC_MODEL で指定します。settings.json の env フィールドに "ANTHROPIC_MODEL": "claude-sonnet-4-6" と書くことで、デフォルトモデルを変更できます。

settings.json vs CLAUDE.md 使い分けフローチャート

「このルール、settings.jsonに書くべき?CLAUDE.mdに書くべき?」と迷った時のための判断フローです。

ルールを追加したい
│
├─ そのルールは「絶対に破ってほしくない」?
│   │
│   ├─ YES → プログラムで強制できる?
│   │   │
│   │   ├─ YES(コマンド実行のブロック等)
│   │   │   → settings.json の permissions.deny または hooks に追加
│   │   │   例: git push --force のブロック、rm -rf の禁止
│   │   │
│   │   └─ NO(判断が必要なルール)
│   │       → CLAUDE.md に 🔴 CRITICAL ルールとして記載
│   │       例: 「本番DBに直接クエリを実行しない」
│   │
│   └─ NO → 状況に応じた柔軟な対応が必要?
│       │
│       ├─ YES
│       │   → CLAUDE.md に 🟡 IMPORTANT または 🟢 RECOMMENDED で記載
│       │   例: 「テストを書いてからコミット」「命名規則」
│       │
│       └─ NO(自動実行したい定型処理)
│           → settings.json の hooks(PostToolUse)に追加
│           例: ファイル保存後の自動フォーマット

判断基準の要約:

判断軸settings.jsonCLAUDE.md
強制力プログラムで100%強制自然言語の指示(遵守率は高いが100%ではない)
適用範囲コマンド実行・ツール使用の制御コーディングスタイル・設計方針・ワークフロー
変更頻度低(設定したらほぼ変えない)中〜高(プロジェクトに応じて調整)
例deny, hooksルール、原則、Triggers

コピペで使える設定テンプレート

「結局どう書けばいいの?」という方向けに、すぐに使えるテンプレートを用意しました。プロジェクトの要件に応じてカスタマイズしてください。

settings.json テンプレート

個人開発向けの推奨設定です。~/.claude/settings.json に配置します。

{
  "permissions": {
    "allow": [
      "Read",
      "Write",
      "Edit",
      "MultiEdit",
      "Bash",
      "Task",
      "Skill",
      "WebSearch"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)",
      "Bash(git push --force:*)",
      "Bash(curl:*)"
    ]
  },
  "hooks": {
    "PreToolUse": [],
    "PostToolUse": [
      {
        "matcher": "Write|Edit|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "npm run format:fix 2>/dev/null; exit 0"
          }
        ]
      }
    ]
  },
  "env": {}
}

カスタマイズのポイント:

  • deny リストはプロジェクトに応じて追加。"Bash(brew:*)" や "Bash(pip install:*)" など、パッケージの勝手なインストールを防ぐパターンが有効
  • PostToolUse の command はプロジェクトのフォーマッターに合わせて変更(prettier --write や ruff format など)
  • MCP サーバーを使う場合は allow に "mcp__*" を追加

CLAUDE.md スターターテンプレート

参照分離パターンを使ったテンプレートです。~/.claude/CLAUDE.md(グローバル)またはプロジェクトルートの CLAUDE.md に配置します。

# プロジェクト名

技術スタック・フレームワークの概要を1行で。

## コマンド

npm run dev # 開発サーバー
npm run build # 本番ビルド
npm run lint # Lint
npm run test # テスト

## 重要なルール

1. テストを通してからコミットする
2. main/masterブランチに直接pushしない
3. 既存のコーディングスタイルに従う

## ディレクトリ構成

src/ # ソースコード
tests/ # テスト
docs/ # ドキュメント

## 参照(グローバル CLAUDE.md の場合)

@PRINCIPLES.md # 開発原則
@RULES.md # 行動ルール(優先度付き)

カスタマイズのポイント:

  • プロジェクト用 CLAUDE.md にはそのリポジトリ固有の情報(コマンド、ディレクトリ構成、命名規則)を記載
  • グローバル CLAUDE.md には個人の開発スタイル(原則、ルール)を記載し、@参照で外部ファイルに分離
  • ルールが10個を超えたら RULES.md への分離を検討
  • 🔴 CRITICAL / 🟡 IMPORTANT / 🟢 RECOMMENDED の優先度ラベルを活用すると遵守率が向上

運用してみて分かったこと

効いている施策

施策体感効果コメント
ルール優先度⭐⭐⭐🔴CRITICALは本当に破らなくなった
hooksのブロック⭐⭐⭐100%効く。CLAUDE.mdの「お願い」とは別物
PostToolUse自動lint⭐⭐地味に便利。フォーマット指示が不要に
MODEの切り替え⭐⭐ブレストと実装の境界が明確に(現在はSkillsに移行)
参照分離⭐⭐メンテナンスが格段に楽

まだ改善の余地がある部分

  • MODEの自動切り替え: 当時は手動でフラグを付ける必要があった。現在はSkillsの引数とRULES.mdのTriggers定義で自動的に適切な振る舞いを選択する設計に移行済み
  • ルールの遵守率: Token Efficiencyモード時に一部のルールが薄れる傾向がある。トークン圧縮と遵守率のトレードオフは未解決。長い会話でのコンテキスト消失問題についてはauto-compact対策と状態管理の設計パターンでも詳しく扱っています
  • settings.jsonのdenyリスト: 書けば書くほど安全になるけど、メンテナンスコストも増える。パターンマッチの粒度設計が難しい

まとめ

Claude Codeのカスタマイズは、「CLAUDE.mdにルールを書く」だけだと思われがちですが、実際は3層の仕組みを組み合わせることで、かなり実用的な開発環境になります。

  1. CLAUDE.md(参照分離): 原則・ルールを別ファイルに分離して管理
  2. settings.json(hooks/permissions): プログラムで事故を防止。「お願い」ではなく「強制」
  3. Skills(行動の体系化): MODEファイルの役割を引き継ぎ、状況に応じた振る舞いをSkillとして定義

全部dotfilesに入れてNixで管理すれば、新しいマシンでも同じAI開発環境が再現できます。

SuperClaudeをGitHubで見つけて導入し、使いながら自分たちの運用に合わせてカスタマイズし、Skills機能が来たタイミングでSkill化。振り返ると結構な道のりですが、AIとの共同作業が日常になった今、「AIの動き方を設計する」のは「IDEの設定をカスタマイズする」のと同じ感覚なんですよね。vimrcを3日かけて調整するのと、やってることは変わりません(沼の深さも)。

あわせて読みたい

  • 【Claude Code】Hooksで自動テスト・lint・危険コマンドブロックを仕込む — hooks設定の実践パターン
  • 【Claude Code】Hooks安全設計 — PreToolUse/PostToolUseの防御パターン集 — 本番事故を防ぐhooks設計
  • 【Claude Code Skills】設計思想と自作ガイド — MODEファイルの後継としてのSkills
  • 【Claude Code Skills】SKILL.mdの書き方と設計パターン — Skillsの設計指針
  • 【2026年版】AIコーディングツール完全比較 — Claude Code・Codex・Antigravityの選び方

→ 気軽に相談する


Claude Code Skills設計 完全ガイド — この記事を含む6本の記事で、Skills設計・オーケストレーション・状態管理を体系的に解説しています。

5 / 7 記事
前の記事
【Claude Code】auto-compact対策 完全ガイド - コンテキスト消失を防ぐ状態管理の設計パターン
次の記事
OpenClaw Docker 構築ガイド — モデル切替・Skills開発で自分だけのAIアシスタントを作る
シリーズ一覧を見る

この技術が解決した業務課題

記事の技術が実際のプロジェクトでどう活かされているかをご紹介します

【自社導入事例】ブログ運用を完全自動化 - GitHubリポジトリから記事・サムネイル・SNS投稿まで

「ブログ書くのしんどい」「SNS投稿めんどくさい」を解決。GitHubリポジトリから記事生成、サムネイル作成、SNS投稿文まで自動化した、playpark自身の導入事例を紹介します。

事例を読む

【AI採用管理】Gemini API × Next.jsで書類選考を自動化した受託開発事例

Gemini APIとNext.jsで採用書類選考を自動化。中小企業の採用DXをplayparkが受託開発で支援した事例をご紹介します。

事例を読む

【AIシフト管理】AIが提案して店長が決める - 「全自動が不安」なサロンのためのシフト最適化

「AIに全部任せるのは怖い」という店長さんへ。Shift Budの「AI提案→人が判断」ワークフローなら、AIの提案と差分を確認してから採用できます。完全自動化ではなく、人の判断を残したシフト管理の新しいかたちを紹介します。

事例を読む
AI開発の導入支援

Claude CodeやAIコーディングツールの導入・カスタマイズでお困りですか?playparkでは、AI開発環境の構築から運用まで、実践に基づいた技術支援を行っています。

サービス
AI開発について相談する
ブログ一覧に戻る

関連記事

すべての記事
【Claude Code 安全設計】HooksからPermissionsへ — 3つのPythonスクリプトを捨てた理由と移行ガイド
技術Tips
2026年3月13日26分で読める
【Claude Code 安全設計】HooksからPermissionsへ — 3つのPythonスクリプトを捨てた理由と移行ガイド

Claude Codeの安全設計をHooksベース(Pythonスクリプト3本)からPermissions+deny rulesベースに移行した経緯・判断理由を解説。Before/After比較と移行判断フローチャート付き。

Claude CodeClaude Code Hooksセキュリティ設定+3
【Claude Code Hooks 安全設計】170超のdenyルールとPreToolUseフックで「やらかし」を防ぐ実践パターン
技術Tips
2026年3月10日32分で読める
【Claude Code Hooks 安全設計】170超のdenyルールとPreToolUseフックで「やらかし」を防ぐ実践パターン

Claude Code Hooksのprotect-branches.pyによるブランチ保護、auto-approve設計、170超のdenyルール分類を実コード付きで解説。PreToolUse・PostToolUse・Notificationの使い分けも紹介します。

Claude CodeClaude Code Hooksセキュリティ設定+3
Claude Code Skills 共有管理 — 4つのAIツールを1リポジトリで統一する方法
技術Tips
2026年2月27日36分で読める
Claude Code Skills 共有管理 — 4つのAIツールを1リポジトリで統一する方法

Claude Code の Skills を統一リポジトリで管理すれば、Codex・OpenClaw・Antigravity の4ツールが即座に同期。symlink設計とNix自動配布で、スキルのコピペ地獄から解放されます。

AIClaude Code開発環境+3

実験から生まれたソリューション

実験で培った技術力を、あなたのビジネスに。具体的なソリューションをご確認ください。

ソリューション一覧へ