npx skills核心功能速查及技能开发指南

以下是 npx skills 的核心功能精简版 Markdown 文档,保留了最关键的用法和概念。


npx skills 核心指南

1. 核心命令速查

命令 作用
npx skills add <来源> 安装技能包(GitHub 短名/URL/本地路径)
npx skills find [关键词] 搜索可用技能
npx skills list 列出已安装技能
npx skills update 更新所有技能
npx skills remove <技能名> 移除指定技能
npx skills init <名称> 创建新技能模板

示例

bash 复制代码
npx skills add vercel-labs/agent-skills          # 安装技能包
npx skills add antfu/skills --skill vue          # 指定安装某个技能
npx skills add ./.skills --agent cursor --global # 安装到全局,指定助手

2. 安装交互流程

运行 npx skills add 后会依次提示:

  1. 选择技能:多选(空格键)
  2. 选择 AI 助手:Claude Code / Cursor / Copilot 等
  3. 选择安装范围Project(项目级)或 Global(全局级)
  4. 选择安装方式 :推荐 Symlink(符号链接)

非交互式安装:使用 --agent--global--yes 等参数自动完成。

3. 技能包(Skill)是什么?

一个技能包是结构化的文件夹,包含:

  • SKILL.md:技能描述 + 工作流程(YAML 元数据 + Markdown 指令)
  • scripts/:可执行脚本(Python、Shell),用于精确操作
  • references/:参考文档(按需加载)
  • assets/:模板、图片等资源

核心优势

  • 按需加载:仅技能元数据常驻上下文,节省 token
  • 可靠执行:复杂任务调用预设脚本,避免 AI 生成错误代码
  • 可复用:技能可在项目、团队间共享

以下是基于 Node.js 实现的 pdf-processor 技能包示例,帮助你理解技能包的结构和 Node.js 脚本的应用方式。


基于 Node.js 的具体示例

假设你需要让 AI 助手能够高效处理 PDF 文件,可以创建一个名为 pdf-processor 的技能包。它的目录结构如下:

plain 复制代码
pdf-processor/
├── SKILL.md                  # 核心说明文件
├── scripts/
│   ├── extract-text.js       # 提取 PDF 文本的 Node.js 脚本
│   ├── merge-pdfs.js         # 合并多个 PDF 的脚本
│   └── add-watermark.js      # 添加水印的脚本
├── references/
│   └── pdf-lib-guide.md      # 可选:pdf-lib 库的使用参考
└── assets/
    └── watermark.png         # 可选:水印图片模板
核心文件详解

SKILL.md ------ 技能的大脑

markdown 复制代码
---
name: pdf-processor
description: 处理 PDF 文件的技能,支持提取文本、合并文档、添加水印等操作(基于 Node.js)。
---

# PDF 处理器

## 适用场景
- 用户需要从 PDF 中提取文本内容
- 需要合并多个 PDF 文件
- 需要为 PDF 添加水印

## 环境要求
- Node.js 18+
- 依赖库:`pdf-parse`、`pdf-lib`(可通过 `npm install pdf-parse pdf-lib` 安装)

## 工作流程
1. 判断用户需求属于哪一类操作。
2. 根据需求调用 `scripts/` 目录下的对应脚本:
   - 提取文本 → `node scripts/extract-text.js <输入文件> [输出文件]`
   - 合并 PDF → `node scripts/merge-pdfs.js <文件列表> <输出文件>`
   - 添加水印 → `node scripts/add-watermark.js <输入文件> <水印文件> <输出文件>`
3. 将脚本执行结果反馈给用户。

## 注意事项
- 脚本执行前请确保 Node.js 环境和所需依赖已安装。
- 若用户未指定输出文件,默认保存为 `output.pdf` 或 `extracted.txt`。

scripts/extract-text.js ------ 确定性脚本(简化版)

javascript 复制代码
#!/usr/bin/env node
/**
 * 提取 PDF 中的纯文本
 * 用法: node extract-text.js input.pdf [output.txt]
 */
const fs = require('fs');
const path = require('path');
const pdfParse = require('pdf-parse');

async function extractText(pdfPath, txtPath = null) {
  const dataBuffer = fs.readFileSync(pdfPath);
  const data = await pdfParse(dataBuffer);
  const text = data.text;

  if (txtPath) {
    fs.writeFileSync(txtPath, text, 'utf8');
    console.log(`文本已保存至: ${txtPath}`);
  } else {
    console.log(text);
  }
}

if (require.main === module) {
  const args = process.argv.slice(2);
  if (args.length < 1) {
    console.error('错误:请提供 PDF 文件路径');
    process.exit(1);
  }
  const input = args[0];
  const output = args[1] || null;
  extractText(input, output).catch(err => {
    console.error('处理失败:', err.message);
    process.exit(1);
  });
}

scripts/merge-pdfs.js ------ 合并 PDF 脚本

javascript 复制代码
#!/usr/bin/env node
/**
 * 合并多个 PDF 文件
 * 用法: node merge-pdfs.js file1.pdf file2.pdf ... output.pdf
 */
const fs = require('fs');
const { PDFDocument } = require('pdf-lib');

async function mergePDFs(inputPaths, outputPath) {
  const mergedPdf = await PDFDocument.create();

  for (const filePath of inputPaths) {
    const fileBytes = fs.readFileSync(filePath);
    const pdf = await PDFDocument.load(fileBytes);
    const pages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
    pages.forEach(page => mergedPdf.addPage(page));
  }

  const mergedBytes = await mergedPdf.save();
  fs.writeFileSync(outputPath, mergedBytes);
  console.log(`合并完成,保存至: ${outputPath}`);
}

