npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

antoskill

v0.2.0

Published

MCP server that auto-recommends and installs high-quality, project-matched Agent Skills into Claude Code and Codex, with human-in-the-loop confirmation.

Readme

CI License: MIT Node MCP Claude Code Codex

English · 简体中文


AntoSkills 是一个 MCP 服务,把包管理器的那套规矩带给 Agent Skills。你对 agent 说一句*"给这个项目推荐 skills"*,它就会识别你的 技术栈、从精选索引里按匹配度排出高质量 skill、把每个 skill 连同一份静态安全扫描摆给你看,然后 —— 只有在你批准之后 —— 才把它们以钉死的 commit 同时安装进 .claude/skills/.agents/skills/

检测技术栈  →  推荐匹配项  →  预览 + 安全扫描  →  你批准  →  钉死版本安装

因为 Agent Skills 是一个开放标准,同一个 SKILL.md 在 Claude Code 和 Codex 里都能跑。AntoSkills 做的 正是标准没管的那部分:找对 skill、审核它们、并跨工具可复现地安装。

为什么需要 AntoSkills

skill 很强,但手工管理很烦:你要在一堆仓库里翻找、分不清哪个靠谱、每个工具装到的目录还不一样,而且 没有任何东西记录你到底装了什么。AntoSkills 把这一切变成一次简短的对话 —— 并把结果钉死,让你的同事 和 CI 拿到逐字节一致的 skill。

| 没有 AntoSkills | 有了 AntoSkills | | --- | --- | | 手工在 GitHub 仓库里翻找 | 按项目匹配、已排序的推荐 | | 靠猜判断一个 skill 是否安全 | 每次安装前都有静态安全扫描 | | 手动把文件复制进每个工具的目录 | 一次安装 → Claude Code Codex | | "在我机器上是好的"式的版本漂移 | skills.lock 钉死不可变的 SHA + 哈希 |

一次典型的对话

"给这个项目推荐一些 skills,然后把做测试的那几个装上。"

你 ▸ 给这个项目推荐 skills

  Project tags: typescript, react, vitest

  • anthropic-frontend-design (score 88) — Produce distinctive, production-grade frontend UI
      matched: react, frontend; repo: anthropics/skills
  • cypress-author (score 81) — Author Cypress end-to-end tests (official Cypress AI toolkit)
      matched: testing, e2e; repo: cypress-io/ai-toolkit
  • api-test-suite-builder (score 74) — Generate comprehensive API test suites
      matched: testing, api; repo: alirezarezvani/claude-skills

你 ▸ 预览 cypress-author

  cypress-author @ a1b2c3d4e5 (cypress-io/ai-toolkit)
  SKILL.md: Cypress Author — Author Cypress end-to-end tests
  Files (3): SKILL.md, scripts/scaffold.md, references/patterns.md
  Risk score: 0 — no red flags

你 ▸ 装上它

  Installed into /your/project:
  ✓ cypress-author @ a1b2c3d4e5 → [claude,codex] (junction)

提示行 你 ▸ 是你用自然语言(中文也可以)发出的请求;缩进的部分是 antoskill 工具的真实输出(当前为英文)。

只读步骤(detectrecommendpreview)无需批准;安装才是你的闸门。

核心特性

  • 项目精准匹配 —— 识别你的语言/框架,按相关度 + 质量信号(star、活跃度、是否维护)给 skill 排序。
  • 钉死且可复现 —— 每次安装都把不可变的 commit SHA + 内容哈希写进 skills.locksync 能为同事和 CI 重建出完全相同的 skill。
  • 装前审核 —— 静态安全扫描会标出可执行载荷、外联网络、shell 调用、读取密钥、安装钩子、混淆代码等;高风险 skill 默认被拒绝,除非你明确确认。
  • 跨工具 —— 以单一事实源,同时安装进 Claude Code(.claude/skills/)和 Codex(.agents/skills/)。
  • 内容寻址存储 —— 每个 skill 版本在 ~/.antoskill/store/ 只存一份,去重、校验完整性,即使上游消失也能离线使用。
  • 省 token —— 候选索引很大,但装进项目的很少:单项目安装数量有上限,agent 的 skill 列表不会撑爆上下文。

