Skillsmith

io.github.smith-horn由 GitHub 账号 smith-horn 发布v0.8.0更新于 Oct 25, 2026

Share agent skills across your team, scan them for risk, and track what's actually used.

概览

AI 生成的概览

Skillsmith 是一个本地 MCP 服务器,连接按团队划分的智能体技能注册表,让助手搜索、安装、校验、扫描并跟踪技能。

可以做什么
搜索、查看和对比注册表中的技能,可按分类、信任等级和评分筛选,并获得结合上下文的推荐和基于项目上下文的建议。在本地安装、卸载和索引技能,检查已安装技能是否过时、版本漂移或名称冲突。校验技能并准备发布,用最新安全规则重新扫描已安装技能。审计、重命名和编辑已安装技能,先预览再执行并可撤销,还能修复清单条目。付费层级可管理团队工作区、共享、私有注册表发布与审批、SSO 与角色设置、审计日志、用量分析和 API 密钥。
适用场景
适合多个团队都在发布智能体技能、需要弄清哪个版本装在何处、技能是否被安全扫描标记、哪些技能已过时无人维护的场景。个人用户想在助手内搜索和安装技能时也适用。
运行要求
以本地进程运行,通过 npx 或全局安装的 npm 包启动,需要 Node.js 22.22 或更高版本。SKILLSMITH_API_KEY 环境变量中的 API 密钥是可选的:不设置时服务器使用内置公共密钥,按共享的社区速率限制。更高配额和用量跟踪需要账号和密钥。Cursor 用户可能需要已安装二进制的路径和 SKILLSMITH_CLIENT 变量。
安装前请注意
服务器会改动本机文件:安装和卸载技能、应用重命名和文本编辑、修复清单,不过编辑会先预览且可撤销。它维护本地 SQLite 缓存,并可将已安装技能清单推送到仪表盘。付费层级需要付费(个人、按用户的团队、企业)。不要把 API 密钥粘贴到聊天中,应在客户端设置里配置。公共索引中的技能只做自动评分,未被标记不等于已获批准。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Skillsmith,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Skillsmith

Shared skills, safe for production.

Once more than one team is publishing agent skills, the problem stops being finding them and starts being managing them. Which team is this scoped to? Which version is installed where? Has it been flagged by a security scan? What happens to the ones nobody maintains anymore?

Skillsmith is a registry for sharing, scanning, and tracking agent skills across teams. Skills are published to a registry scoped to your team and versioned immutably, so drift across installs is visible instead of silent. Flagged or suspicious skills are quarantined pending security review. Skills that go stale can be deprecated instead of quietly rotting in someone's repo.

Installation

Quick Setup (MCP)

Skillsmith is MCP-compatible — pick the snippet for your agent. SMI-4580: snippets sourced from packages/cli/src/templates/mcp-server.template.snippets.ts so this README and the website docs cannot drift.

Claude Code — ~/.claude/settings.json
json
{  "mcpServers": {    "@skillsmith/mcp-server": {      "command": "npx",      "args": ["-y", "@skillsmith/mcp-server"],      "env": {        "SKILLSMITH_API_KEY": "sk_live_..."      }    }  }}

Restart Claude Code after editing settings.json.

Cursor — ~/.cursor/mcp.json
json
{  "mcpServers": {    "@skillsmith/mcp-server": {      "command": "<paste output of: which skillsmith-mcp (macOS/Linux) or where skillsmith-mcp (Windows)>",      "env": {        "SKILLSMITH_API_KEY": "sk_live_...",        "SKILLSMITH_CLIENT": "cursor"      }    }  }}

