Files
probo/contrib/claude/skills.md
Cursor Agent e3209b74ae Add @probo/skills multi-agent compliance package
Ship compliance skills and agent plugin wiring for Claude Code,
Codex, OpenCode, and Cursor via Probo MCP (OAuth 2.0). Includes
access-review and missing-signatures workflows, repo-root Git
marketplaces, validation, and npm release CI.

Signed-off-by: Cursor Agent <cursoragent@cursor.com>

Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
2026-07-10 12:59:49 +00:00

129 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Agent skills (`packages/skills`)
npm package [`@probo/skills`](../../packages/skills) ships multi-agent
compliance skills and agent plugin wiring powered by the Probo MCP API.
Compatible with **Claude Code**, **Codex**, **OpenCode**, and **Cursor** (via
MCP + skills). See [`COMPATIBILITY.md`](../../packages/skills/COMPATIBILITY.md).
## What this package ships
A **skills package** bundling:
| Component | Role |
| --- | --- |
| `skills/` | Agent Skills–compatible workflow instructions |
| `.mcp.json` | Connects agents to Probo (`/mcp/v1`, OAuth 2.0) |
| `commands/` | Explicit slash commands (e.g. `access-review`, Claude Code only) |
| `agents/` | Optional specialized subagents |
| `hooks/` | Optional event automation |
Individual capabilities are namespaced under `probo`:
- Skills: `/probo:<skill-name>` (e.g. `/probo:open-source-compliance`,
`/probo:missing-signatures`, `/probo:access-review`)
- Commands: `/probo:<command-name>` (e.g. `/probo:access-review`,
`/probo:missing-signatures`)
Published to npm as `@probo/skills`. Agent-specific manifests (`.claude-plugin/`,
`.codex-plugin/`) ship inside the same package.
## Directory structure
```
.claude-plugin/marketplace.json # repo root — Claude catalog for getprobo/probo
.agents/plugins/marketplace.json # repo root — Codex catalog for getprobo/probo
packages/skills/
.claude-plugin/
plugin.json # Claude Code manifest (required)
marketplace.json # Claude marketplace catalog (npm)
.agents/plugins/
marketplace.json # Codex catalog when marketplace root is the package
.codex-plugin/
plugin.json # Codex manifest
.mcp.json # Probo MCP server wiring
skills/
<skill-name>/
SKILL.md
references/
commands/
agents/
hooks/
scripts/validate.mjs
package.json
CHANGELOG.md
```
Only `plugin.json` belongs inside `.claude-plugin/`. All other directories
must sit at the package root.
## plugin.json rules
Claude Code validates the manifest strictly. Common pitfalls:
| Field | Expected type | Notes |
| --- | --- | --- |
| `name` | string | Skill namespace (`probo` → `/probo:open-source-compliance`) |
| `repository` | string URL | **Not** the npm-style `{ type, url }` object |
| `bugs` | string URL | **Not** the npm-style `{ url }` object |
| `version` | string | Bump on every release when using explicit versioning |
Run `npm --workspace @probo/skills run validate` before publishing.
## Probo MCP configuration
The package `.mcp.json` expects one environment variable:
- `PROBO_BASE_URL` — instance root URL
Authentication is OAuth 2.0 only. Users complete sign-in via `/mcp` or
`claude mcp login probo`. Do not document API keys or bearer tokens in the
plugin config — a pre-set `Authorization` header prevents Claude Code from
starting the OAuth flow.
## Adding a skill
1. Create `skills/<name>/SKILL.md` with YAML frontmatter (`name`, `description`).
2. Add `references/` for detailed workflow docs loaded on demand.
3. Validate and test:
```bash
npm --workspace @probo/skills run validate
claude --plugin-dir ./packages/skills
/probo:<name>
```
4. Update `packages/skills/CHANGELOG.md` under `## Unreleased`.
Skills must be self-contained — npm installs do not include `contrib/claude/`
from the monorepo.
## Adding a command
Use commands for explicit, user-invoked workflows on Claude Code only. Pair a
thin `commands/<name>.md` with a shared `skills/<name>/SKILL.md` so Codex and
OpenCode load the same workflow. Reference docs live under
`skills/<name>/references/` using paths relative to the skill directory (not
`${CLAUDE_PLUGIN_ROOT}`).
1. Create `commands/<name>.md` with frontmatter (`description`,
`argument-hint`, `disable-model-invocation: true` when writes are involved).
2. Add reference docs under `skills/<name>/references/`.
3. Register paths in `scripts/validate.mjs`.
4. Test: `/probo:<name> <args>` after `claude --plugin-dir ./packages/skills`.
## Distribution
Published to npm as `@probo/skills`. Claude marketplace entry:
```json
{
"source": {
"source": "npm",
"package": "@probo/skills"
}
}
```
Release process: [`contrib/claude/release/skills.md`](release/skills.md).