← 返回 Skills 市场
alexxxiong

InspirAI Skill Audit

作者 alexxiong · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
231
总下载
0
收藏
1
当前安装
1
版本数
在 OpenClaw 中安装
/install inspirai-audit
功能描述
Skill 重叠分析工具 - 检测已安装 skills/commands 的功能重复,辅助精简配置。Triggers: 'skill 审计', '功能重叠', '重复检测', 'skill audit', 'skill scan', '精简配置'.
使用说明 (SKILL.md)

inspirai-audit - Skill 重叠分析工具

检测已安装 skills/commands 的功能重复,辅助精简配置。包含三个核心功能:扫描分析、状态查看、重叠处理。


一、扫描分析 (scan)

全量扫描已安装的 skills/commands,分析功能重叠并生成报告。

使用方式

audit scan
audit scan --quick        # 仅标签分析,跳过 AI 深度对比
audit scan --focus deploy  # 只分析与 deploy 相关的重叠

参数

  • --quick — 仅执行标签分析,不做 AI 深度对比(速度快)
  • --focus \x3Ckeyword> — 聚焦分析某个功能领域的重叠
  • --include-project — 同时扫描项目级 .claude/commands/(默认只扫描用户级)

执行步骤

Step 1: 收集所有已安装 Skill

扫描以下路径,收集所有 skill 的元信息:

# 1. 用户级 commands
COMMANDS_DIR="$HOME/.claude/commands"
find "$COMMANDS_DIR" -name "*.md" -not -path "*/.disabled/*" | while read f; do
    echo "command:$(basename "$f" .md):$f"
done

# 2. 子目录 commands (如 gh/fix-issue.md → /gh:fix-issue)
find "$COMMANDS_DIR" -mindepth 2 -name "*.md" | while read f; do
    DIR=$(basename "$(dirname "$f")")
    NAME=$(basename "$f" .md)
    echo "command:${DIR}:${NAME}:$f"
done

# 3. 已安装 plugins
PLUGINS_FILE="$HOME/.claude/plugins/installed_plugins.json"
# 解析 JSON 获取每个插件的 installPath
# 读取每个插件下 skills/*/SKILL.md

为每个 skill 建立信息记录:

{
  "id": "command:deploy" | "plugin:deploy:run",
  "type": "command" | "plugin-skill",
  "name": "deploy",
  "source": "~/.claude/commands/deploy.md" | "deploy@skill-market",
  "description": "...",
  "content_summary": "前200字摘要"
}

Step 2: 功能标签提取

对每个 skill 提取功能标签:

标签维度:

维度 标签示例
领域 deploy, review, test, format, refactor, scaffold, ui, docs, git, security, cloud, wechat, api
动作 generate, analyze, fix, create, monitor, scan, build, install, migrate
技术栈 frontend, backend, k8s, docker, node, python, react, aliyun

提取规则:

  1. 文件名/skill名 — 直接作为领域标签
  2. description 字段 — 提取关键词匹配标签库
  3. 内容关键词 — 扫描正文,匹配预定义标签词典:
标签词典 = {
  "deploy": ["部署", "deploy", "release", "rollout", "发布"],
  "review": ["review", "审查", "code review", "PR"],
  "test": ["test", "测试", "spec", "assert", "coverage"],
  "format": ["format", "格式化", "lint", "prettier", "eslint"],
  "refactor": ["refactor", "重构", "restructure", "cleanup"],
  "ui": ["UI", "界面", "component", "组件", "frontend", "style", "CSS"],
  "generate": ["generate", "生成", "create", "scaffold", "template"],
  "security": ["security", "安全", "vulnerability", "漏洞", "scan"],
  "docs": ["documentation", "文档", "README", "注释", "comment"],
  "git": ["git", "commit", "branch", "merge", "PR", "pull request"],
  ...
}
  1. 每个 skill 最终得到 3-8 个标签

Step 3: 重叠候选检测

对所有 skill 两两计算标签交集率:

overlap_score(A, B) = |tags(A) ∩ tags(B)| / min(|tags(A)|, |tags(B)|)

分级:

  • >= 0.6高疑似重叠 → 进入 Step 4
  • 0.3 ~ 0.6中度疑似 → 标记在报告中但不深度分析
  • \x3C 0.3 → 无关,跳过

