Skills standard compliance

Implement Agent Skills standard (https://agentskills.io/specification):
- Validate name (must match parent dir, lowercase, max 64 chars)
- Validate description (required, max 1024 chars)
- Warn on unknown frontmatter fields
- Warn on name collisions (keep first)
- Change prompt format to XML structure
- Remove {baseDir} placeholder (use relative paths)
- Add tests and update documentation

fixes #231
This commit is contained in:
Mario Zechner 2025-12-19 00:11:39 +01:00
parent 2f86c8bc3c
commit 05b7b81338
21 changed files with 692 additions and 149 deletions

View file

@ -488,7 +488,9 @@ Usage: `/component Button "onClick handler" "disabled support"`
### Skills
Skills are self-contained capability packages that the agent loads on-demand. A skill provides specialized workflows, setup instructions, helper scripts, and reference documentation for specific tasks. Skills are loaded when the agent decides a task matches the description, or when you explicitly ask to use one.
Skills are self-contained capability packages that the agent loads on-demand. Pi implements the [Agent Skills standard](https://agentskills.io/specification), warning about violations but remaining lenient.
A skill provides specialized workflows, setup instructions, helper scripts, and reference documentation for specific tasks. Skills are loaded when the agent decides a task matches the description, or when you explicitly ask to use one.
**Example use cases:**
- Web search and content extraction (Brave Search API)
@ -508,6 +510,7 @@ Skills are self-contained capability packages that the agent loads on-demand. A
```markdown
---
name: brave-search
description: Web search via Brave Search API. Use for documentation, facts, or web content.
---
@ -515,18 +518,18 @@ description: Web search via Brave Search API. Use for documentation, facts, or w
## Setup
\`\`\`bash
cd {baseDir} && npm install
cd /path/to/brave-search && npm install
\`\`\`
## Usage
\`\`\`bash
{baseDir}/search.js "query" # Basic search
{baseDir}/search.js "query" --content # Include page content
./search.js "query" # Basic search
./search.js "query" --content # Include page content
\`\`\`
```
- `description`: Required. Determines when the skill is loaded.
- `{baseDir}`: Placeholder for the skill's directory.
- `name`: Required. Must match parent directory name. Lowercase, hyphens, max 64 chars.
- `description`: Required. Max 1024 chars. Determines when the skill is loaded.
**Disable skills:** `pi --no-skills` or set `skills.enabled: false` in settings.