# Agent skill commands

> Print or install agent instructions generated from this manifest.

HTML version: https://www.purveyors.io/docs/cli/skill

Print or install instructions that teach an AI agent the Purveyors commands, ID types, and output rules.

Access: None. Works without signing in.

## purvey skill print

Write the generated SKILL.md, workflows.md, or the AGENTS.md block to stdout.

Usage: `purvey skill print [options]`

Access: None. Works without signing in.

- Prints one file as Markdown by default; --json or --pretty wraps it as { name, file, cliVersion, bytes, content }, or every file with --file all as { name, cliVersion, files: [{ file, bytes, content }] }.
- --csv is not supported, and --agents-md cannot be combined with --file.
- Rendered from this manifest, so it changes only when the CLI contract changes.

| Argument or flag | Details |
| --- | --- |
| `--file <file>` | Skill file to print: SKILL.md, workflows.md, or all. Default: SKILL.md. The skill is a folder: SKILL.md, which agents load when the skill triggers, and workflows.md, the step-by-step workflows SKILL.md points to. all needs --json or --pretty. |
| `--agents-md` | Print the compact AGENTS.md block instead of the skill. |

Examples:

```bash
purvey skill print
purvey skill print --file workflows.md
purvey skill print --file all --json
purvey skill print --agents-md
```

## purvey skill install

Install the generated instructions for Claude Code, Agent Skills clients such as Codex and Cursor, or a repository AGENTS.md.

Usage: `purvey skill install [options]`

Access: None. Works without signing in.

- Needs no credentials and makes no network calls.
- Emits { target, scope, path, action, written, dryRun, cliVersion, bytes } as JSON on stdout; action is create, update, unchanged, append, or overwrite.
- claude and agents also emit files: [{ file, path, action, written, bytes }] for SKILL.md and workflows.md. The top-level path is SKILL.md, action is the most significant file action (overwrite, update, create, then unchanged), written is true when any file was written, and bytes is the total.
- agents-md also emits claudeCode: { visible, via, reason, claudeMdFiles, link? }. visible is false when a CLAUDE.md, .claude/CLAUDE.md, or CLAUDE.local.md in the current directory or above it keeps Claude Code from reading AGENTS.md and none of them imports it; a warning then goes to stderr.
- Re-running is safe: an identical file is left unchanged, an unedited file from an earlier CLI version is updated in place, and a missing workflows.md (for example after a SKILL.md-only install) is created.
- A file with local edits, or one purvey did not write, is refused with exit 6 unless --force is passed. Every skill file is checked before any is written, so a refusal changes nothing.

| Argument or flag | Details |
| --- | --- |
| `--target <target>` | claude, agents, or agents-md. required. claude: SKILL.md and workflows.md in ~/.claude/skills/purveyors/ (project scope: .claude/skills/purveyors/); use this for Claude Code, which loads skills only from .claude/skills. agents: SKILL.md and workflows.md in ~/.agents/skills/purveyors/, read by Codex, Cursor, and other Agent Skills clients (project scope: .agents/skills/purveyors/); Claude Code does not read .agents/. agents-md: ./AGENTS.md in the current directory; adds or refreshes one marked block and leaves the rest of the file alone. Claude Code reads AGENTS.md only when no CLAUDE.md, .claude/CLAUDE.md, or CLAUDE.local.md exists in the current directory or above it; see --link-claude-md. |
| `--scope <scope>` | user (home directory) or project (current directory); defaults to user, or project for agents-md. |
| `--force` | Replace skill files or an AGENTS.md block that have local edits. |
| `--dry-run` | Report the path and action without writing. |
| `--link-claude-md` | agents-md only: add an @AGENTS.md import to ./CLAUDE.md so Claude Code loads the block. Appends one @AGENTS.md line to ./CLAUDE.md, or @../AGENTS.md to ./.claude/CLAUDE.md, and creates ./CLAUDE.md when neither exists. Only acts when a CLAUDE.md, .claude/CLAUDE.md, or CLAUDE.local.md on the path hides AGENTS.md and none imports it; idempotent and honors --dry-run. Never edits CLAUDE.local.md or a CLAUDE.md in a parent directory. |

Examples:

```bash
purvey skill install --target claude
purvey skill install --target agents --dry-run
purvey skill install --target agents-md
purvey skill install --target agents-md --link-claude-md
```

## Related

- [Set up your agent](https://www.purveyors.io/docs/agents/setup): The full install, sign-in, and skill setup flow.
- [CLI overview](https://www.purveyors.io/docs/cli/overview): Install, sign in, and see every command group.
