CLAUDE LABJP
FORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as OctoberFORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as October
Articles/Claude Code
Claude Code/2026-05-30Intermediate

The Second Half of My SKILL.md Wasn't Being Read: Keeping It Under 200 Lines

Sparked by an observation that Codex CLI stops reading SKILL.md at around 220 lines, a look at how long an agent actually reads, and how to keep SKILL.md under 200 lines by offloading detail into references.

Claude Code196SKILL.md6Agent Skills2progressive disclosure

Does the agent actually read my SKILL.md all the way to the end? I'd left that question fuzzy for a long time. Writing article-generation skills for four technical blogs, my SKILL.md kept growing: cautions, banned patterns, quality-gate explanations, handoff steps to other skills. Before I knew it, it had passed a thousand lines. Then an observation report hit home.

When Codex CLI reads a SKILL.md, the logs showed commands shaped like sed -n '1,220p'. For a 441-line skill, the back 221 lines never make it into the output. And across many tasks, the deepest line read lined up at right around 220, reproducibly. For anyone running these in production, that's a hard-to-ignore signal that the SKILL.md you think you wrote and the SKILL.md the agent actually reads may be two different documents.

Why it stops at 220

You'd want to blame a CLI bug at first. But the observation concluded otherwise. Codex CLI has no dedicated file-read tool, so reading a file is the same as generating and running a shell command. On the path where the agent picks a skill from natural language, "read the SKILL.md body" becomes "run sed." And the sed -n '1,220p' string was assembled by the model, not the harness.

So why around 220 every time? The observer's read is that 220 is the length the model assumes a SKILL.md to be. Reading ordinary code files yields varied line counts, but reading a skill is a single, repeated situation. The Agent Skills standard keeps the body short by design, offloading long specs and samples to references/ and writing only "when to use" and "how to proceed" in the SKILL.md itself. A spec-compliant SKILL.md tends to land around 200 lines, so "a reasonable skill's length plus some margin" surfaces near 220.

The key point: this isn't an instruction to "cut off at 220." It's the model's idiom for "read an entire SKILL.md in one go." Written short per spec, the whole thing is read even at 220. Trouble only appears for skills that exceed the assumed length.

The behavior depends on the harness

This is easy to misread, so a note. The cutoff doesn't happen everywhere. On skill-tool harnesses, like Claude Code, where the harness reads the full body in advance and hands it to the model, sed never appears, so this cap stays hidden. The observation reports that on the Claude Code path, a 441-line skill was delivered at 441 lines every time.

The core of the problem, then, isn't "the Codex tool" but the architecture shape of "if you read a file, the model writes the shell command." If you want your skill used across multiple agents including Codex, the safe move is to write to the most conservative assumption. And that conservative assumption turns out to be exactly what the original spec said: keep SKILL.md short.

What tends to live in the back half

What made me break a sweat reviewing my own SKILL.md was precisely the content I'd placed in the back half. The observation notes that what sat past line 220 was anti-patterns, expected drift patterns, the stop condition, and handoff steps to other skills, in other words, the strongest instructions: "don't get sloppy this way" and "stop once you reach here."

It's an ironic structure. The very text meant to stop or course-correct an agent is what you want to gather at the end for safety. But that "stop" side is exactly what goes unread when placed late. My own article-generation skill clustered the quality-gate banned patterns and pre-push checks at the end, so in a cross-agent context it likely fell into the same hole.

How to keep it under 200 lines

The fix isn't changing the tool; it's matching the model's assumption. The measured value was 220, but it's a margin-inclusive number, so if you draw your own limit, 200 is safer. Concretely, three things.

  • Keep the SKILL.md body under 200 lines.
  • Put the Iron Law, when to use, core procedure, and minimal examples in the first 200 lines.
  • Offload long examples, anti-patterns, and reference docs into references/.

Offloading to references/ isn't just about cutting line count. It's progressive disclosure itself. At startup, only each skill's name, description, and path load; the body is read when the skill is chosen. Finer specs are read individually from references/ by the agent that needs them. Put "when and how" in the body and "the detail" in references/, and you ride this disclosure flow naturally.

As an indie developer who has built apps since 2014, after I re-split my four-site operations skills into "body holds judgment and procedure, detailed docs live in separate files," the skills started firing as intended. Back when I crammed everything into a thousand-line body, articles sometimes slipped through where the crucial banned patterns hadn't taken effect.

What you can check today

If you have a long SKILL.md on hand, count the body's lines first, and if it's over 200, check whether the Iron Law and stop condition are in the first 200 lines. If not, you can start by moving that part to the top and shifting long examples and anti-patterns into references/.

Unless the SKILL.md you wrote and the one the agent reads are the same length, they're different documents. With that in mind, I went deeper on stabilizing output with templates and decision guides in designing skills that stabilize output. For orchestrating with a script instead of a skill, what I learned about orchestrating subagents should help.

Thank you for reading to the end.

Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

If you found this article helpful, a small tip ($1.50) would mean a lot to us. Your support helps keep this site ad-free and covers server and hosting costs.

Related Articles

Claude Code2026-05-30
Designing Skills That Stabilize Output: Template Fixing and Decision Guides in Claude Code
A practical design guide for stabilizing wobbly Claude Code skill output: stating when to use it, decision-guide tables, fixing quality with references templates, and traceability rules, with code from real operations.
Claude Code2026-06-13
When Your Edited SKILL.md Doesn't Take Effect — Hot-Swapping Claude Code Skills with /reload-skills and Auto-Loaded .claude/skills
A practical routine for hot-swapping Claude Code skills without restarts: /reload-skills, SessionStart hooks, and version stamps that show which SKILL.md is live.
Claude Code2026-05-10
Catching Template Phrases Before They Ship: grep Guards in Claude Code SKILL.md
Even with detailed prompt instructions, generating articles every day eventually lets template phrases slip through. I added grep-based guards to the final step of my Claude Code SKILL.md so that violations block the push and force the model to rewrite. Here's what changed after one week.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →