A Package Manager for the AgentSkills standard. Discover, Use, and Create AgentSkills with Claude Code, Codex, Gemini CLI, OpenCode and more
SaferSkills independently audited paks (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center">
The package manager for AI Agent Skills
Create, install, publish, and share skills across AI coding agents.
<a href="https://discord.gg/QTZjETP7GB"><img src="https://img.shields.io/badge/Discord-Join%20Community-5865F2?logo=discord&logoColor=white&style=flat-square" /></a>
Installation • Quick Start • CLI Reference • Registry • Contributing
⭐ Help us reach more developers and grow the Paks community. Star this repo!
</div>
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:
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:
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 assetsThe 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 to project directory (instead of global)
paks install kubernetes-deploy --scope project
# 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)
-s, --scope <SCOPE> Installation scope: global or project
-d, --dir <PATH> Custom install directory (overrides agent and scope)
-v, --version <VERSION> Specific version to install
-f, --force Force reinstall if existsScope:
global (default): Installs to user directory (e.g., ~/.claude/skills)project: Installs to project directory (e.g., ./.claude/skills)Examples:
# Install from registry (global scope by default)
paks install terraform-best-practices
# Install for Claude Code
paks install terraform-best-practices --agent claude-code
# Install to project directory (scope: project)
paks install terraform-best-practices --scope project
# 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
-s, --scope <SCOPE> Scope to list from: global or project
--all List skills from all agents
-f, --format <FORMAT> Output format: table, json, yamlExamples:
# List skills for default agent (global scope by default)
paks list
# List project-scoped skills
paks list --scope project
# 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> [-p <project-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 | Global Directory | Project Directory |
|---|---|---|
stakpak | ~/.stakpak/skills | .stakpak/skills |
claude-code | ~/.claude/skills | .claude/skills |
cursor | ~/.cursor/skills | .cursor/skills |
vscode | ~/.vscode/skills | .vscode/skills |
copilot | ~/.copilot/skills | .copilot/skills |
goose | ~/.config/goose/skills | .goose/skills |
opencode | ~/.config/opencode/skill | .opencode/skill |
Examples:
# Add a custom agent with both global and project directories
paks agent add my-agent --dir ~/my-agent/skills --project-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 <[email protected]>
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:
Visit the registry at: [http://localhost:3001](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 global configuration at ~/.paks/config.toml:
# Default agent when --agent is not specified
default_agent = "stakpak"
# Default installation scope: "global" or "project"
default_scope = "global"
# Custom agents
[agents.my-custom-agent]
name = "My Custom Agent"
skills_dir = "/path/to/skills"
project_skills_dir = ".my-agent/skills" # Relative to project root
description = "Custom agent for my workflow"
# Registry configuration
[registries.default]
url = "https://registry.paks.dev"You can also create a project-level configuration at .paks/config.toml in your project root:
# Project-level config overrides global config
default_scope = "project" # Make project scope the default for this project
default_agent = "claude-code"Configuration priority (highest to lowest):
--scope, --agent, --dir).paks/config.toml)~/.paks/config.toml)This allows teams to standardize skill installations across all developers by committing .paks/config.toml to version control.
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# 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:
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:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Apache 2.0 License — see LICENSE for details.
<div align="center">
Built with ❤️ by [Stakpak](https://stakpak.dev)
Website • Documentation • Discord
</div>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.