JSPM

@papi-ai/skills

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 29
  • Score
    100M100P100Q68640F
  • License Elastic-2.0

PAPI's shareable Claude Code skill bundle — single source of truth, installed (not copied) into projects with pinned versioning

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 skill

Each 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 }]