SKILL.md Format (rp1)¶
rp1 uses the Agent Skills open standard for all 39 invocable prompts. Each skill is a SKILL.md file that works natively on Claude Code and generates platform-specific artifacts for OpenCode via the build pipeline.
For the full standard specification (directory layout, frontmatter fields, tool permissions, etc.), see agentskills.io.
This page documents rp1-specific conventions layered on top of the standard.
Frontmatter Schema¶
rp1 skills place platform-specific fields in the metadata map to comply with the Agent Skills whitelist (name, description, license, allowed-tools, metadata).
---
name: build-fast
description: "Quick-iteration development for small/medium scope changes with persistent artifacts and optional review."
allowed-tools: Bash(echo *), Bash(rp1 *), Read, Write, Edit, Glob, Grep, Task, AskUserQuestion
metadata:
version: 3.0.0
tags:
- core
- code
- feature
created: 2026-01-01
updated: 2026-02-26
author: cloud-on-prem/rp1
argument-hint: "[development-request...] [--afk] [--review] [--git-commit]"
---
rp1 Metadata Fields¶
| Field | Level | Required | Notes |
|---|---|---|---|
metadata.version |
nested | Yes* | Semantic version (e.g., 2.1.0) |
metadata.tags |
nested | No | Category tags as YAML list |
metadata.created |
nested | Yes* | Creation date (YYYY-MM-DD) |
metadata.updated |
nested | No | Last update date (YYYY-MM-DD) |
metadata.author |
nested | Yes* | Author identifier (e.g., cloud-on-prem/rp1) |
metadata.argument-hint |
nested | No | Usage hint string for argument notation |
metadata.sub_agents |
nested | No | List of agent references this skill delegates to |
*Required for the build pipeline to produce valid manifests.
metadata.sub_agents¶
Skills that delegate work to agents via the Task tool should declare their sub-agent inventory in the metadata.sub_agents field. Each entry uses the rp1-{plugin}:{agent-name} format, matching the agent's .md file in the corresponding plugin's agents/ directory.
metadata:
version: 3.0.0
tags:
- core
sub_agents:
- "rp1-dev:task-builder"
- "rp1-dev:task-reviewer"
- "rp1-dev:code-checker"
Build-time validation: The Codex build pipeline validates declared sub-agents against actual agent files. A missing agent .md file causes a build error. Undeclared content references and dead declarations produce warnings.
Format: rp1-{plugin}:{agent-name} where {plugin} is base, dev, or utils, and {agent-name} matches the filename (without .md) in plugins/{plugin}/agents/.
Cross-platform: The sub_agents field is ignored by Claude Code and OpenCode (unknown metadata fields are safely skipped). It is used by the Codex build pipeline for agent name translation and validation.
allowed-tools Defaults¶
rp1 skills that resolve environment variables or call rp1 CLI tools should include both Bash(echo *) and Bash(rp1 *):
Bash(echo *)-- Shell echo commandsBash(rp1 *)-- rp1 CLI invocations including RP1_ROOT resolution (rp1 agent-tools rp1-root-dir,rp1 agent-tools emit,rp1 agent-tools mmd-validate, etc.)
Important: Do NOT use echo ${VAR:-default} syntax in skills. Claude Code blocks ${} parameter substitution in Bash commands. Use rp1 agent-tools rp1-root-dir instead.
Argument-Hint Notation¶
| Notation | Meaning | Example |
|---|---|---|
<param> |
Required parameter | <feature-id> |
[param] |
Optional parameter | [context] |
[param...] |
Variadic optional | [files...] |
[--flag] |
Optional flag | [--afk] |
Standard ## Parameters Section¶
The ## Parameters section provides model-driven parameter parsing. Instead of a CLI round-trip, the model extracts parameters directly from the user's natural language input.
Template¶
## Parameters
Extract these parameters from the user's input:
| Parameter | Required | Default | Description |
|-----------|----------|---------|-------------|
| `DEVELOPMENT_REQUEST` | Yes | - | The freeform development request text |
| `AFK` | No | `false` | Non-interactive mode. Set `true` if user says "afk", "no prompts", or "unattended" |
**Environment values** (resolve via shell):
- `RP1_ROOT`: !`rp1 agent-tools rp1-root-dir` (extract `data.root` from JSON response)
Rules¶
- Parameter table: Each parameter has a name, required flag, default value, and description with natural language extraction hints.
- Environment values: Use
!`command`shell execution syntax for values from the environment. Confirmed cross-platform (Claude Code, OpenCode, Codex). - No
$ARGUMENTS: Do not use platform-specific$ARGUMENTSsubstitution. - No
$1,$2positional params: The model infers parameters from context. - Flag detection via natural language: Boolean flags extracted by matching user phrases (e.g., "afk" ->
AFK=true).
Skills Without Parameters¶
Omit the ## Parameters section entirely. Environment values can appear inline:
Reference Example: knowledge-load¶
Before (Legacy Command Format)¶
---
name: knowledge-load
version: 2.1.0
description: Ingests and prepares codebase documentation...
allowed-tools:
- Bash(echo *)
- Bash(rp1 *)
argument-hint: "[mode]"
tags:
- core
- documentation
- deprecated
created: 2025-10-25
updated: 2025-12-06
author: cloud-on-prem/rp1
---
After (Canonical SKILL.md Format)¶
---
name: knowledge-load
description: "Ingests and prepares codebase documentation, builds internal knowledge graphs, and creates optimized context representations for downstream analysis tasks."
allowed-tools: Bash(echo *), Bash(rp1 *)
metadata:
version: 2.1.0
tags:
- core
- documentation
- deprecated
created: 2025-10-25
updated: 2026-02-26
author: cloud-on-prem/rp1
argument-hint: "[mode]"
---
What Changed¶
| Change | Detail |
|---|---|
| Directory | commands/knowledge-load.md -> skills/knowledge-load/SKILL.md |
| Frontmatter | version, tags, created, updated, author, argument-hint moved into metadata map |
| allowed-tools | Comma-separated string format |
| PARSE ARGUMENTS | Entire section removed; replaced by ## Parameters |
$1 reference |
Replaced with {LOAD_MODE} named parameter |
| Prompt body | Unchanged (all workflow logic preserved) |
Migration Checklist¶
Use this checklist when creating a new skill:
- [ ] Create directory:
plugins/{plugin}/skills/{skill-name}/ - [ ] Create
SKILL.mdwith frontmatter (standard fields at top, rp1 fields inmetadata) - [ ] Add
## Parameterssection with parameter table and extraction hints - [ ] Include
Bash(echo *)andBash(rp1 *)inallowed-toolsif the skill uses environment resolution or rp1 CLI tools - [ ] Preserve all prompt logic, agent spawning, workflow sections
- [ ] Extract significant embedded examples to
EXAMPLES.mdonly if warranted - [ ] Verify skill is discoverable and invocable on Claude Code
- [ ] Verify OpenCode build pipeline generates correct artifact from skill source
Platform Tags¶
Skills that reference platform-varying behavior (agent dispatch, user input, planning, web access, file editing, permissions) should use semantic Liquid tags instead of raw {% if platform %} conditionals or CC-native tool names.
Example: Agent Dispatch¶
Instead of writing CC-native syntax:
Use the dispatch_agent tag:
The tag produces the correct spawn instructions for each platform, including the full spawn/wait protocol on Codex.
Example: User Input¶
Example: File Editing¶
For the full tag reference, see Platform Tags Reference. For the conceptual guide, see Platform Tags.
Related Concepts¶
- Agent Skills Standard - The open standard for agent skills
- Skill-Agent Pattern - How skills delegate to agents
- Constitutional Prompting - How agent prompts are structured
- Platform Tags - Semantic tags for platform-varying behavior