用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/az9713/npm-agents --skill npm-agent命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | npm-agent |
| description | Execute NPM packages as AI agent tools - a flexible alternative to MCPs |
| model-only | false |
| allowed-tools | ["Bash","Read","Write"] |
You have access to a curated library of 289 high-quality NPM packages that can be executed as tools via bash. This provides flexible, powerful capabilities that go beyond what MCPs offer.
The manifest at data/packages.json contains all available packages with execution patterns.
npx -y <package> [args]
The -y flag auto-confirms installation.
node -e "const pkg = require('<package>'); /* code */"
.js filenode script.js# Resize image
node -e "require('sharp')('input.png').resize(300).toFile('output.png')"
# Convert to JPEG
node -e "require('sharp')('input.png').jpeg({quality: 80}).toFile('output.jpg')"
# Get metadata
node -e "require('sharp')('image.png').metadata().then(m => console.log(JSON.stringify(m, null, 2)))"
# Parse CSV file
node -e "require('fs').createReadStream('data.csv').pipe(require('csv-parse').parse({columns:true})).on('data', r => console.log(JSON.stringify(r)))"
# Quick parse with papaparse
node -e "console.log(JSON.stringify(require('papaparse').parse(require('fs').readFileSync('data.csv','utf8'), {header:true}).data))"
# GET request
node -e "require('axios').get('https://api.example.com/data').then(r => console.log(JSON.stringify(r.data)))"
# POST request
node -e "require('axios').post('https://api.example.com/data', {key: 'value'}).then(r => console.log(r.status))"
# Current date formatted
node -e "console.log(require('dayjs')().format('YYYY-MM-DD HH:mm:ss'))"
# Add 7 days
node -e "console.log(require('dayjs')().add(7, 'day').format('YYYY-MM-DD'))"
# Validate with AJV
node -e "const Ajv = require('ajv'); const v = new Ajv(); console.log(v.validate({type: 'object', required: ['name']}, {name: 'test'}))"
# Parse YAML
node -e "console.log(JSON.stringify(require('js-yaml').load(require('fs').readFileSync('config.yaml', 'utf8'))))"
# Convert JSON to YAML
node -e "console.log(require('js-yaml').dump({key: 'value', nested: {a: 1}}))"
# Find all JS files
node -e "require('glob').glob('**/*.js', {ignore: 'node_modules/**'}).then(f => console.log(f.join('\n')))"
# Create ZIP archive
node -e "const a = require('archiver')('zip'); a.pipe(require('fs').createWriteStream('archive.zip')); a.directory('src/', false); a.finalize()"
# Convert markdown to HTML (CLI)
npx marked -i README.md -o README.html
# Programmatic (marked is ESM-only, use import())
node -e "import('marked').then(m => console.log(m.parse('# Hello\n\nWorld')))"
# Handlebars
node -e "console.log(require('handlebars').compile('Hello {{name}}!')({name: 'World'}))"
# EJS
node -e "console.log(require('ejs').render('Hello <%= name %>!', {name: 'World'}))"
# Read Excel file
node -e "const XLSX = require('xlsx'); const wb = XLSX.readFile('file.xlsx'); console.log(JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])))"
node -e "const {jsPDF} = require('jspdf'); const doc = new jsPDF(); doc.text('Hello World', 10, 10); require('fs').writeFileSync('output.pdf', Buffer.from(doc.output('arraybuffer')))"
# UUID v4
node -e "console.log(require('uuid').v4())"
# NanoID (ESM-only, use import())
node -e "import('nanoid').then(m => console.log(m.nanoid()))"
# MD5 hash
node -e "console.log(require('crypto-js').MD5('hello').toString())"
# SHA256
node -e "console.log(require('crypto-js').SHA256('hello').toString())"
-y with npx to auto-confirm package installationSome modern packages are ESM-only and cannot use require(). Use import() instead:
CommonJS packages (most packages):
node -e "console.log(require('dayjs')().format('YYYY-MM-DD'))"
ESM-only packages (use dynamic import):
node -e "import('nanoid').then(m => console.log(m.nanoid()))"
node -e "import('marked').then(m => console.log(m.parse('# Hello')))"
Known ESM-only packages:
nanoid (v4+)marked (v5+)chalk (v5+)ora (v6+)execa (v6+)got (v12+)node-fetch (v3+)How to detect ESM packages:
ERR_REQUIRE_ESM or require is not defined"type": "module"Pattern for ESM:
node -e "import('<package>').then(m => { /* use m.functionName() */ })"
| Aspect | MCP | NPM Packages |
|---|---|---|
| Setup time | Hours per tool | Minutes |
| Code required | Custom server | Zero |
| Maintenance | You maintain it | NPM community |
| Updates | Manual redeploy | npm update |
| Tool count | Build each one | 289+ ready to use |
data/packages.jsoncategory fieldcodeExamples in the manifestnpx <package> --help to discover CLI optionsPackages are auto-installed when first used via npx -y or when running node -e (npm will resolve them). For repeated use, you can pre-install:
npm install <package>