# Agent Skills

> Teach your coding agent to explore, infer and validate data with Fairspec.

Fairspec ships [Agent Skills](https://agentskills.io/) that tell coding agents such as Claude Code, Cursor and Codex how to work with Fairspec data. Once installed, your agent knows which command or MCP tool fits a task, and how to read the report it gets back. You don't have to explain any of it in the prompt.

| Skill                  | Your agent uses it when                         |
| ---------------------- | ----------------------------------------------- |
| `fairspec-exploration` | previewing, describing or querying data         |
| `fairspec-inference`   | describing files as dialects, schemas, datasets |
| `fairspec-validation`  | checking data or schemas and fixing the errors  |

## Install from the website

fairspec.org publishes its skills under `/.well-known/agent-skills/`, so the [`skills` CLI](https://github.com/vercel-labs/skills) can install them from the site URL. Run this at your project root:

```bash
npx skills add https://fairspec.org
```

It asks which skills and agents to install for. To skip the prompts, pass them as flags:

```bash
npx skills add https://fairspec.org --skill fairspec-validation --agent claude-code
```

Add `--global` to install for your user instead of the project, and `--list` to see what's available without installing anything. Run `npx skills update` later to pull newer versions.

## Use them

You don't need to invoke a skill yourself. Agents read each skill's description and load it when a task matches: asking to check a CSV against its schema loads `fairspec-validation`, and asking to describe a folder of files loads `fairspec-inference`. If your agent supports invoking skills by name, you can also call one directly, as with `/fairspec-validation` in Claude Code.

The skills cover the [terminal](/rust/terminal/) and the [MCP server](/mcp-server/), which the Rust binary shares with the Python and TypeScript ones: the same commands, options and tools. Their library calls are Python and TypeScript; the [Rust library](/rust/library/) uses the Python names. For example, validating a table from the terminal:

```bash
fairspec table validate broken.csv --schema schema.json
```
