Multi-Surface npm Distribution Strategy

Evolving agentic-skills from a git-clone skill repository into a multi-surface distribution system via npm packages and a programmatic SDK — while preserving the markdown-first skill authoring model.

alignment_status:  review   generated:  2026-06-08   artifact:  alignment/idea-scope-brief-npm-distribution.html

Current State Snapshot

Section feedback
298SKILL.md files
40Packs
9Global skills (Claude)
0npm packages published

Distribution is entirely git-clone-based. init.sh installs global skills to ~/.claude/skills/ and ~/.codex/skills/. scripts/pack.sh (1,164 lines of bash) manages project-local pack installs via file copies with .agentic-skills-managed markers. Versioning uses v0.MINOR decimal convention with archive/<version>/SKILL.md snapshots. Content-hash-based drift detection tracks staleness.

There is no package.json at repo root, no npm presence, and no programmatic API. The only npm usage is the test harness (vitest) and a Next.js showcase app.

Current Install Flow

# One-time setup
git clone agentic-skills && cd agentic-skills
./init.sh                                    # global skills → ~/.claude/skills/

# Per-project
cd ~/my-project
/path/to/agentic-skills/scripts/pack.sh install game code-quality
# Copies SKILL.md files into .claude/skills/ with managed markers
# Writes .agents/project.json with enabled_packs

What This Limits

Goals and Constraints

Section feedback

Must-Have Goals

  1. npm distribution — users can install skills via npm without cloning the repo
  2. Multi-surface reach — Claude Code, Codex, programmatic API
  3. Agent-maintainable versioning — agents can bump versions and publish without human ceremony
  4. User version selection — users can pin, lock, and update skill versions with standard tooling
  5. Backward compatibility — existing git-clone + pack.sh users are not broken

Nice-to-Have Goals

  1. npm search discoverability (users find packs via npm search)
  2. Programmatic SDK for third-party integrations
  3. Web-based skill browser / registry
  4. Per-skill install granularity (install one skill without its whole pack)

Constraints

Invariants (All COAs)

Section feedback

These hold regardless of which COA is chosen:

InvariantDetail
Skills are markdownSKILL.md with YAML frontmatter (name, description, version, optional type, argument-hint, invocation) is the canonical format. No transpilation.
Pack grouping preservedNamed collections of domain skills remain the primary selection unit. Pack names survive.
Project designation file.agents/project.json tracks enabled_packs, pinned_versions, project_type, and skill_updates in consumer repos.
Dual-surface mirrorsSkills supporting both Claude and Codex have claude/ and codex/ variants.
Archive-on-bumparchive/<version>/SKILL.md snapshots and per-skill CHANGELOG.md remain the versioning artifacts.
Global vs pack distinctionA small set of domain-neutral skills installs globally; packs install per-project.
Git-clone still workspack.sh continues to function for users who prefer the local checkout model.

COA A: The Monolith

Section feedback

COA A One package ships everything Recommended

Philosophy: Maximum simplicity. One npm install, everything available. Optimize for speed to market and minimal publishing overhead.

Architecture

npm packages:
  agentic-skills              # Single package. CLI + all packs.

Layout inside the package:
  agentic-skills/
    package.json
    bin/agentic-skills.mjs     # CLI entry point
    src/cli/                   # CLI commands (install, remove, refresh, doctor)
    src/registry.mjs           # Pack/skill index builder
    global/claude/...          # Unchanged from current repo
    global/codex/...
    packs/...                  # All 40 packs, unchanged

Version Model

  • npm package follows semver: 1.0.0, 1.1.0, 2.0.0
  • Individual skill v0.x versions remain in SKILL.md frontmatter for pinning
  • An npm version bump aggregates all skill changes since last release
  • Agent workflow: edit SKILL.md → npx agentic-skills bump-skill <name> → archives, bumps, optionally triggers npm version patch

CLI Surface

npm install -g agentic-skills         # or use npx

agentic-skills install business-discovery game
agentic-skills list
agentic-skills status
agentic-skills doctor
agentic-skills refresh
agentic-skills pin devtool-adoption v0.0
agentic-skills init-global            # replaces ./init.sh
agentic-skills bump-skill <skill>     # agent-driven version bump

Migration Path

  1. Add package.json at repo root
  2. Port pack.sh core logic to Node.js CLI
  3. Keep pack.sh as backward-compat wrapper that delegates to npx agentic-skills
  4. Publish to npm