安全模型

skill 可以携带可执行脚本,所以 AntoSkills 把每次安装都当作一个要写进 lockfile 的依赖来对待:

  • 安装前运行静态安全扫描并展示给你 —— 可执行载荷、外联网络、shell 调用、读取密钥/环境变量、安装 钩子、混淆、过宽权限。高风险 skill 会被拒绝,除非你明确确认风险。
  • 安装内容以 SHA + 内容哈希钉死,并在每次 sync 时重新校验。
  • 来源走白名单(索引)—— agent 只能安装索引里的条目,绝不能装任意 URL。

扫描是启发式的:它辅助你判断,不替你判断。批准前请自行 review。

安装

需要 Node ≥ 20。下面是最短上手路径;完整的下载、配置与使用教程见 详细安装与使用教程

[!IMPORTANT] 尚未发布到 npm。 下面的 npx -y antoskill 写法是发布后的正式安装方式 —— 在包发布之前会失败。 在那之前请从源码安装(完整说明见教程第 5 节):

git clone https://github.com/YforC/AntoSkills.git && cd AntoSkills
npm install && npm run build
claude mcp add antoskill -- node ./dist/index.js   # Codex:让 config.toml 指向 dist/index.js

Claude Code

claude mcp add antoskill -- npx -y antoskill

或写进 .mcp.json

{
  "mcpServers": {
    "antoskill": { "command": "npx", "args": ["-y", "antoskill"] }
  }
}

Codex

写进 ~/.codex/config.toml

[mcp_servers.antoskill]
command = "npx"
args = ["-y", "antoskill"]

提示: 设置 GITHUB_TOKEN 环境变量,避免抓取 skill 时触发 GitHub API 限速。

使用 & MCP 工具

直接对 agent 说人话:

"给这个项目推荐一些 skills,然后把做测试的那几个装上。"

底层它暴露这些 MCP 工具。只读工具可放心自动批准;写入工具就是你的确认闸门。

| 工具 | 类型 | 作用 | | --- | :---: | --- | | detect_project | 只读 | 识别项目的语言/框架指纹 | | recommend_skills | 只读 | 按质量信号排出匹配的 skill,并说明为何匹配 | | preview_skill | 只读 | 在钉死的 SHA 上展示 skill 的 SKILL.md、文件清单和安全扫描 | | list_installed | 只读 | 列出 skills.lock 里已安装的 skill | | doctor | 只读 | 诊断目标工具、存储、断链、lock 漂移 | | list_profiles | 只读 | 列出已定义的配置组及当前激活的 | | install_skills | 写入 | 钉死并安装选中的 skill(高风险未确认则拒绝) | | remove_skill | 写入 | 移除某个 skill 及其链接 | | sync | 写入 | 按 skills.lock 重建链接(可复现 / 可离线) | | update_skill | 写入 | 在重新扫描后把 skill 更新到更新的 SHA | | define_profile | 写入 | 创建/替换一个命名的 skill 组 | | activate_profile | 写入 | 把已装集切换到某个组(装该组、移除其余) |

配置

| 环境变量 | 用途 | | --- | --- | | GITHUB_TOKEN | 提升抓取 skill(以及托管在 GitHub 上的索引)的 API 限速 | | ANTOSKILL_INDEX_URL | 使用在线/自定义索引,替代内置索引 | | ANTOSKILL_HOME | 覆盖存储位置(默认 ~/.antoskill) | | ANTOSKILL_MAX_INSTALL | 单项目可安装的 skill 数量上限(默认 8,作为 token 预算保护) |

在线索引

索引会随包内置,但你可以让 AntoSkills 指向一个在线索引,这样它始终反映最新的精选列表、无需重装。把 skills.json 托管在任何能返回原始 JSON 的地方即可 —— 比如本仓库自己的文件:

ANTOSKILL_INDEX_URL=https://raw.githubusercontent.com/YforC/AntoSkills/main/index/skills.json

注册服务时设置它,例如 Claude Code:

claude mcp add antoskill \
  -e ANTOSKILL_INDEX_URL=https://raw.githubusercontent.com/YforC/AntoSkills/main/index/skills.json \
  -- npx -y antoskill

