
Vary ships an [LLM skill pack](/docs/writing-vary-with-llms/) 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:

```bash
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:

```toml
[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`.

## What gets installed

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.

## Works with every template

```bash
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:

```bash
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](/docs/writing-vary-with-llms/) for the skill pack location by install method.

## How this fits in

The [verification ladder](/articles/the-verification-ladder-for-ai-coding-tools/) 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.
