---
name: paper-help
version: 1.1.0
description: /paper-help, /paper-update, /paper-sync, what paper skills can I use, list paper skills, help with paper, paper skill catalog, update paper skills, sync paper skills, update all paper skills, อัพเดต paper skills, อัพเดทสกิล paper
allowed-tools: Read Glob Grep
---

# paper-help

Meta-skill that lists every `paper-*` skill the user has installed, plus everything published on paper.farzai.com, and helps install or update them.

This skill is the entry point for someone who has just added a `paper-*` MCP server and wants to discover what they can now do.

## When to invoke

**Catalog / discovery**
- `/paper-help`
- "what paper skills can I use"
- "list paper skills"
- "help with paper" (only when the user has not specified a more targeted skill)

**Update / sync** (jumps straight to Workflow step 4 — installs every skill via `get_skill_versions`)
- `/paper-update`
- `/paper-sync`
- "update paper skills"
- "sync paper skills"
- "update all paper skills"
- "อัพเดต paper skills" / "อัพเดทสกิล paper"

When invoked via an update trigger, skip step 2 (catalog rendering) — go to step 4 with `install all` semantics and report which skills were refreshed at which version.

## Workflow

### 1. List server-side canonical versions

Call `get_skill_versions` (available on both `mcp__paper-personal__*` and `mcp__paper-global__*` endpoints). It returns:

```json
{
  "skills": [
    { "name": "paper-save", "version": "1.0.0", "description": "...", "installUrl": "/docs/skills/paper-save.md", "references": [] },
    { "name": "paper-ask", "version": "1.0.0", "description": "...", "installUrl": "/docs/skills/paper-ask.md", "references": [] },
    { "name": "paper-help", "version": "1.0.0", "description": "...", "installUrl": "/docs/skills/paper-help.md", "references": [] },
    { "name": "paper-contribute", "version": "1.0.0", "description": "...", "installUrl": "/docs/skills/paper-contribute.md", "references": [] }
  ]
}
```

### 2. Show the catalog

For each skill, show:
- Name + version
- One-line description (the trigger phrases — they explain the skill better than any prose)
- Which servers it works against: personal, global, or both

| Skill | Personal | Global | Notes |
|---|---|---|---|
| `paper-save` | yes | redirects → `paper-contribute` | direct-write for personal; offers PR redirect for global |
| `paper-ask` | yes | yes | read-only search + synthesis |
| `paper-help` | yes | yes | this skill |
| `paper-contribute` | n/a | yes | PR workflow against the global vault |

### 3. Detect stale local copies

For each skill the user has installed locally (under `~/.claude/skills/<name>/SKILL.md`):
- Compare `frontmatter.version` in the local file against the server-canonical version from `get_skill_versions`.
- Flag any that are behind:

> ⚠ paper-save local version is 0.9.1 but server is 1.0.0. Run `/paper-help install paper-save` to update.

### 4. Install on request

When the user says "install paper-X" or "update paper-X":
1. Fetch `https://paper.farzai.com/docs/skills/<name>.md` (or the appropriate base URL from `installUrl`).
2. Write to `~/.claude/skills/<name>/SKILL.md`. Create the folder if missing.
3. For each reference file listed under `references[]`, fetch `https://paper.farzai.com/docs/skills/<name>/references/<file>.md` and write to `~/.claude/skills/<name>/references/<file>.md`.
4. Tell the user to restart Claude Code so it discovers the change.

If the user says "install all" or "/paper-help install":
- Loop through every skill returned by `get_skill_versions` and install each.

### 5. Server discovery

If no `mcp__paper-*__get_skill_versions` is available (user has no `paper-*` server bound yet), point them to https://paper.farzai.com/docs/mcp-setup.

## Self-documenting contract

This skill teaches Claude how the registry works:
- The `version:` frontmatter in `src/lib/skills/templates/<name>/SKILL.md` on the server is canonical.
- The user-installed `~/.claude/skills/<name>/SKILL.md` is a cached copy.
- `get_skill_versions` is the truth source for the latest version.
- Drift = user's local copy is older than the server's. The fix is to re-install via this skill.

## Error matrix

| Error | Action |
|---|---|
| `401 unauthorized` from any paper-* tool | Check the `WWW-Authenticate` header. If `resource_metadata=...` is present, Claude Code handles the OAuth refresh — retry once. If the retry also 401s, direct the user to `/app/connections` to reconnect. |
| `get_skill_versions` not available | User has no `paper-*` server bound. Point to https://paper.farzai.com/docs/mcp-setup. |
| Network fetch fails when installing | Tell the user the URL and ask them to paste the contents manually. |
| File-write permission denied | Tell the user the target path and ask them to create it manually. |

## Example session

User: "/paper-help"

You:
1. Call `mcp__paper-personal__get_skill_versions` (or `mcp__paper-global__get_skill_versions`, whichever is bound).
2. Read `~/.claude/skills/paper-save/SKILL.md` → frontmatter version is `0.9.1`. Server says `1.0.0`. Flag stale.
3. Output catalog table. Note stale skill. Ask whether to update.

User: "update paper-save"

You:
1. Fetch `https://paper.farzai.com/docs/skills/paper-save.md`.
2. Write to `~/.claude/skills/paper-save/SKILL.md` (overwriting).
3. "Done — restart Claude Code to pick up the new version."
