Skip to content

Context budgets

Kiyo’s main performance concern is context: how much instruction text an agent must read before it can act. ADR-002 sets ceilings, and the static contract tests (group G14) enforce them. The framework states these are “not vendor-imposed context limits”, and they are not token measurements.

The counts below were measured for this documentation at framework revision 897516e using the framework’s own definition:

  • Lines: physical lines, including blank lines, headings, and frontmatter, after normalizing CRLF to LF.
  • Words: whitespace-delimited tokens.

This is a static text measurement. It says nothing about model tokenization, host truncation, or actual read behavior, which the framework lists as untested.

File Lines Words
src/kiyo/KIYO.md 22 112
src/kiyo/framework/bootstrap.md 59 469
Combined 81 of 120 581 of 600

The combined bootstrap is within its ceiling, but close on words: 19 words of headroom.

Ceiling: 250 lines and 1,200 words per rendered SKILL.md, including native frontmatter. Packaged entries are the canonical text plus rewritten link paths and a short “native guidance” suffix. The Claude, Codex, and Copilot renderings measured identically.

Skill Canonical lines Canonical words Packaged lines Packaged words
init 73 566 78 584
requirement 69 567 74 585
implement 93 789 98 807
review 73 583 78 601
test 89 692 94 710
security 80 615 85 633
architecture 71 515 75 533
memory 74 609 79 627

The largest entry, Implement, uses 39% of the line ceiling and 67% of the word ceiling.

Ceiling: 250 words for the Kiyo-owned managed block, excluding surrounding human instructions. The framework recorded sample renderings of 114 (Claude), 108 (Codex), and 116 (Copilot) words.

Everything else loads progressively. The agent reads the selected procedure and only the references and single template the task needs. The 97-file shared snapshot in each Skill is installed size, not loaded context. Near a context limit, the agent produces a handoff (intent, facts, decisions, unknowns, checks, next step) rather than continuing on partial context.

From the framework repository root:

PowerShell (Python 3.10+)
python -c "from pathlib import Path; t=lambda p: Path(p).read_text(encoding='utf-8').replace('\r\n','\n'); f=lambda p: (t(p).count('\n') + (0 if t(p).endswith('\n') else 1), len(t(p).split())); print(f('src/kiyo/KIYO.md'), f('src/kiyo/framework/bootstrap.md'))"