A practical guide for creating and publishing high-quality Agent Skills (paks) to the Paks registry...
Paks are reusable instruction sets that enhance AI coding agents. This guide covers the complete workflow from creation to publishing on the Paks registry, with emphasis on writing high-quality content that agents can effectively use.
paks CLI installed (brew tap stakpak/stakpak && brew install paks)# Create a new skill with the paks CLI
paks create my-skill
# Or with optional directories
paks create my-skill --with-scripts --with-references
This generates:
my-skill/
āāā SKILL.md # Required: Manifest + instructions
āāā scripts/ # Optional: Helper scripts
āāā references/ # Optional: Reference documentation
āāā assets/ # Optional: Static files
The SKILL.md file uses YAML frontmatter for metadata:
---
name: my-skill # Required: 1-64 chars, lowercase + hyphens
description: | # Required: 1-1024 chars
What this skill does and when to use it.
license: MIT # Optional: License type
tags: # Recommended: For discoverability
- keyword1
- keyword2
metadata:
author: Your Name <email@example.com>
version: "1.0.0" # Semantic version (must match git tag)
---
# Skill Title
## Instructions
Your skill instructions go here...
Frontmatter Fields:
| Field | Required | Description |
|---|---|---|
name |
Yes | Skill identifier (lowercase, hyphens only) |
description |
Yes | What the skill does, when to use it |
license |
No | License type (MIT, Apache-2.0, etc.) |
tags |
No | Keywords for search/discovery |
metadata.version |
Yes | Semantic version matching git tag |
metadata.author |
No | Author name and email |
Writing a Good Description:
The description helps agents know what this skill is about, its scope, and when to use it. Keep it short and outcome-oriented.
Writing Good Tags:
Create at least three tags to help agents find this skill via keyword search. Use specific, relevant terms.
After the frontmatter, structure your content with clear goals and actionable workflows:
# Skill Title
## Goals
Explain the outcome the user will achieve by following this skill.
Write as clear, outcome-oriented sentences.
## Prerequisites
Required tools, files, or context.
## Workflow / Instructions
### Step 1: First Action
**Action:** Imperative instruction (e.g., "Install the CLI tool")
**Reasoning:** Why this step is required (optional but recommended)
**Examples:** Code samples, commands, or configuration snippets
### Step 2: Next Action
Continue with clear, atomic steps.
## Troubleshooting
Common issues and solutions.
## References
- [Official Documentation](https://example.com)
- Related skills
Structure & Style:
Writing for Agents:
What to Include:
Optional Enhancements:
# Validate skill structure and frontmatter
paks validate my-skill
# Strict mode (warnings become errors)
paks validate my-skill --strict
# Login with API token
paks login --token <your-api-token>
# Verify login
paks login
Important: The git tag version must match metadata.version in SKILL.md.
# Dry run first (see what would be published)
paks publish my-skill --dry-run
# Publish with automatic version bump
paks publish my-skill --bump patch # 1.0.0 ā 1.0.1
paks publish my-skill --bump minor # 1.0.0 ā 1.1.0
paks publish my-skill --bump major # 1.0.0 ā 2.0.0
# Publish using existing git tag (non-interactive)
paks publish my-skill --tag v1.0.0 --yes
The paks registry uses git tags for versioning. The workflow:
metadata.version in SKILL.mdgit tag v1.0.0git push origin v1.0.0paks publish my-skill --tag v1.0.0 --yesCommon Version Errors:
| Error | Cause | Solution |
|---|---|---|
| "Tag does not match version" | Tag and SKILL.md version mismatch | Update SKILL.md version to match tag |
| "Tag already exists" | Trying to reuse existing tag | Create new tag with bumped version |
| "No SKILL.md found at path" | Tag points to commit without SKILL.md | Create new tag after adding SKILL.md |
For repositories with multiple skills:
my-repo/
āāā skill-one/
ā āāā SKILL.md
āāā skill-two/
ā āāā SKILL.md
āāā skill-three/
āāā SKILL.md
Publish each skill separately:
paks publish skill-one --tag v1.0.0 --yes
paks publish skill-two --tag v1.0.0 --yes
| Command | Description |
|---|---|
paks create <name> |
Create new skill from template |
paks validate <path> |
Validate skill structure |
paks publish <path> |
Publish to registry |
paks login |
Authenticate with registry |
paks search <query> |
Search published skills |
paks info <skill> |
Show skill details |
| Issue | Solution |
|---|---|
| "not a terminal" error | Use --yes flag for non-interactive mode |
| Version mismatch | Ensure SKILL.md version matches git tag |
| Validation fails | Check frontmatter YAML syntax |
| Login fails | Verify API token is correct |
| Publish fails | Ensure you're logged in and tag exists |