I've found these a littleee intrusive but claude thinks they have utility and has suggestions for improving it:
❯ this feels really high. do you think its even that helpful?
⏺ Honestly? The token number isn't the problem. 2.2k in a 1M window is noise, and I'd push
back on my own framing there. What's actually costing you is redundancy and startup latency.
The redundancy is real and measurable. I have both files in context, so I can compare them
directly. development-flow/SKILL.md is ~90% a restatement of global.md:
┌──────────────────────────────────────────────────────────────────┬────────────────────┐
│ development-flow line │ Already in │
│ │ global.md │
├──────────────────────────────────────────────────────────────────┼────────────────────┤
│ "State a plan for the immediate next step" │ lines 14-15 │
├──────────────────────────────────────────────────────────────────┼────────────────────┤
│ "Read only the files directly needed" │ line 17 │
├──────────────────────────────────────────────────────────────────┼────────────────────┤
│ "Extend the existing domain model..." │ line 28 │
├──────────────────────────────────────────────────────────────────┼────────────────────┤
│ "Complete one coherent change at a time" / "Validate before │ line 16 │
│ moving on" │ │
├──────────────────────────────────────────────────────────────────┼────────────────────┤
│ "Apply user corrections and continue" │ lines 18, 20 │
├──────────────────────────────────────────────────────────────────┼────────────────────┤
│ "Do not manage Git unless explicitly requested" │ line 19 │
├──────────────────────────────────────────────────────────────────┼────────────────────┤
│ "Do not leave the repository in an invalid state" │ line 72 │
├──────────────────────────────────────────────────────────────────┼────────────────────┤
│ Validate section │ Validation section │
└──────────────────────────────────────────────────────────────────┴────────────────────┘
Only the three-line Communicate section is unique. That file is ~330 tokens to deliver 3
novel lines.
What actually earned its place: rust-development/SKILL.md. No .unwrap(), crate:: over
super::, no bool params, no trait objects, no serde_json::Value fields, jiff for timestamps,
the tracing/err conventions. That is encoded review feedback I would not derive on my own,
and it is the one file I would keep unconditionally.
What's weakest in global.md: a good chunk restates agent defaults. "Work on one task at a
time," "preserve unrelated user changes," "do not use destructive Git commands," "provide a
plan before writing code." I do those anyway. The load-bearing parts are the ones I'd
genuinely get wrong: no AI attribution trailers, one sentence per line in Markdown, no em
dashes in user-facing text, the conventional-commit type list, the release-notes format.
The cost you're actually feeling is the ritual: 3 Bash calls plus 3 Reads before I touch a
single project file, every session, even for a one-line string change. Plus CLAUDE.md spends
~40% of its 2k tokens explaining how to fetch the repo.
My recommendation: fold development-flow into global.md (keep the Communicate section, drop
the rest), and cut global.md's restated-defaults lines. That gets you to roughly one general
file plus per-language files, and drops the fixed read from 3 files to 2 with little real
signal lost. The language skills are the part worth protecting.
I've found these a littleee intrusive but claude thinks they have utility and has suggestions for improving it: