npm.io
0.1.1 • Published 2d agoCLI

@mz60987/skst

Licence
MIT
Version
0.1.1
Deps
3
Size
510 kB
Vulns
0
Weekly
0

@mz60987/skst

本地监测 Cursor / Claude Code / Codex 的 skill 调用:扫描已安装 skill,用 PostToolUse hook 记录每次 SKILL.md 读取,并在本机面板查看统计。纯本地 SQLite,不上云。

面板预览

运行 skst 后自动打开本地面板(默认 http://127.0.0.1:8787):

Skill Stats 面板预览

按时间范围 / Agent 筛选 · 热门 Skill 排行 · 未使用列表 · 安装路径详情

安装

# 全局安装(推荐)
npm install -g @mz60987/skst

# 若 better-sqlite3 原生模块未编译(npm 提示 allow-scripts),再执行:
npm install -g @mz60987/skst --allow-scripts=better-sqlite3

# 或本地开发 link
git clone https://github.com/maozhen520/skill-stats.git
cd skill-stats
npm install && cd ui && npm install && cd ..
npm run link:global

安装后任意目录运行 skst(或 skill-stats)即可打开面板。

作者

  • maozhen
  • Cursor — 开发与 AI 辅助

要求

  • Node.js ≥ 18
  • better-sqlite3(原生模块;本机若编译失败需自行处理或换纯 JS sqlite)

从源码构建

cd /path/to/skill-stats
npm install
cd ui && npm install && cd ..
npm run build

产物:dist/skill-stats.js(CLI)、dist/hooks/dist/ui/

用法

# 默认:确保 hooks → 扫描 → http://127.0.0.1:8787 → 打开浏览器
skst

skst hooks install                 # Codex + Claude(默认)
skst hooks install --agent cursor  # 可选写 Cursor 独立 hooks(易双计)
skst hooks status
skst hooks uninstall

skst scan
skst status
skst serve --port 8787 --no-open

skst restart                        # 停掉旧进程并重新打开
skst stop                           # 仅停止面板服务

skst --skip-hooks                   # 跳过 hook 安装
skst --no-open                      # 不打开浏览器
skst --no-restart                   # 端口占用时不自动重启

数据目录:~/.skill-stats/

路径 说明
skill-stats.db SQLite(skills + events)
hooks/track-skill-read.mjs 已安装 hook
backups/hooks/ 改配置前备份

扫描范围

每个 agent 只保留真实安装路径(按 slug 去重;跳过插件内的文档副本、marketplace 源码等重复目录)。

  • Cursor~/.cursor/skills~/.cursor/skills-cursor~/.cursor/plugins/cache/.../skills/
  • Claude Code~/.claude/skills~/.claude/plugins/cache/.../skills/
  • Codex~/.codex/skills(含 .system)、~/.codex/plugins/cache/.../skills/

Hooks

  • 默认安装:Codex(~/.codex/hooks.json)+ Claude Code(~/.claude/settings.json
  • Cursor:默认走 Claude Third Party;payload 含 cursor_version 时归因 agent=cursor,避免再写 ~/.cursor/hooks.json 双计
  • 行为:stdin JSON → 若为 SKILL.md 读取则写入 events → 始终 exit 0、无 stdout
  • 调试:SKILL_STATS_HOOK_DEBUG=1
  • 无 metadata 门禁:任何 SKILL.md 读取都会记录
Codex /hooks 信任

Codex 可能要求在 TUI 执行 /hooks信任 skst 的 hook 命令后才会触发。安装后若无事件,请先检查是否已信任。

API

  • GET /api/summary?range=1d|7d|30d|all&agent=
  • GET /api/skills?...&sort=count|name|last_used&mode=aggregated|per_agent
  • GET /api/unused?...
  • GET /api/skills/:slug?range=
  • GET /api/timeseries?range=&agent=&slug=
  • GET /api/status
  • POST /api/scan

开发

npm run typecheck
npm run test          # 单元测试
npm run test:e2e      # 端到端
npm run build
npm run dev
cd ui && npm run dev   # Vite 代理 /api → :8787

Keywords