Lesson 03 · Loop Engineering
Stop explaining your project every session like a goldfish.
Your loop runs tomorrow morning while you sleep. It knows nothing about your build steps, your conventions, or the one incident that explains why a file looks strange. Osmani's warning about that gap is the sharpest line in the post:
An agent starts every session cold and it will fill any hole in your intent with a confident guess. Addy Osmani, Intent debt
A skill is that intent written down on the outside. Written once, read every run. Without skills, the loop re-derives your whole project from zero each cycle. With them, it compounds.
Both Claude Code and Codex use the same shape: a folder with a SKILL.md
inside, holding instructions and metadata, plus optional scripts, references and assets.
.claude/skills/release-check/
└── SKILL.md
---
name: release-check
description: Verify a release candidate before tagging. Use when
the user asks to cut a release, tag a version, or check whether
main is releasable.
---
# Release check
1. Run `pnpm build` and confirm it exits clean.
2. Run `pnpm test -- --run`. All suites must pass, no skips.
3. Confirm CHANGELOG.md has an entry for the new version.
4. We never tag from a branch other than main. This broke
production on 2025-11-04.
This is the part people get wrong. The agent decides whether to invoke a skill by reading its description. Osmani puts it plainly: a skill runs by itself when your task matches the description, which is the reason a tight boring description beats a clever one.
What decides whether an agent invokes a skill on its own?
Which of these belongs in a SKILL.md rather than a prompt?
Name one rule about your own project that an agent would guess wrong. Write it as a SKILL.md line.
Primary source: Agent skills by Addy Osmani, then Intent debt for why the writing-down matters more than the format. Codex users: the Codex skills docs cover the same file.
SKILL.md with you, and we can argue about the description.