if (require.main === module) {
  const args = process.argv.slice(2);
  if (args.length < 2) {
    console.error('错误:至少需要提供 2 个 PDF 文件路径,最后一个为输出文件');
    process.exit(1);
  }
  const output = args.pop();
  const inputs = args;
  mergePDFs(inputs, output).catch(err => {
    console.error('合并失败:', err.message);
    process.exit(1);
  });
}

scripts/add-watermark.js ------ 添加水印脚本(简化)

javascript 复制代码
#!/usr/bin/env node
/**
 * 为 PDF 添加水印(文字或图片)
 * 用法: node add-watermark.js input.pdf watermark.png output.pdf
 */
const fs = require('fs');
const { PDFDocument, rgb } = require('pdf-lib');

async function addWatermark(inputPath, watermarkPath, outputPath) {
  const pdfBytes = fs.readFileSync(inputPath);
  const pdfDoc = await PDFDocument.load(pdfBytes);

  // 加载水印图片(假设是 PNG)
  const watermarkBytes = fs.readFileSync(watermarkPath);
  const watermarkImage = await pdfDoc.embedPng(watermarkBytes);
  const pages = pdfDoc.getPages();

  for (const page of pages) {
    const { width, height } = page.getSize();
    // 在页面中心添加水印,调整大小和透明度
    page.drawImage(watermarkImage, {
      x: width / 2 - 100,
      y: height / 2 - 100,
      width: 200,
      height: 200,
      opacity: 0.3,
    });
  }

  const modifiedPdfBytes = await pdfDoc.save();
  fs.writeFileSync(outputPath, modifiedPdfBytes);
  console.log(`水印添加完成,保存至: ${outputPath}`);
}

if (require.main === module) {
  const args = process.argv.slice(2);
  if (args.length < 3) {
    console.error('错误:请提供输入 PDF、水印文件、输出 PDF 路径');
    process.exit(1);
  }
  const [input, watermark, output] = args;
  addWatermark(input, watermark, output).catch(err => {
    console.error('添加水印失败:', err.message);
    process.exit(1);
  });
}

references/pdf-lib-guide.md ------ 按需加载的参考文档

markdown 复制代码
# pdf-lib 常用操作速查

## 安装
```bash
npm install pdf-lib pdf-parse

技能如何被 AI 使用

  1. 启动时 :AI 只读取 SKILL.md 中的元数据(namedescription),知道存在一个"PDF 处理器"技能。
  2. 用户提问 :当用户说"帮我把这个 PDF 里的文字提取出来"时,AI 根据描述匹配到该技能,动态加载 整个 SKILL.md 的内容,了解工作流程。
  3. 执行任务 :AI 按照 SKILL.md 的指示,调用 scripts/extract-text.js 脚本,并传递用户提供的文件路径,完成精确的文本提取。
  4. 结果反馈:脚本执行结果返回给 AI,AI 再将结果以自然语言形式呈现给用户。
技能包的优势体现
  • 精确可靠:提取 PDF 文本由成熟的 Node.js 库完成,避免了 AI 自行编写代码可能出现的错误。
  • 节省 Tokenreferences/ 中的详细文档只会在需要时(例如 AI 需要了解更复杂的 PDF 操作)才被读取,平时不占用上下文。
  • 易于分享 :整个文件夹可以打包上传到 GitHub,团队成员通过 npx skills add 一键安装,立即获得相同能力。

这个示例展示了如何将一项专业能力(PDF 处理)封装成结构化的技能包,并基于 Node.js 生态实现,让 AI 助手从"聊天"升级为"实干家"。

4. 典型应用场景

场景 说明
自动化工作流 生成周报、PPT、测试报告
代码规范 强制命名规则、生成符合团队风格的代码
工具集成 让 AI 学会使用 playwrightdocker 等工具
知识沉淀 将专家经验封装成技能,供团队使用

5. 官方资源


总结npx skills 是 AI 助手的"技能商店",通过简单的命令即可让 AI 掌握专业能力,从聊天升级为高效的工作伙伴。

相关推荐
中国胖子风清扬3 小时前
实战:基于 Camunda 8 的复杂审批流程实战指南
java·spring boot·后端·spring·spring cloud·ai·maven
Elastic 中国社区官方博客3 小时前
Elasticsearch BBQ:一场教科书式的向量搜索 “弯道超车”
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
J_bean3 小时前
在 OpenClaw 中创建 Browser Use 技能实战
ai·智能体·browser-use·openclaw 技能
龙侠九重天3 小时前
使用 OpenClaw 进行数据分析和可视化
大数据·人工智能·python·ai·信息可视化·数据分析·openclaw
标准通.4 小时前
直播回顾 | 标准编写系列课第四讲:试验方法标准编制规范——GB/T 2001.4-2015解读
人工智能·ai·标准·标准化·科技成果转化
feibaoqq4 小时前
OpenClaw 三种使用方式全对比:网页端 / 接入飞书 / 接入钉钉 优缺点与选型指南
人工智能·学习·ai
sam.li4 小时前
GhidraMCP 原理与使用部署
ai·逆向·插件·mcp·ghidra
marsh02064 小时前
21 openclaw安全威胁模型:识别常见攻击向量
安全·ai·编程·技术
Z_Wonderful4 小时前
npm -v无效PowerShell 的执行策略,解决方案
前端·npm·node.js