Vary ships an LLM skill pack with the full grammar, stdlib reference, toolchain commands, and contracts reference. AI coding agents use these files as context when writing Vary code.
Until now, installing the skill meant finding your Vary install directory, locating the skill pack, and copying it to .claude/skills/ or .cursor/skills/ or .agents/skills/ depending on the tool. Every agent has its own convention.
vary new handles it now:
vary new my-app --agent claude
This creates a Vary project and copies the skill pack into .claude/skills/. The project's vary.toml records the choice:
[agent]
tool = "claude"
scaffolded_skills = true
The flag accepts any of the major coding agents:
| Flag | Skill directory |
|---|---|
--agent claude (default) | .claude/skills/ |
--agent codex | .agents/skills/ |
--agent opencode | .agents/skills/ |
--agent cursor | .cursor/skills/ |
--agent kiro | .kiro/skills/ |
--agent none | Skipped |
If you leave off --agent, the default is claude.
Five files:
| File | What is in it |
|---|---|
SKILL.md | Core syntax, types, control flow, pattern matching, null safety, testing, web framework |
grammar-reference.md | Full EBNF grammar, operator precedence, all pattern types |
stdlib-reference.md | Built-in functions, collection methods, JSON API, filesystem, HTTP client |
toolchain-reference.md | CLI commands, mutation testing flags, artifact caching, project config |
contracts-reference.md | Preconditions, postconditions, invariants, pure functions |
Plain markdown. Works with any LLM that reads files. The files are bundled in the compiler JAR and extracted during project creation, so they always match the compiler version you are using.
vary new my-api --template http --agent cursor
vary new my-lib --template library --agent codex
vary new my-cli --template cli --agent opencode
vary new my-tool --template serious --agent kiro
Each template creates its own directory layout and the skill pack lands in the agent-specific location alongside it.
If you do not use a coding agent, or prefer to manage skills yourself:
vary new my-app --agent none
No agent directories are created. The vary.toml records scaffolded_skills = false so tooling knows you skipped it on purpose.
Projects created before this feature need a manual copy. See Writing Vary with LLMs for the skill pack location by install method.
The verification ladder describes running vary check, vary test, and vary mutate in order. The skill pack is the step before that: teach the agent what valid Vary looks like so you spend less time fixing parse errors before you reach the first rung.
After vary new --agent claude, the agent has the language reference, the project has a test suite, and vary mutate is one command away. The setup that used to take ten minutes of file copying is one flag.