Repository navigation
craftkit v1.50.0
Cold agents skip CLAUDE.md
Every agent spawn loaded every CLAUDE.md layer: the ~45 KB CRAFTKIT managed block, the
project CLAUDE.md and its imports. None of it was needed, since the rules an agent works
by already arrive through craftkitInject. A bulk-read probe that made no tool calls cost
32.6k tokens, and a third of that was the global block alone.
- All 16
agents/*.mdsetomitClaudeMd: true(Claude Code v2.1.271+). The same probe
now costs 6.6k, andfe-review9.4k. Org managed policy still reaches both agents, which
the go/no-go probe checked alongside the absence of three phrases found only in the managed block. - The field drops the project
CLAUDE.mdtoo, which a second probe confirmed. The
CONTEXT:payload inparallel-review,parallel-shipandparallel-buildnow carries a
PROJECT CONVENTIONS:entry: the rootCLAUDE.md, its@-imports, and the
.claude/rules/*.mdfiles withoutpaths:, ornot presentwhen there are none. Agents
spawned outside those three (plan-roaster,eval-judge,bulk-read) judge plans, scores or
one named file, so they go without it.CLAUDE.local.md, nestedCLAUDE.mdfiles and
path-scoped rules are not carried either, which is a known gap. check.shcheck 39 fails an agent without the field and a template without the entry.- Authoring rule #4 in the repo
CLAUDE.mdand the README agents notes say so. - To roll back, delete the field. Nothing on disk changes shape.
Stop gate stops blaming a turn for files dirty before it
When a turn wrote through the shell or spawned an agent, the verification gate added every
dirty file in the working tree to that turn's edits. So one untracked planning doc, last
touched the day before, blocked every turn that delegated work.
gitDirtycounts only files modified since the prompt that opened the turn (startedAt,
now read from the transcript bycraftkit-transcript.js). It comparesmax(mtime, ctime),
because a chmod moves only ctime. A deleted file, or a turn with no start time, still counts,
so the gate errs on the side of firing.git status --porcelain -zreplaces the line-based parse. A rename now resolves to its new
name instead ofold -> new, and a name with a space is no longer quoted.check.shcheck 23 gains fixtures for a stale delegating turn, a fresh one, agit mv,
a quoted name and a chmod-only change. The last three failed before the fix.