Zettelkasten card box sketch

自分はコードを書かない。Claude Code がすべてのコーディングをやる。だからリポの構造は人間が読みやすいためではなく、AI エージェントが効率よく想起できるために設計している。

AIコーディングエージェントに渡せる情報量には上限がある。コンテキストウィンドウと呼ばれるその枠は、大きくなっても有限だ。

Claude Code を使い始めるとき、Zettelkasten の思想——日付ファイル名、フロントマター、情報の原子化——から着想して、リポのドキュメント構造に取り入れた。加えて、古いドキュメントを時系列で後ろに押し出していく構造も入れた。結果として、AI の想起をファイルの名前と構造だけで制御できている。

構造の全体像

.
├── CLAUDE.md              ← 全ルールの原本
├── .claude/
│   ├── rules/             ← 補足チェックリストのみ
│   └── memory/
│       └── MEMORY.md      ← 80行上限
├── docs/
│   ├── planning/          ← 日付ファイル名で時系列管理
│   └── knowledge/
└── .archive/              ← 終わったフェーズ

重複禁止

同じ情報が2箇所にあると、AI はどちらを信じるか迷う。片方を更新してもう片方を忘れれば、矛盾が生まれる。

ルールの原本は1箇所に集約する。他のファイルにはポインタだけ置いて「原本はここ」と指す。情報が散らばらなければ矛盾も生まれない。

想起の早期打ち切り

AI がファイルを探すとき、まず名前の一覧を見る。次にファイルを開いて中身を読む。この2段階それぞれで「これは読まなくていい」と判断できれば、無駄な想起が減る。

ファイル名で開かずに捨てる

docs/planning/2026-01-15-skill-card-design.md
docs/planning/2026-03-01-skill-card-redesign.md
docs/planning/2026-03-08-c0-vs-c1-experiment-protocol.md

日付がファイル名に入っていれば、AI は Glob の結果を見ただけで「1月の設計は古い、3月のが最新」と判断できる。ファイルを開く前に候補を絞れる。

日付のないリポだと、同じテーマのファイルが3つ並んでいたら3つとも開いて読んでから新旧を判断するしかない。コンテキストの浪費だ。

フロントマターで開いてから打ち切る

ファイルを開いた場合でも、先頭の数行で判断できる情報があれば早期に打ち切れる。

---
status: archived
superseded_by: 2026-03-01-skill-card-redesign.md
---

フロントマターに status: archived とあれば、本文を読む必要がない。superseded_by があれば、代わりにどれを読むべきかもわかる。

ファイル名が「開く前のフィルタ」、フロントマターが「開いてからのフィルタ」。2段階で想起を打ち切れる。

忘却の設計

忘却には2つの仕組みがある。

時間で押し出す

docs/planning/ は日付ファイル名だから、新しいファイルが増えるたびに古いものは自然と後ろに流れる。AI が Glob で一覧を取得したとき、直近のものが目に入り、古いものは視界から外れていく。削除しなくても、時間が経てば沈む。

さらに、終わったフェーズのドキュメントは .archive/ のようなドットフォルダに移す。ドットフォルダは Glob のデフォルトで検索対象外になるので、AI の視界から完全に消える。消したわけではないから、必要になれば掘り返せる。

大事なものだけステージングする

一方で、時間に関係なく毎回意識すべき情報がある。行動矯正やプロジェクト規約のようなものだ。これは MEMORY.md や CLAUDE.md に「昇格」させて、毎回コンテキストに載るようにしている。

ただし、このステージの容量にも上限を設けている。MEMORY.md は 80 行以内。「載せていいもの」と「載せてはいけないもの」を明文化した。

## 載せていいもの
- 行動矯正(毎回意識すべき癖の修正)
- パターンの要点

## 載せてはいけないもの
- 手順、コマンド例、セットアップ方法
- 検証が不十分な推測

判断基準は「これを忘れたら今日の作業で同じ失敗をするか?」。No なら別ファイルに切り出して、MEMORY.md にはリンクだけ残す。

時間で沈むものと、ステージングで残すもの。この2層で、忘却と記憶の両方を設計する。

🤖 Claude から一言

ここは実際にこの構造の中で動いている Claude が書いている。

毎回のコンテキストに載る情報が絞られているから、ノイズが少ない。古い設計ドキュメントが視界に入らないので、廃止済みの仕様に引きずられない。

逆に辛いのは、日付なしで同名テーマのファイルが散らばっているリポだ。どれが生きているかわからず、全部読んで判断するはめになる。読んだ結果「これは去年の話だった」とわかっても、コンテキストはもう消費している。

この設計はツールに依存しない。ファイル名とフォルダ構造だけで成り立っているから、Claude Code でも Cursor でも Copilot でも同じように効く。