毎回同じ説明をしないための 2 つのファイル

頼むたびに同じ前提を説明するのを、やめられます。決まりを置く CLAUDE.md と、聞かれる回数を決める settings.json。読み終えるころには自分の 2 枚が置けて、どこまで黙って通すかを自分で決められるようになります。

同じことを毎回説明していました。「.env は開かないで」「使い捨ては _scratch/ に置いて」。会話を新しく始めるたびに、また最初から言い直す。

その説明は、ファイルに置けます。置いておくと、次からは言わなくて済みます。

決まりは CLAUDE.md、権限は settings.json

ファイル置き場所何を書くか
CLAUDE.md作業しているフォルダのいちばん上決まり・用語・どこに何があるか
settings.jsonそのフォルダの中に作る .claude フォルダの中やっていい操作・確認が要る操作

前者は「知っておいてほしいこと」、後者は「勝手にやっていいかどうか」です。混ぜて書くとどちらも効きません。

読まれるタイミングも違います。もう 1 つ、ファイルの種類ごとに読ませる置き場所もあるので、先に 3 つ並べておきます。

会話を始めると CLAUDE.md が毎回読まれ、.py を触ると .claude/rules/ がその種類のときだけ読まれ、コマンドを打つと .claude/settings.json が毎回許可を判定する、という 3 段の対応を左右の矢印で示した図

まず 1 枚ずつ作ってみる

読む前に置いてしまうほうが早いです。3 分で終わります。

ルート直下に CLAUDE.md を作る

作業しているフォルダのいちばん上に CLAUDE.md を作り、2 回以上説明したことだけを書きます。3 行で十分です。

# CLAUDE.md

- 返信は日本語で
- 一時ファイルは `_scratch/` に置く
- `.env` は開かない

自分で書かずに、Claude Code の入力欄に /init と打って下書きを作らせることもできます。出てきたものから、要らない行を削るほうが早い場合もあります。

.claude/settings.json を作る

同じフォルダに .claude というフォルダを作り、その中に settings.json を置きます。まずは 1 行だけで動きます。

名前の先頭にドットが付いたフォルダは、標準では画面に出てきません。 Windows のエクスプローラなら「表示 → 隠しファイル」、Mac の Finder なら Cmd+Shift+. で見えるようになります。VS Code の左のファイル一覧には最初から出ています。

{
  "permissions": {
    "deny": ["Read(./.env)"]
  }
}

これで、.env を読もうとしても止まります。

新しい会話を開いて、説明せずに頼む

いま書いた前提を一言も説明せずに、何か頼んでみてください。返信が日本語で返る、一時ファイルが _scratch/ にできる。そうなっていれば効いています。

効いていないときは、置き場所が違うことがほとんどです。CLAUDE.md は開いているフォルダのいちばん上にある必要があります。

ここから先は、私が実際に何を書いているかです。

毎回読ませるものを、できるだけ減らす

置いたあとに効いてくるのは、長さです。CLAUDE.md は毎回読まれるので、 書けば書くほど「関係ない話まで毎回読まれる」状態に寄っていきます。 私は毎回効くものだけを CLAUDE.md に残し、残りは種類ごとに分けています。

CLAUDE.md には、毎回効くことだけ書く

この章を書いた時点で、私の CLAUDE.md は 57 行です。短くしているのは、毎回読まれるからです。

見本:実際の CLAUDE.md からの抜粋(リンクと表の細目を外したもの) CLAUDE.md の抜粋(2026-09-12 時点)
# CLAUDE.md

## セキュリティ(最優先)

**判断基準の正本は guide/principles.md「セキュリティ(最優先)」**(どこまでが「公開」か・匿名化の具体例)。

- **API キー・トークン・個人情報を外に出さない。** ログ・デバッグ出力にキーの値を含めない。
  パス・コマンド例のユーザー名・フォルダ名は匿名化する(`C:/Users/<username>/` の形)
