agentproto pack
agentproto pack skill --manifest <path> [--source <dir>] [--version <semver>]
[--bump patch|minor|major] [--dry-run] [--out <dir>]
agentproto pack build [dir]Generate a versioned skill pack from a manifest of source skills — the reverse
of agentproto install skill/<slug>. pack skill assembles a
pack directory from source; install skill/<slug> consumes one and installs it
into targets.
pack build builds a whole skill-pack package (for example
packages/skill-pack-<name>) from its src/skills/ into the two shapes it
ships as: a flat npm layout (skills/ + .claude-plugin/ copied to the
package root) and a versioned Anthropic/Claude Code bundle under
dist/<name>-v<version>/ plus its .zip. The version is taken from the
package's own package.json (the changesets source of truth), not from any
hand-declared manifest version.
Flags
| Flag | Default | Description |
|---|---|---|
--manifest <path> | (required) | Path to the pack manifest JSON, resolved against the cwd. |
--source <dir> | (manifest sourceDir) | Absolute source-skills dir. Wins over the manifest. ~ is expanded. |
--version <semver> | (manifest version) | Explicit version for the pack, overriding the manifest's own version. |
--bump <kind> | — | patch, minor, or major — bumps from the highest existing pack version in --out. Anything else exits 2. |
--dry-run | false | Print the plan (version transition, output dir, per-skill copy/overwrite/missing) and write nothing. |
--out <dir> | .skills | Where pack directories are written, resolved against the cwd. |
Manifest
{
"name": "agentproto-plugin",
"description": "Operate and supervise a fleet …",
"version": "0.3.0",
"skills": ["slug1", "slug2"],
"sourceDir": "${AGENTIK_STUDIO_ROOT}/.claude/skills",
"author": { "name": "Name" },
"keywords": ["kw1", "kw2"]
}name, description, version, and skills are required — a missing or
mistyped one is a hard error. author defaults to { name: "agentproto" } and
keywords to [].
Resolving sourceDir
sourceDir resolves relative to the manifest file's own directory, which
breaks when the source skills live in a different repo from the packager. Two
portable options, in precedence order:
--source <absolute>— one-off override, wins over everything.sourceDir: "${SOME_ENV_VAR}/.claude/skills"—${VAR}is expanded against the environment before resolving, so one manifest works on any machine that sets the var. Referencing an unset var is a hard error, not a silently empty path.
Passing neither --source nor a manifest sourceDir exits 2.
What it writes
For each listed skill, <sourceDir>/<skill>/ is copied wholesale to
<out>/<name>-v<version>/skills/<skill>/, then the pack's
.claude-plugin/plugin.json and README.md are regenerated from each
SKILL.md's YAML frontmatter. A source skill with no SKILL.md is fatal.
The README is regenerated, not overwritten blind: the previous version's
"How it works" prose and existing changelog entries are carried forward, and a
--bump prepends a - **<version>** — TODO: describe changes entry for you to
fill in. Without --bump, the manifest's own version is used (unless
--version <semver> overrides it) — re-running on
an existing version dir is an in-place resync.
Examples
# See what would happen — no writes
agentproto pack skill --manifest ./skills-pack.json --dry-run
# Cut a patch release into ./.skills
agentproto pack skill --manifest ./skills-pack.json --bump patch
# Source lives in another repo; override for one run
agentproto pack skill --manifest ./skills-pack.json \
--source ~/code/agentik-studio/.claude/skills --out ./dist/packs[dry-run] agentproto pack skill
version: 0.3.0 → 0.3.1 (patch)
output: /Users/me/code/proj/.skills/agentproto-plugin-v0.3.1
source: /Users/me/code/agentik-studio/.claude/skills
skills:
+ nested-orchestration — will copy
~ fleet-supervision — will overwrite
❌ retired-skill — SOURCE MISSINGbuild [dir]
# Build the skill-pack package in the current directory
agentproto pack build
# Build a specific package directory
agentproto pack build packages/skill-pack-agentprotoBuilds a skill-pack package from its own package.json version. It expects
package.json and manifest.json in the target directory (default cwd), runs
the same assembly logic as pack skill, then:
- Copies
skills/and.claude-plugin/flat to the package root for npm consumers. - Writes
dist/<name>-v<version>.zipcontaining the self-contained versioned bundle for Claude Code / Anthropic consumers.
Fails with exit code 1 if package.json has no version or if either
required file is missing; exit code 2 for argument errors.
install.md— the consuming side:install skill/<slug>onboard.md— installs the published pack on first run