Claude Codeの設定、なんとなくで使っていませんか?
Hooks、Skills、CLAUDE.md、settings.json、MCP、権限管理…… 2026年のClaude Codeは機能が爆発的に増えた。でも全部を正しく設定しているエンジニアは1%もいない。
この記事では、すべての機能を網羅した「本番運用できる設定ファイル一式」を提供する。コピペで即使える。
今すぐ使いたい人向け: この記事の設定をすべてパッケージ化したリポジトリを公開している。ワンコマンドで任意のプロジェクトにプロビジョニングできる。
bash <(curl -fsSL https://raw.githubusercontent.com/babushkai/claude-code-config/main/setup.sh)
結論から言うと
Claude Codeの設定は7つのレイヤーで構成されている:
- CLAUDE.md - Claudeへの指示書(チーム共有 / 個人用)
- Auto Memory - Claudeが自動で学習するメモ
- .claude/rules/ - モジュール型のルールファイル
- settings.json - 権限・許可ツール・環境設定
- Hooks - ライフサイクルイベントの自動化(17イベント)
- Skills - カスタムスラッシュコマンド
- MCP - 外部ツール連携(GitHub, DB, Sentry等)
これら全部を正しく設定して初めて「本番運用」と言える。
ディレクトリ構成の全体像
まず、完成形のディレクトリ構成を見よう:
your-project/
├── CLAUDE.md # プロジェクト指示書(git管理)
├── CLAUDE.local.md # 個人用指示書(gitignore)
├── .mcp.json # チーム共有MCP設定(git管理)
├── .claude/
│ ├── CLAUDE.md # 別名配置OK(CLAUDE.mdと同等)
│ ├── settings.json # 共有設定(git管理)
│ ├── settings.local.json # 個人設定(gitignore)
│ ├── rules/ # モジュール型ルール
│ │ ├── code-style.md
│ │ ├── testing.md
│ │ ├── security.md
│ │ └── frontend/
│ │ ├── react.md
│ │ └── styles.md
│ ├── skills/ # カスタムスキル
│ │ ├── deploy/
│ │ │ └── SKILL.md
│ │ ├── review-pr/
│ │ │ └── SKILL.md
│ │ └── fix-issue/
│ │ └── SKILL.md
│ ├── agents/ # カスタムサブエージェント
│ │ └── security-reviewer/
│ │ └── AGENT.md
│ └── hooks/ # Hookスクリプト
│ ├── lint-on-save.sh
│ ├── block-secrets.sh
│ └── notify-slack.sh
│
├── ~/.claude/ # ユーザーグローバル設定
│ ├── CLAUDE.md # 全プロジェクト共通の個人指示
│ ├── settings.json # グローバル設定
│ ├── settings.local.json # ローカルのみ
│ ├── rules/ # 個人ルール
│ │ └── preferences.md
│ └── skills/ # 個人スキル
│ └── explain-code/
│ └── SKILL.md
1. CLAUDE.md - Claudeへの指示書
CLAUDE.mdはClaudeの脳にインストールするプロジェクトのDNAだ。
メモリ階層(優先度順)
| 優先度 | 種類 | パス | 用途 |
|---|---|---|---|
| 最高 | 管理ポリシー | /Library/Application Support/ClaudeCode/CLAUDE.md |
組織全体のルール |
| 高 | プロジェクト | ./CLAUDE.md |
チーム共有の指示 |
| 高 | ルール | .claude/rules/*.md |
モジュール型指示 |
| 中 | ユーザー | ~/.claude/CLAUDE.md |
個人のグローバル設定 |
| 低 | ローカル | ./CLAUDE.local.md |
個人のプロジェクト固有設定 |
| 自動 | Auto Memory | ~/.claude/projects/<project>/memory/ |
Claudeの自動学習メモ |
CLAUDE.mdの黄金律:「人間だけが知っていること」を書く
最も多いミス:ソースコードから読み取れる情報をCLAUDE.mdに書くこと。
Claudeはpackage.jsonを読めばビルドコマンドがわかる。tsconfig.jsonを読めばTypeScriptの設定がわかる。ディレクトリを探索すればアーキテクチャがわかる。.eslintrcを読めばコーディング規約がわかる。
これらをCLAUDE.mdに書くのはトークンの無駄遣いだ。
CLAUDE.mdにはClaudeがソースコードを読んでも絶対にわからない情報だけを書く:
| 書くべき(人間の頭の中にしかない) | 書くべきでない(コードから推論できる) |
|---|---|
| なぜこのアーキテクチャを選んだのか |
packages/配下のディレクトリ一覧 |
| 過去のインシデントで学んだ禁止事項 |
pnpm buildでビルドできること |
| ビジネス上の制約や優先順位 | TypeScriptを使っていること |
| デプロイ先の環境情報 | ESLintのルール |
| チーム間の取り決め・ワークフロー | 依存パッケージの一覧 |
| 「このコードは触るな」の暗黙知 | テストフレームワークがVitestであること |
本番用CLAUDE.mdテンプレート
# プロジェクトの意思決定
## なぜこの構成なのか
- モノレポを採用した理由:フロント・バック間の型共有でバグを3件/週→0にした
- Honoを選んだ理由:Cloudflare Workersでのコールドスタートが50ms以下
- PlanetScaleを使う理由:本番DBのスキーマ変更をブランチで安全にできる
## 絶対にやってはいけないこと
- `packages/shared/src/legacy/` は旧APIとの互換層。リファクタしたくなるが触るな(顧客3社が依存中、2026年Q3に廃止予定)
- Stripeの webhook handler は冪等性を壊すと二重課金が発生する。過去に$12,000の事故があった
- `users`テーブルの`email`カラムにUNIQUE制約がない。歴史的経緯で重複がある。アプリ層でバリデーションしている
## デプロイと環境
- staging: Cloudflare Workers(`wrangler deploy --env staging`)
- production: 本番デプロイはGitHub Actionsのみ。手動デプロイ禁止
- DB migration: `pnpm db:migrate`は必ずstagingで先に実行して確認
## チームワークフロー
- PRは必ず1人以上のレビューを通す
- `feat/`ブランチはsquash merge、`fix/`ブランチは通常merge
- 金曜日の15時以降は本番デプロイ禁止(週末対応を避けるため)
## ビジネスコンテキスト
- エンタープライズ顧客はレスポンス200ms以内のSLAがある
- GDPR対応必須。ユーザーデータは必ず論理削除(物理削除禁止)
- 月次レポート生成は毎月1日深夜にcronで実行。この日はDB負荷が高い
このテンプレートのポイント
-
pnpm installやpnpm testは書いていない → Claudeはpackage.jsonを読めばわかる - ディレクトリ構成は書いていない → Claudeは
lsすればわかる - 代わりに「なぜ」「やるな」「過去の事故」を書いている → これはコードに書いてない
@importで外部ファイルを参照
CLAUDE.mdから他のファイルをインポートできる:
プロジェクトの概要は @README.md を参照。
利用可能なコマンドは @package.json を確認。
Git運用ルールは @docs/git-workflow.md に従う。
# 個人設定
- @~/.claude/my-project-instructions.md
importの注意点
- 相対パスはCLAUDE.mdがあるディレクトリを起点に解決される
- 最大5階層までの再帰importが可能
- コードブロック内の
@はimportとして解釈されない - 初回はインポート許可ダイアログが表示される
.claude/rules/ - 条件付きルール
特定のファイルパターンに対してだけ適用されるルールが書ける:
# .claude/rules/api-rules.md
---
paths:
- "packages/backend/src/routes/**/*.ts"
---
# API開発ルール
- 全エンドポイントにzodバリデーションを入れる
- エラーレスポンスはRFC 7807形式にする
- レスポンスにはページネーション情報を含める
- レートリミットのヘッダーを返す
# .claude/rules/react-rules.md
---
paths:
- "packages/frontend/src/**/*.{tsx,ts}"
---
# React開発ルール
- Server Componentsをデフォルトにする
- "use client"は最小限にする
- Suspenseでローディング状態を管理する
- key propにはindexを使わない
2. settings.json - 権限と設定
設定ファイルの優先順位
管理ポリシー(最高)
↓
CLIフラグ(--disallowedTools等)
↓
.claude/settings.local.json(プロジェクトローカル)
↓
.claude/settings.json(プロジェクト共有)
↓
~/.claude/settings.local.json(ユーザーローカル)
↓
~/.claude/settings.json(ユーザー共有・最低)
本番用 .claude/settings.json(チーム共有)
{
"permissions": {
"defaultMode": "default",
"allow": [
"Read",
"Glob",
"Grep",
"Bash(pnpm run *)",
"Bash(pnpm test *)",
"Bash(pnpm build *)",
"Bash(pnpm lint *)",
"Bash(pnpm typecheck)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git branch *)",
"Bash(git checkout *)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(gh pr *)",
"Bash(gh issue *)",
"Bash(npx prisma *)",
"Bash(* --version)",
"Bash(* --help)",
"Edit(/packages/**)",
"Write(/packages/**)"
],
"deny": [
"Bash(git push --force *)",
"Bash(git reset --hard *)",
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(wget *)",
"Read(.env*)",
"Read(**/*.pem)",
"Read(**/*secret*)",
"Edit(.env*)",
"Edit(/.github/workflows/**)"
]
},
"env": {
"MAX_MCP_OUTPUT_TOKENS": "50000"
}
}
個人用 .claude/settings.local.json
{
"permissions": {
"allow": [
"Bash(docker *)",
"Bash(docker-compose *)"
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/lint-on-save.sh"
}
]
}
]
}
}
コミット・PRの帰属表示(attribution)を制御する
Claude CodeはデフォルトでコミットメッセージにCo-Authored-By: Claudeを追加する。不要な場合はattribution設定で消せる:
{
"attribution": {
"commit": "",
"pr": ""
}
}
| キー | デフォルト | 説明 |
|---|---|---|
attribution.commit |
Co-Authored-Byトレーラー付き | コミットメッセージへの帰属表示 |
attribution.pr |
フッターにClaude Code表記 | PRの説明への帰属表示 |
空文字""で完全に非表示にできる。カスタムメッセージも可能:
{
"attribution": {
"commit": "Generated with Claude Code"
}
}
~/.claude/settings.jsonに入れれば全プロジェクトで有効。
権限パターンの詳細リファレンス
| ツール | パターン例 | 説明 |
|---|---|---|
Bash |
Bash(npm run *) |
npm runで始まるコマンドすべて |
Bash |
Bash(git commit *) |
gitコミットを許可 |
Read |
Read(.env*) |
.envファイルの読み取り |
Read |
Read(~/.ssh/*) |
ホームの.ssh配下 |
Read |
Read(//etc/passwd) |
絶対パス(//で開始) |
Edit |
Edit(/src/**) |
プロジェクトルートからの相対パス |
Edit |
Edit(**/*.test.ts) |
全テストファイル |
WebFetch |
WebFetch(domain:github.com) |
ドメイン指定 |
MCP |
mcp__github__* |
GitHub MCPの全ツール |
Task |
Task(Explore) |
Exploreサブエージェント |
Skill |
Skill(deploy *) |
deployスキル |
重要:*の前にスペースがあるかで動作が変わる
-
Bash(ls *)→ls -laにマッチ、lsofにはマッチしない(単語境界あり) -
Bash(ls*)→ls -laにもlsofにもマッチ(単語境界なし)
3. Hooks - 17のライフサイクルイベント
HooksはCLAUDE.mdの「お願い」と違い、確実に実行される。
全イベント一覧
| イベント | タイミング | ブロック可能 |
|---|---|---|
SessionStart |
セッション開始・再開 | - |
UserPromptSubmit |
プロンプト送信直後 | - |
PreToolUse |
ツール実行前 | Yes |
PermissionRequest |
権限ダイアログ表示時 | - |
PostToolUse |
ツール成功後 | - |
PostToolUseFailure |
ツール失敗後 | - |
Notification |
通知送信時 | - |
SubagentStart |
サブエージェント起動時 | - |
SubagentStop |
サブエージェント終了時 | - |
Stop |
Claude応答完了時 | - |
TeammateIdle |
チームメイトがidle | - |
TaskCompleted |
タスク完了時 | - |
ConfigChange |
設定ファイル変更時 | - |
WorktreeCreate |
worktree作成時 | - |
WorktreeRemove |
worktree削除時 | - |
PreCompact |
コンテキスト圧縮前 | - |
SessionEnd |
セッション終了時 | - |
ハンドラの4種類
command → シェルスクリプト実行
http → HTTP POSTリクエスト送信
prompt → LLMに判断を委ねる(yes/no)
agent → サブエージェントで検証
本番Hooks設定例
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-secrets.sh",
"statusMessage": "セキュリティチェック中..."
}
]
}
],
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/lint-on-save.sh",
"timeout": 30
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/notify-slack.sh",
"async": true
}
]
}
]
}
}
実用Hookスクリプト集
危険コマンドブロック(PreToolUse):
#!/bin/bash
# .claude/hooks/block-secrets.sh
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty')
# 秘密情報を含むコマンドをブロック
if echo "$COMMAND" | grep -qE '(password|secret|token|api.?key)'; then
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "deny",
permissionDecisionReason: "秘密情報を含む可能性のあるコマンドがブロックされました"
}
}'
exit 0
fi
# rm -rf をブロック
if echo "$COMMAND" | grep -qE 'rm\s+-rf'; then
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "deny",
permissionDecisionReason: "rm -rf は禁止されています"
}
}'
exit 0
fi
exit 0
ファイル保存後の自動リント(PostToolUse):
#!/bin/bash
# .claude/hooks/lint-on-save.sh
INPUT=$(cat)
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_result.filePath // empty')
if [ -z "$FILE_PATH" ]; then
exit 0
fi
# TypeScriptファイルのみリント
if [[ "$FILE_PATH" == *.ts || "$FILE_PATH" == *.tsx ]]; then
RESULT=$(npx eslint --fix "$FILE_PATH" 2>&1)
if [ $? -ne 0 ]; then
jq -n --arg msg "$RESULT" '{
hookSpecificOutput: {
hookEventName: "PostToolUse"
},
transcript: ("ESLintエラー:\n" + $msg)
}'
fi
fi
exit 0
Slack通知(Stop - 非同期):
#!/bin/bash
# .claude/hooks/notify-slack.sh
INPUT=$(cat)
STOP_REASON=$(echo "$INPUT" | jq -r '.stop_reason // "unknown"')
if [ "$STOP_REASON" = "end_turn" ]; then
curl -s -X POST "$SLACK_WEBHOOK_URL" \
-H 'Content-Type: application/json' \
-d "{\"text\": \"Claude Codeのタスクが完了しました\"}" \
> /dev/null 2>&1
fi
Prompt Hook(LLM判断型)
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "prompt",
"prompt": "次のBashコマンドが本番環境に影響を与える可能性があるか判断してください。コマンド: $ARGUMENTS。本番DBへの接続、本番サーバーへのデプロイ、環境変数の変更を含む場合はnoと回答してください。",
"timeout": 15
}
]
}
]
}
}
4. Skills - カスタムスラッシュコマンド
Skillのフロントマター全フィールド
| フィールド | 必須 | 説明 |
|---|---|---|
name |
No |
/コマンド名(省略時はディレクトリ名) |
description |
推奨 | 用途の説明(Claude自動起動の判断材料) |
argument-hint |
No | 引数のヒント(例:[issue-number]) |
disable-model-invocation |
No |
trueでClaude自動起動を無効化 |
user-invocable |
No |
falseで/メニューから非表示 |
allowed-tools |
No | このSkill中に許可するツール |
model |
No | 使用モデル指定 |
context |
No |
forkでサブエージェント実行 |
agent |
No |
context: fork時のエージェント型 |
hooks |
No | Skill固有のHooks |
実用スキル例
PRレビュースキル:
# .claude/skills/review-pr/SKILL.md
---
name: review-pr
description: PRをレビューして改善提案する
context: fork
agent: Explore
allowed-tools: Bash(gh *)
argument-hint: "[PR番号]"
disable-model-invocation: true
---
## PRコンテキスト
- PR diff: !`gh pr diff $ARGUMENTS`
- PRコメント: !`gh pr view $ARGUMENTS --comments`
- 変更ファイル: !`gh pr diff $ARGUMENTS --name-only`
## レビュー手順
1. 変更の意図を理解する
2. コードの品質をチェック(型安全性、エラーハンドリング)
3. セキュリティ上の懸念がないか確認
4. パフォーマンスへの影響を評価
5. テストカバレッジを確認
レビュー結果を箇条書きでまとめ、重要度(Critical/Major/Minor)を付ける。
Issue修正スキル:
# .claude/skills/fix-issue/SKILL.md
---
name: fix-issue
description: GitHub Issueを修正する
disable-model-invocation: true
argument-hint: "[issue番号]"
---
GitHub issue #$ARGUMENTS を修正する。
1. `gh issue view $ARGUMENTS` でIssueの内容を確認
2. 関連コードを特定
3. 修正を実装
4. テストを追加
5. `git commit -m "fix: #$ARGUMENTS の修正"`
デプロイスキル(サブエージェント実行):
# .claude/skills/deploy/SKILL.md
---
name: deploy
description: ステージング環境にデプロイする
disable-model-invocation: true
context: fork
allowed-tools: Bash(pnpm *), Bash(git *), Bash(gh *)
---
$ARGUMENTS をステージングにデプロイする:
1. テストスイートを実行
2. ビルドを実行
3. デプロイコマンドを実行
4. デプロイ成功を確認
5. Slackに通知
動的コンテキスト注入
!`command`構文でShellコマンドの結果をSkillに注入できる:
---
name: status
description: プロジェクトの状態サマリー
context: fork
agent: Explore
---
## 現在の状態
- ブランチ: !`git branch --show-current`
- 未コミット: !`git status --short`
- 最新コミット: !`git log --oneline -5`
- テスト結果: !`pnpm test --silent 2>&1 | tail -5`
- 型チェック: !`pnpm typecheck 2>&1 | tail -3`
上記の情報をもとに、プロジェクトの状態をサマリーにまとめて報告する。
5. MCP - 外部ツール連携
MCPサーバーの追加
# HTTP(推奨)
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
# SSE(非推奨)
claude mcp add --transport sse sentry https://mcp.sentry.dev/sse
# stdio(ローカル実行)
claude mcp add --transport stdio --env AIRTABLE_API_KEY=$KEY airtable \
-- npx -y airtable-mcp-server
MCPのスコープ
| スコープ | 保存先 | 共有範囲 |
|---|---|---|
local(デフォルト) |
~/.claude.json |
自分のみ・このプロジェクト |
project |
.mcp.json |
チーム全体(git管理) |
user |
~/.claude.json |
自分のみ・全プロジェクト |
チーム共有MCP設定(.mcp.json)
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
},
"sentry": {
"type": "http",
"url": "https://mcp.sentry.dev/mcp"
},
"database": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@bytebase/dbhub", "--dsn", "${DB_DSN}"],
"env": {
"DB_DSN": "${DB_DSN:-postgresql://readonly:pass@localhost:5432/dev}"
}
}
}
}
MCP Tool Search
MCPツールが多すぎてコンテキストを圧迫する場合、自動的にTool Searchが有効になる:
# 閾値を5%に変更
ENABLE_TOOL_SEARCH=auto:5 claude
# 常に有効
ENABLE_TOOL_SEARCH=true claude
# 無効化
ENABLE_TOOL_SEARCH=false claude
6. Auto Memory - Claudeの自動学習
仕組み
~/.claude/projects/<project>/memory/
├── MEMORY.md # インデックス(最初の200行がロード)
├── debugging.md # デバッグパターン
├── api-conventions.md # API設計の決定事項
└── ... # Claudeが自動作成
MEMORY.mdは200行までしかロードされない。
それ以上の情報はトピック別ファイルに分割し、MEMORY.mdからリンクする。Claudeは必要に応じてトピックファイルを読み込む。
明示的に記憶させる
> pnpmを使って、npmは使わないことを覚えておいて
> APIテストにはローカルRedisが必要だということをメモリに保存して
制御方法
// .claude/settings.json でプロジェクト単位で無効化
{ "autoMemoryEnabled": false }
# 環境変数で強制制御(settings.jsonより優先)
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 claude # 強制OFF
CLAUDE_CODE_DISABLE_AUTO_MEMORY=0 claude # 強制ON
7. 本番運用チェックリスト
すべて設定できているか確認しよう:
セキュリティ
-
.env*ファイルのRead/Editをdenyに設定 -
rm -rfをPreToolUseフックでブロック -
git push --forceをdenyに設定 - 秘密鍵(
*.pem)の読み取りをdeny -
curl/wgetをdenyしてWebFetchに限定 - CI/CDワークフローの編集をdeny
開発効率
- よく使うビルド/テストコマンドをallowに設定
- PostToolUseで自動リントを設定
- PRレビューのSkillを作成
- Issue修正のSkillを作成
- MCPでGitHub連携を設定
チーム標準化
-
.claude/settings.jsonをgit管理 -
.mcp.jsonをgit管理 -
.claude/rules/でコーディング規約を管理 - CLAUDE.mdには「人間だけが知っていること」を記載
-
.gitignoreに以下を追加:
CLAUDE.local.md
.claude/settings.local.json
よくあるミスとその対策
ミス1:権限が緩すぎる
// NG: 危険
{ "permissions": { "allow": ["Bash"] } }
// OK: 必要なコマンドだけ許可
{
"permissions": {
"allow": [
"Bash(pnpm *)",
"Bash(git status)",
"Bash(git diff *)"
]
}
}
ミス2:CLAUDE.mdにソースコードから読める情報を書く
<!-- NG: Claudeはpackage.jsonとディレクトリ構造を読めばわかる -->
# プロジェクト概要
TypeScript + React + Node.jsのSaaSアプリ。
packages/frontend: Next.js 15
packages/backend: Hono
## コマンド
- `pnpm install` - 依存関係インストール
- `pnpm build` - ビルド
- `pnpm test` - テスト実行
<!-- OK: 人間の頭の中にしかない「なぜ」と「やるな」を書く -->
# 意思決定と制約
- legacy/ は2026年Q3廃止予定。触るな
- Stripe webhookの冪等性を壊すと二重課金(過去に$12K事故)
- 金曜15時以降は本番デプロイ禁止
ミス3:Hookのtimeoutを設定していない
// NG: タイムアウトなし(デフォルト600秒)
{
"type": "command",
"command": "npm run lint"
}
// OK: 適切なタイムアウト
{
"type": "command",
"command": "npm run lint",
"timeout": 30
}
ミス4:Skillでdisable-model-invocationを忘れる
# NG: Claudeが勝手にデプロイスキルを実行する可能性
---
name: deploy
description: Deploy to production
---
# OK: 手動でのみ実行可能
---
name: deploy
description: Deploy to production
disable-model-invocation: true
---
まとめ
Claude Codeの本番運用に必要な設定を全部まとめた:
- CLAUDE.md → 「人間だけが知っていること」を書く。ビルドコマンドやディレクトリ構成ではなく、意思決定の理由・禁止事項・ビジネス制約を
-
settings.json → 権限は最小権限の原則で。
denyファーストで設計 - Hooks → 17イベントを活用。セキュリティチェックとリント自動化は必須
-
Skills → よく使うワークフローをスラッシュコマンド化。副作用のあるものは
disable-model-invocation: true -
MCP → チーム共有は
.mcp.jsonで管理。認証情報は環境変数で - Auto Memory → 200行制限を意識。トピック別に分割
-
Attribution →
attribution.commitとattribution.prで帰属表示を制御
これらを全部設定して初めて、Claude Codeは「おもちゃ」から「本番ツール」になる。
この記事が参考になったら、いいねとストックをお願いします!
質問:あなたのClaude Code設定で一番こだわっているポイントは何ですか?コメントで教えてください。
参考リンク
Production-Ready Claude Code Config Repo
Claude Code Hooks Reference
Extend Claude with Skills
Configure Permissions
Manage Claude's Memory
Connect Claude Code to Tools via MCP
Claude Code Best Practices (Morph)
Everything Claude Code Configuration Collection (GitHub)