Every session, the same archaeology.
Open Claude Code, get a new context window, watch the assistant ls · grep · cat
its way to a vague picture of your repo. Tomorrow it starts over. The dig is expensive, and the artifacts get thrown out.
FILETREE.md. Commit to git. Share with collaborators.UNCHANGED bias — purpose intact, only the hash refreshes. ~100× cheaper.≈ 80% of changed files emit one word: UNCHANGED.
A refactor doesn't change what a file does. Renaming a variable, adding tests, fixing a bug —
purpose stays intact. The LLM reads, judges, replies UNCHANGED. The script
refreshes the hash and keeps the old summary. The manifest itself is the cache — no SQLite, no daemon, no separate "I already saw this" memory.
UNCHANGEDA loop, not a build step.
todoProduces added / changed / removed / renamed.
Per changed:
UNCHANGED or a fresh line.
applyWrites FILETREE.md.
The tool never commits for you.
Three commands. Each self-contained.
Namespaced slash commands, designed to be readable end-to-end from a single file. No dispatch indirection, no hidden state, no magic.
Stop digging.
Start reading.
Two lines in Claude Code and the plugin is live. Run /filetree:init once;
from then on it's /filetree:update when the layout shifts.
/plugin marketplace add nekocode/filetree-skill
/plugin install filetree
/filetree:init — it offers to wire CLAUDE.md / AGENTS.md first, then maps the repo. Review the diff, commit.