@pramodyadav027/skills-manifest-manager
v1.0.1
Published
Manifest-driven installer for skills.sh skills
Readme
skills
Manifest-driven, TypeScript package manager for skills.sh skills.
Why this exists
- Keep team skill setup reproducible from one manifest across machines
- Install to home directory by default, or current repo when needed
- Wrap existing skills.sh CLI instead of rebuilding a custom registry/downloader
- Add/remove/sync skills from the command line
- Full TypeScript implementation with tests
NPM Usage
After publishing or local install/link, run the CLI normally:
skills-pm install
skills-pm add owner/repo --ref main
skills-pm remove owner/repoFor local development before publishing:
npm install
npm run build
npm link
skills-pm listRequirements
- Node.js 18+
- npm/pnpm/yarn
Quick Start
Install dependencies
npm install
npm run buildAdd skills
skills-pm add vercel-labs/agent-skills --ref mainInstall skills
skills-pm installWill prompt for target (home, local, or custom path).
Use flags to skip prompts
# Install to home directory
skills-pm install --home
# Install to current repo
skills-pm install --local
# CI mode (fail fast on errors, no prompts)
skills-pm install --ciProgrammatic API
If you publish this package to npm, you can install skills from a skills.yaml or skills.yml file in code:
const { installFromManifest } = require('@pramodyadav027/skills-manifest-manager');
await installFromManifest({
cwd: process.cwd(),
manifestPath: './skills.yaml',
targetPath: process.cwd(),
});That API reads and validates skills.yaml or skills.yml, installs enabled skills, and writes skills.lock.yaml.
Manifest Format
Edit skills.yaml or skills.yml:
version: 1
# Default target: home or local
target: home
skills:
# Enable and install
- id: vercel-labs/agent-skills
ref: main
enabled: true
notes: "Core agent patterns"
# Disable (won't install)
- id: anthropics/skills
ref: main
enabled: falseCommands
| Command | Purpose |
|---------|---------|
| install | Install all enabled skills (default) |
| add <id> | Add a skill to manifest |
| remove <id> | Remove a skill from manifest |
| list | List enabled skills |
| validate | Check manifest syntax |
| sync | Sync installed with manifest |
| help | Show all commands |
Examples
# Validate manifest
skills-pm validate
# List enabled skills
skills-pm list
# Add a new skill
skills-pm add owner/repo --ref v1.0.0
# Remove a skill
skills-pm remove owner/repo
# Install with dry-run preview
skills-pm install --dry-run --local
# Sync (remove skills no longer in manifest)
skills-pm sync
# CI/CD friendly
skills-pm install --ci --homeFlags
--manifest <path>— Custom manifest path--target <path>— Install to explicit directory--local— Install in current repo--home— Install in home directory--dry-run— Preview without executing--ci— CI mode (no prompts, fail fast)--ref <ref>— Git ref for add command (default: main)
Development
Build
npm run buildRun in dev mode (TypeScript directly)
npm run dev -- list
npm run dev -- add owner/repoTest
npm test
npm run test:watchClean
npm run cleanTeam Workflow
See TEAM_WORKFLOW.md for detailed guidance on using this tool across your team.
File Structure
skills/
├── src/
│ ├── index.ts # Public library API
│ ├── cli.ts # Command parsing and orchestration
│ ├── manifest.ts # YAML parsing and validation
│ └── installer.ts # skills.sh wrapper with error handling
├── bin/
│ └── skills-pm.ts # CLI entrypoint
├── tests/
│ └── manifest.test.ts # Test suite
├── skills.yaml # Example manifest
├── skills.lock.yaml # Generated lockfile (reproducibility)
└── package.json # Dependencies and build scriptsNext Steps
- Commit
skills.yamlandskills.lock.yamlto git - Share manifest file with team
- See TEAM_WORKFLOW.md for organization patterns
License
See LICENSE
