Appearance
Skills
Reusable instruction sets that agents load on demand — based on the AgentSkills.io standard.
What are Skills?
A skill is a SKILL.md file with YAML frontmatter metadata and markdown instructions. Instead of hardcoding long prompts into your agent, you publish skills to the registry and agents load them at runtime via Skill.from_url().
Key benefits:
- 📦 Reusable — one skill can be shared across many agents
- 🔄 Progressive disclosure — only metadata is in the system prompt; full instructions load on demand (saves tokens)
- 🌐 Standard — compatible with any AgentSkills.io client (Claude Code, Cursor, etc.)
- 🔍 Discoverable — skills are searchable in the UAPI catalog
SKILL.md Format
markdown
---
name: concise-answers
description: Keep responses short, cite tools used, prefer bullet points
---
## Instructions
Keep every response under 150 words. Always name the tool you used, if any.
Prefer bullet points over prose.Frontmatter Rules (per AgentSkills.io spec)
name— required, 1-64 chars, lowercase alphanumeric + hyphens, no leading/trailing/consecutive hyphensdescription— required, human-readable summaryallowed-tools— (optional) list of tool names the skill may use
Using Skills in Your Agent
python
from strands import Agent
from strands.models import BedrockModel
from strands.vended_plugins.skills import AgentSkills
model = BedrockModel(model_id="us.amazon.nova-pro-v1:0")
agent = Agent(
model=model,
session_manager=session_manager,
plugins=[AgentSkills(skills=[
"https://api.universalapi.co/skills/s/snowtimber/concise-answers/SKILL.md",
"https://api.universalapi.co/skills/s/snowtimber/mcp-tool-design/SKILL.md",
])],
)
return agent, []The AgentSkills plugin:
- Injects
<available_skills>metadata into the system prompt - Registers a
skillstool the agent can call to activate a skill - When activated, the full instructions are loaded and injected
Creating Skills
Via the API
bash
curl -X POST https://api.universalapi.co/skills/create \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"skillMd": "---\nname: my-skill\ndescription: ...\n---\n\n## Instructions\n...",
"visibility": "public"
}'Via the UI
Navigate to universalapi.co/skills and click Create Skill.
Raw SKILL.md Endpoint
Every skill has a raw URL that serves text/markdown — this is what Skill.from_url() fetches:
GET https://api.universalapi.co/skills/s/{owner}/{slug}/SKILL.mdPublic skills are accessible without authentication. Private skills require the owner's bearer token.
Starter Skills
The following public skills ship with the platform:
| Skill | Slug URL | Description |
|---|---|---|
| concise-answers | snowtimber/concise-answers | Keep responses short, cite tools used, prefer bullet points |
| uapi-agent-authoring | snowtimber/uapi-agent-authoring | Guidelines for writing correct Strands agents on UAPI |
| mcp-tool-design | snowtimber/mcp-tool-design | Best practices for MCP server tool names, descriptions, and schemas |
| sam-nested-stacks-by-capability | snowtimber/sam-nested-stacks-by-capability | Opinionated AWS SAM architecture — root template + nested stacks by product capability |
| live-source-mirror-definition-of-done | snowtimber/live-source-mirror-definition-of-done | When a datastore is the source of truth for code, follow the 5-step live push loop |
| dogfood-first-tooling | snowtimber/dogfood-first-tooling | Use your own platform tools first — MCP → curl → scripts |
| docs-sync-checklist | snowtimber/docs-sync-checklist | Every feature must touch four documentation layers |
Raw URL pattern: https://api.universalapi.co/skills/s/{owner}/{slug}/SKILL.md |
Security Note
Public skills are consumed by other users' agents as untrusted instruction text. The platform runs AI classification to flag concerning patterns (riskFlags in classification), but skill authors should avoid including instructions that request credential extraction or data exfiltration.