0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

200 行ルールを疑って、自分の CLAUDE.md を『発火頻度』で仕分け直した話

0
Posted at

200 行ルールを疑って、CLAUDE.md を発火頻度で仕分け直した話

Claude Code や Codex などの AI CLI を毎日使っていると、~/.claude/CLAUDE.md みたいなグローバル設定が少しずつ育っていきます。tips が増え、失敗の教訓が加わり、気付けばそこそこの厚さになっている。今回、それを見直す機会があったので、その時に考えたことをまとめておきます。

きっかけは、note でこんな記事を読んだことでした。「トークン消費を抑える工夫」というテーマで、その中に「200 行を超える CLAUDE.md は、コンテキスト消費が増えて指示遵守率が下がる可能性がある」という一節があった。

自分の CLAUDE.md は当時 251 行あった。素直に受け取れば「削らなきゃ」となる場面です。ただ、この 200 という数字、本当なのだろうか。ちょっと引っかかった。

その 200 行、根拠あるやつ?

Anthropic 公式のドキュメントを探しても、CLAUDE.md の推奨サイズについて「200 行」という閾値は書かれていません。記事の中でも「〜可能性がある」という留保付きで、断定形ではない。個人の観察ベース。

実際に自分の環境で計算してみます。

  • CLAUDE.md 251 行 = 約 13KB ≈ 6000〜8000 トークン
  • Claude Opus 4.7 のコンテキスト = 1,000,000 トークン
  • 占有率 = 0.6〜0.8%

さらに Claude Code は prompt caching が効くので、毎ターンの CLAUDE.md は基本キャッシュヒットします。実費はほぼ 0。1M コンテキストの入口に数千トークン置いてあっても、実害は測定できるレベルではないのが今の世代の Claude です。

つまり、「200 行を超えると劣化する」という主張は、Claude 4.7 で見る限り成立しない。数字自体は権威ある基準ではなく、コミュニティで広まった経験則、というくらいの話でした。

記事の要約

上の 1 枚に、今回の判定の骨子を並べています。数字の閾値ではなく、判断軸を置き換える話が中心です。

じゃあ、なぜ「常時ロードを軽く」と言われるのか

数字が根拠を持たないなら記事の主張自体が的外れかというと、そうではないと思います。行数はダミー変数で、本当の敵は別にある。書きながら気付いたのは、この 3 つ。

  1. トリガーの埋没。 毎回効かせたいルールが、その時だけ関係するルールに埋もれると、モデルが該当ルールを想起できなくなる。信号対雑音比の問題です
  2. 矛盾ルールの共存。 長くなるほど、過去に足したルール同士が微妙に衝突する確率が上がる。モデルはどちらかを黙って選びます
  3. 人間側のメンテ負荷。 251 行は AI ではなく、書いた本人が全体を把握しきれなくなる閾値

これで判断軸を置き換えることにしました。「行数」ではなく「発火頻度」で仕分ける。

発火頻度 置き場所
毎ターン必ず効かせたい(言語・シェル選択・ツール使い分け原則) CLAUDE.md 本体
特定タスク時のみ効かせたい(バグ調査・md 作成・secrets-scan) guides/ に切り出しトリガー 1 行
特定ドメイン話題時のみ(家族・kb・家系) 条件付き Read(@import しない)

これで結果的にサイズは減るかもしれない。でも動機は「200 行以下にする」ではなく「常時発火する内容だけを残す」です。順序が違うと、削り過ぎて重要な指針まで捨てる事故が起きます。

実際にやってみたら 251 → 114 行

上の物差しで CLAUDE.md 全 251 行を眺め直しました。8 個のガイドファイルに切り出し、CLAUDE.md 本体はトリガー行だけに整理。結果として 114 行、56% 削減。

CLAUDE.md 251 行から 114 行へ、常時発火だけを本体に残す

上のように、常時発火は本体に、特定タスク時発火はガイドに、というシンプルな仕分けです。中身が消えたわけではなくて、参照タイミングが変わっただけ。

