# Claude Code skills

> Install /paca slash commands, wire the MCP server, available skill routes, and task-reference resolution patterns from skills/paca.

- Repository: Paca-AI/paca
- GitHub: https://github.com/Paca-AI/paca
- Human docs: https://www.grok-wiki.com/public/docs/paca-ai-paca-f238b2ab3d25
- Complete Markdown: https://www.grok-wiki.com/public/docs/paca-ai-paca-f238b2ab3d25/llms-full.txt

## Source Files

- `docs/guides/claude-code-skill.md`
- `skills/paca/SKILL.md`
- `skills/paca-setup/SKILL.md`
- `scripts/install-claude-skill.sh`
- `skills/paca-epic/SKILL.md`
- `apps/mcp/src/tools/index.ts`

---

---
title: "Claude Code skills"
description: "Install /paca slash commands, wire the MCP server, available skill routes, and task-reference resolution patterns from skills/paca."
---

Paca ships eleven Agent Skills under `skills/<name>/SKILL.md`. The installer at `scripts/install-claude-skill.sh` strips YAML frontmatter from each skill and writes the body to `~/.claude/commands/<name>.md`, which Claude Code exposes as slash commands. Every skill assumes the `@paca-ai/paca-mcp` server is connected; without it, agents must not fall back to local task lists or markdown files.

## How skills and MCP fit together

```mermaid
flowchart LR
  A[Claude Code session] --> B["Slash command<br/>/paca, /paca-epic, …"]
  B --> C["~/.claude/commands/*.md<br/>skill prompt body"]
  C --> D["@paca-ai/paca-mcp<br/>via npx"]
  D --> E["Paca API<br/>/api/v1"]
  E --> F["Tasks · Sprints · Docs · Comments"]
```

Skills are portable prompt files in the repository. The MCP server is the runtime bridge to Paca. Slash commands load skill instructions; MCP tools perform mutations and reads against your workspace.

| Layer | Location | Role |
|---|---|---|
| Skill source | `skills/<name>/SKILL.md` | Canonical Agent Skills definitions with YAML frontmatter |
| Installed commands | `~/.claude/commands/<name>.md` | Frontmatter-stripped bodies Claude Code loads per slash command |
| MCP server | `@paca-ai/paca-mcp` | Authenticated tool surface (`PACA_API_KEY`, `PACA_API_URL`) |
| Paca backend | API at `PACA_API_URL` | Projects, tasks, sprints, docs, activity |

## Prerequisites

Before installing skills or wiring MCP:

- A running Paca instance (local default `http://localhost:8080`, or your hosted URL)
- Node.js 18+ (`node --version`)
- A Paca API key from **Settings → API Keys** in the Paca UI

<ParamField body="PACA_API_KEY" type="string" required>
API key sent as the `X-API-Key` header on every MCP tool call. Generate in Paca user settings.
</ParamField>

<ParamField body="PACA_API_URL" type="string">
Base URL of your Paca API. Defaults to `http://localhost:8080` when unset.
</ParamField>

<ParamField body="PACA_PROJECT_ID" type="string">
Optional project UUID. When set, project-scoped tools are filtered to that project. Without it, agents call `list_projects` to resolve context.
</ParamField>

<ParamField body="PACA_AGENT_ID" type="string">
Optional agent UUID for agent-mode MCP. Requires a user API key with permission to impersonate the agent. See [Configure AI agents](/configure-ai-agents).
</ParamField>

## Install slash commands

<Steps>
<Step title="Run the installer">

<Tabs>
<Tab title="Remote (curl)">

```bash
curl -fsSL https://raw.githubusercontent.com/Paca-AI/paca/master/scripts/install-claude-skill.sh | bash
```

Review the script before piping to `bash` — remote execution runs code directly from GitHub.

</Tab>
<Tab title="Local clone">

```bash
bash scripts/install-claude-skill.sh
```

When run from a clone, the script detects `skills/` adjacent to `scripts/` and installs locally instead of fetching from GitHub.

</Tab>
</Tabs>

The installer creates `~/.claude/commands/` if needed, then installs these eleven commands:

