3ヶ月で「壊れた」話
Claude Projectは便利です。
でも、情報を増やし続けるほど、回答の品質が落ちることがあります。
私もProject InstructionsとKnowledgeを3ヶ月間増やし続けた結果、Instructionsが約400行まで膨らみ、回答が冗長化する状態になりました。
このブログ自体、Claude Codeだけで作って運営しています(その全記録はClaude Codeだけでブログを作った話にまとめました)。
その運営ノウハウを全部Claude Projectに集約していったら、最終的にInstructionsを80行まで圧縮し、Knowledgeを7ファイルに分割することになりました。
その過程で起きたことを、失敗込みで書きます。
症状はこんな感じでした。
- 毎チャットの読み込みが体感で重くなった
- 同じルールがInstructionsとKnowledgeの両方に書いてある
- どっちが正しいルールなのか、自分でもわからなくなる
- コード寄りの技術情報が、記事執筆用のナレッジに埋もれている
- 回答が長くなる。前置きが増える。ブレる
情報が増えるほど便利になる。
そう思っていたのに、実際は逆でした。
なぜ全部突っ込むと壊れるのか
原因を整理すると、要は「責務が分離されていない」ことに尽きます。
Claude Project Instructionsに書くべき情報と、Claude Project Knowledgeに書くべき情報。
性質がまったく違うものを、1つの箱に全部入れていたわけです。
結果として起きること:
- 指示競合 同じルールが2箇所に書いてあると、どちらを優先すべきかAI側も判断に迷う
- コンテキスト消費の増加 毎回全部読み込むので、必要な情報以上にコンテキストを消費している感覚があった
- メンテ不能化 ルールが古くなっても、どこに書いてあったか探すだけで一苦労
- 品質のブレ 情報過多で焦点がぼやけ、記事のクオリティが安定しない
「念のため関連しそうな情報を全部入れておく」という判断が、一番の落とし穴でした。
4層モデル
たどり着いた答えはシンプルです。
情報の性質ごとに、置き場所を分ける。
| 層 | 役割 | 配置 | 更新頻度 |
|---|---|---|---|
| A. ふるまい | Claudeの動き方そのもの | Project Instructions | 低 |
| B. 事実・ガイド | 記事執筆に必要な情報 | Project Knowledge(7分割) | 中 |
| C. コード・技術 | 技術詳細・テンプレ | GitHubリポジトリ | 中 |
| D. 過去ログ | アーカイブ | 別ファイル(Knowledge対象外) | 低 |
どこに書くか迷ったら
判断に迷ったときは、この基準を使っています。
| 書く内容 | 置き場所 |
|---|---|
| 話し方・回答の癖・常時守らせたいルール | Instructions |
| 記事執筆に使う事実・カテゴリ・アフィリ情報 | Knowledge |
| Frontmatter仕様・Vite設定・投稿スクリプト | GitHub(リポジトリ) |
| 過去の作業ログ・進捗メモ | Archive |
迷ったら「毎チャット読む必要があるか?」で判断すると、だいたい決まります。
毎回読ませたいものだけがInstructions。
それ以外はKnowledgeか、リポジトリか、アーカイブに逃がす。
これだけで、判断のブレがなくなりました。
7ファイル構成
一番効果が大きかったのは、Project Knowledgeの分割です。
もともと1本の巨大ドキュメントに、ブログの基本情報も、執筆ルールも、事実関係も、タグ一覧も、記事一覧も、全部同居していました。
これを、役割ごとに7ファイルへ分けました。実際の構成(汎用化した名称)はこうです。
各ファイルは100〜300行程度に収めています。
なぜ6でも10でもなく7なのか。
理由は単純で、「毎回参照する情報」「記事公開ごとに触る情報」「月次で見る情報」「ほぼ見ない情報」で自然に分けていったら、結果として7つになっただけです。
数を先に決めたわけではありません。
| # | ファイル | 毎回参照 | 更新頻度 |
|---|---|---|---|
| 01 | basic-info | ◯ | 年1回 |
| 02 | writing-rules | ◯ | ルール変更時 |
| 03 | facts | ◯ | 事実変更時 |
| 04 | taxonomy | ◯ | 記事公開ごと |
| 05 | articles-index | △ | 記事公開ごと |
| 06 | roadmap | △ | 月次 |
| 07 | affiliates | × | 承認・変更時 |
設計で意識したのは、この5つ。
- 1ファイル100〜300行に収める
- 1ファイル1責務(編集時に他のルールと競合しない)
- 表形式を優先する
- 更新頻度でファイルを分ける
- ファイル冒頭に「目的・更新タイミング」を明記する
タグを1つ追加するだけなのに、記事一覧やアフィリ戦略まで一緒に開いて確認する。
そんな無駄が、なくなったんです。
Before/After
数字で見ると、変化がわかりやすいと思います。
| 項目 | 整理前 | 整理後 |
|---|---|---|
| ナレッジ構造 | 1本集中・全部入り | 7ファイル分割 |
| Project Instructions | 約400行 | 約80行(80%削減) |
| 過去の作業ログ | Knowledge内に同居 | 別ファイルへ分離 |
| コード側の禁止事項 | Knowledge内に混在 | リポジトリ側へ集約 |
| アフィリURL管理 | スプシ+Markdown二重 | スプシに一元化 |
| 投稿手順の記載 | Knowledge+README二重 | README一元化 |
| 重複していたルール | 3箇所に散在 | 1箇所に統一 |
Instructionsが400行から80行になったのが、体感としては一番大きな変化でした。
同じ質問をしても、前置きが短くなる。
結論から先に来る。
余計な確認が減る。
「情報を減らしたら精度が落ちるのでは」と最初は心配していましたが、実際は逆でした。
失敗パターン集
自分がやってしまった失敗を、正直に並べておきます。
- Instructionsに、SEOルール・投稿フロー・frontmatter仕様・サムネ規定・技術ルールを全部書いた
- ナレッジDoc1本に、事実も進捗も戦略も記事一覧も全部詰め込んだ
- 過去の進捗ログをKnowledge内に累積させ続けた
- アフィリエイトURLを、スプレッドシートとMarkdownの両方で管理していた
- 投稿手順を、リポジトリのREADMEとKnowledgeの両方に書いていた
- 「念のため」で、関係あるかもしれないファイルを全部アタッチしていた
どれも、悪意はないんです。
「念のため」の積み重ねが、結果として破綻を招きました。
起きた症状はどれも共通していて、回答の冗長化、指示競合、メンテ不能化、コンテキスト消費の増加。
情報を足すことは簡単。
引くことのほうが、圧倒的に難しい作業でした。
効果検証
新構成に移して1ヶ月ほど運用した体感では、前置きが短くなり、回答も体感で速くなりました(コンテキスト読み込みが軽い印象)。
Knowledge更新も、どのファイルを開けばいいか即座にわかるので、作業時間が短くなっています。
正確な数値計測はしていませんが、余計な前置きがなく、聞いたことにだけ答えてくれる状態に、ようやくたどり着きました。
このあたりの試行錯誤は、バイブコーディングでブログを作った体験記の延長線上にあります。
まとめ
もし今、
- Instructionsが長い
- Knowledgeが1ファイルにまとまっている
- 同じ内容を何度も書いている
このどれかに当てはまるなら、一度責務ごとに分離してみてください。
情報は増やすより、整理したほうがAIは賢く使えます。
Claude Project Instructionsには、Claudeに毎回守らせたいルールだけを残す。
Claude Project Knowledgeには、記事執筆や作業に使う事実だけを置く。
それ以外は、リポジトリかアーカイブに逃がす。
この「責務で分ける」という考え方自体は、CursorでもGeminiでもChatGPTのプロジェクト機能でも、原則は同じだと思います。ツールが変わっても、情報を1箱に詰め込むと壊れるのは変わりません。
このブログがどんな人間に運営されているのかは、お小遣い月3万円パパの自己紹介に書いています。
記事数が増えるたびに、この構成もまだ微調整を続けています。