这样更新索引就只需 git push —— 每个用户下次调用 recommend_skills 时自动拿到新列表。(安装仍会把每个 skill 钉死到不可变的 commit SHA,所以索引变化不会改变已经装好的东西。)

为什么"装进项目的"要保持很少

Claude Code 和 Codex 在启动时会把每个已安装 skill 的名字 + 描述塞进 agent 的上下文,而这个预算有上限 (Codex 约为上下文的 2% / 8000 字符)。超过后描述会被截断、skill 会被丢弃。所以 AntoSkills 的模型是 候选索引很大、但装进项目的很少install_skills 对单项目数量设上限(ANTOSKILL_MAX_INSTALL,默认 8),庞大的索引则藏在 MCP 工具背后 —— 永远不进入 agent 的上下文。

配置组(Profiles)—— 在组之间切换,而不是全装

当你想"拥有很多 skill 但不同时加载"时,定义 profile(配置组) —— 几个命名的组,按需切换。激活一个组 会装上它的 skill、并移除不属于它的受管 skill,所以项目里始终只有一组,agent 也只加载这一组。

> "定义一个前端组,包含 web-artifacts-builder、frontend-design 和 cypress-author。"
> "现在切换到后端组。"   # 装上后端组,移除其余

定义存在项目级的 antoskill.profiles.json(可提交以共享给团队):

{
  "active": "frontend",
  "profiles": {
    "frontend": ["anthropic-frontend-design", "anthropic-web-artifacts-builder", "cypress-author"],
    "backend":  ["database-schema-designer", "api-test-suite-builder", "n8n-code-python"]
  }
}

工具:list_profiles(只读)、define_profile(写入)、activate_profile(写入)。

工作原理

   ╭────────────────────────────────────────────────────────────────────────────╮
   │   index/skills.json   ·   精选指针:repo · 路径 · tags · 质量信号            │
   ╰────────────────────────────────────────────────────────────────────────────╯
                                          │
  ═══ 发现 · 实时 ════════════════════════╪═══════════════════════════════════════
                                          ▼
     detect_project  ──►  recommend_skills  ──►  preview_skill
       指纹识别              排序 + 打分            解析 ref → SHA  ·  安全扫描
                                          │
                                  ╭───────┴────────╮
                                  │     你批准      │  ◄── 人工闸门
                                  ╰───────┬────────╯
                                          ▼
  ═══ 安装 · 钉死 ════════════════════════╪═══════════════════════════════════════
                                          ▼
                                   install_skills
                                          │
              ╭───────────────────────────┼───────────────────────────╮
              ▼                           ▼                           ▼
        skills.lock           ~/.antoskill/store/<hash>       .claude/skills/<name>
        钉死 SHA + 哈希         内容寻址,跨项目共享             .agents/skills/<name>
        提交进 git             离线可复现                       junction · symlink · copy
  • 发现是实时的,安装是钉死的。 推荐反映上游最新install 把 ref 解析成不可变的 commit SHA 并记录。
  • 存储兼作离线韧性层。 即使上游仓库消失,sync 仍能用存储里已钉死的 SHA 重建。
  • 优先链接而非复制。 Windows 上用目录 junction(无需管理员),其他平台用符号链接,无法链接时退回复制

代码是一个纯核心库(src/core/)加一层薄薄的 MCP 适配(src/mcp/),所以未来一个独立 CLI 可以直接复用同 一套逻辑。

团队协作

提交 skills.lock。同事(或 CI)运行 sync 即可物化出完全相同的 skill。内容寻址存储和各项目内的 链接都是按需重新生成的,不进 git。

开发

npm install
npm run build
npm test          # 单元测试
npm run smoke     # 离线全链路 + MCP 握手检查
npm run dev       # 以 stdio 本地运行服务

路线图

  • 托管索引 + 自动质量信号爬虫
  • 发布者签名 / 验证
  • 独立 CLI(核心已是纯库)
  • 推荐结果的同源多样性
  • 基于 AST 的扫描

贡献

欢迎贡献 —— 为索引补充高质量 skill、改进 tag 推断、增加目标工具。请先读 贡献指南;想往索引提交 skill,见 docs/INDEX.md。 当然,直接提 issue 或 PR 也行。

许可证

MIT