| Slash command | Skill source | Purpose |
|---|---|---|
| `/paca` | `skills/paca/SKILL.md` | General task, doc, and sprint operations |
| `/paca-setup` | `skills/paca-setup/SKILL.md` | Interactive MCP connection wizard |
| `/paca-epic` | `skills/paca-epic/SKILL.md` | Requirements → epic, child stories, spec doc |
| `/paca-clarify` | `skills/paca-clarify/SKILL.md` | Clarify vague tasks or specs |
| `/paca-breakdown` | `skills/paca-breakdown/SKILL.md` | Decompose tasks into sub-tasks |
| `/paca-sprint` | `skills/paca-sprint/SKILL.md` | Plan a sprint from backlog and velocity |
| `/paca-estimate` | `skills/paca-estimate/SKILL.md` | Fibonacci story-point estimates |
| `/paca-prioritize` | `skills/paca-prioritize/SKILL.md` | Rank backlog by value, urgency, effort |
| `/paca-do` | `skills/paca-do/SKILL.md` | Execute a task end-to-end |
| `/paca-test` | `skills/paca-test/SKILL.md` | Verify acceptance criteria, record results |
| `/paca-doc` | `skills/paca-doc/SKILL.md` | Write or update Paca Docs |

</Step>

<Step title="Verify installation">

Restart Claude Code or start a new session. Type `/paca-setup` to confirm the command is recognized.

Expected installer output ends with a table of available commands and a prompt to configure MCP.

</Step>
</Steps>

### Uninstall

Remove installed command files:

```bash
rm ~/.claude/commands/paca*.md
```

This removes all eleven Paca slash commands installed by the script.

## Wire the MCP server

Skills require MCP tools. Run `/paca-setup` for a step-by-step wizard, or configure manually.

<Steps>
<Step title="Choose a config scope">

<Tabs>
<Tab title="Project-level (teams)">

Create `.claude/mcp.json` in the repository root:

```json
{
  "mcpServers": {
    "paca": {
      "command": "npx",
      "args": ["-y", "@paca-ai/paca-mcp"],
      "env": {
        "PACA_API_KEY": "<your-api-key>",
        "PACA_API_URL": "http://localhost:8080"
      }
    }
  }
}
```

Do not commit API keys. Add `.claude/mcp.json` to `.gitignore`, or inject `PACA_API_KEY` from the shell environment.

</Tab>
<Tab title="Claude Code global">

```bash
claude mcp add paca \
  --env PACA_API_KEY=<your-api-key> \
  --env PACA_API_URL=<your-paca-url> \
  -- npx -y @paca-ai/paca-mcp
```

</Tab>
<Tab title="Claude Desktop">

Add the same `mcpServers.paca` block to your OS config file:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`

Restart Claude Desktop after saving.

</Tab>
</Tabs>

</Step>

<Step title="Verify connectivity">

Restart Claude Code or Claude Desktop, then ask:

> List my Paca projects

If tools return project data, setup is complete. On failure, check:

1. JSON syntax is valid
2. API key has no trailing spaces
3. Paca is reachable: `curl <PACA_API_URL>/api/v1/health`
4. `npx` and Node.js are on `PATH`

</Step>
</Steps>

For agent mode, optional env vars, permission filtering, and plugin tool loading, see [Connect MCP server](/connect-mcp) and [MCP tools reference](/mcp-tools-reference).

## `/paca` — general operations and skill routing

`/paca <request>` handles mixed project-management requests in plain English. Before acting, specialized skills load project documentation from Paca Docs so context comes from the workspace, not local files.

### Route to specialized skills

When a request clearly matches a workflow, `/paca` suggests the dedicated slash command:

| User intent | Suggested command |
|---|---|
| Turn requirements into an epic with child stories | `/paca-epic <requirements>` |
| Clarify or improve a vague task or spec | `/paca-clarify #<number>` |
| Break a task into smaller sub-tasks | `/paca-breakdown #<number>` |
| Plan a sprint from the backlog | `/paca-sprint` |
| Estimate story points | `/paca-estimate #<number>` |
| Set priorities across the backlog | `/paca-prioritize` |
| Execute a task end-to-end | `/paca-do #<number>` |
| Test or verify a task | `/paca-test #<number>` |
| Write or update documentation | `/paca-doc #<number>` |

Simple or mixed requests — create a task, list the sprint, mark a task done — are handled directly inside `/paca` without switching commands.

<RequestExample>

```text
/paca Fix the login redirect bug, assign to sprint 3
/paca What's in the current sprint?
/paca Mark task #42 as done
/paca ABC-17 is blocked — add a comment: needs design review
```

</RequestExample>

### Task-reference resolution

`/paca` scans the user message for task references before choosing tools. Resolution runs in Step 1 of the skill workflow.