将高疑似的 pair 聚合为重叠组(连通分量):

  • 如果 A-B 重叠且 B-C 重叠,合并为 {A, B, C} 一组

Step 4: AI 深度对比(非 --quick 模式)

对每个高疑似重叠组,将所有成员的 SKILL.md 内容一起分析:

分析提示词:

请分析以下 skills 的功能重叠情况:

[Skill A - {name}]
{SKILL.md 内容摘要,前500字}

[Skill B - {name}]
{SKILL.md 内容摘要,前500字}

请回答:
1. 功能重叠度(高/中/低/无)
2. 重叠的具体功能点
3. 各 skill 的独有能力
4. 推荐保留哪个(基于完整度和覆盖面)
5. 置信度(高/中/低)

Step 5: 生成报告

输出格式:

╔══════════════════════════════════════════════════╗
║  Skill Audit Report                             ║
╠══════════════════════════════════════════════════╣
║  扫描: {N} commands + {M} plugins ({T} skills)  ║
║  发现: {G} 组功能重叠                            ║
╚══════════════════════════════════════════════════╝

━━━ 重叠组 #1: {领域} (置信度: {高/中/低}) ━━━━━━
  A) {skill_id}  — {一句话描述}
  B) {skill_id}  — {一句话描述}

  重叠: {重叠功能点}
  A 独有: {独有能力}
  B 独有: {独有能力}

  → 建议: {保留/禁用建议}

━━━ 重叠组 #2: ... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ...

Step 6: 缓存结果

将扫描结果写入缓存文件:

CACHE_FILE="$HOME/.claude/audit-cache.json"
{
  "lastScan": "2026-01-24T12:00:00Z",
  "skillCount": 42,
  "overlapGroups": [
    {
      "id": "group-1",
      "domain": "deploy",
      "confidence": "high",
      "members": ["command:deploy", "plugin:deploy:run"],
      "recommendation": "disable command:deploy",
      "resolved": false
    }
  ],
  "disabled": []
}

扫描输出示例

扫描完成: 28 commands + 11 plugins (42 skills)

发现 4 组功能重叠:

#1 部署 (高): /deploy vs /deploy:run → 建议禁用 command
#2 前端 (中): /make-it-pretty vs frontend-design vs ui-ux-pro-max
#3 代码审查 (中): /review vs superpowers:requesting-code-review
#4 规范设计 (低): /spec vs kiro:spec

运行 audit resolve 处理这些重叠。

扫描注意事项

  • 标签提取基于关键词匹配,可能存在误判,以 AI 深度对比结果为准
  • --quick 模式不消耗额外 token,适合快速预览
  • 扫描不会修改任何文件,完全只读
  • 缓存文件用于 status 和增量对比,可安全删除

二、状态查看 (status)

快速查看当前 skills 的安装状态、禁用列表和上次扫描结果。

使用方式

audit status
audit status --verbose    # 详细展示每个 skill 的状态

参数

  • --verbose — 列出所有已安装 skill 及其状态(启用/禁用)

执行步骤

Step 1: 统计已安装数量

COMMANDS_DIR="$HOME/.claude/commands"
DISABLED_DIR="$COMMANDS_DIR/.disabled"
PLUGINS_FILE="$HOME/.claude/plugins/installed_plugins.json"
CACHE_FILE="$HOME/.claude/audit-cache.json"

# 统计 commands
ACTIVE_COMMANDS=$(find "$COMMANDS_DIR" -maxdepth 1 -name "*.md" | wc -l | tr -d ' ')
SUB_COMMANDS=$(find "$COMMANDS_DIR" -mindepth 2 -name "*.md" -not -path "*/.disabled/*" | wc -l | tr -d ' ')
DISABLED_COMMANDS=0
if [ -d "$DISABLED_DIR" ]; then
    DISABLED_COMMANDS=$(find "$DISABLED_DIR" -name "*.md" | wc -l | tr -d ' ')
fi

# 统计 plugins
ACTIVE_PLUGINS=$(jq '.plugins | keys | length' "$PLUGINS_FILE" 2>/dev/null || echo 0)

