# pravo skill

Install or print the skill that teaches an AI agent to use pravo. It is built from this documentation and is part of the binary, so it matches the version that installed it.

## Quick reference

| | |
|---|---|
| Synopsis | `pravo skill install [dir]`, `pravo skill print [file]`, `pravo skill list` |
| Changes infrastructure | No. |
| Reads | Nothing outside the binary. |
| Writes | `install` writes the directory `DIR/pravo`. The other commands write nothing. |
| Taught in | [Let an agent plan and apply](../how-to/agents-and-mcp.md#give-the-agent-the-skill). |

The skill is a directory for an AI agent. `SKILL.md` is a short guide: what a specification looks like, the workflow, the habits that fail in pravo, what an agent must not run without being asked, and which file answers which question. `references/` holds the pages of this documentation as Markdown, one file each, with `references/INDEX.md` listing them. The agent reads the guide first and opens a reference file when a question needs it.

The binary carries the skill. `pravo skill install` writes the copy that matches the version that runs, so an agent never reads documentation for another version.

## install

`pravo skill install [dir]` writes the skill to `DIR/pravo`. Without `dir` it writes to the skills directory of Claude: `$CLAUDE_CONFIG_DIR/skills`, or `~/.claude/skills`. Claude reads a skill from there at the start of a session.

```sh run
pravo skill install skills
```

```text out
Installed the pravo skill for pravo <version>: <n> files in ./skills/pravo
```

```sh run
ls skills/pravo
ls skills/pravo/references
```

```text out
SKILL.md
VERSION
references
INDEX.md
concepts
how-to
learn
migrate
reference
```

Installing again replaces the earlier copy, so a file that the skill does not have any more is removed. The new copy is written beside the old one and takes its place when it is whole. A directory named `pravo` that holds something other than the skill is not touched: the command stops with exit code 5.

With `--json` the command prints the path, the number of files and the version:

```sh run
pravo skill install skills --json
```

```text out
{
  "files": <n>,
  "path": "./skills/pravo",
  "version": "<version>"
}
```

## print and list

`pravo skill print` prints `SKILL.md`. With a file name it prints that file of the skill, for an agent that has no skills directory and reads what a command prints.

```sh run
pravo skill print | head -n 2
pravo skill print references/INDEX.md | head -n 3
pravo skill list | head -n 3
```

```text out
---
name: pravo
<!-- Generated by tools/skillgen. Do not edit. -->

# Reference files
SKILL.md
references/INDEX.md
references/concepts/evaluation.md
```

`pravo skill list` prints the paths of the files, one for each line, with `SKILL.md` first.

## Other agents

An agent that has no skills directory can use the same files. Install them where the project keeps its notes, then name the guide in the file that the agent reads at the start, such as `AGENTS.md`:

```text
Read .agents/pravo/SKILL.md before you write or run pravo.
```

```sh
pravo skill install .agents
```

## A release asset

Each release carries the skill as `pravo-skill.zip`, built from the same files, with a `VERSION` file inside. It is the form to upload where a skill is added from an archive. It is listed in `SHA256SUMS` and has the attestation of the other files of the release.

## What keeps it current

The reference files are not written by hand. `go run ./tools/skillgen` builds them from the pages of the documentation: the front matter becomes a heading, the attributes of code fences become words, the containers of the site become plain text and a link to a page that is not in the skill points at the site. The tests of the repository fail when a page changes and the skill has not been rebuilt, when a page is added that the generator has not been told about, and when `SKILL.md` names a command, a flag or a file that does not exist.

Track A of Learn, the labs and the section indexes are not in the skill. Everything else in Reference, Concepts, How-to, Learn and Migrate is.

### Flags

The command takes the [global flags](global-flags.md) and no flags of its own.

### Exit codes

| Code | Meaning |
|---|---|
| 0 | The command did what it was asked. |
| 1 | The file is not part of the skill, or a file could not be written. |
| 5 | `DIR/pravo` exists and is not the pravo skill. |

```text
Install or print the skill that teaches an agent to use pravo

Usage:
  pravo skill [command]

Available Commands:
  install     Write the skill to a directory of skills
  list        List the files of the skill
  print       Print SKILL.md, or another file of the skill

Global Flags:
      --actor string    a label for who is acting, recorded on transactions, locks and plans; not verified ($PRAVO_ACTOR)
  -C, --chdir string    run as if started in this directory
      --json            machine-readable output on stdout (progress goes to stderr)
      --no-color        disable coloured output
      --reason string   why; recorded on transactions and plans ($PRAVO_REASON)
  -v, --verbose count   log what pravo decides and does to stderr; -vv adds finer detail and the providers' own log ($PRAVO_LOG=debug|trace)

Use "pravo skill [command] --help" for more information about a command.
```