| Pattern | Example | Resolution |
|---|---|---|
| `#<number>` or number in task context | `#42`, `close #7`, `task 42 is done` | `get_task_by_number(projectId, 42)` |
| `PREFIX-<number>` | `ABC-42`, `PAC-7` | `list_projects` → match `task_id_prefix` → `get_task_by_number` |
| Paca URL | `http://…/projects/{id}/tasks/{id}` | Parse both IDs → `get_task(projectId, taskId)` |
| UUID | `550e8400-e29b-41d4-a716-446655440000` | `get_task(projectId, uuid)` |

When a reference is found, fetch the task first, then apply the requested action.

### Infer action and resolve project

After resolving references, `/paca` maps intent to MCP tools:

| Intent | Primary tools |
|---|---|
| Track work — bug, feature, to-do, ticket | `create_task`, `update_task`, `list_tasks` |
| Write content — guide, spec, design, notes | `write_doc` (path-based; see below) |
| See status — board, sprint, in progress | `list_sprints`, `list_tasks` |
| Plan an iteration | `create_sprint`, `update_sprint` |
| Comment on a task | `add_task_comment` |
| Close / complete work | `update_task` (done status) |
| Break work into pieces | `create_task` × N with parent reference |

If no project is in context, call `list_projects` and pick the most relevant match. Ask the user only when two projects are equally plausible.

### MCP unavailable

When Paca MCP tools are not connected, every skill responds with:

> Paca MCP tools are not available. Run `/paca-setup` to configure the connection.

Agents must not create local TODO files, markdown docs, or task lists as a fallback.

## Specialized slash commands

Each specialized command follows a multi-step workflow defined in its `skills/<name>/SKILL.md` file. All workflows read Paca Docs for context and write results back to Paca.

### `/paca-epic`

Turns requirements into a structured epic: parent task, 3–8 child stories (confirm before creating more than 10), and a spec document. Loads `list_task_types`, `list_task_statuses`, and existing epics to avoid duplication. Child tasks reference the parent as `Part of #<epic-number>`.

<RequestExample>

```text
/paca-epic As a user I want to reset my password via email
/paca-epic #12
```

</RequestExample>

### `/paca-clarify`

Identifies ambiguities (scope gaps, edge cases, undefined terms, missing acceptance criteria), asks up to six targeted questions, then rewrites the task or doc in Paca. Updates existing records — does not create duplicate documents.

### `/paca-breakdown`

Proposes vertical-slice sub-tasks (1–2 day size) with done conditions and dependency notes. Confirms with the user before calling `create_task` for each item. Sub-tasks reference `Part of #<parent-number>`.

### `/paca-sprint`

Plans the next sprint: detects carryover from the previous sprint, infers velocity from the last 2–3 completed sprints, ranks backlog tasks, and assigns them via `update_task` (`sprintId`). Optionally writes a sprint planning note to Paca Docs.

<RequestExample>

```text
/paca-sprint
/paca-sprint next sprint, 30 points capacity
/paca-sprint sprint 4, goal: ship the auth flow
```

</RequestExample>

### `/paca-estimate`

Estimates tasks on the Fibonacci scale (1, 2, 3, 5, 8, 13). Calibrates against recently completed reference tasks. Writes estimates via `update_task` (description prefix or custom field when `list_custom_fields` shows one). Tasks at 13 points trigger a `/paca-breakdown` recommendation.

### `/paca-prioritize`

Scores backlog tasks on business value, urgency, effort, and dependencies. Assigns Critical / High / Medium / Low labels and writes them via `update_task` (`priority` field).

### `/paca-do`

End-to-end task execution: marks in progress, reads docs and `list_task_activities`, does the work (code, writing, research), comments results, updates affected docs, sets done status. Stops early if acceptance criteria are missing and offers `/paca-clarify`.

### `/paca-test`

Derives test cases from acceptance criteria and related docs. Records pass/fail in an `add_task_comment` markdown table. All pass → advance status; any fail → revert to in progress. Preserves repeatable procedures in Paca Docs.

### `/paca-doc`

Writes or updates documentation in Paca Docs — guides, references, architecture docs, BDD specs, runbooks. Checks for duplicates via `list_docs` before creating. Links docs to tasks via `add_task_comment` when applicable.

### `/paca-setup`

Interactive wizard: prerequisites → config file choice (project, global CLI, or Desktop) → snippet generation → verification → optional global skill install. Confirms each step before proceeding.

