The package manager for AI Agent Skills
Create, install, publish, and share skills across AI coding agents.
Installation • Quick Start • CLI Reference • Registry • Contributing
⭐ Help us reach more developers and grow the Paks community. Star this repo!
Paks is a CLI-first package manager for Agent Skills — reusable instruction sets that enhance AI coding agents like Stakpak, Claude Code, Cursor, OpenCode, GitHub Copilot, Goose, and more.
The CLI is your primary interface for:
- 🛠️ Creating new skills with proper structure
- 📥 Installing skills from the registry, git repos, or local paths
- 🚀 Publishing skills to share with the community
- 🔍 Managing skills across multiple AI agents
The Web Registry provides a browsable interface to discover and explore published skills.
AI coding agents are powerful, but they need context. Skills provide that context — coding standards, deployment procedures, API patterns, and domain knowledge. Paks makes it easy to:
- Share expertise — Package your team's best practices as installable skills
- Stay consistent — Install the same skills across all your AI agents
- Build on others' work — Discover and use community-created skills
- Version and iterate — Semantic versioning for skill updates
brew tap stakpak/stakpak
brew install paksPre-built binaries are available for all major platforms on the Releases page:
| Platform | Architecture | Download |
|---|---|---|
| macOS | Apple Silicon (M1/M2/M3) | paks-darwin-aarch64.tar.gz |
| macOS | Intel | paks-darwin-x86_64.tar.gz |
| Linux | x86_64 | paks-linux-x86_64.tar.gz |
| Linux | ARM64 | paks-linux-aarch64.tar.gz |
| Windows | x86_64 | paks-windows-x86_64.zip |
# Example: Download and install on Linux x86_64
curl -L https://github.com/stakpak/paks/releases/latest/download/paks-linux-x86_64.tar.gz | tar xz
sudo mv paks /usr/local/bin/# Clone the repository
git clone https://github.com/stakpak/paks.git
cd paks
# Build the CLI
cargo build --release -p paks-cli
# The binary will be at ./target/release/paks
# Move it to your PATH
cp ./target/release/paks ~/.local/bin/paks --version
paks --help# Create a new skill
paks create my-awesome-skill
# Or with optional directories
paks create my-awesome-skill --with-scripts --with-referencesThis generates:
my-awesome-skill/
├── SKILL.md # Skill manifest and instructions
├── scripts/ # (optional) Helper scripts
├── references/ # (optional) Reference documentation
└── assets/ # (optional) Static assets
The SKILL.md file is the heart of your skill. It uses YAML frontmatter for metadata and Markdown for instructions:
---
name: my-awesome-skill
description: A skill that helps with awesome things
version: 0.1.0
license: MIT
keywords:
- awesome
- productivity
---
# My Awesome Skill
## When to use this skill
Describe when this skill should be activated.
## Instructions
Add your instructions here. The AI agent will follow these
when the skill is active.paks validate my-awesome-skill
# Strict mode (warnings become errors)
paks validate my-awesome-skill --strict# Install from registry
paks install kubernetes-deploy
# Install for a specific agent
paks install kubernetes-deploy --agent claude-code
# Install from GitHub (just paste the URL from your browser)
paks install https://github.com/user/repo/tree/main/path/to/skill
# Install specific version
paks install kubernetes-deploy --version 1.2.0
# Force reinstall
paks install kubernetes-deploy --force# Dry run first
paks publish my-awesome-skill --dry-run
# Publish with version bump
paks publish my-awesome-skill --bump patch
# Publish (requires login)
paks login
paks publish my-awesome-skill| Command | Description |
|---|---|
paks create <name> |
Create a new skill from template |
paks install <source> |
Install a skill |
paks publish [path] |
Publish a skill to the registry |
paks validate [path] |
Validate skill structure |
paks list |
List installed skills |
paks remove <name> |
Remove an installed skill |
paks search <query> |
Search the registry |
paks info <skill> |
Show skill details |
paks create <name> [OPTIONS]
Options:
-o, --output <DIR> Output directory (defaults to ./<name>)
-t, --template <TYPE> Template type: basic, devops, coding
--with-scripts Include scripts/ directory
--with-references Include references/ directory
--with-assets Include assets/ directoryExamples:
# Basic skill
paks create my-skill
# DevOps skill with all directories
paks create deploy-helper --template devops --with-scripts --with-references
# Specify output location
paks create my-skill --output ~/skills/my-skillpaks install <source> [OPTIONS]
Options:
-a, --agent <AGENT> Target agent (stakpak, claude-code, cursor, vscode, copilot, goose, opencode)
-d, --dir <PATH> Custom install directory
-v, --version <VERSION> Specific version to install
-f, --force Force reinstall if existsExamples:
# Install from registry
paks install terraform-best-practices
# Install for Claude Code
paks install terraform-best-practices --agent claude-code
# Install from GitHub/GitLab (just paste the browser URL)
paks install https://github.com/org/repo/tree/main/skills/my-skill
# Install to custom directory
paks install my-skill --dir ~/custom/skillspaks publish [path] [OPTIONS]
Options:
--bump <LEVEL> Version bump: patch, minor, major
--skip-validation Skip validation before publishing
--dry-run Show what would be publishedExamples:
# Validate and show what would be published
paks publish --dry-run
# Publish with patch version bump (0.1.0 → 0.1.1)
paks publish --bump patch
# Publish with minor version bump (0.1.0 → 0.2.0)
paks publish --bump minor
# Publish specific directory
paks publish ./my-skill --bump patchpaks list [OPTIONS]
Options:
-a, --agent <AGENT> List skills for specific agent
--all List skills from all agents
-f, --format <FORMAT> Output format: table, json, yamlExamples:
# List skills for default agent
paks list
# List all skills across all agents
paks list --all
# List as JSON
paks list --format json
# List for specific agent
paks list --agent cursorpaks agent list # List configured agents
paks agent add <name> -d <dir> # Add custom agent
paks agent remove <name> # Remove custom agent
paks agent default <name> # Set default agent
paks agent show [name] # Show agent detailsBuilt-in Agents:
| Agent | Skills Directory |
|---|---|
stakpak |
~/.stakpak/skills |
claude-code |
~/.claude/skills |
cursor |
~/.cursor/skills |
vscode |
~/.vscode/skills |
copilot |
~/.copilot/skills |
goose |
~/.config/goose/skills |
opencode |
~/.config/opencode/skills |
Examples:
# Add a custom agent
paks agent add my-agent --dir ~/my-agent/skills
# Set as default
paks agent default my-agent
# View all agents
paks agent showpaks login [--token <TOKEN>] # Login to registry
paks logout # Logout from registryThe SKILL.md file uses YAML frontmatter following the Agent Skills specification:
---
# Required fields
name: my-skill # 1-64 chars, lowercase + hyphens
description: What this skill does # 1-1024 chars
# Optional (Agent Skills spec)
license: MIT
compatibility: Requires Node.js 18+
metadata:
author: Your Name
website: https://example.com
allowed-tools: | # Experimental
- read_file
- write_file
# Paks extensions (for package management)
version: 1.0.0 # Semantic version
authors:
- Your Name <you@example.com>
repository: https://github.com/you/skill
homepage: https://your-skill.dev
keywords:
- devops
- kubernetes
categories:
- deployment
dependencies:
- name: base-skill
version: ">=1.0.0"
---my-skill/
├── SKILL.md # Required: Manifest + instructions
├── scripts/ # Optional: Helper scripts
│ ├── deploy.sh
│ └── validate.py
├── references/ # Optional: Reference docs
│ ├── api-docs.md
│ └── examples/
└── assets/ # Optional: Static files
└── templates/
The Paks Registry web interface provides:
- 🔍 Browse — Discover skills by category, keyword, or popularity
- 📖 Read — View skill documentation and instructions
- 📊 Stats — See download counts and version history
- 👤 Profiles — View publisher profiles and their skills
Visit the registry at: http://localhost:3001 (development)
The registry exposes a REST API for programmatic access:
# Search skills
GET /api/skills?q=kubernetes
# Get skill details
GET /api/skills/:name
# Get specific version
GET /api/skills/:name/:versionPaks stores configuration at ~/.paks/config.toml:
# Default agent when --agent is not specified
default_agent = "stakpak"
# Custom agents
[agents.my-custom-agent]
name = "My Custom Agent"
skills_dir = "/path/to/skills"
description = "Custom agent for my workflow"
# Registry configuration
[registries.default]
url = "https://registry.paks.dev"paks/
├── apps/
│ ├── cli/ # Rust CLI application
│ │ ├── src/
│ │ │ ├── commands/ # CLI command implementations
│ │ │ │ ├── create.rs
│ │ │ │ ├── install.rs
│ │ │ │ ├── publish.rs
│ │ │ │ ├── validate.rs
│ │ │ │ └── ...
│ │ │ └── main.rs
│ │ └── Cargo.toml
│ ├── web/ # Registry web interface
│ │ └── src/
│ │ ├── routes/ # TanStack Router pages
│ │ └── components/
│ └── docs/ # Documentation site
├── packages/
│ ├── core/ # Shared Rust library
│ └── config/ # Shared TypeScript config
├── Cargo.toml # Rust workspace
├── package.json # Node.js workspace
└── turbo.json # Turborepo config
- Rust 2024 edition (nightly)
- Node.js 18+
- pnpm 8+
# Install dependencies
pnpm install
# Build everything
pnpm run build
# Development mode
pnpm run dev| Script | Description |
|---|---|
pnpm run dev |
Start all apps in development mode |
pnpm run build |
Build all applications |
pnpm run dev:web |
Start only the web application |
pnpm run check-types |
TypeScript type checking |
pnpm run check |
Run Oxlint and Oxfmt |
# Build CLI
cargo build -p paks-cli
# Run CLI
cargo run -p paks-cli -- --help
# Run tests
cargo test
# Format code
cargo fmt
# Lint
cargo clippyIf this is your first time writing a Pak, you don’t have to figure it out alone. Our community is actively building and sharing skills, and we’re happy to help you:
- Write your first SKILL.md
- Review structure and metadata
- Decide what belongs in a Pak (and what doesn’t)
- Validate and publish with confidence
Join the Stakpak Discord to ask questions, get feedback, and see how others are using Paks
Join the community: https://discord.gg/QTZjETP7GB
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Keep commits atomic and well-described
Apache 2.0 License — see LICENSE for details.
Built with ❤️ by Stakpak