Step 2: 读取扫描缓存

if [ -f "$CACHE_FILE" ]; then
    LAST_SCAN=$(jq -r '.lastScan' "$CACHE_FILE")
    TOTAL_GROUPS=$(jq '.overlapGroups | length' "$CACHE_FILE")
    RESOLVED=$(jq '[.overlapGroups[] | select(.resolved == true)] | length' "$CACHE_FILE")
    PENDING=$((TOTAL_GROUPS - RESOLVED))
    DISABLED_LIST=$(jq -r '.disabled[]' "$CACHE_FILE" 2>/dev/null)
else
    LAST_SCAN="从未扫描"
    TOTAL_GROUPS=0
    RESOLVED=0
    PENDING=0
fi

Step 3: 输出状态

基础模式:

Skill Audit Status
──────────────────────────────────
已安装:  {ACTIVE_COMMANDS} commands + {SUB_COMMANDS} sub-commands + {ACTIVE_PLUGINS} plugins
已禁用:  {DISABLED_COMMANDS} commands
上次扫描: {LAST_SCAN}
重叠组:  {TOTAL_GROUPS} 组 (已处理 {RESOLVED}, 待处理 {PENDING})

禁用列表:
  - deploy.md (重叠: /deploy:run 完全覆盖)
  - make-it-pretty.md (重叠: frontend-design 覆盖)

--verbose 模式(额外展示):

所有 Skills:
  Commands:
    [启用] /commit — Smart Git Commit
    [启用] /review — Code Review
    [禁用] /deploy — 基础部署 (被 /deploy:run 替代)
    [启用] /test — Smart Test Runner
    ...

  Plugins:
    [启用] superpowers@claude-plugins-official (15 skills)
    [启用] frontend-design@claude-plugins-official (1 skill)
    [启用] feature-dev@claude-plugins-official (3 skills)
    ...

  待处理重叠:
    #3 代码审查: /review vs superpowers:requesting-code-review

自动提醒逻辑

当用户执行 plugin install 后,如果检测到新安装的 plugin 在缓存中有潜在重叠记录,输出提醒:

[audit] 新安装的 {plugin_name} 可能与已有 skill 功能重叠
[audit] 运行 audit scan 查看详细分析

此提醒逻辑在 scan 的描述中声明为 agent 行为建议(非强制执行)。

状态查看注意事项

  • 无缓存文件时提示先运行 audit scan
  • 状态信息完全来自文件系统和缓存,不消耗 token
  • --verbose 模式可能输出较长,适合排查具体 skill 状态

三、处理功能重叠 (resolve)

基于扫描分析的结果,交互式引导用户处理每组重叠。

使用方式

audit resolve              # 处理所有未解决的重叠组
audit resolve --group 2    # 只处理第 2 组
audit resolve --undo       # 恢复上次禁用的 skills

参数

  • --group \x3Cn> — 只处理指定编号的重叠组
  • --undo — 恢复所有被禁用的 skills
  • --dry-run — 预览将要执行的操作,不实际执行

前置检查

CACHE_FILE="$HOME/.claude/audit-cache.json"
if [ ! -f "$CACHE_FILE" ]; then
    echo "[INFO] 未找到扫描结果,请先运行 audit scan"
    exit 0
fi

# 检查是否有未解决的重叠组
UNRESOLVED=$(jq '[.overlapGroups[] | select(.resolved == false)] | length' "$CACHE_FILE")
if [ "$UNRESOLVED" -eq 0 ]; then
    echo "[INFO] 所有重叠组已处理完毕,无需操作"
    exit 0
fi

执行步骤

Step 1: 加载扫描结果

~/.claude/audit-cache.json 读取未处理的重叠组。

Step 2: 逐组展示并等待决策

对每个未解决的重叠组,展示详情并让用户选择:

━━━ 重叠组 #{n}: {领域} (置信度: {level}) ━━━━━━
  A) {skill_id}  — {描述}
  B) {skill_id}  — {描述}

  重叠: {重叠点}
  建议: {recommendation}

用户选项:

  1. 保留 A,禁用 B — 按建议操作
  2. 保留 B,禁用 A — 反向选择
  3. 全部保留 — 标记为已处理但不禁用
  4. 跳过 — 暂不处理

