SuperAPI AI 工具集

skills-qa

安全与审计

查看项目

更新于 10-15 13:10

技能介绍

用途

skills-qa 用于在技能进入工作流之前,判断它是否被构建得当。任何人都可以构建技能,这个技能负责在它接触你的工作流前做检查。它评估任意技能是否符合「法律技能设计框架」:十三个设计参数(前九个为实质性设计;第十个是 Trust Surface,即技能的执行权限与注入风险;第十一是 Freshness,即捆绑的参考内容是否为最新;第十二是 Schema,即 SKILL.md 是否具备一个构建良好的技能所需的结构;第十三是 Conflicts,即技能是否与已安装技能重叠或冲突)、三种法律特有失败模式、依赖映射,以及一个明确的结论。适用于来自注册表的社区技能,也适用于团队正在构建或部署的一方技能。

主要能力

  1. 输入与读取:接受完整技能目录路径(优先,可支持完整依赖映射)、单独的 SKILL.md 路径,或直接粘贴到对话中的 SKILL.md 内容。若只提供 SKILL.md,会询问一次是否有相关的 commands、agents 或 hooks,并在输出中标注依赖映射不完整。读取内容包括 SKILL.md、commands/.md、agents/.md、hooks/hooks.json,以及技能关联的 CLAUDE.md(插件目录中的模板,用户配置位于 ~/.claude/plugins/config/claude-for-legal/<plugin>/CLAUDE.md)。

  2. 提示注入启发式扫描:在评估设计质量前,对收集到的每个文件扫描可能试图在技能运行时操纵 Claude 的模式。这是 AI 的启发式扫描,不是安全审计,无法保证技能安全;目的是把特定文本暴露给人工查看。扫描在安装与更新时都要运行,因为 v1.0 干净的技能可能在 v1.1 携带载荷。更新扫描遵循三条规则:回归时 fail-closed(新版本出现旧版本没有的发现,默认拒绝更新,用户仍可在人工批准关卡查看 diff 后覆盖);安全面 diff 必须人工(hooks/hooks.json、.mcp.json、allowed-tools/tools 前言、新增 Bash/WebFetch/WebSearch 访问、新增外部 URL、技能目录外的新文件写入路径、或技能声明的用途发生变化,都会强制触发人工批准提示);扫描本身读取的是不可信文本。扫描关注类别包括:覆盖/忽略指令、权威声明、配置覆盖指令、越界读取、越界写入、外部 URL、隐藏内容(HTML 注释指令、零宽字符、从右至左覆盖 unicode、base64 块、超过 500 字符的长行等)、shell/代码执行、凭据相关请求、法律权威过度声明。每个发现输出文件路径、行号、精确引用文本与模式类别。若命中第 1、2、3、5、7、8、9 类,结论至少为 SOME CONCERN,并列入 TOP FIXES;第 7 类(隐藏内容)单独触发降级。若多类命中,或第 3/5/7/8/9 类含有暗示真实外泄、凭据窃取、权限突破或环境修改的具体内容,结论强制为 REFUSE。

  3. 依赖映射:在评估质量前梳理技能连接的对象,包括上游(读取哪个 CLAUDE.md 及字段、是否依赖其他技能或 agent 的输出、是否需要外部数据源如 CLM、HRIS、合同库、是否需要特定 MCP 工具或集成)、下游(写入哪些文件、这些文件是否被其他技能读取、是否更新下游技能依赖的日志/追踪器/注册表、是否发送通知或触发外部动作)、自动触发(hooks.json 触发什么、触发条件相对技能范围是否足够窄、是否有 agent 被安排调用该技能及其频率与条件是否合适),以及破坏风险:若该技能行为错误,下游还有什么会中断或收到错误输入。若因缺少文件导致依赖映射不完整,会明确说明并标注无法评估的风险。

  4. Allowlist 交叉检查(独立运行 /skills-qa 时):将技能的来源注册表与发布者与 ~/.claude/plugins/config/claude-for-legal/legal-builder-hub/allowlist.yaml 对照,仅作为给用户的被动信息,不阻断 QA。若 allowlist.yaml 不存在则跳过。若来源在白名单中,输出一行提示在 restrictive 模式下安装不会被阻断;若不在且模式为 permissive,提示安装将在警告下继续;若不在且模式为 restrictive,显著提示安装会被阻断,需管理员将发布者加入 publishers。

  5. 评估十三个设计参数:对每个参数给出 ✅ Addressed / ⚠️ Partial / 🔴 Missing,并用一句话说明差距、一句话给出建议修复。前九个实质性设计参数包括:Audience(受众是否定义,未定义则 🔴)、Work Shape(主导工作形态是否识别,行为是否与形态一致,未识别或矛盾则 🔴)、Delegation Threshold(Claude 与律师的角色边界是否明确,是否可能被律师当作最终结果且风险非微不足道则 🔴,阈值已说明但输出格式削弱它则 ⚠️)、Input Requirements(最低必需输入是否定义,缺失时是否明确询问、中止或带标注假设地继续,静默继续则 🔴)、Versioning and Ownership(是否具名所有者或审查机制、重大变更是否告知、是否有审查节奏或触发;社区技能至少检查版本与来源是否声明,缺失标 ⚠️ 但不视为不合格;一方团队技能三项都应有,缺失则 🔴)、Confidence Bands(高中低三档是否定义并在行为中落实,未定义于 accretive judgment 或 bounded transactional 工作则 🔴)、Failure Modes(通用失败模式是否在设计阶段识别)、以及余下参数与第十至十三参数(Trust Surface、Freshness、Schema、Conflicts)。此外还检查三种法律特有失败模式。

使用方式

可作为 /skills-qa 直接运行,也可作为 /legal-builder-hub:skill-installer 的一部分自动运行。可在决定是否安装前对任意技能运行,也可在向团队部署一方技能前运行。建议在引入任何非自建的社区技能前,或在向团队部署一方技能前,刻意运行它。若用户运行 skill-installer 后问「我应该信任这个吗」或「这个设计得好吗」,应转交给此技能而非内联回答。

适用场景

来自注册表的社区技能评估、团队正在构建或部署的一方技能评估、安装前的信任判断、部署前的设计审查、更新时的回归与安全面检查。

限制

提示注入扫描是 AI 启发式检查,不是安全审计,无法保证技能安全;通过扫描的技能仍可能恶意,注入可用该检查无法识别的措辞表达,且一个通过所有模式的技能仍可能以更隐蔽的方式行为不当。企业部署中应只从白名单注册表和发布者安装。扫描读取不可信文本,保持安全的结构性约束位于本技能之外(skill-installer 的 restrictive 模式只读子代理、auto-updater 的人工批准关卡、固定 SHA 替换、应用前备份);干净的扫描不是批准,批准是人在 diff 上输入 yes。关于收费、价格、平台等其他事实,资料中暂未提供。