modules/home/programs/cli-agents/shared/skills/skill-creator/SKILL.md
Guide for creating or importing agent skills. Use when users ask to add/create/update/copy/adapt a skill (including from URLs or GitHub). Enforces skill format, trigger-quality descriptions, and source attribution via an HTML comment at the end of SKILL.md when externally sourced.
npx skillsauth add not-matthias/dotfiles-nix skill-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill guides you through creating effective skills that extend agent capabilities.
Skills are modular, self-contained packages that extend agent capabilities by providing specialized knowledge, workflows, and tools. They transform a general-purpose agent into a specialized agent equipped with procedural knowledge.
Skills Provide:
Skills use progressive disclosure to manage context efficiently:
Metadata (name + description) - Always loaded (~100 tokens)
SKILL.md body - Loaded only when skill triggers (<5000 tokens)
Bundled resources - Loaded as needed by agent
skill-name/
├── SKILL.md # Required: YAML frontmatter + instructions
├── scripts/ # Optional: Executable code
├── references/ # Optional: Documentation for context
└── assets/ # Optional: Templates, images, data files
---
name: skill-name # Required: lowercase-hyphens
description: What this skill does and # Required: 1-1024 chars
when to use it. Include triggers and
specific use cases.
license: MIT # Required if adapted
---
<!-- Source: https://github.com/original/repo/path -->
# Skill Title
Brief overview of what this skill does.
## When to Use
- Scenario 1: When user asks for...
- Scenario 2: When working with...
## Workflow
### Step 1: Action
Clear instructions...
### Step 2: Processing
What to do next...
## Examples
### Example 1: Basic
```bash
command --flag value
Issue: Description
### Bundled Resources
#### scripts/
Executable code for deterministic reliability.
**When to include:**
- Same code rewritten repeatedly
- Fragile operations requiring precision
- Complex logic better handled by code
**Examples:**
- `scripts/rotate_pdf.py` for PDF manipulation
- `scripts/validate_schema.py` for data validation
**Benefits:**
- Token efficient (don't load into context)
- Deterministic execution
- May run without agent reading
#### references/
Documentation for agent to reference while working.
**When to include:**
- Detailed documentation (API specs, schemas)
- Domain knowledge (policies, guidelines)
- Multiple variants/frameworks (aws.md, gcp.md)
**Examples:**
- `references/api_docs.md` - API specifications
- `references/schema.md` - Database schemas
- `references/policies.md` - Company policies
**Best practices:**
- Keep SKILL.md lean; move details here
- Organize by domain (finance.md, sales.md)
- Include grep patterns for large files (>10k words)
- All references must link directly from SKILL.md
#### assets/
Files used in final output, not loaded into context.
**When to include:**
- Templates for output generation
- Brand assets (logos, fonts)
- Boilerplate code to copy/modify
**Examples:**
- `assets/logo.png` for brand assets
- `assets/frontend-template/` for React boilerplate
- `assets/slides.pptx` for PowerPoint templates
## Skill Creation Process
### Step 1: Understand with Concrete Examples
Gather concrete usage examples:
- "What functionality should this skill support?"
- "Can you give examples of how this skill would be used?"
- "What would trigger this skill?"
### Step 2: Plan Reusable Contents
Analyze each example to identify:
1. Scripts needed (repeatedly rewritten code)
2. References needed (schemas, documentation)
3. Assets needed (templates, boilerplate)
### Step 3: Create the Skill File
**File naming:**
- Use lowercase with hyphens: `skill-name.md`
- Must match `name` in frontmatter
**Frontmatter (YAML):**
```yaml
---
name: skill-name
description: Clear description of what this skill does and
when to use it. Include specific triggers like:
"Use when working with X files, Y workflows, or Z APIs."
license: MIT # If adapting external content
---
<!-- Source: https://original-source-url -->
Description best practices:
Content structure:
# Skill Name
Brief overview.
## When to Use
List scenarios that trigger this skill.
## Workflow
### Step 1: Initial Action
Clear instructions.
### Step 2: Processing
Next steps.
### Step 3: Completion
How to finish.
## Examples
### Basic Usage
```bash
example command
Problem: Description
**Writing guidelines:**
- Use imperative/infinitive form
- Challenge each piece: "Does agent need this?"
- Prefer concise examples over verbose explanations
- Keep under ~500 lines
- Set appropriate degrees of freedom for the task
### Step 5: Add Bundled Resources (Optional)
**Progressive disclosure patterns:**
**Pattern 1: High-level guide with references**
```markdown
# PDF Processing
## Quick start
[Basic workflow]
## Advanced features
- **Forms**: See [FORMS.md](references/FORMS.md)
- **API reference**: See [REFERENCE.md](references/REFERENCE.md)
Pattern 2: Domain-specific organization
bigquery-skill/
├── SKILL.md
└── references/
├── finance.md
├── sales.md
└── product.md
Pattern 3: Conditional details
## Creating documents
Use docx-js. See [DOCX-JS.md](references/DOCX-JS.md).
**For tracked changes**: See [REDLINING.md](references/REDLINING.md)
Frontmatter checklist:
name matches filenamename is lowercase-hyphens onlydescription clear and under 1024 charslicense included if adaptedContent checklist:
Skills should be treated as living documentation. Periodically:
llms.txt: See if the target tool has an AI-friendly index.The context window is a public good. Skills share space with system prompt, conversation history, and user requests.
Default assumption: The agent is already smart. Only add context it doesn't have.
Match specificity to task fragility:
| Freedom Level | Use When | Format | |--------------|----------|--------| | High | Multiple approaches valid, context-dependent | Text instructions | | Medium | Preferred pattern exists, some variation OK | Pseudocode/scripts with params | | Low | Fragile operations, consistency critical | Specific scripts, few parameters |
Do NOT create extraneous documentation:
Include only what the agent needs to do the job.
Information should live in ONE place:
Avoid duplication between SKILL.md and references.
---
name: skill-name
description: What this skill does and when to use it.
Include specific triggers and use cases.
license: MIT # If adapting external work
---
<!-- Source: https://github.com/original/source -->
# [Skill Name]
[Overview paragraph]
## When to Use
- [Scenario 1]
- [Scenario 2]
## Prerequisites
[List any requirements]
## Workflow
### Step 1: [Action]
[Instructions]
### Step 2: [Action]
[Instructions]
## Examples
### [Example Name]
[Code example]
## Resources
- [reference/file.md] - [When to use]
- [scripts/script.py] - [What it does]
## Common Issues
**[Issue]**: [Description]
- [Solution]
## See Also
- https://agentskills.io/specification
- https://agentskills.io/llms.txt
| Skill | Purpose | Structure |
|-------|---------|-----------|
| github-raw-fetch.md | URL transformation | Simple workflow |
| rust.md | Development practices | Multiple workflows |
| ast-grep.md | Code search | Multi-phase workflow |
| technical-researcher.md | Research methodology | Complex reasoning |
tools
Spawn the pi coding agent with a specific model/provider. Use when asked to run pi with a particular model, switch pi's model, use DeepSeek V4 Flash/Pro in pi, or look up pi's --model/--provider/--models CLI flags and thinking-level shorthand.
development
Navigate to directories using zoxide (frecency-based directory jumper). Use when the user says "go to", "navigate to", "cd to", "jump to" a project or directory by nickname/partial name (e.g. "go to my dotfiles", "jump to dot").
tools
Use when manipulating Zellij sessions, creating tabs or panes, sending commands to panes, capturing output, or looking up Zellij CLI commands for terminal multiplexer operations
development
Emulates not-matthias's technical blog writing style. Use when writing blog posts, technical articles, README content, or any long-form technical prose. Produces investigation-driven, first-person narratives with dry humor, practical code examples, and concrete takeaways.