Step 3: 收集所有决策后确认

所有组处理完毕后,汇总展示即将执行的操作:

即将执行以下操作:

  禁用: /deploy (command) → 移至 .disabled/
  禁用: /make-it-pretty (command) → 移至 .disabled/
  保留: frontend-design, ui-ux-pro-max, /review, ...

确认执行?(Y/n)

Step 4: 执行禁用操作

禁用 command:

DISABLED_DIR="$HOME/.claude/commands/.disabled"
mkdir -p "$DISABLED_DIR"

# 移动文件到 .disabled 目录
mv "$HOME/.claude/commands/deploy.md" "$DISABLED_DIR/deploy.md"
echo "[OK] 已禁用 /deploy → .disabled/deploy.md"

禁用 plugin skill:

# 在 installed_plugins.json 中添加 disabled 标记
# 或者更简单:在 audit-cache.json 中记录禁用状态
# Claude Code 加载时检查此标记
PLUGINS_FILE="$HOME/.claude/plugins/installed_plugins.json"

# 方案:通过移除 installed_plugins.json 中的条目实现
# 但保留在 audit-cache.json 中以便恢复
jq ".plugins.\"${PLUGIN_KEY}\" += [{\"disabled\": true}]" "$PLUGINS_FILE" > tmp && mv tmp "$PLUGINS_FILE"

注意: 对于 plugin 的禁用,优先使用 claude plugin uninstall 命令(如果可用),并在 audit-cache.json 中记录以便恢复。

Step 5: 更新缓存

# 标记已处理的组
jq ".overlapGroups[$GROUP_INDEX].resolved = true" "$CACHE_FILE" > tmp && mv tmp "$CACHE_FILE"

# 记录禁用的 skills(用于 undo)
jq ".disabled += [\"$SKILL_ID\"]" "$CACHE_FILE" > tmp && mv tmp "$CACHE_FILE"

--undo 恢复流程