## Documentation tools in skills vs MCP

Skills describe document operations conceptually (`list_documents`, `get_document`, `create_document`, `update_document`). The current MCP server exposes path-based filesystem tools:

| Skill instruction (conceptual) | MCP tool (actual) | Notes |
|---|---|---|
| `list_documents` | `list_docs` | Tree view of folders and documents |
| `get_document` | `read_doc` | Read by path, e.g. `Architecture/API Design` |
| `create_document` / `update_document` | `write_doc` | Create or update at path; folders auto-created |
| `delete_document` | `delete_doc` | Delete document or folder by path |
| `list_doc_folders` / `create_doc_folder` | Path segments in `write_doc` | Folders created automatically on write |

Agents following skill workflows should prefer Paca Docs over local markdown files. Repository docs (README, CONTRIBUTING) remain in the codebase.

## Make Paca the project default

To bias Claude toward Paca tools without typing `/paca` on every request, add this to the project `CLAUDE.md`:

```markdown
## Project management

This project uses Paca for all project management. When working in this codebase:

- **Tasks and to-dos** → use `create_task` / `list_tasks` via the Paca MCP tools. Do not create local TODO files or add TODO comments.
- **Documentation** → use `write_doc` via Paca MCP. Do not create standalone `.md` docs unless they belong in the repository (e.g. README, CONTRIBUTING).
- **Sprint planning** → use `create_sprint` / `list_sprints` via Paca MCP.

If Paca MCP tools are not available, say so and ask the user to run `/paca-setup`.
```

## Core MCP tools used by skills

Skills route to subsets of the MCP tool surface. Full schemas and permission keys are in [MCP tools reference](/mcp-tools-reference).

| Category | Tools |
|---|---|
| Projects | `list_projects`, `get_project`, `create_project`, `update_project` |
| Tasks | `create_task`, `list_tasks`, `get_task`, `get_task_by_number`, `update_task`, `delete_task` |
| Sprints | `create_sprint`, `list_sprints`, `get_sprint`, `update_sprint`, `complete_sprint` |
| Docs | `list_docs`, `read_doc`, `write_doc`, `delete_doc`, `move_doc` |
| Comments | `add_task_comment`, `update_task_comment`, `list_task_activities` |
| Metadata | `list_task_types`, `list_task_statuses`, `list_custom_fields` |
| Views | `bulk_move_tasks`, `move_task`, `list_views` |

## Troubleshooting

<AccordionGroup>
<Accordion title="Slash command not found">

Re-run `bash scripts/install-claude-skill.sh` and confirm files exist under `~/.claude/commands/`. Start a new Claude Code session after install.

</Accordion>

<Accordion title="MCP tools missing or empty">

Run `/paca-setup`. Verify `PACA_API_KEY` is set, `PACA_API_URL` is reachable, and Node.js 18+ is installed. Check `curl <PACA_API_URL>/api/v1/health`.

</Accordion>

<Accordion title="Permission denied on project-scoped tools">

Ensure your API key has the required permissions (`tasks.read`, `tasks.write`, `docs.read`, `docs.write`, etc.). In agent mode, the impersonated agent must be a project member with the right role. See [Connect MCP server](/connect-mcp).

</Accordion>

<Accordion title="Agent creates local files instead of using Paca">

Confirm MCP is connected. Add the `CLAUDE.md` project-management block. Use `/paca` or a specialized command so the skill's no-local-files rule is loaded.

</Accordion>

<Accordion title="PREFIX-N task reference not resolving">

Call `list_projects` and confirm the project's `task_id_prefix` matches the prefix in the reference (e.g. `ABC` for `ABC-17`).

</Accordion>
</AccordionGroup>

More failure modes: [Troubleshooting](/troubleshooting).

## Related pages

<CardGroup cols={2}>
<Card title="Connect MCP server" href="/connect-mcp">
Configure `@paca-ai/paca-mcp` for Claude Code, Desktop, VS Code, and other MCP clients.
</Card>
<Card title="MCP tools reference" href="/mcp-tools-reference">
Full tool catalog, input schemas, agent-mode constraints, and plugin tools.
</Card>
<Card title="Quickstart" href="/quickstart">
Start Paca, create a project, and generate your first API key.
</Card>
<Card title="Configure AI agents" href="/configure-ai-agents">
Wire agent members, LLM config, and MCP for autonomous teammates.
</Card>
</CardGroup>
