Skip to main content

Write your agent skills once, ship them everywhere: Cursor, Claude Code, Codex, GitHub Copilot and any SKILL.md-compatible agent.

Project description

agentpack

English | 简体中文 | 日本語

Write your agent skills once. Ship them everywhere.

Every AI coding agent invented its own plugin layout: Cursor reads .cursor/skills/, Claude Code reads .claude-plugin/ + skills/, Codex reads .codex/skills/, GitHub Copilot reads .github/skills/, and the vendor-neutral standard uses .agents/skills/. If you maintain a skill pack or plugin, you end up hand-maintaining five slightly different copies of the same content.

agentpack is a Babel for agent plugins: you keep one source of truth — a folder of SKILL.md files plus a single agentpack.yaml — and one command generates correct, ready-to-publish bundles for every platform, including the Claude Code plugin.json manifest and marketplace.json.

  • Zero dependencies. Pure Python standard library. pip install and go.
  • Validates before it builds. Catches missing descriptions, name/folder mismatches, non-kebab-case names, broken JSON — the things that silently make a skill invisible to an agent.
  • Knows each platform's dialect. Frontmatter fields a host doesn't support are dropped (and reported), globs is mapped to paths for Cursor, slash commands are converted to manual-invocation skills on platforms without a commands directory.
  • Windows-first. Developed and tested on Windows, Linux and macOS.

Install

pip install shipskills   # installs the `agentpack` command
# or from source:
git clone https://github.com/superman2003/agentpack && cd agentpack && pip install .

Quick start

# scaffold a project
agentpack init my-toolkit --name my-toolkit
cd my-toolkit

# edit agentpack.yaml and skills/example-skill/SKILL.md, then:
agentpack validate
agentpack build

agentpack build produces:

dist/
├── claude/                          # Claude Code plugin + marketplace
│   ├── .claude-plugin/marketplace.json
│   └── my-toolkit/
│       ├── .claude-plugin/plugin.json
│       ├── skills/<name>/SKILL.md
│       └── commands/<name>.md
├── cursor/.cursor/skills/<name>/SKILL.md
├── codex/.codex/skills/<name>/SKILL.md
├── copilot/.github/skills/<name>/SKILL.md
└── agents/.agents/skills/<name>/SKILL.md   # vendor-neutral standard

Copy the tree for your platform into your repo (or point Claude Code at the plugin with --plugin-dir), and you're published.

Source layout

You write this once:

my-toolkit/
├── agentpack.yaml           # name, version, description, author, targets
├── skills/
│   └── review-pr/
│       ├── SKILL.md         # YAML frontmatter + Markdown instructions
│       └── references/…     # optional extra files, copied verbatim
├── commands/                # optional flat slash-commands (.md)
├── agents/                  # optional Claude Code subagents (.md)
├── hooks/hooks.json         # optional Claude Code hooks (passed through)
└── .mcp.json                # optional MCP server config (passed through)

agentpack.yaml

name: my-toolkit            # kebab-case, required
version: 1.0.0              # semver
description: What this plugin does and when agents should use it.
author:
  name: Your Name
  url: https://github.com/your-name
license: MIT
keywords: [code-review, git]
targets: [claude, cursor, codex, copilot, agents]

SKILL.md

---
name: review-pr            # must match the folder name
description: Use when asked to review a pull request or diff.
paths: "**/*.py"           # optional; Cursor-style file scoping
---

# Instructions for the agent…

Commands

Command What it does
agentpack init [dir] Scaffold a new project
agentpack validate [dir] Lint config and skills; exit 1 on errors
agentpack build [dir] Generate dist/<target>/ bundles
agentpack build -t cursor,claude Build only selected targets
agentpack targets List supported platforms

How platform differences are handled

Concept claude cursor codex copilot agents
Skills skills/ in plugin .cursor/skills/ .codex/skills/ .github/skills/ .agents/skills/
Slash commands commands/*.md converted to manual skill converted converted converted
paths / globs scoping dropped (unsupported) kept (globspaths) dropped dropped kept
Subagents (agents/) shipped skipped skipped skipped skipped
Hooks / MCP config shipped skipped skipped skipped skipped
Manifest plugin.json + marketplace.json

Everything dropped or converted is printed as a note: during the build, so there are no silent surprises.

Example

A complete working example lives in examples/code-review-toolkit/. Build it with:

agentpack build examples/code-review-toolkit

Development

python -m unittest discover tests -v

No dependencies needed, for tests either.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shipskills-0.1.0.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shipskills-0.1.0-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file shipskills-0.1.0.tar.gz.

File metadata

  • Download URL: shipskills-0.1.0.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shipskills-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d853cc2344c12003b4de67a2a873971238c2a432fe8ddb52f676180e713f83ba
MD5 1c6b67afb4da057382bbcb4cf393e1f4
BLAKE2b-256 94c13273faeee6c87349c918eb930e632b87ec86b2c7427599f505eb6c5bf8ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for shipskills-0.1.0.tar.gz:

Publisher: publish.yml on superman2003/agentpack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shipskills-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: shipskills-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for shipskills-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1592303dd6203d7b4868c5d1164768f8f9042645ae03bbfb584a6f167d892239
MD5 dd21e42dc0d447878e4ea5750a0f3615
BLAKE2b-256 a2b9abe68ad2e15e121c256e71ab0225692c7f286ff3b4491d1da511885dc01b

See more details on using hashes here.

Provenance

The following attestation bundles were made for shipskills-0.1.0-py3-none-any.whl:

Publisher: publish.yml on superman2003/agentpack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page