Skills are markdown files (SKILL.md) that inject domain-specific knowledge into an agent’s system prompt. They let you teach agents new capabilities without changing code.
Polpo implements the open skills.sh skill format — the same SKILL.md format used by Claude Code, Cursor, Windsurf, and other coding agents. Skills you create for Polpo work on any compatible agent, and vice versa.
How skills work
- A skill is a
SKILL.md file with YAML frontmatter (name, description, allowed tools)
- Skills live in
.polpo/skills/ at the project level
- You assign skills to individual agents — each agent can have different skills
- Assigned skills are automatically injected into the agent’s system prompt on every response
You don’t need to reference skills manually — Polpo handles the injection. See how the prompt is assembled for the full composition order.
---
name: frontend-design
description: Expert knowledge for UI/UX design decisions
tools: [browser_navigate, search_web]
tags: [design, frontend]
---
Focus on typography, color theory, spatial composition,
and motion design. Prefer system fonts for performance...
Managing skills
Skills live in .polpo/skills/ and are assigned to agents in .polpo/agents.json via the skills array. Deploy changes to the cloud with polpo deploy.
Install from GitHub
Clone a skill pack into your project:
git clone https://github.com/your-org/your-skills .polpo/skills/your-skills
Or use your coding agent with the Polpo skills installed to manage skills for you.
Create a skill
Create a new directory under .polpo/skills/ with a SKILL.md file:
.polpo/skills/my-skill/SKILL.md
Assign to an agent
Add the skill name to the agent’s skills array in .polpo/agents.json:
{
"name": "designer",
"skills": ["frontend-design"]
}
The agent will receive the skill content in its system prompt on the next interaction.
API
Skills can also be managed via the REST API:
| Method | Path | Description |
|---|
GET | /v1/skills | List all skills with assignments |
POST | /v1/skills | Create a new skill |
DELETE | /v1/skills/{name} | Delete a skill |
POST | /v1/skills/{name}/assign | Assign skill to an agent |
POST | /v1/skills/{name}/unassign | Unassign skill from an agent |
POST | /v1/skills/add | Install skills from a GitHub repository |
SDK
const skills = await client.getSkills();
await client.assignSkill("frontend-design", "designer");
await client.unassignSkill("frontend-design", "designer");
Skill structure
.polpo/skills/
├── frontend-design/
│ └── SKILL.md
├── api-security/
│ └── SKILL.md
└── data-analysis/
└── SKILL.md
Each skill is a directory containing a SKILL.md file. The frontmatter defines metadata; the body is the knowledge injected into the agent’s prompt.
Frontmatter fields
| Field | Type | Description |
|---|
name | string | Skill identifier |
description | string | Short description |
tools | string[] | Tools this skill is allowed to use |
tags | string[] | Optional categorization |
category | string | Optional grouping |
Skills are composable — assign multiple skills to the same agent to combine domain expertise.