Skip to main content

Plugin Distribution

lib/distribution/ and the skill-system.json manifest at the repo root generate installable plugin packages and marketplace listings for Claude Code and Codex, purely from the real skills/ tree (97 distributed skill directories) — copy-mode throughout, never symlink.

lib/distribution/ modules​

ModuleRole
skill-system.mjsReads and validates skill-system.json, and scans its declared inventory roots for distributable skills. Ported from the full pack's scripts/lib/skill-system.js, scaled down to this repo's single-root, copy-only inventory.
frontmatter.mjsReads the name and description scalars out of a SKILL.md's YAML frontmatter without a YAML dependency — the mini has none, and adding one for two scalar fields would be more surface than the problem needs. Handles a plain inline scalar and a folded block scalar (>), which is the only block style actually used across this repo's SKILL.md files (confirmed by sampling every frontmatter block before writing the module). Literal style (|) is not implemented and fails loudly rather than silently mis-joining.
canonical-bytes.mjsThe bytes git stores for a file, independent of how the host checked it out — see Installation for why this matters on a Windows core.autocrlf=true checkout.
manifest.mjsBuilds the Claude and Codex plugin.json content, matching the exact schemas captured from the full pack's own generated plugin packages. Claude's manifest carries no hooks field (Claude Code auto-discovers a sibling hooks/hooks.json) and no agents field. Codex's manifest adds an interface block (capabilities, category, defaultPrompt, developerName, displayName, longDescription, shortDescription, websiteURL) and explicitly omits hooks — Codex rejects a manifest that has one.
marketplace.mjsBuilds .claude-plugin/marketplace.json and .agents/plugins/marketplace.json. This pack lists exactly one plugin — itself — unlike the full pack's ten sibling plugin trees. Codex's copy additionally carries a policy: {installation, authentication} block, matching the full pack's own Codex marketplace.
package-builder.mjsMaterializes the Claude and Codex plugin packages plus both marketplace files from skill-system.json, building into a temp directory first and atomically swapping it into the real output path — see Installation.

The two generator scripts​

node scripts/generate-skill-system-distribution.mjs # writes dist/ and the marketplaces
node scripts/generate-skill-system-distribution.mjs --check # verifies, exits non-zero on drift

node scripts/generate-commands.mjs # writes Claude Code slash commands

generate-commands.mjs is what actually makes /kbd-analyze (and every other ported skill) typeable as a Claude Code slash command — independent of, and in addition to, the plugin/ marketplace listing. It writes one command file per skill under ~/.claude/commands/ (overridable via --output), each pointing at an absolute path to that skill's SKILL.md.

The full pack symlinks 11 of its 13 install targets. This pack's own constitution forbids symlinks outright — a real, repo-wide rule, not specific to distribution — because creating a symlink on Windows needs Developer Mode or elevation, exactly the kind of privileged setup step this pack exists to avoid requiring. lib/distribution/package-builder.mjs's copy-then-atomic-swap pattern is the one deliberate divergence from the full pack's own generator that this repo's rules force.

See also​

  • Installation — skill-system.json's full shape and the install-scope rule.
  • Doctor — checks the home-directory skill copies distribution produces.

Project UI routing and teams​

Distribution makes skill payloads available. Project adoption also needs managed instructions, the UI protocol and an active-team record. Follow UI/UX routing and adoption for bootstrap or separate UI/creator commands. The current inventory includes 40 portable UI entries from the shared 41-entry catalog. Local helpers run directly with Node 22+ and bundled assets; they need neither optional service. The full-pack anti-shadowing constraint still applies.

Proposal-only creator export does not install a project team; normal project creation finishes with install-project. Writing definitions does not prove native discovery or invocation.