I spent two weeks writing a SKILL.md. Claude Code skimmed past it like a ToS checkbox. So I built a compiler that turns skills into standalone agents.
I spent two weeks writing a SKILL.md for our internal agent stack at DiDi. Every API endpoint, every MCP config, every token-budget rule I had bled for over three months, distilled into clean markdown.
I handed it in as a deliverable. My strict requirements — the ones in bold, the ones that said "check environment variables first" and "exit immediately on type X errors" — the model skimmed past them like a terms-of-service checkbox. Every run, the interpretation drifted. One run drifted far enough that a bug, which should have died in staging, almost hit production.pip install agenthatch agenthatch hatch my-skill agenthatch run my-skillThe problem isn't your skill.
It's the format. A SKILL.md file is prose. You paste it into a system prompt and ask an LLM to figure out what you meant, at runtime, every single turn. Skills leak into each other because they share one context window.
The agent skim-reads long ones. There is no validation — a typo in a tool name goes undetected until runtime. The interpretation shifts every run. This isn't an Anthropic bug.
It's architectural decay. You're asking one LLM to interpret seven pieces of zero-isolation prose in the same context window, forever. Think about it: you hand someone seven operating manuals and ask a question. They flip through all seven books every time and stitch an answer together.
That person would lose their mind. The LLM does too, just quietly. The core issue: SKILL.md is prompt engineering, not software engineering. No compile step.
No type checking. No contract between you and the model. Right now, everyone is writing skills — for Claude Code, Codex CLI, and OpenClaw. In every single one, the skill is prose stuffed into a system prompt.
It cannot exist on its own. It is a prompt accessory. Java compiles to bytecode. TypeScript compiles to JavaScript.
The compile step catches typos, type errors, and ambiguity before runtime. SKILL.md has no compile step. It hands raw prose to an LLM and hopes. Skills stop burning tokens in system prompts.
Compiled agents carry about 150 bytes of runtime config. Schema validation happens at compile time. Typos die before runtime. Reads the SKILL.md, pulls out frontmatter and files, pure filesystem operations.
It checks binary magic numbers to skip images, PDFs, and ZIPs. Files over 1MB get skipped. If something can be done deterministically, keep the LLM out of it. I tried one giant prompt that did everything.
The output was a lottery. Splitting it into single-responsibility harnesses fixed it. The same reason compilers split the frontend into lexer, parser, and semantic analysis. Each harness self-validates.
Harness E cross-checks all five others and produces a unified spec. The structural confidence score is not an LLM self-assessment. It is code that counts the required fields. The model will tell you "0.95 confidence" while missing three fields.
Code does not lie. There is also a pre-flight classifier. A pure-instruction skill skips Harness D entirely, saving tokens. An integration skill with API calls upgrades everything to large models.
Not every skill deserves the expensive model. -checked before touching the disk. If it fails, the engine auto-fixes indentation. If it still fails, it falls back to a template stub.
Broken code never reaches runtime.hatched-agent/ ├── pyproject.toml # pip-installable ├── runtime.toml # LLM provider config ├── agenthatch.yaml # spec manifest └── src/{name}/ ├── agent.py # full agent class ├── tools.py # typed tool implementations └── references.py # extracted structured datait, run it as a CLI, or wrap it as an MCP server. It does not depend on Claude Code, Codex, or any host agent. It is a program.
The generated agent runs a 6-state PlanLayer state machine: STARTING, PLANNING, EXECUTING, VERIFYING, REPLANNING, DONE. Three consecutive tool failures trigger replanning. State transitions are managed by code, not the LLM. LLMs are unreliable.
State machines are not. Python only. JS/TS support is in progress. No Node agent yet.
Single-file skills work. Multi-file directory skills are in development. I've shipped 8 PRs to pytest. agenthatch is my first from-scratch project.
"Ship beats perfect" is the most useful thing I learned from open source. If you maintain more than three SKILL.md files and feel the friction, this is for you. If you hit bugs, file an issue. If you think skills should stay as prompt fragments, I genuinely want to hear why — I might be wrong, and I would rather know now than after another two thousand lines of compiler.
United States Latest News, United States Headlines
Similar News: You can also read news stories similar to this one that we have collected from other news sources.
ICE agents involved in fatal Houston shooting were not wearing body cameras, DHS saysTwo days after a federal immigration agent fatally shot a man during an enforcement operation in Houston’s East End, the U.S. Department of Homeland Security confirmed there is no body camera footage because the officers involved were not wearing body-worn cameras.
Read more »
Federal agents at scene of ICE shooting in Houston didn't have body cameras, DHS saysThe Harris County District Attorney’s Office is investigating the fatal shooting of a Mexican homebuilder by U.S. Immigration and Customs Enforcement officers during a traffic stop in Houston.
Read more »
Federal agents at scene of ICE shooting in Houston didn’t have body cameras, DHS saysFew photos or videos surrounding the shooting have emerged publicly.
Read more »
Federal agents at scene of ICE shooting in Houston didn't have body cameras, DHS saysThe Harris County District Attorney’s Office is investigating the fatal shooting of a Mexican homebuilder by U.S. Immigration and Customs Enforcement officers during a traffic stop in Houston.
Read more »




