Claude Code First, specification version 0.1.0. The plain-language guide
Version 0.1.0. Grade R3/S3.
F3 Content moved into on-demand files keeps growing where it lands, and stays bounded only under a ceiling of its own
| Field | Value |
|---|---|
| Status | active |
| Topic | Context economy and agent prose |
| Grade | R3/S3 |
| Cases | Shio, roadkeep |
| Contrary | none |
| Harness facts | H3 |
Claim
Skills and area files that took content out of the every-turn file grew afterwards as the every-turn file had: without a ceiling they reached several times the size of what they replaced, and the one project that capped them had to add a ceiling for each file it had left uncapped.
Mechanism
Moving content to a trigger-loaded file removes it from the every-turn budget (F2), and with it from the only check that was counting it. The destination receives the same additions the every-turn file used to receive. A skill's body is paid in full on each turn that loads it (H3), so a skill that grows becomes a large cost on the turns that trigger it.
Observations
- Shio. At the split the area files under
docs/agents/held 184,521 bytes
(git ls-tree -r -l f4ffdb0d9 -- docs/agents); at the pin they hold 1,730,001, after 777 commits to that directory (git rev-list --count f4ffdb0d9..821f18d74 -- docs/agents). docs/agents/build.md alone went from 5,238 bytes [shio@f4ffdb0d9] to 149,685 [shio@821f18d74:docs/agents/build.md]. Over the same period the index grew from 14,433 to 22,064 bytes [shio@821f18d74:agents.md]. No size limit on the area files or the skills was found in the test and script trees at the pin; that is the result of one search, not a proof of absence.
- roadkeep. The shipped skill grew until "the skill names all 44 verbs and costs 65k units a turn" [roadkeep@91754240:docs/CHANGELOG.md#L1099];
RK1437 split it into an orientation and two pages [roadkeep@0d756a9a], and "the split landed at 11,148 against 65,885 before it," [roadkeep@91754240:tests/test_skill.py#L133] with "ORIENTATION_MAX = 13_000" [roadkeep@91754240:tests/test_skill.py#L136]. The two pages were then left without a ceiling and grew: "RK1437 gave the ceiling to the half that shrank and left these two unbounded" [roadkeep@91754240:tests/test_skill.py#L144], and one later task "added 1,361 units to one" [roadkeep@91754240:tests/test_skill.py#L145] and 1,076 to the other. RK1643 gave each page its own figure [roadkeep@d849f061], with the rule that "a page past it is a page to split" [roadkeep@91754240:docs/CHANGELOG.md#L824].
Independence
Two origins: Shio's area files and roadkeep's skill are separate files in separate repositories, each growing under its own project's work. winwright caps its shipped skill's body at "private const int Body = 6000;" [winwright@861b82e:tests/Winwright.Tests/SkillTests.cs#L33], on the stated ground that otherwise the skill "becomes the same instruction file it replaced" [winwright@861b82e:tests/Winwright.Tests/SkillTests.cs#L31]. That is a remedy with no recorded growth behind it, so it adds no origin; it predates roadkeep's orientation ceiling (2026-08-26 against 2026-08-31), so it is not a copy of it.
Counter-evidence
- Growth of an on-demand file is not by itself a cost on every turn. Whether Shio's 1.73 MB
of area files cost a task more than the 185,734-byte every-turn file did is not answered at the pin, because what a session reads is only in transcripts.
- roadkeep's ceilings on the skill are, in its own words, a cadence and not a size: a page
past its figure is split, not refused, so the ceiling bounds what one turn loads, not the total the project carries.
- No source shows roadkeep's skill ceilings failing a build.
Grade
R3: growth of the moved content is observed independently in two projects. S3: both are counted, Shio's bytes per directory and file, and roadkeep's code units before and after the split and per later task. Not S4: roadkeep's tests encode the ceiling, but no source shows one failing.