Skills
A skill is a self-contained piece of expertise – a single SKILL.md file that captures how to do one thing well. You write it once; the AI loads it on demand inside conversations or via the @skill() directive inside playbooks.
Promptmark’s skills follow the agentskills.io specification: YAML frontmatter with required name and description fields, followed by a markdown body. Skills you write in Promptmark are portable across any tool that adopts the spec.
When to Use a Skill
Skills sit between prompts and playbooks. Use one when:
- The same expertise applies across many conversations or workflows (code review, summarization, research synthesis)
- You want the AI to load it on demand rather than carrying it in every system prompt
- You want the artifact to be portable – usable in conversations, playbooks, or any other agentskills-compatible tool
If you only need a fill-in-the-blank piece of text, a Template is simpler. If you need a multi-step workflow with branching and inputs, reach for a Playbook instead.
SKILL.md Structure
A SKILL.md file has two parts: YAML frontmatter and a markdown body.
---
name: code-review
description: Performs systematic code review focused on quality, security, and maintainability.
license: MIT
---
# Code Review Skill
You are a senior engineer reviewing a code change. Apply these criteria in order:
## Quality
...
## Security
...
## Maintainability
...Frontmatter Fields
| Field | Required | Description |
|---|---|---|
name |
Yes | Slug-like identifier. Must match ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$ – lowercase, alphanumerics and hyphens, no consecutive hyphens. Max 64 characters. Must be unique within your library. |
description |
Yes | One-line summary of what the skill does. Shown in the catalog and used by the AI to decide when to load the skill. Max 1,024 characters. |
license |
No | License identifier (e.g. MIT, Apache-2.0) |
compatibility |
No | Free-form compatibility note. Max 500 characters. |
metadata |
No | Free-form key-value map for your own use |
allowed-tools |
No | Free-form string per the spec. Experimental. |
Body
The markdown body is the actual skill content – the instructions the AI receives when the skill is loaded. The agentskills.io spec recommends keeping bodies under 500 lines or 5,000 tokens for progressive disclosure. Promptmark warns when you exceed those caps but does not block save.
Total file size (frontmatter + body) is capped at 200 KB.
Creating a Skill
Three starter skills are seeded into every new account:
| Starter | Purpose |
|---|---|
code-review |
Systematic code review across quality, security, maintainability |
summarize-long-doc |
Summarize long documents with key points and action items |
extract-action-items |
Pull action items, owners, and deadlines from meeting notes or emails |
To author your own:
- Navigate to Skills in the sidebar
- Click New Skill
- Write your SKILL.md in the editor (frontmatter at the top, body below)
- Click Validate to check the file against the spec
- Click Save
The editor uses a YAML + markdown mixed-mode – frontmatter highlights as YAML, the body as markdown. A live counter shows characters, approximate tokens, and lines as you type.
@skill() – toggle off the Draft checkbox before publishing.
How Skills Load
Promptmark uses progressive disclosure – the AI sees a sanitized catalog of your skills, and loads the full SKILL.md only when relevant.
In Conversations
When a conversation starts, Promptmark injects a sanitized catalog of your published (non-draft) skills into the system prompt. Each entry has the skill name and description, capped at 200 characters per description for prompt-injection defense.
When the AI decides a skill is relevant, it calls the load_skill tool with the skill’s name. Promptmark returns the full SKILL.md content (frontmatter + body), capped at 64 KB. The AI uses that content for the rest of the conversation.
The catalog is capped at the first 100 published skills. If you have more than that, the AI will only see the first 100; reorder by publishing/unpublishing or pruning unused skills.
In Playbooks
Inside a playbook step, use the @skill(name) directive to load a skill at execution time:
## STEP 2: Review the diff
@skill(code-review)When the playbook executes step 2, Promptmark resolves code-review against your library, fetches its SKILL.md, and injects the full text as the step’s prompt. This is a sibling to @prompt(library:ID) – where @prompt() inlines a prompt artifact, @skill() inlines a skill artifact.
Drafts don’t resolve. Trying to reference an unpublished or missing skill produces an error visible in the execution log.
Versioning
Every save creates a snapshot. The skill’s editor page shows the current version count and lets you restore any previous version. Restoring creates a new snapshot of the current state first, so nothing is lost.
Safety Scanning
Skills run through the same safety scanning as prompts:
- Layer 1 (Local) – PII, prompt injection, and secrets detection on every save
- Layer 2 (Cloud moderation) – Violence, harassment, self-harm, dangerous content (when configured)
Each scan category uses the same trinary flag system as prompts (clean / has / had-acknowledged). See the Prompts & Templates guide for the full scan-flag model.
MCP Tools
Skills are fully manageable via MCP tools. AI assistants connected to your Promptmark MCP server can list, read, create, update, delete, and search your skills.
| Tool | Description |
|---|---|
list_skills |
List your skills with optional search and pagination |
get_skill |
Get the full SKILL.md (frontmatter + body) for a skill |
create_skill |
Create a new skill from SKILL.md content (validated against the spec) |
update_skill |
Update an existing skill (auto-snapshots before changes) |
delete_skill |
Soft-delete a skill |
search_skills |
Search skills by name, title, or description substring |
For full MCP tool schemas, see the MCP Reference.
Tips
- Keep skills focused. A skill should do one thing well. If yours grows past 500 lines, consider splitting it into two skills with different
nameslugs. - Description is doing real work. The AI uses the description to decide whether to load the skill. Write it as a one-sentence answer to “when should I use this?”.
- Write skills in second person (“you are…”). They’re injected as the AI’s instructions, not as user input.
- Publish before referencing. Drafts don’t resolve in conversations or playbooks – a forgotten draft toggle is the most common reason
@skill()errors.
What’s Next
- agentskills.io specification – The canonical SKILL.md spec
- Playbooks – Workflows that can load skills via
@skill() - Prompts & Templates – The simpler artifact when you don’t need a full skill