Packs

September 17, 2026 ยท View on GitHub

Note

๐Ÿ“˜ Repo-Only Doc โ€” last reviewed 2026-09-17

This document lives only in the repo. It is public-ready and self-contained.


Packs

A pack is a named, installable slice of this repository: a group plugin directory (plugins/nanlabs-<group>/skills/), or a cross-group list of skills (and optional agents). Domain packs are catalog aliases, not a packs/ directory tree. Group packs map 1:1 onto Agent Plugins packages.

Machine catalog: catalogs/pack-catalog.yaml.

GitHub issues #24, #25, and #28 still track outcome-pack content (deeper QA, DevOps golden stacks, and similar). This catalog is the discovery, install, and governance slice.

Packs vs Agent Plugins

This repository ships two install shapes. Group packs and group plugins are the same directories.

Domain packsGroup plugins / group packs
SpecAgent Skills + npx skills --skillAgent Plugins + npx skills path
UnitNamed skill listDirectory with root plugin.json
Skill discovery--skill names (CLI recurses)Immediate plugins/<id>/skills/<name>/SKILL.md only (ยง7.1)
Manifestcatalogs/pack-catalog.yamlClosed plugin.json ($schema, name, metadata; no skills/agents path fields)
AgentsOptional Code/Cursor personasNot a v1 portable component (nanlabs-agents is native)
MCPNot part of a packOfficial root mcp.json on design / forge / integrations

A domain pack MUST NOT add plugin.json and MUST NOT live as plugins/<pack-id>/. Group plugins already are the skill tree โ€” gen-surfaces does not copy skills. Install a plugin with Copilot/Claude/Cursor/VS Code marketplace flows; install a domain pack with npx skills --skill. See AGENT_PLUGINS.md.

Why packs (not personas)

Install โ€œthe pack of Xโ€ for a job (code review, delivery, QA). Personas remain agent files under agents/ for Claude Code and Cursor. Cloud has no native subagents, so Cloud users install skills only.

SurfaceWhat a pack installs
Cloud / skills-onlySkills via npx skills
Claude Code / CursorSkills, plus agents when the pack lists them (nanlabs-agents plugin or a checkout)

Two-command trial

From a project directory:

# 1. Group pack (plugin skills directory)
npx skills add nanlabs/agent-toolkit/plugins/nanlabs-delivery/skills

# 2. Domain pack (explicit skill filter)
npx skills add nanlabs/agent-toolkit --skill github-cli-workflow --skill gh-address-comments --skill gh-fix-ci --skill nanlabs-pr-fallback

Equivalent helper (requires a clone and pyyaml):

bash scripts/install-pack.sh delivery
bash scripts/install-pack.sh code-review -y
bash scripts/install-pack.sh --list

scripts/install-pack.sh expands the catalog and runs npx skills. Extra flags after the pack id are forwarded (-g, -y, --agent).

Pin a tag with a full GitHub URL when you need a release. Tags after this layout use the plugin skills directory; v0.3.1 still used skills/delivery.

npx skills add https://github.com/nanlabs/agent-toolkit/tree/<tag>/plugins/nanlabs-delivery/skills

Group packs

One-to-one with plugins/nanlabs-<group>/skills/. Install the plugin directory.

PackPathCoverage
coreplugins/nanlabs-core/skills/high
deliveryplugins/nanlabs-delivery/skills/high
designplugins/nanlabs-design/skills/medium
forgeplugins/nanlabs-forge/skills/high
dataplugins/nanlabs-data/skills/medium
integrationsplugins/nanlabs-integrations/skills/medium
opsplugins/nanlabs-ops/skills/medium
toolingplugins/nanlabs-tooling/skills/low
workflowplugins/nanlabs-workflow/skills/high
npx skills add nanlabs/agent-toolkit/plugins/nanlabs-<group>/skills

Domain packs

Named jobs that may span groups. Cloud still gets skills only.

PackSkills (installable)Agents (Code / Cursor)Coverage
code-reviewgithub-cli-workflow, gh-address-comments, gh-fix-ci, nanlabs-pr-fallbacknanlabs-code-reviewer, nanlabs-security-reviewer, nanlabs-typescript-reviewermedium
qaplaywright-clinanlabs-e2e-runnerlow
architectnanlabs-adr, nanlabs-trdnanlabs-architectmedium
staffnanlabs-presentations-reconciliationโ€”low
contributenanlabs-propose-skillโ€”n/a

Low coverage is intentional: the catalog names the gap; it does not invent skills. See COVERAGE.md.

Assistant routing

nanlabs-assistant remains the router. Prefer a pack name when the user asks to โ€œinstall / use the pack of Xโ€. Handoffs: HANDOFFS.md.

Adding or changing a pack

  1. Edit catalogs/pack-catalog.yaml (no empty directories, no plugin.json).
  2. Point only at skills and agents that already exist.
  3. Do not create plugins/<pack-id>/ for a domain pack. Group plugins already exist as plugins/nanlabs-<group>/.
  4. Run python3 scripts/validate-pack-catalog.py and, if you touched plugins/, python3 scripts/validate-agent-plugins.py.
  5. Document the pack here if it is user-facing.

Contribution flow: CONTRIBUTION.md.