> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markapidown.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Skills reference

> A single SKILL.md playbook installed for every supported agent — teaches the Reqbook spec format, file layout, MCP tools, and when to use each command.

Skills are markdown playbooks embedded in the Reqbook binary. When installed, agents read them from their config directories and apply them automatically when a user prompt matches a known intent — you do not need to mention Reqbook explicitly.

<Card title="rqb" icon="book-open">
  Covers the full Reqbook workflow: project layout, endpoint spec format, Assertions operators, pipeline capture patterns, MCP tool reference, and routing rules for when to use each slash command.
</Card>

***

## Install

```bash theme={null}
rqb skills install
```

This writes the skill to every supported agent's config directory. To target one agent:

```bash theme={null}
rqb skills install --agent=cursor
rqb skills install --agent=copilot
rqb skills install --agent=claude-code
```

***

## What the skill teaches

### Project layout

```
api-docs/
├── reqbook.md              # project config (name, default-env, timeouts)
├── _shared/env.template.md # shared environment template
├── _shared/env.md          # local base URLs and variables
├── apis/<resource>/<method>-<slug>.md   # one file per endpoint
└── flows/<name>.md         # multi-step pipelines
```

### Endpoint format

Required frontmatter: `resource`, `protocol: http`, `method`, `path` (`:param` for path params), `version: 1`.

Sections in order: `## Request` → `## Expected response` → `## Error responses` (optional) → `## Assertions` (optional) → `## Tests` (optional) → `## Notes` (optional).

### Assertions

Structured rules that run after each execution:

| Operator   | Example                                   |
| ---------- | ----------------------------------------- |
| *(equals)* | `status: 200` · `body.name: Ada Lovelace` |
| `exists`   | `body.id: exists`                         |
| `in [...]` | `body.role: in [admin, user]`             |
| `contains` | `headers.content-type: contains json`     |
| `matches`  | `body.slug: matches ^[a-z]+$`             |

### Pipeline capture patterns

| Pattern                      | When to use               |
| ---------------------------- | ------------------------- |
| `response.body.<field>`      | Top-level JSON field      |
| `response.body.<a>.<b>`      | Nested JSON field         |
| `response.body[<n>].<field>` | Field from nth array item |
| `response.headers.<name>`    | Response header value     |

### Routing table

The skill routes the agent to the right tool or command based on the situation:

| Situation                            | Action                  |
| ------------------------------------ | ----------------------- |
| Create or update specs               | `/rqb`                  |
| Debug a failing endpoint or pipeline | `/rqb-debug`            |
| Execute a spec                       | `rqb_exec` MCP tool     |
| Diagnose a failed endpoint           | `rqb_diagnose` MCP tool |
| Run a pipeline                       | `rqb_flow` MCP tool     |

***

## Supported agents

| Agent          | Skill format       | Path                                       |
| -------------- | ------------------ | ------------------------------------------ |
| Claude Code    | `SKILL.md`         | `.claude/skills/rqb/SKILL.md`              |
| Cursor         | `.mdc`             | `.cursor/rules/rqb.mdc`                    |
| GitHub Copilot | `.instructions.md` | `.github/instructions/rqb.instructions.md` |
| Codex CLI      | `SKILL.md`         | `.agents/skills/rqb/SKILL.md`              |
| Antigravity    | `SKILL.md`         | `.agents/skills/rqb/SKILL.md`              |
| OpenCode       | `SKILL.md`         | `.opencode/skills/rqb/SKILL.md`            |
| Windsurf       | `.md` (rule)       | `.windsurf/rules/rqb.md`                   |

All agents receive the same skill content — only the file format differs.