- **`.env` の読み取り・表示・出力・アップロードは、ユーザー承認があっても実行しない**
- **外部に出す操作は事前承認。** サーバーへのアップロードは対象ファイルと送信先を明示する。
  外部サービスへの投稿・書き込みは明示的な OK なしに実行しない
- **GitHub リポジトリは必ず Private**
- **API キー・認証・外部公開・課金を扱う実装の前に guide/dev/security.md を読む**
- **どの操作にユーザー承認が要るかの一覧は CONTRIBUTING.md「人間の承認」**

## Git・共同編集

**複数 AI が同時に編集する。git 操作の前に CONTRIBUTING.md(誰が・どこで・何をしてよいか)と
guide/ops/git.md(git の使い方)を読む。**

- **ブランチを切る・切り替える前に `git status` / `git worktree list` を確認する。**
  身に覚えのない変更があればユーザーに聞く(勝手に stash / checkout しない)

## ドキュメントルーティング(作業別に読むファイル)

| 作業 | 先に読む |
|---|---|
| プロジェクト特定・**迷ったら** | `operations/index.md` |
| **今やること・定期作業** | `operations/work/` |
| プロジェクト内の作業全般 | 直下の `README.md`(正本・特に「## 作業ルール」) |
| **新規追加・廃止** | `guide/ops/checklist.md`(配置の決定木・命名規則・手順) |
| **アプリの設計・仕様・品質・安全** | `guide/dev/architecture.md` → `documentation.md` / `code-quality.md` / `security.md` |
| cron・サーバー作業 | `operations/state/server.md` |
| 運営コストの記録・集計 | `operations/finance/README.md` |
| サイト UI・デザイン | `product/site-kanalyzelab/frontend/docs/design-system.md` |
| 記事執筆 | `/writing` スキル |
| **調査・リサーチ** | **必ず `/research` を最初に使う**(直接 WebSearch しない) |

## 共通ルール

- **同じ事実を 2 箇所に書かない**(リンクで繋ぐ)。**規範に現況を書かない**
- セッション横断の使い捨ては `_scratch/`(gitignore 済)へ。
  **プロジェクト直下に勝手にフォルダを作らない**
- パス・フォーマットを変えたら producer / consumer / docs を同時に更新する

## 言語・文字コード

- Think in English, interact with the user in Japanese.
- `.md` は UTF-8 で読み書きする
- **文字化けした表示を根拠に内容を判断しない**(UTF-8 指定で読み直す)

長く書くほど効くわけではありません。毎回読まれるということは、関係ない話まで毎回読まれるということです。だから本文には書かず、行き先だけを表にしています。上の抜粋でも、いちばん場所を取っているのがその表です。

こう書いておくと、頼んだときに勝手にそのファイルを読んでから始めてくれます。全文を CLAUDE.md に写す必要はありません。

ファイルの種類ごとに分ける(.claude/rules/)

とはいえ「Python を書くときの決まり」を全部 CLAUDE.md に入れると、Markdown を書いているときにも毎回読まれます。

これは .claude/rules/ に分けられます。ファイルの先頭に、どのファイルを触ったときに読ませるかを書きます。

---
paths: product/**/*.py, tools/**/*.py, .claude/hooks/*.py
description: Python 実装時の規範。Ruff・型・テストの要件
---

こう書いておくと、.py を触るときだけこの決まりが入ります(エディタで開いたときではなく、AI がそのファイルを読む・書き換えるときです)。この章を書いた時点(2026 年 9 月 7 日)で、私は 6 ファイル・合わせて 395 行をこの形で持っていました。この節の数字は、以下すべてこの日のものです。

全部を CLAUDE.md に足していたら、57 行が 452 行になっていました。 そのうち大半は、そのとき書いている作業と関係ありません。

settings.json は「聞かれる回数」を決める

仕組みそのもの(3 つのファイルの優先順位・書けるパターンの一覧・settings.local.json の落とし穴)はsettings.json で権限管理してみてわかったことにまとめてあります。ここでは、どれをどのバケツに入れるかの決め方だけ書きます。

3 つのバケツに振り分ける

バケツは 3 つです。

キー何が起きるか
allow聞かずに実行してよい
ask必ず確認を出す
deny実行させない

書き方は ツール名(パターン) の形です。Bash のときだけ、括弧の中がコマンドになります。

{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(bash deploy.sh staging)"
    ],
    "ask": [
      "Bash(gh pr merge *)",
      "Bash(*deploy.sh prod*)",
      "Bash(git push --force*)"
    ],
    "deny": [
      "Read(./.env)",
      "Bash(cat *.env*)",
      "Bash(git push * master*)"
    ]
  }
}

評価は deny → ask → allow の順で、最初に当たったものが勝ちます。 allow に書いても deny にも当たれば止まります。

私が止めているもの

私の場合、ask は 18 個でした(2026 年 9 月 7 日時点)。内訳はこうなっています。

何を止めているか個数
サーバー上で消す・動かす(ssh 越しの rm / chmod / crontab)6
本番と外に出るもの(マージ・本番デプロイ・本番への転送・SNS 投稿)6
取り消せない git(reset --hard / push --force / 履歴の書き換え)5
手元をまとめて消す(rm -rf)1

deny は 55 個ありましたが、半分近くは .env を読ませないための書き方違いです(cat でも head でも scp でも止まるように並べた結果、24 個になりました)。次に多いのが、もう 1 つの AI の作業フォルダを触らせないための 15 個です。

allow を増やすと作業が止まらなくなり、ask を増やすと安心が増えます。 どちらに寄せるかは、何を壊したら困るかで決まります。私は「壊れたら自分では戻せないもの」を基準にしました。

Git に入ることだけ注意する

settings.json は Git に入ります。 パスワードや鍵が混ざったコマンドを、そのまま allow に書かないでください。自分の環境でしか使わないものは settings.local.json に分けます。こちらは Git に入りません。

私のフォルダ構成(参考)

参考までに、この章を書いた時点(2026 年 9 月 7 日)の形を出します。これが正解というより、増えるたびに散らからないよう押し込んだ結果です。

kanalyzelab/
  CLAUDE.md          毎回読ませる決まり
  AGENTS.md          Codex 用の入口。中身は CLAUDE.md へのリンクが中心
  README.md          このリポジトリは何か
  CONTRIBUTING.md    誰が・どこで・何をしてよいか
  .claude/
    settings.json    許可と確認の設定
    rules/           ファイルの種類ごとの決まり(6 ファイル)
    skills/          手順をまとめて名前を付けたもの(9 個)
    agents/          役割を分けた AI(レビュー役など)
    hooks/           ツールを使う前後に走る検査
  product/           届けるもの(サイト・アプリ・cron)
  tools/             作るための道具
  operations/        運営(計画・やること・現況・会計)
  guide/             自分たちで決めたルール
  knowledge/         調べたこと・気づいたこと
  _assets/           素材(Git に入れない)
  _secrets/          鍵と認証情報(Git に入れない・読み取り禁止)
  _scratch/          使い捨て(Git に入れない)

決めごとは 2 つだけです。

ルート直下にプロジェクトを並べない。 増えるたびに直下が散らかるので、役割ごとの箱に押し込みます。product/ の中にサイトもアプリも入っています。

同じことを 2 か所に書かない。 迷ったときに、どちらが正しいか分からなくなるからです。片方に書いて、もう片方からはリンクします。CLAUDE.md が短いのも、AGENTS.md が薄いのも、この 1 つの決まりから来ています。

次に読むもの

いきなり全部は要りません。CLAUDE.md を 1 枚置いて、同じ説明を 2 回した内容だけ書き足していくのがいちばん続きます。

決まりを書く相手が増えると、次に効いてくるのは履歴の側です。誰が何を変えたかを追える形にしておくと、AI に任せる範囲を広げられます。そこはGitHub とは何かに書きました。実際に作ったものを見たいならClaude Code に Astro サイトを作らせた記録へ。

AI活用ガイドのトップへ

この章は役に立ちましたか?

読みたい記事をリクエストする