技能审计

inspirai-audit

by alexxxiong

Skill 重叠分析工具 - 检测已安装 skills/commands 的功能重复,辅助精简配置。Triggers: 'skill 审计', '功能重叠', '重复检测', 'skill audit', 'skill scan', '精简配置'.

3.7k安全与合规未扫描2026年3月23日

安装

claude skill add --url github.com/openclaw/skills/tree/main/skills/alexxxiong/inspirai-audit

文档

inspirai-audit - Skill 重叠分析工具

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


一、扫描分析 (scan)

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

使用方式

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

参数

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

执行步骤

Step 1: 收集所有已安装 Skill

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

bash
# 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 建立信息记录:

code
{
  "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. 内容关键词 — 扫描正文,匹配预定义标签词典:
code
标签词典 = {
  "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 两两计算标签交集率:

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

分级:

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

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

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

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

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

分析提示词:

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

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

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

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

Step 5: 生成报告

输出格式:

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

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

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

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

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

Step 6: 缓存结果

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

bash
CACHE_FILE="$HOME/.claude/audit-cache.json"
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": []
}

扫描输出示例

code
扫描完成: 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 的安装状态、禁用列表和上次扫描结果。

使用方式

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

参数

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

执行步骤

Step 1: 统计已安装数量

bash
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: 读取扫描缓存

bash
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: 输出状态

基础模式:

code
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 模式(额外展示):

code
所有 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 在缓存中有潜在重叠记录,输出提醒:

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

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

状态查看注意事项

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

三、处理功能重叠 (resolve)

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

使用方式

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

参数

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

前置检查

bash
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: 逐组展示并等待决策

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

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

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

用户选项:

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

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

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

code
即将执行以下操作:

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

确认执行?(Y/n)

Step 4: 执行禁用操作

禁用 command:

bash
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:

bash
# 在 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: 更新缓存

bash
# 标记已处理的组
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 恢复流程

bash
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

相关 Skills

安全专家

by alirezarezvani

Universal
热门

覆盖威胁建模、漏洞评估、安全架构设计、代码审计与渗透测试,内置 STRIDE、OWASP、加密模式和安全扫描流程,适合系统设计评审与上线前安全排查。

安全专家把威胁建模、漏洞分析到渗透测试串成一套流程,内置 STRIDE 与 OWASP 指南,做安全设计和排查更省心。

安全与合规
未扫描9.0k

安全运营

by alirezarezvani

Universal
热门

覆盖应用安全、漏洞管理与合规审计,支持代码/依赖扫描、CVE 评估、Secrets 检测和安全自动化,适合做安全基线落地、漏洞响应、审计检查与安全开发治理。

应用安全、漏洞管理和合规检查一套打通,还能自动化扫描与响应,帮团队更早发现并收敛风险。

安全与合规
未扫描9.0k

安全审计

by alirezarezvani

Universal
热门

安装前审计 Claude Code Skill 的代码执行、Prompt 注入和依赖供应链风险,支持本地目录或 Git 仓库扫描,输出 PASS/WARN/FAIL 结论及修复建议

把代码审查、漏洞扫描和合规检查串成一条线,帮团队更早发现风险,做安全治理更省心。

安全与合规
未扫描9.0k

相关 MCP 服务

搜索和分析 Sentry 错误报告,辅助调试。

把零散的 Sentry 错误报告变成可检索线索,帮你在海量报错里更快定位线上故障,排障调试明显省时。

安全与合规
616

为 AI agents 提供安全层:拦截 prompt injection、识别伪造 packages,并扫描漏洞风险。

给 AI Agent 补上关键安全层,能拦截 prompt 注入、识别伪造包并扫描漏洞风险,把防护前置更省心。

安全与合规
92

强化安全性的 NotebookLM MCP,集成 post-quantum encryption,提升数据防护能力。

安全与合规
47

评论