Timeline

PhaseSizeDurationDeliverable
1S1–2 weeksAdd package.json, wire CLI as thin Node wrapper around pack.sh
2M2–4 weeksPort pack.sh to Node.js, make bash a shim
3S1 weekPublish to npm, update docs
Best for: Solo maintainer who wants the fastest path to npm presence. Ideal if the primary audience is Claude Code / Codex users who already know about the project and just want an easier install.

COA B: The Federation

Section feedback

COA B Each pack is its own npm package

Philosophy: Ecosystem-native. Users install only what they need. Each pack has its own identity, version, and npm search presence.

Architecture

npm packages:
  @agentic-skills/cli                    # CLI coordinator
  @agentic-skills/core                   # Global skills
  @agentic-skills/business-discovery     # Pack package
  @agentic-skills/code-quality           # Pack package
  @agentic-skills/game                   # Pack package
  ... (~37 pack packages)

Monorepo layout (pnpm workspaces):
  agentic-skills/
    pnpm-workspace.yaml
    packages/
      cli/package.json          # @agentic-skills/cli
      core/package.json         # @agentic-skills/core
      packs/
        business-discovery/package.json
        game/package.json
        ...

Version Model

  • Each pack package has its own semver version, tracking changes to skills within that pack
  • @agentic-skills/cli versions independently (CLI features, not skill content)
  • Skill-level v0.x versions remain for pinning within a pack version
  • Agent workflow: edit SKILL.md → npx @agentic-skills/cli bump <pack> → bump pack package.jsonnpm publish for that one pack
  • Compatibility aliases (business → three packs) become meta-packages with peer dependencies

CLI Surface

npm install -g @agentic-skills/cli

agentic-skills init                      # install global skills
agentic-skills install business-discovery game
agentic-skills list
agentic-skills status
agentic-skills doctor
agentic-skills pin devtool-adoption v0.0
agentic-skills lock business-discovery@2.1.0  # lock pack npm version

Migration Path

  1. Restructure repo into pnpm workspace with packages/ directory
  2. Generate package.json for each pack (scripted from PACK.md)
  3. Build @agentic-skills/cli as Node.js port of pack.sh
  4. Publish core + first 10 packs, validate end-to-end
  5. Publish remaining packs in waves

Timeline

PhaseSizeDurationDeliverable
1M3–4 weeksRestructure to pnpm workspace, build CLI
2M2–3 weeksPublish core + first 10 packs
3S1–2 weeksPublish remaining packs, add pack.sh shim
4S1 weekDocs, migration guide
Best for: Building an npm-native ecosystem where packs are independently discoverable and versionable. Ideal if you expect external contributors or want packs to have independent release cadences.

COA C: The Registry

Section feedback

COA C Skill registry + thin client

Philosophy: Skills are data, not code. Publish a registry and a thin client. Maximum granularity and multi-surface reach.

Architecture

npm packages:
  agentic-skills               # CLI + local manager
  @agentic-skills/registry     # Skill manifest + all SKILL.md files as data
  @agentic-skills/sdk          # Programmatic API for third-party tools

Registry structure:
  @agentic-skills/registry/
    skills.json                # Generated manifest: every skill with metadata
    packs.json                 # Pack definitions
    skills/                    # Flat directory of versioned SKILL.md files
      business-discovery--icp-interview--claude--v0.3.md
      game--playtest--claude--v0.0.md
      ...

Version Model

  • Each skill has its own semver version mapped from SKILL.md: v0.00.0.0, v0.10.1.0
  • The registry package (@agentic-skills/registry) versions on its own cadence; each publish is a new snapshot
  • skills.json manifest includes per-skill version, content hash, pack membership, and dependency info
  • Pinning at skill level: .agents/project.json{ "devtool-adoption": "0.0.0" }
  • Historical versions available via npm package version history

CLI Surface

npm install -g agentic-skills

agentic-skills init                      # install registry, set up cache
agentic-skills install game business-discovery
agentic-skills install-skill devtool-adoption  # single skill from any pack
agentic-skills pin devtool-adoption 0.0.0
agentic-skills update                    # show available updates
agentic-skills update --apply            # apply updates
agentic-skills search "code quality"
agentic-skills registry-build            # maintainer: regenerate skills.json
agentic-skills registry-publish          # maintainer: npm publish registry

SDK Surface

import { SkillRegistry } from '@agentic-skills/sdk'

