Package Exports
- @papi-ai/skills/manifest
- @papi-ai/skills/manifest.json
Readme
@papi-ai/skills
The canonical, versioned bundle of PAPI's shareable Claude Code skills. Projects install this package instead of copying skill files, so they pick up fixes by bumping a pinned version rather than silently drifting from forked copies.
What's in the bundle
Nine ship-ready skills (the PAPI-internal skills — bootstrap-project,
friction-promote, patch-notes, support-debug — are intentionally not shipped):
Generic engineering (eager): check-mcp, pr-reviewer,
deployment-completeness-audit, playwright-skill
Cycle methodology (lazy / trigger-loaded): papi-plan, papi-build,
papi-idea, papi-strategy, papi-advanced
The authoritative inventory + checksums live in manifest.json,
regenerated from the skill content on prepack.
Install into a project
npx @papi-ai/skills install /path/to/project # symlink (copy fallback)
npx @papi-ai/skills install /path/to/project --copy # force copy, no symlinks
npx @papi-ai/skills install /path/to/project --force # overwrite a diverged skillEach packaged skill is symlinked into <project>/.claude/skills/<name>. Where
symlinks are unsupported (some Windows / restricted filesystems) it copies instead.
Pinned versioning
Published as @papi-ai/skills@0.1.0. A project pinned to 0.1.0 keeps that exact
content when 0.2.0 ships — upgrades are explicit (npm i @papi-ai/skills@latest
then re-run the installer), never silent.
Local overrides
A skill placed in <project>/.claude/skills.local/<name> is an intentional
override: the installer never touches it and PAPI's stale-fork detection never
flags it. Use this to customise a skill without fighting the package.
Stale-fork detection
orient (with deep_housekeeping: true) compares the project's .claude/skills/
against this manifest and surfaces any skill whose content has diverged from the
pinned registry, offering replacement. It prompts — it never auto-overwrites.
import { detectStaleForks } from '@papi-ai/skills/manifest';
const forks = detectStaleForks('/path/to/project'); // [{ name, packagedChecksum, localChecksum }]