tl;dr: Run `vary new my-app --agent claude` (or codex, cursor, opencode, kiro) and the project includes a skill pack that teaches your AI assistant how Vary works.


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.

One flag

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:

FlagSkill directory
--agent claude (default).claude/skills/
--agent codex.agents/skills/
--agent opencode.agents/skills/
--agent cursor.cursor/skills/
--agent kiro.kiro/skills/
--agent noneSkipped

If you leave off --agent, the default is claude.

What gets installed

Five files:

FileWhat is in it
SKILL.mdCore syntax, types, control flow, pattern matching, null safety, testing, web framework
grammar-reference.mdFull EBNF grammar, operator precedence, all pattern types
stdlib-reference.mdBuilt-in functions, collection methods, JSON API, filesystem, HTTP client
toolchain-reference.mdCLI commands, mutation testing flags, artifact caching, project config
contracts-reference.mdPreconditions, 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.

Works with every template

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.

Skipping 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.

Existing projects

Projects created before this feature need a manual copy. See Writing Vary with LLMs for the skill pack location by install method.

How this fits in

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.

More articles

What's new in Vary v122-alpha.1 v122-alpha.1 is out. The headline is vary var, a new top-level command that runs check, test, mutation, and review under a cost budget. The mutation engine was rewritten around reachability tracing, kill-first scheduling, and a hot-swap backend. Frugal, a native PEG parser library ported from Parsimonious, also lands.
Vary mutation testing speed: comparing to AST and PIT Vary now measures mutation-testing performance directly on real benchmark programs, including a project-scale parser workload and a PIT-style comparison fixture, and the current results are strong enough to talk about in concrete terms.