const registry = new SkillRegistry()
const skill = await registry.getSkill('devtool-adoption')
const packs = await registry.listPacks()
const results = await registry.search('code quality')

Migration Path

  1. Build registry generator (walks global/ and packs/, produces skills.json)
  2. Build CLI with registry-aware resolution
  3. Publish @agentic-skills/registry with initial snapshot
  4. Build and publish SDK
  5. pack.sh becomes backward-compat wrapper; standalone bash mode preserved
  6. Over time, registry becomes source of truth; git repo is the authoring environment

Timeline

PhaseSizeDurationDeliverable
1M3–4 weeksRegistry generator, @agentic-skills/registry publish, basic CLI
2M3–4 weeksFull CLI with install/remove/doctor/pin/update
3M2–3 weeksSDK package with TypeScript types
4S1–2 weeksDocs, migration guide
Best for: Maximum multi-surface reach and future extensibility. Ideal if the vision includes third-party integrations, tool-agnostic consumption, and per-skill granularity.

Side-by-Side Comparison

Section feedback
DimensionA MonolithB FederationC Registry
npm package count1~404
Install size per projectFull library (~3 MB)Selected packs onlySelected skills only
Version granularityLibrary-levelPack-levelSkill-level
Agent publish workflowEdit → npm publishEdit → bump pack → publish packEdit → rebuild registry → publish registry
npm discoverabilitySingle listingPer-pack listingsSingle registry + CLI listing
Offline supportFullFull (installed packs)After initial fetch
Cross-pack dependenciesAll available locallynpm peer depsRegistry resolves
Publishing overheadLowestHighestMedium
Time to first npm publish~2 weeks~6 weeks~4 weeks
Total implementation4–7 weeks7–10 weeks9–13 weeks
Programmatic SDKNot includedNot includedIncluded
Per-skill installNo (full library)No (full pack)Yes
Community contributionEasy (clone + PR)Medium (must target pack)Harder (registry pipeline)

Effort vs Reach

Evolutionary Path

These COAs are not mutually exclusive over time. A pragmatic path: start with COA A (fastest to npm), then extract hot packs into independent packages (COA B pattern) as demand grows, and layer the registry index (COA C pattern) as a discoverability surface on top. The CLI abstracts the backend so users never see the migration.
Recommendation: COA A — The Monolith. For a solo maintainer, COA A is the right starting point. It has the lowest publishing overhead (one npm publish), the fastest path to npm presence (~4–7 weeks), and the simplest agent publish workflow. The ~3 MB tarball is well within npm norms. The CLI abstraction layer means users never see if the backend evolves later — you can extract hot packs (COA B pattern) or add a registry index (COA C pattern) if demand warrants, without breaking anyone's install.
Future Consideration: Hosted Skill Registry. A central server that serves skills on-demand over HTTP without local npm install. This enables zero-install surface reach, usage analytics, dynamic versioning, access control, and third-party publishing. This is a different product from npm distribution — it requires hosting, authentication, uptime guarantees, and API design. Build it later if adoption warrants, reusing the versioning and pack metadata that npm establishes. A network protocol like MCP becomes a natural fit here (serving skills over a wire to remote clients) rather than wrapping local file reads.

Risk Matrix

Section feedback
RiskABC
Package size bloatHIGHLOWLOW
Publishing coordinationLOWHIGHMED
Breaking change blast radiusMEDLOWLOW
Agent publishabilityEASYMEDMED
Backward compat riskLOWMEDHIGH
npm scope availabilityLOWMEDLOW
Maintenance burdenLOWHIGHMED

Naming and Branding

Section feedback

The current branding uses "agentic-skills" as the repo name and "packs" / "card packs" as the grouping metaphor. Moving to npm creates a public identity that should be intentional.

Naming Options