Cursor 2.4+ required, Node >=22.22 (Cursor's own bundled Node meets this). SKILLSMITH_CLIENT routes installs to ~/.cursor/skills instead of the default ~/.claude/skills.

Setup: run npm install -g @skillsmith/mcp-server, then run which skillsmith-mcp (macOS/Linux) or where skillsmith-mcp (Windows) and paste that path into command above — Cursor's bundled Node cannot resolve packages via npx (a real ENOENT on a missing Resources/app/resources/lib directory), so pointing directly at the installed binary is the only form confirmed to work inside Cursor. Prefer to try npx first anyway? Replace command with "npx" and add "args": ["-y", "@skillsmith/mcp-server"] — simpler, but may hit the same ENOENT, plus EBADENGINE or ENOTEMPTY on repeated installs. After saving: enable the server in Cursor's Settings → MCP panel and start a new chat — a correctly-configured entry still shows disconnected until toggled on there — then reload the window.

GitHub Copilot (VS Code) — .vscode/mcp.json (workspace)
json
{  "mcpServers": {    "@skillsmith/mcp-server": {      "command": "npx",      "args": ["-y", "@skillsmith/mcp-server"],      "env": {        "SKILLSMITH_API_KEY": "sk_live_..."      }    }  }}

VS Code 1.108+ required. Workspace-scoped (commit to repo if team-shared, or use user settings.json instead).

Windsurf — ~/.codeium/windsurf/mcp_config.json
json
{  "mcpServers": {    "@skillsmith/mcp-server": {      "command": "npx",      "args": ["-y", "@skillsmith/mcp-server"],      "env": {        "SKILLSMITH_API_KEY": "${env:SKILLSMITH_API_KEY}"      }    }  }}

Supports ${env:VAR} interpolation; export SKILLSMITH_API_KEY in your shell instead of inlining the secret.

Codex CLI — ~/.codex/config.toml (TOML, not JSON)
toml
[mcp_servers.@skillsmith/mcp-server]command = "npx"args = ["-y", "@skillsmith/mcp-server"]
[mcp_servers.@skillsmith/mcp-server.env]SKILLSMITH_API_KEY = "sk_live_..."

Codex reads ~/.agents/skills. When installing via CLI, pass --client agents.

Cross-agent (open standard) — ~/.agents/mcp.json
json
{  "mcpServers": {    "@skillsmith/mcp-server": {      "command": "npx",      "args": ["-y", "@skillsmith/mcp-server"],      "env": {        "SKILLSMITH_API_KEY": "sk_live_..."      }    }  }}

Read by any agent honouring the cross-agent skill convention.

After adding to your MCP client settings and restarting, you can search for skills immediately.

API Key Configuration (Optional)

For higher rate limits and usage tracking, authenticate with your API key.

Easiest — CLI login (interactive):

bash
npm install -g @skillsmith/cliskillsmith login

This opens skillsmith.app/account/cli-token in your browser. Generate a key, copy it, and paste it when prompted. The key is stored securely in your OS keyring.

MCP server config — add the key to your settings:

The per-client snippets above already include the env.SKILLSMITH_API_KEY slot — replace the sk_live_... placeholder with the value from skillsmith login.

Get your API key at skillsmith.app/account/cli-token.

TierMonthly quotaPer-minute limitCost
No API key (MCP default)Community rate, shared public key30/min per endpoint, shared across all keyless clientsFree
Community10030/minFree
Individual1,000200/min$9.99/mo
Team10,000300/min$25/user/mo
EnterpriseUnlimited600/minContact Sales

Quota note: the monthly figure is a hard limit only where enforced. Edge functions hard-block on monthly quota for Community only, and only when ENFORCE_COMMUNITY_QUOTA is 'true'. The MCP server's own monthly quota counts only skill_suggest and the tier-gated tools, and hard-blocks them by default (SKILLSMITH_ENFORCE_MCP_QUOTA=false turns that off).

The MCP server falls back to a built-in public key when none is set, so keyless MCP use is Community-rate and shares one 30/min bucket per edge endpoint (search, get, recommend, …) with every other keyless client. The 10-call trial (100/min per IP) applies to direct HTTP requests that do not successfully authenticate, including ones with a malformed or expired credential; normal keyless MCP requests authenticate with the built-in key and never reach it. When enabled, a per-IP daily budget can also apply to that shared key (ENFORCE_ANON_BUDGET; off by default).

Note: Never paste API keys in chat. Configure via settings.json only.

CLI Installation (Development)

The CLI is available for local development:

bash
# From the repository rootnpm run buildnode packages/cli/dist/index.js search "testing"

The four questions

Once more than one team is publishing skills, these are the questions that matter:

  1. Which team is this scoped to? Every skill in the registry is scoped to a team.
  2. Which version is installed here? Versions are immutable; skill_diff (Individual tier) and skill_outdated report drift for what's installed on the machine you run them from.
  3. Has it been flagged by the security scan? Skills pulled from the public index are scored automatically; flagged or suspicious ones are quarantined pending review — unflagged means it wasn't flagged, not that it was formally approved. Each skill carries one of eight trust tiers, from Official to Unverified (Security Guide).
  4. What happens to the ones nobody maintains? Stale skills can be deprecated instead of quietly rotting in someone's repo.

How it works

  • Publish — skills are published to a registry scoped to your team, versioned immutably.
  • Version — every publish creates a new immutable version; nothing is overwritten in place.
  • Drift detection — skill_diff (Individual tier) and skill_outdated show what's installed and where it has fallen behind, at the point you check.
  • Deprecate — skills that go stale can be deprecated instead of quietly rotting in someone's repo.

Scopes and permissions

Skills are scoped to your team's registry. Team owners and admins control who can publish and manage skills; members install and search.

Start solo

Search, install, and manage skills for yourself, free. When your team needs the same skill, the registry is already there.

MCP Tools

Skillsmith registers 43 tools. 19 of the 43 work on the free Community tier. Higher tiers add version tracking, team features and enterprise controls. Tools above your tier return an upgrade message. Pricing.

Community (free)

ToolDescription
searchSearch skills with filters (query, category, trust tier, min score)
get_skillGet detailed skill information including install command
install_skillInstall a skill to your local environment
uninstall_skillRemove an installed skill
skill_recommendGet contextual skill recommendations
skill_suggestSuggest skills from your current project context (counts against your monthly quota)
skill_validateValidate a skill's structure and quality
skill_compareCompare two skills side-by-side
skill_outdatedCheck installed skills for staleness and dependency status
skill_rescanRe-scan an installed skill with the latest security patterns
skill_publishValidate a skill and prepare it for publishing
skill_recover_sourceRecover the GitHub source of locally installed skills (read-only)
index_localIndex skills from a local directory
inventory_pushPush this machine's installed-skill inventory to your dashboard (read-only; needs skillsmith login)
skill_inventory_auditCheck every installed client's skills for name collisions and get rename suggestions
apply_namespace_renameApply or revert a rename suggestion (previews first, changes files only when confirmed)
apply_recommended_editApply a suggested prose edit from an audit (previews first, changes files only when confirmed)
undo_applyUndo the most recent rename or edit from this session
apply_manifest_reconcileRepair a corrupted or ambiguous manifest entry

Individual

ToolDescription
skill_updatesCheck the registry for newer versions of installed skills
skill_diffSection-level diff between two versions of a skill
skill_pack_auditAudit a directory of skills for version drift and weak triggers

Team

ToolDescription
skill_auditCheck installed skills for known security advisories
team_workspaceCreate, list, get and delete team workspaces
share_skillAdd, remove or list skills in a team workspace
publish_privateHide a skill from your own search results on this machine (local only)
team_analytics_dashboardPer-user tool usage, top tools and daily trend
team_usage_reportWeekly or monthly usage summary with period comparison
compliance_reportGenerate SOC2, CycloneDX SBOM or JSON reports for your local skill inventory

Enterprise

ToolDescription
private_registry_publishPublish a skill version to your private registry for approval
private_registry_manageList, get, install, deprecate, approve or reject private registry skills
configure_ssoSet up SSO/SAML, including DNS domain verification
sso_settingsView the current SSO/SAML configuration
rbac_manageInspect and adjust what each team role can do
rbac_assign_roleAssign or revoke member roles, or list members
rbac_create_policyBulk-set or clear permission overrides for a role
audit_exportExport audit log events for a time range
audit_queryQuery audit logs with filters
siem_exportExport audit events to your SIEM
analytics_dashboardRecommendation accuracy, usage trends and team-wide aggregation
usage_reportFull usage report across all metrics
webhook_configureSigned webhooks for skill lifecycle events (preview)
api_key_manageCreate, list and revoke API keys (preview)

The automatic session-start namespace audit is a Team and Enterprise feature. The audit and rename tools above can be run by hand on any tier.

Local-first by design. Skillsmith caches the registry in a local SQLite database at ~/.skillsmith/skills.db, shared across the MCP server, the CLI, and the VS Code extension. Search is FTS5 (SQLite's built-in keyword search) by default; semantic search is opt-in (SKILLSMITH_USE_HNSW=true) and runs over local ONNX embeddings (an open ML model format that runs on CPU — no API call). Inside the Local Skill Database walks through the schema, the FTS5 / HNSW search paths, and how sync (a Team+ tier feature) keeps the cache fresh.

Architecture

Skillsmith uses the Model Context Protocol (MCP):

text
┌─────────────────────────────────────────────────────┐│  MCP Client (Claude Code, Cursor, etc.)             ││  ┌─────────────────────────────────────────────────┐││  │  Skillsmith MCP Server                          │││  │  └── @skillsmith/mcp-server                     │││  │      ├── search, get_skill, skill_compare       │││  │      ├── install_skill, uninstall_skill         │││  │      ├── skill_recommend, skill_validate        │││  │      ├── skill_outdated, skill_diff, ...        │││  │      └── 43 tools across four tiers             │││  └─────────────────────────────────────────────────┘││                          │                          ││                          ▼                          ││  ┌─────────────────────────────────────────────────┐││  │  ~/.skillsmith/skills.db (SQLite + FTS5)        │││  │  ~/.claude/skills/ (installed skills)           │││  └─────────────────────────────────────────────────┘│└─────────────────────────────────────────────────────┘

Usage

Once configured, your MCP client can use Skillsmith tools:

text
"Search for testing skills"→ Uses search tool to find testing-related skills
"Show me details for community/jest-helper"→ Uses get_skill tool to retrieve full skill information
"Install the jest-helper skill"→ Uses install_skill tool to add it to ~/.claude/skills
"Compare jest-helper and vitest-helper"→ Uses skill_compare tool to show side-by-side comparison
"Are any of my installed skills out of date?"→ Uses skill_outdated tool to check for staleness and missing dependencies
"Do any of my skills clash with each other?"→ Uses skill_inventory_audit tool to find name collisions and suggest renames

CLI Usage (Development)

bash
# From the repository, after buildingnode packages/cli/dist/index.js search "testing" --tier verified --min-score 80node packages/cli/dist/index.js get community/jest-helpernode packages/cli/dist/index.js install community/jest-helper

Documentation

Development

Skillsmith uses Docker-first development. All commands run inside Docker to ensure consistent native module support across all platforms.

Prerequisites

  • Docker Desktop (v24+) or Docker Engine with Docker Compose
  • Git (for cloning the repository)
  • Node.js (optional, only for local tooling outside Docker)

Quick Start

bash
# 1. Clone the repositorygit clone https://github.com/smith-horn/skillsmith.gitcd skillsmith
# 2. Create your local environment filecp .env.example .env
# 3. Start the development containerdocker compose --profile dev up -d
# 4. Install dependencies (first time only)docker exec -w /app skillsmith-dev-1 sh -c 'sh scripts/lib/node-modules-mount-gate.sh && npm install'
# 5. Build and testdocker exec skillsmith-dev-1 npm run builddocker exec skillsmith-dev-1 npm test

Running Commands in Docker

All npm commands should be run inside the Docker container:

CommandDocker Command
Builddocker exec skillsmith-dev-1 npm run build
Testdocker exec skillsmith-dev-1 npm test
Lintdocker exec skillsmith-dev-1 npm run lint
Typecheckdocker exec skillsmith-dev-1 npm run typecheck
Auditdocker exec skillsmith-dev-1 npm run audit:standards

Container Management

bash
# Start development containerdocker compose --profile dev up -d
# Check container statusdocker ps | grep skillsmith
# View container logsdocker logs skillsmith-dev-1
# Stop containerdocker compose --profile dev down
# Restart after Dockerfile changesdocker compose --profile dev downdocker compose --profile dev build --no-cachedocker compose --profile dev up -d

After Pulling Changes

When you pull changes that modify package.json or package-lock.json:

bash
docker exec -w /app skillsmith-dev-1 sh -c 'sh scripts/lib/node-modules-mount-gate.sh && npm install'docker exec skillsmith-dev-1 npm run build

Troubleshooting

Container won't start
bash
docker compose --profile dev downdocker volume rm skillsmith_node_modulesdocker compose --profile dev up -d

The wipe does not block startup at the entrypoint's node_modules pre-check — the root volume re-seeds from the image, so that check passes rather than exiting (SMI-6674); later startup steps are a separate matter. What the wipe does leave is a mixed dependency state, so don't follow it with a bare install. Print and follow the ordered refresh sequence instead (ADR-158; SMI-6614):

bash
( cd <main-checkout-path> && sh scripts/lib/print-deps-refresh-advice.sh <main-checkout-path> )
Native module errors (ERR_DLOPEN_FAILED)

Native modules like better-sqlite3 and onnxruntime-node may need rebuilding:

bash
docker exec -w /app skillsmith-dev-1 sh -c 'sh scripts/lib/node-modules-mount-gate.sh && npm rebuild'
Tests fail with shared library errors

If you see errors about ld-linux-aarch64.so.1 or similar, ensure you're running inside Docker (not locally):

bash
# Wrong - don't run locallynpm test
# Correct - run in Dockerdocker exec skillsmith-dev-1 npm test

Why Docker?

Skillsmith uses native Node.js modules (better-sqlite3, onnxruntime-node) that require glibc. Docker provides a consistent Debian-based environment with glibc, avoiding compatibility issues on systems using musl libc (like Alpine Linux).

See CLAUDE.md for full development workflow and skill configuration.

Tech Stack

  • Runtime: Node.js >=22.22 (Docker with glibc)
  • Protocol: MCP (Model Context Protocol)
  • Database: SQLite with FTS5
  • Embeddings: all-MiniLM-L6-v2 via onnxruntime-node
  • Testing: Vitest
  • CI/CD: GitHub Actions

License

Skillsmith is source-available under the Elastic License 2.0.

You CAN:

  • Use Skillsmith for personal or internal business purposes
  • Modify the source code for your own use
  • Self-host for your team
  • Contribute bug fixes and improvements

You CANNOT:

  • Offer Skillsmith as a managed service to third parties
  • Circumvent license key enforcement features

For the full license text, see the LICENSE file.

Author

Smith Horn Group Ltd


Skillsmith is not affiliated with Anthropic. Claude and Claude Code are trademarks of Anthropic.

来源:README.md,提交 2930073

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

4
  1. v0.8.0最新Oct 12, 2026
  2. v0.7.19Oct 5, 2026
  3. v0.7.18Sep 30, 2026
  4. v0.7.16Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。