if [ "$MODE" = "undo" ]; then
    DISABLED_DIR="$HOME/.claude/commands/.disabled"

    # 恢复所有 .disabled 目录中的 commands
    if [ -d "$DISABLED_DIR" ]; then
        for f in "$DISABLED_DIR"/*.md; do
            [ -f "$f" ] || continue
            mv "$f" "$HOME/.claude/commands/$(basename "$f")"
            echo "[OK] 已恢复 /$(basename "$f" .md)"
        done
    fi

    # 恢复 plugins(从 cache 记录中重新安装)
    DISABLED_PLUGINS=$(jq -r '.disabled[] | select(startswith("plugin:"))' "$CACHE_FILE")
    for p in $DISABLED_PLUGINS; do
        echo "[INFO] 请手动运行: claude plugin install ${p#plugin:}"
    done

    # 清空禁用记录
    jq '.disabled = [] | .overlapGroups[].resolved = false' "$CACHE_FILE" > tmp && mv tmp "$CACHE_FILE"
    echo "[OK] 所有禁用已恢复"
fi

安全规则

  • 确认前不执行 — 所有操作在用户最终确认后才批量执行
  • 可恢复 — command 只是移动到 .disabled/,随时可用 --undo 恢复
  • 不删除 — 永远不 rm 任何文件,只做移动
  • 不碰项目级 — 只处理 ~/.claude/commands/,不碰项目 .claude/commands/
  • plugin 谨慎处理 — plugin 禁用记录在 cache 中,不直接修改 installed_plugins.json 结构

处理重叠注意事项

  • 首次使用前必须先运行 audit scan
  • --dry-run 可预览操作效果
  • 禁用的 command 在 .disabled/ 目录,不会被 Claude Code 加载
  • 恢复 plugin 可能需要手动 claude plugin install
安全使用建议
这个技能总体上在做它声称的事情(扫描 ~/.claude/commands 与已安装插件、提取标签、计算重叠并生成报告),但在安装/运行前请注意并采取以下步骤: - 验证依赖:SKILL.md 示例脚本使用 jq 来解析 JSON,但元数据未声明 jq 为必需。确保系统有 jq,或确认实现不会依赖 jq。\n- 备份数据:在第一次运行前备份 ~/.claude 目录(或至少 commands 和 plugins 文件),以防后续的“resolve”操作修改或移动文件。\n- 检查持久化:该文档一方面声称“只读”,另一方面会写入 $HOME/.claude/audit-cache.json。确认你是否接受该缓存文件(包含扫描结果、建议和 disabled 列表),并知道如何删除/清理它。\n- 审查 resolve 行为:SKILL.md 提到了生成“禁用建议”和后续的 audit resolve 操作,但没有提供 resolve 的具体步骤。不要在未经审查的情况下允许自动或一键“resolve”去修改你的 commands/插件。\n- 隐私考虑:AI 深度对比会把 SKILL.md 摘要/片段作为提示词提交给模型用于比较,这会把技能文本暴露给模型的推理路径和可能的日志;如果某些 SKILL.md 包含敏感信息,请在深度模式(非 --quick)前评估风险。\n 如果这些点都能接受或澄清(特别是 resolve 的实现与 jq 依赖),该技能可以被认为与其目标一致;如果不能确认,则应延后或在受控环境(副本目录)中先运行以观察行为。
功能分析
Type: OpenClaw Skill Name: inspirai-audit Version: 1.0.0 The 'inspirai-audit' skill is designed to manage and disable overlapping skills within the Claude Code environment (~/.claude/). It utilizes shell commands (find, mv, jq, mkdir) to scan directories, read configuration files, and move files to a '.disabled' folder. While these actions are consistent with the stated purpose of auditing and streamlining configurations, the use of shell execution and direct filesystem manipulation in the user's home directory represents a risky capability set. No evidence of malicious intent, exfiltration, or unauthorized persistence was found in SKILL.md or _meta.json.
能力评估
Purpose & Capability
名称/描述与操作一致:该 SKILL.md 明确描述扫描已安装的 skills/commands(~/.claude/commands 与插件列表),提取标签、计算重叠并生成报告——这些动作与其声明的目的相符。
Instruction Scope
大部分指令限制在读取用户级和项目级的 SKILL.md 与已安装插件元数据,属于审计范围。但文档中有自我矛盾:一处声明“扫描不会修改任何文件,完全只读”,另处 Step 6 明确将结果写入 $HOME/.claude/audit-cache.json(持久化)。此外未展示 'audit resolve' 的实际执行细节(可能会修改文件),建议确认 resolve 子命令的具体实现与权限边界。
Install Mechanism
无安装规格、无代码文件,纯说明文档(instruction-only),因此没有写盘/下载第三方二进制的高风险安装步骤。
Credentials
不要求任何环境变量或凭据,读取的路径都与 claude 的 skill/插件 管理相关且与目标一致。不过脚本示例使用 jq 来解析 JSON,但 registry metadata 列出“required binaries: none”——这在实际运行时可能导致依赖缺失。还应注意:AI 深度对比会把 SKILL.md 内容片段作为提示词发给模型(将 skill 文本暴露给模型推理/日志),这属于预期,但值得用户在隐私敏感场景下确认。
Persistence & Privilege
技能不会请求持续驻留或平台级特权(always:false)。但会写入和维护 $HOME/.claude/audit-cache.json(持久化扫描结果、disabled 列表等),这与文档中“完全只读”的声明冲突;用户应知悉缓存文件的位置/内容并有权删除或审查。
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install inspirai-audit
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /inspirai-audit 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release - Skill重叠分析工具
元数据
Slug inspirai-audit
版本 1.0.0
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 1
常见问题

InspirAI Skill Audit 是什么?

Skill 重叠分析工具 - 检测已安装 skills/commands 的功能重复,辅助精简配置。Triggers: 'skill 审计', '功能重叠', '重复检测', 'skill audit', 'skill scan', '精简配置'. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 231 次。

如何安装 InspirAI Skill Audit?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install inspirai-audit」即可一键安装,无需额外配置。

InspirAI Skill Audit 是免费的吗?

是的,InspirAI Skill Audit 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

InspirAI Skill Audit 支持哪些平台?

InspirAI Skill Audit 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 InspirAI Skill Audit?

由 alexxiong(@alexxxiong)开发并维护,当前版本 v1.0.0。

💬 留言讨论