Skills, not docs A developer behind the @relax.js/core JavaScript library released an `init-agents` CLI command that writes seven Claude Code skill files into `.claude/skills/`, one per area of the framework, each stamped with the package version it came from so stale copies can be detected after upgrades. The author argues skills should encode design-level habits and wrong defaults rather than API facts, reserving documentation for implementation details, and reports that an earlier single monolithic instruction file rotted because there was no signal for which sentences went stale. Second in a series on using @relax.js/core https://www.npmjs.com/package/@relax.js/core with a coding agent. The first piece made the argument; this one is about the first thing you do in a project. npx @relax.js/core init-agents That writes seven files into .claude/skills/ , one per area: the core model, then templates, forms, routing, services, testing and setup. Claude Code loads a skill when its description matches what the agent is doing. Other tools without skill support can be pointed at node modules/@relax.js/core/skills/relaxjs/SKILL.md from their instruction file; the core skill links to the rest. Each copy is stamped with the package version it came from. Run the command again after an upgrade and it lists the copies that are behind, and leaves them alone unless you pass --force . A skill is a snapshot, and a snapshot that describes an older library is worse than none, because the agent trusts it. The interesting decision was not to write the skills. It was deciding what does not go in them. The library has a docs/ folder like any other. An agent could read it, and sometimes it should. But documentation is written for someone who already knows they need this API. It answers "how does this work, what is available". A skill loads before the agent knows it has a problem. Its job is to overwrite a wrong default and route to the right doc. The skills/README.md in the package states two tests for where a sentence belongs: Would an agent that never read this produce code that compiles, type-checks and does nothing? Skill. Would it merely not know a name? Docs. Would the sentence need editing when the implementation changes? Docs. Only when the design changes? Skill. The two must not overlap. A skill that accumulates examples is turning into a doc, and should hand off to one instead. The only thing a skill repeats from a doc is its filename. Here is the whole "Do not" section of the core skill: Do not - Reach for a state store, computed properties or a reactive wrapper. Update the DOM where the change happens. - Add a component base class, a render loop or a diffing layer. - Use CustomEvent , or enum where a declare type string union works. - Duplicate native HTML. Use