面白かったのは、「シェル選択の 6 項目」を全部残したことです。行数ダイエットの発想なら削りたくなる長い節ですが、これは実質「毎ツール呼び出しで発火」する規則。Windows PowerShell と Bash の使い分けを毎回頭にちらつかせておかないと、.ps1 を Bash に投げてエラーになる過去の失敗を繰り返す。発火頻度で見ると「絶対に残す側」なんです。

Skill の description も 30% 削れた

同じ考えで、~/.claude/skills/*/SKILL.md の frontmatter description を見直しました。この description は毎ターン Available skills 一覧としてコンテキストに載る、本当の意味での常時ロード対象です。

  • 29 個の skill、合計 10,368 文字
  • モードや設計思想の詳細は本文に既にある。description からは削れる
  • 起動語(「〜」「〜」)はそのまま残す。ここが呼び出しトリガーだから

結果、合計 7,199 文字(-31%)。長かった project-init は 718 文字が 250 文字になりました。

Skill の棚卸しは「まだ判断できない」

見直しで最後に残ったのが、そもそも 29 個も skill が要るのか、という問題でした。使っていない skill を退避すれば description 分がまるごと浮く。

ここで詰まりました。「どれを退避するか」を自分で決めようとすると、頭で「たぶん使ってない」と思っている skill と、実際に使ってる skill が違うかもしれない。感覚で切ると、あとで「あれ、これ意外と便利だったのに」となる。

なので、感覚で決めるのをやめて、データを取ることにしました。

各 SKILL.md の本文 1 行目に、こんな指示を挿入します。

> **起動時に必ず実行**(棚卸し用ログ・1 行だけ): `pwsh -NoProfile -File $env:USERPROFILE\.claude\scripts\log-skill-usage.ps1 <skill-name>`

呼び出された AI がこの 1 行に従ってログを 1 行追記する。CSV に timestamp / skill / cli を残していく。1 ヶ月経ったら Import-Csv | Group-Object skill で集計する、それだけの仕組みです。

SKILL.md 自体を発火点にする(CLI 非依存)

図のように、フックみたいな CLI 別の層を挟まず、SKILL.md 自体を発火点にしています。嬉しいのは、この仕込みが CLI 非依存で動くこと。Claude Code / Codex / Cursor / opencode、どれから起動しても SKILL.md を読んで従うのは AI 側なので、フックが要らない。

最初、Claude Code の PostToolUse フックを提案したら「他の AI エージェント使った時に補足できないよね?」と指摘を受けて、そこから設計を組み直しました。バーチャル層で見張るより、SKILL.md 自体を発火点にする方が自然でした。

学んだこと

3 つあります。

  • 数字の閾値は疑ってから採用する。「200 行」に限らず、SNS で広まっている数字ルールは、その世代のモデル・その人の環境でしか成立しないことがある。自分の環境で確かめてから物差しにするのが安全です
  • 削る動機を書き換える。目的が「行数を減らす」だと、削り過ぎて重要な指針まで消してしまう。「毎ターン発火だけ残す」と言い換えると、判断がぶれない
  • 感覚で決められない棚卸しはデータに委ねる。頭の中の「使ってない気がする」は当てにならないので、1 ヶ月の実測に任せる方が失敗が少ないです

盲目的に流行りの数字に合わせるのではなく、その数字が何を代理して指しているかを一度考える。物差しの当て直しを、これからも習慣にしていきます。


※ ヘッダー画像とインフォグラフィックは AI(画像生成)で作成しています。

書いた人: ishizakahiroshi
群馬の北部で、保護猫2匹と暮らす、在宅エンジニア(何でも屋)
https://ishizakahiroshi.github.io/
https://github.com/ishizakahiroshi
X(業務委託・各種相談はこちら):
https://x.com/ishizakahiroshi

バックエンド・インフラ・AI連携まわりで、業務委託のご相談を受け付けています。フルリモートです。スポットや週2〜3時間からでも歓迎で、いろんな案件に携われたらうれしいです。こんな相談、歓迎です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?