@dogfood-lab/interface-audits
v0.3.0
Published
Proof-backed audits for human-facing product surfaces. Catches load displacement, hidden complexity, AI trust burden, and state-shift failure — failures that pass generic accessibility scanners.
Maintainers
Readme
这是什么
interface-audits 是一个审计规则库,其中包含用于执行这些规则的可执行脚本。每个审计都会检测到一类特定的用户体验问题,而通用的可访问性扫描工具可能会忽略这些问题。扫描工具会检测 WCAG 违规行为;这些审计会检测到那些通过扫描工具检查,但仍然会给用户带来困扰的界面。
这个库中的第一个审计是“认知负荷”,它会检测负荷转移:即那些将负担转移到记忆、搜索、信任、验证、导航、配置、源恢复、视觉解码、时间、恢复/撤销或功能损失上的界面。
每个审计都会提供以下四项内容:
- 规则——原则、章节、严重程度规则(
audits/cognitive-load/RUBRIC.md) - 脚本——调用约定和程序(
audits/cognitive-load/skill/SKILL.md) - 模式——用于发现结果和评分卡的 JSON 模式(
shared/schemas/) - 证据——至少一次完成的压力测试或实际使用测试(
audits/cognitive-load/evidence/)
如果没有证据,则不会进行正式审计。请参阅 shared/audit-lifecycle.md 以了解状态机,并参阅 ROADMAP.md 以了解下一步计划。
安装
大多数用户不会“安装”这个仓库——他们只是阅读它。这些审计是 Markdown 格式的规则和脚本,由 Claude 或其他兼容的 AI 运行器使用适当的 MCP 工具(浏览器导航、截图、DOM 读取)进行解释。
对于想要运行本地验证工具(模式验证、链接检查、发布前检查审计)的维护者:
git clone https://github.com/dogfood-lab/interface-audits.git
cd interface-audits
npm install # installs ajv, ajv-formats, glob (dev-only)
npm run verify # runs schema + link + shipcheck checks**要求:**验证工具需要 Node 20+。审计本身是与平台无关的 Markdown 格式。
使用方法
运行审计
通过 Claude(或兼容的运行器)调用:
在
<target-url-or-surface>上运行认知负荷审计
请参阅 audits/cognitive-load/skill/SKILL.md 以获取完整的触发器列表、输入、输出和程序。
阅读现有的审计
过去的审计运行记录位于 audits/<name>/evidence/<run-id>/ 下,包含三个文件:
<audit>-findings.md——以规则格式呈现的完整发现结果<audit>-scorecard.json——每个部分的通过/警告/失败状态 + 摘要remediation-priority-list.md——按严重程度 × 影响程度排序的发现结果
当前的审计及其证据记录位于下方的 当前审计 表中。
编写新的审计
新的审计将经历五个生命周期状态:草稿 → 压力测试 → 冻结 → 实际使用测试 → 修改。请参阅 shared/audit-lifecycle.md 以了解状态机,参阅 shared/pressure-test-protocol.md 以了解程序,并以 audits/cognitive-load/ 中的认知负荷审计作为参考实现。
威胁范围
当调用审计脚本时,运行器(具有适当 MCP 工具的 Claude)会对用户提供的目标执行操作:
- 网络出口——仅针对用户指定的目标 URL。脚本不会调用其他服务。
- DOM 和截图捕获——脚本可以读取页面 DOM、拍摄截图并检查响应式 CSS 类。捕获的内容可能包括用户在目标 URL 处的已身份验证会话中可见的任何内容,包括姓名、消息正文和帐户状态。
- 本地文件写入——证据文件将写入仓库工作树下的
audits/<name>/evidence/<run-id>/。脚本不会写入此范围之外。 - 不将证据向外传输——除非用户明确提交并推送,否则证据文件将保留在本地磁盘上。
- 不收集遥测数据,不处理敏感信息——此仓库不收集任何分析数据,也不读取任何凭据。
在将证据文件提交到公共仓库之前,用户有责任查看已捕获的内容。请参阅 SECURITY.md 以了解完整的威胁模型、漏洞报告策略和范围。
当前审计
| 审计 | 状态 | 检测内容 | 证据 | |---|---|---|---| | cognitive-load | 冻结 v0.2 + 进行了 1 次实际使用测试 | 负荷转移、隐藏的复杂性、AI 信任负担、状态转移失败 | PT0 (claude.ai)、PT1 (GitHub)、PT2-doc-fallback (Outlook)、Dogfood-1 (research-os 手册) | | low-vision | 已进行压力测试 v0.1.0 | 在实际密度下(缩放/重排、照片和图表上的对比度、自定义主题下的焦点、空间方向)的视觉访问 | PT0 (MDN ARIA 文档)——10 个发现结果,2C/4H,命中 4/4 个严重故障模式 | | screen-reader-task | 已进行压力测试 v0.1.0 | 通过屏幕阅读器实现的任务连续性和完成——不仅仅是 ARIA 有效性 | PT0 (react.dev/learn)——13 个发现结果,2C/5H,命中 3/4 个严重故障模式 | | color-dependence | 已进行压力测试 v0.1.0 | 仅通过颜色传达的含义,包括对比度通过/色调失败的边界 | PT0 (microsoft/vscode GitHub Actions)——10 个发现结果,1C/4H,命中 3/5 个严重故障模式 | | motor-access | 已进行压力测试 v0.1.0 | 对于运动障碍用户的交互成本(键盘路径、目标大小、拖动依赖、超时、撤销) | PT0 (GOV.UK 设计系统多步骤模式)——8 个发现结果 + 12 个积极的观察结果,0C/2H | | ai-trust-surface | 已进行压力测试 v0.1.0 | 强制信任、不透明的人工智能行为、无法从人工智能错误中恢复、缺乏溯源信息。 | PT0(Bing SSR + 第一方人工智能信任文档)——9项发现(5个高优先级/4个中等优先级),4项已观察,第7部分通过了可重复的故障测试。 | | motion-sensitivity | 已进行压力测试 v0.1.0 | 前庭触发因素、动画效果优化、偏好减少动态效果、闪烁/癫痫阈值。 | PT0(linear.app)——3项发现(1个高优先级/2个低优先级)+ 4项积极观察结果,0个严重问题。 |
审计系列
每个审计都必须声明此审计检测到的、通用扫描工具忽略的负担是什么? 对于认知负荷,答案是负荷转移。
未来的审计(尚未编写)
目前已确定的所有七次审计都已添加到代码库中,并且进行了压力测试或更高级别的测试(参见上文的《当前审计》),没有未完成的草稿审计。最近添加的两项,即人工智能信任范围 (AT) 和动态敏感性 (MO),由一个研究团队撰写(研究 → 外部引用验证 → 作者),并以与前四次相同的方式进行了压力测试。后续审计是根据需求进行,而不是基于推测——每次只添加一项,并且在有实际目标和基于研究的评估标准的情况下,才开始进行相关工作。 路线图 跟踪候选对象以及已在此处进行的审计的生命周期推进工作(PT1 → 冻结)。
仓库结构
interface-audits/
├── README.md
├── CHANGELOG.md # monorepo events
├── ROADMAP.md # forward plan: audits, tooling, process rules
├── SECURITY.md # threat surface + reporting
├── SHIP_GATE.md # shipcheck quality gate
├── SCORECARD.md # pre/post-treatment scores
├── LICENSE # MIT
├── package.json # verify tooling + Node engines
├── verify.sh # one-command verification
├── scripts/
│ ├── verify-schemas.mjs # JSON Schema validation
│ └── verify-links.mjs # markdown relative-link check
├── shared/ # cross-audit norms
│ ├── audit-lifecycle.md
│ ├── evidence-states.md
│ ├── severity-model.md
│ ├── finding-format.md
│ ├── pressure-test-protocol.md
│ └── schemas/
│ ├── finding.base.schema.json
│ └── scorecard.base.schema.json
└── audits/ # one directory per audit; each has the same shape:
│ # README.md · RUBRIC.md · CHANGELOG.md ·
│ # skill/SKILL.md · schemas/finding.extensions.json · evidence/
├── cognitive-load/ # Frozen v0.2 + Dogfooded
├── low-vision/ # Pressure-tested v0.1.0 (LV)
├── screen-reader-task/ # Pressure-tested v0.1.0 (SR)
├── color-dependence/ # Pressure-tested v0.1.0 (CD)
├── motor-access/ # Pressure-tested v0.1.0 (MA)
├── ai-trust-surface/ # Pressure-tested v0.1.0 (AT)
└── motion-sensitivity/ # Pressure-tested v0.1.0 (MO)这不是
- 不是 WCAG 合规性扫描器(请使用 axe、Lighthouse、Pa11y)
- 不是视觉设计审查
- 不是通用的可访问性检查清单
- 尚未发布为 npm 包(
package.json声明private: true,直到将运行器包拆分出来)
此仓库中的审计旨在针对那些通过扫描器但仍然让用户感到困惑的界面。
贡献
目前,此仓库由 dogfood-lab 维护。欢迎外部贡献——首先创建一个 issue,讨论任何新的审计或评分标准更改。根据生命周期:没有证据,就没有正式审计。
许可
MIT — 版权所有 (c) 2026 dogfood-lab。