Optionnpm nameScoped packagesVibe
Keep agentic-skillsagentic-skills@agentic-skills/*Descriptive, clear, slightly long
skillpacksskillpacks@skillpacks/*Leans into the "pack" metaphor, shorter
agentkitagentkit@agentkit/*Broader, positions as a toolkit not just skills
promptpackspromptpacks@promptpacks/*Describes what it literally is: packaged prompts

Terminology Mapping

ConceptCurrent termProposed public term
The productagentic-skills (repo name)TBD — see gate question
A bundle of related skillsPack / Card packPack (drop "card")
An individual skillSkillSkill (unchanged)
The CLI toolpack.shagentic-skills / skillpacks (matches npm name)
Global (domain-neutral) skillsGlobal skillsCore skills

Evidence and Assumptions

Section feedback

Evidence Matrix

ClaimEvidenceInferenceConfidenceDecision impact
Current distribution requires git cloneinit.sh, pack.sh, and skill-links.sh all resolve paths relative to the repo checkout. No package.json at root.npm distribution requires wrapping or porting these scripts.HighAll COAs must port or wrap pack.sh.
Estimated npm tarball size ~3 MB for full library298 SKILL.md files + archives + scripts; markdown files are small but archives multiply.COA A's single package is large but not prohibitive for npm.MediumCOA A is viable but wasteful for single-pack users.
Solo maintainer constraintAll 53k+ commits are from one author. No external contributors.Publishing overhead must be automatable by agents.HighCOA B's 37+ packages are the highest maintenance risk.
Agent-driven publishing is feasibleExisting create-agentic-skill and skill-archive.sh already automate version bumps. npm publish can be scripted.Agents can handle the full publish pipeline with minimal human intervention.HighAll COAs benefit; COA A is simplest to automate.
Pack interdependencies are soft, not hardCross-pack references are via slash-command recommendations in prose, not formal dependency declarations.Pack packages do not strictly require npm peer dependencies.HighCOA B's dependency model is simpler than expected.

Assumptions Register

AssumptionStatusWhat would change it
@agentic-skills npm scope is availableUnverifiedCheck npm org availability before committing to scoped packages (COA B/C).
agentic-skills unscoped name is availableUnverifiedCheck npm info agentic-skills. If taken, all COAs need a different CLI package name.
Users are willing to use npm for skill managementAssumedIf the primary user base is non-developers, a different distribution channel (brew, curl) may be needed.
Monorepo tooling (pnpm workspaces) is sufficient for COA BProvisional37+ packages may need changesets or turborepo for coordinated releases.

Deck-Based Installation

Section feedback

The skill system uses four decks — named workflow sequences that guide which packs to install and in what order. Decks sit on a 2×2 matrix of domain (business vs. devtool) and tempo (rapid vs. deliberate). See docs/decks.md for full details.

Business / ConsumerDeveloper / OSS
Rapid (days)VARDORD
Deliberate (weeks–months)Business AFPSDevtool AFPS

Each COA handles deck-based installation differently:

COA A Monolith — Decks as install presets

Decks become preset commands that install the right subset of skills from the monolith package:

npx agentic-skills install-deck vard    # installs vard-scan, vard-align, vard-ship
npx agentic-skills install-deck ord     # installs ord-scan, ord-align, ord-ship
npx agentic-skills install-deck business-afps  # installs business-discovery + lifecycle + growth + ops skills
npx agentic-skills install-deck devtool-afps   # installs devtool skills

All skills ship in one package; the deck command just activates the relevant subset in the project config.

COA B Federation — Decks as curated package lists

Each deck maps to a curated list of scoped packages to install together:

# VARD deck
npm install @agentic-skills/vard

# ORD deck
npm install @agentic-skills/ord

# Business AFPS deck (progressive)
npm install @agentic-skills/business-discovery
npm install @agentic-skills/customer-lifecycle  # when ready

Rapid decks are single packages. Deliberate decks are multi-package sequences installed progressively.

COA C Registry — Decks as tagged collections

Decks become tagged collections in the skill registry. Installing a deck pulls all skills with that tag:

agentic-skills install --deck vard      # pulls all skills tagged "vard"
agentic-skills install --deck ord       # pulls all skills tagged "ord"
agentic-skills install --deck business  # pulls business-discovery skills, add more tags progressively

The registry maintains deck metadata: canonical order, graduation paths, and compatibility constraints.

Review Gates

Section feedback

Answer these gates after reviewing the COAs, comparison, risk matrix, and deck-based installation options above.

Recommended Path

Which course of action should we pursue as the primary strategy?

Product Naming

What should the public-facing npm package name be?

Version Granularity

What level of version granularity should users be able to pin?

Deck-Based Installation

How should npm distribution expose deck installation for VARD, ORD, Business AFPS, and Devtool AFPS?

Artifact Destination

Where should implementation planning artifacts go after approval?

Post-Approval Route

After final approval, what should the agent do next?

Compile YAML

Section feedback

Use feedback YAML for emphasis requests, concerns, or clarification before answering all gates. Use final answers YAML only when every required gate is answered.