neovateai/agent-skill-npm-boilerplate
A template for creating and publishing Claude Code skills as npm packages
Deep Analysis
将 Claude Code 技能打包为 npm 模块进行分发的模板项目
Core Features
Technical Implementation
- 解决了技能分发的痛点问题 - 版本控制、更新、发现性
- 完全兼容官方 Claude Code 技能规范
- 支持渐进式文档加载 (Progressive Disclosure)
- 提供完整的最佳实践指南
- GitHub 模板仓库,一键创建新项目
- 团队内部技能统一管理和分发
- 开源社区共享自定义技能
- 企业私有 npm registry 发布内部技能
- 版本锁定的项目专属技能
- 仅是模板/脚手架,不包含实际技能逻辑
- 依赖 npm 生态,非 npm 用户不友好
- 需要用户理解 npm 发布流程
- 多工具支持需要各工具遵循类似的技能目录结构
Agent Skill NPM Boilerplate
Distribute AI agent skills like any other npm package
AI coding tools (Claude Code, Cursor, Windsurf) support custom "skills" - reusable instructions that extend agent capabilities. But distributing them means manual file copying, no versioning, and painful updates.
This template lets you publish skills to npm:
# Install
npm install -g @your-org/git-commit-helper
# Update
npm update -g @your-org/git-commit-helper
# It just works - installs to ~/.claude/skills/, ~/.cursor/skills/, etc.
Why this matters: Skills become proper software artifacts with semantic versioning, dependency management, private registries, and global discovery. Same infrastructure that distributes React and Express.
Quick start: Fork this template, edit SKILL.md, run npm publish. Your skill is now installable worldwide.
Supports: Claude Code, Cursor, Windsurf, and any tool following similar skill patterns. See MULTI-TOOL-SUPPORT.md.
💡 Why npm for Skills?
Manual skill distribution requires downloading files, copying to ~/.claude/skills/, and repeating for every update. No versioning, no dependency management, no discovery.
npm solves this:
# Install/update/uninstall with standard commands
npm install -g @your-org/skill-name
npm update -g @your-org/skill-name
npm uninstall -g @your-org/skill-name
# Semantic versioning for controlled updates
npm install @your-org/skill@^2.1.0
# Project-specific skills (version-locked, committed to git)
npm install --save-dev @your-org/skill-name
Core benefits:
- Version control - Semantic versioning, upgrade/rollback easily
- Global distribution - Publish once, available worldwide via npm's CDN
- Discoverability - Searchable on npmjs.com
- Enterprise ready - Private registries for internal skills
- Ecosystem integration - Works with CI/CD, monorepos, existing tooling
Skills become first-class software artifacts, using the same infrastructure as React, Express, and millions of other packages.
✨ Features
- ✅ Official Specification: Fully compliant with Claude Code skills format
- ✅ Multi-Tool Support: Install to Claude Code, Cursor, Windsurf, and more! (See Multi-Tool Support)
- ✅ Smart Installation: Auto-detects global vs project-level installation
- ✅ Progressive Disclosure: Supports main SKILL.md + reference files
- ✅ Lifecycle Management: Install, update, uninstall scripts included
- ✅ Best Practices: Follows all recommended patterns from official docs
- ✅ Ready to Publish: Just customize and publish to npm
🚀 Quick Start
Option 1: Use as GitHub Template (Recommended)
This is a GitHub Template Repository. The easiest way to use it:
- Click the "Use this template" button at the top of this repository (or click here)
- Name your new repository (e.g.,
my-awesome-skill) - Clone your new repository:
git clone https://github.com/YOUR-USERNAME/my-awesome-skill.git cd my-awesome-skill - Customize your skill (see Customization Guide)
- Publish to npm:
npm login npm publish --access public
Option 2: Clone Directly
# Clone this repository
git clone https://github.com/YOUR-USERNAME/agent-skill-npm-boilerplate.git my-skill
cd my-skill
# Remove git history and start fresh
rm -rf .git
git init
# Install dependencies (for development)
npm install
# Customize your skill
📁 Project Structure
agent-skill-npm-boilerplate/
├── package.json # npm package configuration
├── SKILL.md # Main skill definition (REQUIRED)
├── .claude-skill.json # Installation configuration
├── install-skill.js # Installation script
├── uninstall-skill.js # Uninstallation script
├── reference.md # Detailed documentation (optional)
├── examples.md # Usage examples (optional)
├── scripts/ # Utility scripts (optional)
│ ├── setup.sh # Post-install setup
│ └── config.json.example # Configuration template
├── README.md # This file (customize for your skill)
├── LICENSE # License file
└── .gitignore # Git ignore rules
🎨 Customization Guide
Step 1: Update package.json
Replace the following placeholders:
{
"name": "@your-org/your-skill-name", // Change this
"version": "1.0.0",
"description": "YOUR SKILL DESCRIPTION", // Change this
"author": "YOUR NAME", // Change this
"repository": {
"url": "YOUR-REPO-URL" // Change this
}
}
About npm scopes:
- Use a scope (
@your-org/skill-name) if you want to organize skills under your organization - Use no scope (
skill-name) for standalone packages - Popular scopes:
@your-company,@your-username, or custom like@claude-skills - Scopes require configuration:
npm config set @your-org:registry https://registry.npmjs.org/
Step 2: Update SKILL.md
Edit SKILL.md and replace placeholders:
---
name: your-skill-name # Must match directory name
description: Your skill description here. Use when [scenarios].
allowed-tools: Read, Bash # Tools your skill can use
---
Step 3: Update .claude-skill.json
{
"name": "your-skill-name", // Must match SKILL.md name
"package": "@your-org/your-skill-name"
}
Step 4: Add Your Logic
Edit the "Instructions" section in SKILL.md:
## Instructions
When the user [describes scenario]:
1. **Step 1**: Do something
2. **Step 2**: Do something else
3. **Step 3**: Complete the task
Step 5: Test Locally
# Test the installation script
node install-skill.js
# Check if installed correctly
ls -la ~/.claude/skills/your-skill-name/
cat ~/.claude/skills/your-skill-name/SKILL.md
# Open Claude Code and verify
# Ask Claude: "What skills are available?"
Step 6: Publish to npm
# Login to npm (first time only)
npm login
# Publish your skill
npm publish --access public
📖 Skill Development Best Practices
1. Write Clear Descriptions
The description field in SKILL.md is crucial - it determines when Claude uses your skill:
# ❌ Bad: Too vague
description: Helps with files
# ✅ Good: Specific and includes trigger keywords
description: Analyzes TypeScript files for type errors. Use when checking types, debugging TypeScript issues, or validating .ts files.
2. Use Progressive Disclosure
Keep SKILL.md under 500 lines. Put detailed content in separate files:
# In SKILL.md
For complete API reference, see [reference.md](reference.md)
For examples, see [examples.md](examples.md)
Claude will only load these files when needed, saving context.
3. Limit Tool Access
Use allowed-tools to restrict what your skill can do:
# Read-only skill
allowed-tools: Read, Grep, Glob
# Can read and execute (but not modify files)
allowed-tools: Read, Bash
# Full access
allowed-tools: Read, Edit, Write, Bash
4. Include Examples
Show concrete examples in your SKILL.md:
## Examples
### Example 1: Basic Usage
User asks: "Check my commit message"
Claude will:
1. Read the commit message
2. Validate format
3. Suggest improvements
📦 Installation Behavior
Global Installation (Recommended)
npm install -g @your-org/your-skill
Installs to: ~/.claude/skills/your-skill-name/
Available: Across all projects for the current user
Project-Level Installation
npm install --save-dev @your-org/your-skill
Installs to: .claude/skills/your-skill-name/
Available: Only in this project (can be committed to git)
Priority Order
When multiple skills exist:
- Enterprise (managed settings)
- Personal (
~/.claude/skills/) - Project (
.claude/skills/) - Plugin
How Installation and Uninstallation Work
This boilerplate includes automatic installation and uninstallation scripts that run when users install or remove your skill package via npm.
Installation Process
When a user runs npm install (or npm install -g) on your skill package:
- Target Detection: The script identifies which AI coding tools are configured for installation based on
.claude-skill.json - Scope Prefix Handling: Extracts the actual skill name by removing any npm scope prefix (e.g.,
@your-org/skill-namebecomesskill-name) - Path Resolution: For each target tool, it determines the appropriate installation location:
- Global installation:
~/{tool-path}/skills/(user's home directory) - Project installation:
./{tool-path}/skills/(project root directory)
- Global installation:
- Directory Setup: Creates the skill directory using the skill name (without npm scope prefix)
- File Copying: Copies essential files:
SKILL.md(required) - The main skill definition- Any additional files specified in
.claude-skill.json
- Compatibility Cleanup: Removes any legacy installation paths for backward compatibility
- Manifest Update: Updates the
.skills-manifest.jsonto track installed skills - Post-install Hooks: Runs any custom setup scripts defined in
.claude-skill.json
Uninstallation Process
When a user runs npm uninstall (or npm uninstall -g) on your skill package:
- Target Detection: Identifies which AI coding tools were configured for the skill
- **Scope Prefix Ha

