跳到主要内容

analyze

分析每个 target 中 skills 的上下文窗口用量和 skill 质量。

skillshare analyze                    # 交互式 TUI(默认)
skillshare analyze claude # 单个 target 的详情
skillshare analyze --verbose # 描述最长的 10 个 skill
skillshare analyze --json # 机器可读输出
skillshare analyze -p # Project mode

何时使用

优化上下文预算

找出哪些 skills 消耗了最多的上下文窗口 token:

skillshare analyze           # 交互式浏览所有 target

跨 Target 比较

查看不同 target(例如 Claude 与 Cursor)之间上下文用量的差异:

skillshare analyze           # 在 TUI 中按 Tab 切换 target

检查 Skill 质量

找出缺少字段、描述过短,或没有触发短语的 skills:

skillshare analyze           # TUI 中会出现 lint 图标(✗/⚠)

CI/脚本化

获取机器可读的上下文指标和 lint 结果:

skillshare analyze --json | jq '.targets[].always_loaded.estimated_tokens'
skillshare analyze --json | jq '.targets[].skills[] | select(.lint_issues | length > 0)'

它做了什么

analyze 为每个 skill 计算两层上下文开销:

  1. Always loaded —— 来自 SKILL.md frontmatter 的 name + description(每次请求都会为 skill 匹配加载到上下文中)
  2. On-demand —— frontmatter 之后的 skill 正文(仅在该 skill 被触发时加载)

token 估算使用 chars / 4 作为近似值。

Skill 质量 Lint

除了 token 分析之外,analyze 还会对每个 skill 运行一个内置的 lint 引擎。lint 规则检查 SKILL.md 的结构和描述质量,并在 TUI 和 JSON 输出中直接展示问题。

规则严重程度检查内容
missing-nameerrorname 字段为空或缺失
missing-descriptionerrordescription 字段为空或缺失
empty-bodyerrorskill 正文(frontmatter 之后)为空
description-too-shortwarning描述不足 50 个字符
description-too-longwarning描述超过 1024 字符的目标上限
description-near-limitwarning描述介于 900–1024 字符之间
no-trigger-phrasewarning描述缺少触发短语(例如 "Use when…")

在 TUI 中,存在 lint 问题的 skills 会在名称旁显示 ✗(error)或 ⚠(warning)图标。详情面板包含一个 Quality 区块,列出所有 findings。

交互式 TUI

默认情况下,analyze 会启动一个交互式 TUI,包含:

  • 左侧面板 —— 按 token 开销排序的 skill 列表,用颜色编码的圆点表示(按百分位数分为红/黄/绿)
  • 右侧面板 —— 详情视图:token 明细、lint 质量问题、路径、tracked 状态、描述预览
  • 底部栏 —— target 选择器(Tab/Shift+Tab 切换)+ token 总计 + 估算公式

TUI 控制键

按键操作
/在 skill 列表中导航
/上/下翻页
Tab / Shift+Tab切换 target
/按名称过滤 skills
s循环排序:tokens↓ → tokens↑ → name A→Z → name Z→A
Ctrl+d / Ctrl+u滚动详情面板
q退出

颜色编码

token 消耗等级使用每个 target 各自动态计算的百分位阈值:

颜色含义
🔴 红色P75+(消耗最高的前 25%)
🟡 黄色P25–P75(中间的 50%)
🟢 绿色低于 P25(最低的 25%)

示例输出

默认(--no-tui)

Context Analysis (global)
ℹ claude (7 skills)
Always loaded: ~362 tokens
On-demand max: ~22 tokens

Verbose

skillshare analyze --verbose

Context Analysis (global)
ℹ claude (7 skills)
Always loaded: ~362 tokens
On-demand max: ~22 tokens

Largest descriptions:
my-big-skill ~180 tokens
another-skill ~120 tokens
...

单个 Target

传入一个 target 名称会自动启用 verbose 输出:

skillshare analyze claude

按 Group 过滤

# 查看所有 frontend skills 的总 token 开销
skillshare analyze claude --json --filter frontend

# 预先填充 TUI 中的搜索框
skillshare analyze --filter marketing

Options

Flag说明
[target]显示单个 target 的详情(自动启用 verbose)
--verbose, -v显示每个 target 描述最长的 10 个 skill
--no-tui关闭交互式 TUI,改为打印纯文本
--project, -p分析 project 级 skills(.skillshare/
--global, -g分析 global 级 skills(~/.config/skillshare
--filter <text>按名称/路径子串过滤 skills
--json以 JSON 格式输出(用于脚本/CI)
--help, -h显示帮助信息
自动检测

如果既没有指定 --project 也没有指定 --global,skillshare 会自动检测:如果当前目录存在 .skillshare/config.yaml,默认使用 project mode;否则使用 global mode。

JSON 输出

skillshare analyze --json
{
"targets": [
{
"name": "claude",
"skill_count": 7,
"always_loaded": {
"chars": 1448,
"estimated_tokens": 362
},
"on_demand_max": {
"chars": 88,
"estimated_tokens": 22
},
"skills": [
{
"name": "my-skill",
"description_chars": 180,
"description_tokens": 45,
"body_chars": 400,
"body_tokens": 100,
"lint_issues": [
{
"rule": "no-trigger-phrase",
"severity": "warning",
"category": "format",
"message": "Description lacks trigger phrases (e.g. 'Use when...'); agents may not know when to invoke this skill"
}
]
}
]
}
]
}

没有 lint 问题的 skills 会省略 lint_issues 字段。

Project Mode

skillshare analyze -p                  # project skills 的交互式 TUI
skillshare analyze -p --verbose # verbose 文本输出
skillshare analyze -p claude # 单个 target 的详情
skillshare analyze -p --json # JSON 输出

过滤

使用 --filter 把结果缩小到某个子集的 skills。该过滤器对 skill 的相对路径(包含 group 目录)执行不区分大小写的子串匹配。

例如,如果你用 --into frontend 安装了 skills:

  • --filter frontend 匹配 frontend/ group 下的所有 skills
  • --filter react 匹配路径中包含 "react" 的任意 skill

在 TUI 模式下,--filter 会预先填充过滤输入框。你也可以用 / 键交互式地开始过滤。

在 JSON 模式下,输出会包含一个带汇总 token 计数的 filtered_summary

{
"filter": "frontend",
"matched_count": 5,
"total_count": 50,
"filtered_summary": {
"always_loaded": { "chars": 2400, "tokens": 600 },
"on_demand": { "chars": 8000, "tokens": 2000 },
"total": { "chars": 10400, "tokens": 2600 }
},
"skills": [...]
}

当搜索或过滤生效时,Web UI 也会显示一个动态的 token 汇总栏。

Budget Warnings

当配置了 context_budget 阈值时,如果任何 target 超出预算,analyze 会显示一条警告。配置细节参见 sync — Context Cost

另请参阅

  • list —— 查看已安装的 skills
  • audit —— 扫描 skills 的安全威胁
  • tui —— 开关交互式 TUI