mcpField
W
web-design-guidelines

web-design-guidelines

github.com/duc01226设计与 UI1258 次安装1 周前更新
代码仓库

关于 web-design-guidelines

web-design-guidelines 是一项仅用于评审的技能,依据无障碍、性能、响应式设计等标准审查 UI 代码。它面向发布前或拉取请求评审,按文件提供带证据的发现,并优先处理无障碍问题。

主要功能

  1. 01WCAG 2.2 无障碍审查
  2. 02Core Web Vitals 模式检查
  3. 03键盘、表单与异步状态审查
  4. 04响应式与移动端布局检查
  5. 05按文件和行号报告问题

适用场景

  1. 01发布前审查组件
  2. 02评审拉取请求中的 UI 改动
  3. 03发现响应式或无障碍问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/duc01226/easyplatform --skill web-design-guidelines

安装后在 Claude Code 中输入/web-design-guidelines确认已加载。

附带文件references/guidelines.md

详细介绍

Codex 兼容性说明:

  • 在 Codex 中使用 $skill-name 调用仓库技能;此镜像副本会将旧版 Claude /skill-name 引用改写为这种形式。
  • 任务跟踪要求:执行任何工作流或技能步骤之前,必须为所有步骤创建或更新任务跟踪,并在进度变化时保持同步。
  • 用户提问提示表示要在 Codex 中直接询问用户。
  • 忽略出现的 Claude 专属模式切换说明。
  • 严格执行约定:用户明确调用某项技能时,必须按原样执行该技能协议。
  • 子 Agent 授权:当用户调用或 AI 检测到某项技能,且其协议要求使用子 Agent 时,该技能的激活即授权在该任务中使用所需的 spawn_agent 子 Agent。
  • 除非用户事先明确批准偏离,否则不得跳过、重新排序或合并协议步骤。
  • 对于工作流技能,必须明确执行列出的每个子技能步骤,并逐步报告依据。
  • 如果在此环境中无法执行某个必需步骤或工具,请停止并在调整方案前询问用户。

Codex 项目参考文档加载(无钩子)

Codex 使用静态项目参考文档加载机制,而非运行时注入项目文档。 在编码、规划、调试、测试或审查时,请按照此路由明确打开项目文档。

始终阅读:

  • docs/project-config.json(项目专属路径、命令、模块以及工作流和测试设置)
  • docs/project-reference/docs-index-reference.md(指向完整 docs/project-reference/* 目录的路由)
  • docs/project-reference/lessons.md(始终适用的防护措施和反模式)

缺少或过时的上下文路由: 如果缺少或过时 docs/project-config.json、文档索引、lessons.md、CLAUDE.md、AGENTS.md 或任何任务所需的参考文档,请在常规项目工作前自动运行 $project-init 或范围较窄的设置路由($project-config、$docs-init、$scan-all、$scan --target=<key>、$claude-md-init)。如果 Codex 镜像或 AGENTS.md 缺失或过时,请让用户运行 $sync-codex;不要自动运行它。

按情况查阅文档:

  • 项目结构/架构/技术栈/部署/设置(任何层面——后端、前端或基础设施):project-structure-reference.md
  • 后端/CQRS/API/领域/实体变更:backend-patterns-reference.md、domain-entities-reference.md
  • 前端/UI/样式/设计系统:frontend-patterns-reference.md、scss-styling-guide.md、design-system/README.md
  • 编写规范、docs/specs/ 路径或 TC 格式:feature-spec-reference.md、spec-system-reference.md、spec-principles.md
  • 行为/公共契约变更或规范—测试—代码同步:workflow-spec-test-code-cycle-reference.md 以及上述规范文档
  • 派生规范索引/ERD/重新实现指南:spec-system-reference.md 和 docs/specs/ 下的源 Feature Spec
  • 集成测试实现/审查:integration-test-reference.md
  • E2E 测试实现/审查:e2e-test-reference.md
  • 代码审查/审计:code-review-rules.md 以及根据变更文件选择的领域文档

不要不加区分地阅读所有文档。从 docs-index-reference.md 开始,然后只打开与任务相关的文件。

快速摘要

目标: 根据 WCAG 2.2 无障碍标准、Core Web Vitals 性能指标和现代 Web 设计最佳实践,审查 UI 代码。

工作流:

  1. 确定目标 — 使用提供的文件/模式,或询问用户要审查哪些组件
  2. 扫描文件 — 读取目标文件,并使用 Grep 查找违规模式
  3. 检查类别 — 无障碍、键盘导航、表单、异步状态与反馈(加载/错误/空状态)、动画、性能、触控/移动端、响应式布局(flex-wrap/行→列)、内容、深色模式/i18n
  4. 报告发现 — 按文件分组,使用 file:line 格式,简洁描述发现,并按优先级总结

关键规则:

  • 仅供审查:发现问题,但不会修复问题
  • 按优先级顺序检查类别(无障碍优先)
  • 如果有 docs/project-reference/scss-styling-guide.md,也请参考

保持审慎。运用批判性思维和顺序思维。每项结论都必须有可追溯的证据,并注明置信度百分比(Idea 应高于 80%)。

Web 设计指南审查

审查 UI 代码是否符合 WCAG 2.2、Core Web Vitals 和现代 Web 设计最佳实践。这是一项仅供审查的技能——用于发现问题,而非修复问题。

适用场景

  • 发布前审查 UI 代码的无障碍合规性
  • 审计组件或页面是否违反 WCAG 2.2
  • 检查代码中的 Core Web Vitals 性能模式
  • 验证响应式设计和移动端友好模式
  • PR 提交前的 UI 质量门禁检查

不适用场景

  • 构建 UI——使用 design --lane=marketing(营销/创意)或 design --lane=product(产品 UI)
  • 创建设计规范——使用 design-spec
  • 由工作流接入的 UI 审查门禁——使用 $ui-review(项目 UI 审查门禁;它会在前端变更的 changes-review 并行批次中运行,检查长内容溢出、响应式 flex、flex 与固定尺寸的取舍、z-index 使用规范以及 SCSS/BEM)。此技能是通用且与框架无关的无障碍/用户体验检查清单,供 $ui-review 交叉参考,并非重复功能。
  • 项目 SCSS 审查——也请检查 docs/project-reference/scss-styling-guide.md

前提条件

  • 完整指南参考:references/guidelines.md
  • 项目 SCSS:docs/project-reference/scss-styling-guide.md(如果有)

工作流

  1. 确定目标文件

    • 如果提供了文件/模式参数 → 使用该参数
    • 如果没有 → 询问用户要检查哪些文件或组件
  2. 使用 Read 和 Grep 工具扫描文件

  3. 按类别检查(按优先级排序):

    • 无障碍 —— 语义化 HTML、ARIA、标签、替代文本、色彩对比度、焦点指示器
    • 键盘导航 —— Tab 顺序、模态框中的焦点陷阱、Escape 键处理
    • 表单 —— 标签、验证、错误显示、自动补全、不阻止粘贴
    • 异步状态与反馈 —— 每次获取/提交/变更都必须显示加载中指示(旋转图标/骨架屏,绝不能是冻结的空白界面)、用户可见的错误及重试/恢复路径(绝不能静默失败或显示原始堆栈跟踪)、集合为空时的空状态,以及提交控件在请求进行中的禁用状态,以防止重复提交(标准词汇:Default / Loading / Disabled / Error / Empty / Success)
    • 动画 —— 遵循 prefers-reduced-motion,不使用 transition: all,仅使用对 GPU 安全的属性
    • 性能 —— 设置图像尺寸、延迟加载、避免布局抖动、大型列表使用虚拟化
    • 触控/移动端 —— 触控目标 >= 44px、touch-action: manipulation、安全区域
    • 响应式布局 —— 在小屏设备上可用(涵盖所有重排/断点问题)。最低要求:优先重排(行使用 flex-wrap 或从行变为列,网格折叠为单列,使用流动的 min/max/%/rem 而非较大的固定 px);可接受的回退方案适用于确实无法重排的布局(表格、画布、宽网格)——设置固定的 min-width/min-height 并使用 overflow: auto 滚动(滚动是可接受的,不算缺陷);只有在小屏上内容损坏时才算严重失败——内容被裁剪、截断,或控件无法访问且没有滚动路径。若需要大幅重构响应式布局 → 标记并与用户确认范围,不要悄悄改写。在 320/768/1024px 断点进行测试
    • 内容 —— 长文本/溢出处理(text-overflow、换行、行数限制)、可读的行长 (空集合状态 → 异步状态与反馈;断点/重排 → 响应式布局)
    • 深色模式/国际化 —— color-scheme、逻辑 CSS 属性、Intl.* 格式化工具
  4. 按下方输出格式报告发现

UI/UX 设计原则检查(9 个维度)

SYNC:ui-ux-design-principles 的 40 条规则(完整内容已内联在本技能下方)对本次以 REVIEW 角色开展的检查具有约束力:每条规则都是失败条件。它们不会取代第 3 步中的类别,而是对其进行深入检查。针对目标文件,一次只检查一个维度,共进行 9 轮专项检查;同时检查全部 9 个维度只是走过场,本技能的证据规则已明确禁止这种做法。寻找预判的违规项之前,先基于基本原则回答每个 Think: 提示。

每条发现都必须遵循本技能现有的输出格式——按文件分组,采用 path:line - finding 格式——并在文本中包含规则 ID,例如 {ui-source-root}/components/Button:42 - 禁用标签的实测对比度为 3.1:1(需达到 4.5:1)。 本技能未定义严重性等级,本轮检查也不新增等级:继续遵循现有的无障碍优先排序和摘要计数。

一条规则,一条发现。 如果某条规则重申了本技能已有的类别规则(触控目标 >= 44px、prefers-reduced-motion、加载/错误/空状态、图像尺寸、可读行长),只报告一条发现,并同时引用类别和规则 ID——绝不能重复报告。

#维度条款深化类别Think:
1视觉层级与布局UI-1.1-UI-1.5内容 · 异步状态与反馈在此屏幕上,哪个元素最先吸引注意力?它是否正是此页面存在的目的?内容分组是通过留白还是边框完成的?空状态、加载状态和错误状态是否经过设计?
2字体排印UI-2.1-UI-2.5内容此页面用了多少种字体系列/字重?正文的字号是多少(Web 端 16px,移动端 17px,绝不低于 14px),行长是多少(45-75 个字符),行高是多少(正文 1.5,展示文字 1.1-1.2)?字号是来自固定的 6 级比例,还是各自设定?
3色彩与对比度UI-3.1-UI-3.4无障碍 · 深色模式/国际化每种实际渲染的前景/背景组合的计算对比度是多少(文本 4.5:1,UI 边缘 3:1)?是否有状态仅通过颜色传达含义?深色模式是经过设计的界面,还是简单反转颜色?
4间距与网格UI-4.1-UI-4.4响应式布局每个间距都是一个 4px/8px 基准单位的倍数吗?间距设置在容器上(gap),还是散落在各个子元素的外边距上?内部边距是否小于与下一个分组之间的间距?断点是在布局失效时触发,还是按设备名称划分?
5交互与反馈UI-5.1-UI-5.5键盘导航 · 动画 · 异步状态按下后 100ms 内会发生什么变化?五种状态中,哪一种没有样式?重新设置样式后,焦点环是否仍然可见?能否用撤销代替确认?动画是否为 150-250ms 的 ease-out,并支持减少动态效果设置?
6导航与信息架构UI-6.1-UI-6.4无障碍(地标、跳过链接)· 内容首次进入此视图时:我在哪里,这里有什么,接下来去哪?有多少个顶层目的地?标签使用的是用户的用语还是内部术语?当前状态是否有 URL 或返回路径?
7表单与输入UI-7.1-UI-7.5表单对每个字段来说:它现在为什么存在?填写后标签是否仍可见?何时触发验证,错误消息是否说明如何修正?键盘/自动补全是否与输入类型匹配?输入的数据在出错、导航和刷新后是否保留?
8移动端与触控UI-8.1-UI-8.4触控/移动端测量触控区域,而非图标:是否至少为 44x44pt,间隔 8px?主要操作相对于拇指位于何处?是否有只能通过手势操作的功能?是否考虑了刘海、主屏幕指示条和键盘?(不在范围内的触控界面 → 跳过并说明原因。)
9速度与感知速度UI-9.1-UI-9.4性能 · 异步状态与反馈每个加载元素占据的是什么空间,内容加载后布局是否会偏移?骨架屏还是加载指示器——是否经过审慎选择?乐观更新回滚时是否有明显提示?离线、超时和重试是否设计为明确的状态?
优先级: docs/project-reference/scss-styling-guide.md 和任何项目设计系统文档的优先级均高于这些条款;如存在真实冲突,须同时报告双方内容并交由用户处理——绝不能悄悄自行解决。

输出格式

按文件分组。使用 file:line 格式。发现项应简洁。不要写开场白。

## {ui-source-root}/components/Button

{ui-source-root}/components/Button:42 - icon button missing aria-label
{ui-source-root}/components/Button:55 - animation missing prefers-reduced-motion check
{ui-source-root}/components/Button:67 - transition: all -> list specific properties
{ui-source-root}/components/Button:89 - div with onClick -> use <button>

## {ui-source-root}/components/Modal

{ui-source-root}/components/Modal:12 - missing overscroll-behavior: contain
{ui-source-root}/components/Modal:78 - no focus trap for modal dialog

## {ui-source-root}/components/Card

[check] No issues found

## Summary

- 4 accessibility issues
- 2 performance issues
- 1 UX issue
- Priority: Fix accessibility issues first (WCAG compliance)

示例

示例 1:无障碍审查

输入:“审查用户个人资料组件的无障碍性”

**操作:**阅读组件文件,检查语义化 HTML、ARIA 属性、标签关联、颜色对比度模式、键盘导航和焦点指示器。逐项报告违规问题,并注明 file:line。

示例 2:视觉润色审查

输入:“检查仪表板页面是否符合设计最佳实践”

**操作:**扫描动画性能(不使用 transition: all)、图像优化(尺寸、延迟加载)、响应式模式(断点、安全区域)、排版(行高、最大宽度)和空状态处理。按类别报告发现项。

相关技能

技能何时改用
design构建 UI(而非审查)——--lane=marketing(创意)或 --lane=product(应用 UI)
design-spec创建设计规范
$ui-review项目 UI 审查门禁(溢出、响应式 flex、z-index、SCSS/BEM);前端变更会在 changes-review 批次中运行

[重要] 使用任务跟踪,在开始前将所有工作拆分为小任务——包括为每个文件阅读创建任务。这样可以避免因文件过长而丢失上下文。对于简单任务,AI 必须主动询问用户是否跳过。

防止 AI 出错——每项任务中都应避免以下失败模式:

上下文变化后重新阅读文件。 上下文压缩、恢复工作或长时间运行的任务可能导致记忆过时;采取行动前应核实当前文件。 根据源证据核实生成的内容。 AI 可能会捏造 API、名称、主张和文档事实。记录或引用前,先检查相关源文件。 删除或重命名前检查下游引用。 移除某项内容可能导致文档、生成的镜像、配置和调用方过时;先梳理引用。 编辑后追踪完整影响链。 更改定义可能会遗漏派生输出和使用方。宣布完成前,追踪受影响链路。 核实所有受影响的输出,而不只是第一个。 一项检查通过不代表所有检查都通过;验证变更可能影响的每个输出面。 假设现有值是有意设置的——更改或标记为缺陷前先问清原因。 更改或报告常量、限制、标志、阈值、措辞或模式前,先阅读邻近上下文和历史记录、调用方的顺序,以及至少 2 个遵循相同惯例的同类调用点。文档只说明“是什么”而未说明“为什么”,意味着缺少依据,并不能证明缺少防护措施。 行动前明确说明歧义——不要默默自行选择。 存在多种合理解释时,必须明确提问,或说明假设及其风险。 断言系统负责的最终结果,而不是基础设施负责的中间状态。 验证异步工作时,应断言最终业务状态——绝不要检查由共享基础设施维护的投递/重试记录,因为任何同时运行的进程都可能写入这些记录。单独运行时,此类检查可能通过;一旦有其他进程共享基础设施,就会变得不稳定。 确保共享指导与角色相关。 通用指导必须对每个接收它的技能或 Agent 都有帮助;特定于代码的要求只能放在特定于代码的协议中。 批判性思维心态 — 运用批判性思维和循序渐进的思考。每项主张都需要追溯到证据,置信度 >80% 才采取行动。 防止幻觉: 绝不把猜测当作事实——每项主张都要引用来源,坦诚承认不确定性,自行检查输出中的错误,独立交叉验证,并对自己的信心保持怀疑——没有证据的确定性是一切幻觉的根源。 UI/UX 设计原则(修订版 1.0 — 40 条,Web + 移动端) — 适用于任何设计、规划、实现或审查用户界面的任务的工作规则集。除非某条明确指定平台(§8 适用于移动端/触控),否则同时适用于两个平台。引用条款时使用 ID:UI-3.1、UI-8.2。

**优先级:**项目设计系统/SCSS/前端模式文档的优先级高于这些条款;这些条款的优先级高于一般审美偏好。出现实际冲突时,必须向用户说明双方依据,绝不能悄然自行裁决。——原因:项目自身记录的决策具有权威性;项目未明确规定时,这些条款作为默认依据。

1.0 视觉层级与布局

  • UI-1.1 每个屏幕只有一个焦点。若两个元素都争夺首要注意力,就弱化其中一个。
  • UI-1.2 信号顺序:尺寸 → 字重 → 颜色 → 位置。优先采用足以奏效的最简信号,再添加其他信号。
  • UI-1.3 通过距离分组,绝不要依靠边框。留白能清晰地区分内容;框中套框则不能。
  • UI-1.4 对齐到共同边缘。每个没有明确原因的缩进看起来都像是意外造成的。
  • UI-1.5 首先设计空状态、加载状态和错误状态。完整状态最容易处理。

2.0 字体排版

  • UI-2.1 最多使用 2 种字体系列,每种最多 3 种字重。更多变化看起来像是不一致,而非丰富。
  • UI-2.2 正文在 Web 上为 16px,在移动端为 17px。任何用户必须阅读的内容都绝不能小于 14px。
  • UI-2.3 行长为 45–75 个字符。限制行宽,而非容器宽度。
  • UI-2.4 行高随字号增大而减小:正文为 1.5,展示文字为 1.1–1.2。
  • UI-2.5 使用固定的字号比例尺——与工程团队共享 6 个命名级别。绝不使用一次性的字号。

3.0 颜色与对比度

  • UI-3.1 对比度:文本为 4.5:1,UI 边缘为 3:1。使用工具测量——绝不要在明亮屏幕上凭肉眼判断。
  • UI-3.2 一种强调色只承担一种用途。无处不在的强调色就无法突出任何内容。
  • UI-3.3 颜色绝不能单独承载含义——应搭配图标、标签或位置。
  • UI-3.4 深色模式不是反转后的浅色模式。提高表面亮度以体现层级;弱化纯白色文本。

4.0 间距与网格

  • UI-4.1 使用一个间距单位并以其倍数递增——基础值为 4px 或 8px;所有间距都是它的倍数。
  • UI-4.2 间距属于容器,而非子元素。使用 gap;仅在特殊情况下使用外边距。
  • UI-4.3 内部紧凑,组间宽松——内部填充始终小于与下一组之间的间距。
  • UI-4.4 断点应根据内容决定,而非设备。布局无法正常工作时就设置断点。

5.0 交互与反馈

  • UI-5.1 每个操作都要在 100ms 内得到响应,即使结果需要更长时间才能完成。
  • UI-5.2 指定全部 5 种状态——默认、悬停、焦点、激活、禁用——并在适用时添加加载状态。
  • UI-5.3 优先提供撤销,而非确认。只有无法撤销的操作才要求确认。
  • UI-5.4 动效应阐明因果关系:时长 150–250ms,使用 ease-out,并遵循减少动态效果设置。
  • UI-5.5 保留可见的焦点环。若与设计冲突,可以调整样式,但绝不能移除。

6.0 导航与信息架构

  • UI-6.1 每个屏幕都应回答:我在哪里、这里有什么、接下来去哪里。
  • UI-6.2 顶层目的地最多 5 个。合理的层级结构胜过拥挤的首层导航。
  • UI-6.3 使用用户的用词作为标签,而非内部术语。团队词汇不等于分类体系。
  • UI-6.4 每种状态都应有对应的 URL 或返回路径。深层链接和硬件返回操作都必须能到达合理的位置。

7.0 表单与输入

  • UI-7.1 尽量少问。每个字段都必须有当前存在的理由。
  • UI-7.2 标签始终可见。占位符是提示,绝不是标签。
  • UI-7.3 在失焦时验证,而非每次按键时验证。错误提示应紧邻字段,并说明如何修正。
  • UI-7.4 根据数据类型匹配键盘——每个字段都应设置正确的输入类型、自动完成和自动大写选项。
  • UI-7.5 绝不能丢失已输入的数据。发生错误、导航或刷新时都要保留输入。

8.0 移动端与触控 (移动端/触控界面)

  • UI-8.1 点击目标至少为 44×44pt,彼此间距为 8px。点击目标可以大于可见图标。
  • UI-8.2 主要操作应放在底部三分之一处——拇指通常位于此处。
  • UI-8.3 手势是快捷方式,绝不能是唯一操作途径。任何可滑动的内容也必须可点击。
  • UI-8.4 兼顾安全区域和键盘。刘海、主屏幕指示条和屏幕键盘都会占用空间。

9.0 速度与感知速度

  • UI-9.1 先显示结构,再显示数据——布局已知时使用骨架屏;只有等待情况未知时才使用加载指示器。
  • UI-9.2 乐观地假设操作成功。先更新 UI,再进行结果校验;失败时要明显回滚。
  • UI-9.3 为所有加载内容预留空间。图片、广告和字体绝不能导致布局偏移。
  • UI-9.4 针对慢速连接进行设计。离线、超时和重试都是状态,而非边缘情况。

按角色应用——这些条款构成同一套规则;根据任务采取的行动会有所不同:

角色义务
设计/规划界面条款决定交付内容:首先明确空状态/加载状态/错误状态(UI-1.5),列出全部 5 种状态(UI-5.2),声明字号比例尺和间距单位(UI-2.5、UI-4.1)
实现组件完成前检查关卡:状态 · 令牌 · 对比度 · 焦点环 · 点击目标 · 预留空间(UI-5.2、UI-2.5/UI-4.1、UI-3.1、UI-5.5、UI-8.1、UI-9.3)
审查 UI 代码或设计稿每条款都是判定失败的条件;每项问题都要注明 UI-<clause>、file:line 和严重性。绝不能逐项勾选检查——每个部分进行一次有重点的检查
扫描/记录 UI 系统记录项目有意偏离这些条款之处,使起优先作用的文档成为有据可查的权威依据

仅当变更没有面向用户的界面(仅后端、工具或文档)时才可跳过——须明确说明,以便跳过行为可审计,而非看起来像遗漏。 必须注意:运用批判性和顺序思维——每项声明都必须有适当的可追溯证据(关于仓库/代码的声明须标注 file:line;关于研究、产品、内容和文档的声明须提供来源 URL 或资料章节);只有置信度高于 80% 才采取行动,低于 60% 时不要提出建议。防止幻觉:绝不把猜测说成事实,坦诚承认不确定性,独立交叉核对,并对自己的判断保持审慎。

必须注意:落实 AI 错误预防措施——根据证据核验生成的内容;删除或重命名前追踪下游引用;核验所有受影响的输出;上下文丢失后重新阅读文件;采取行动前明确指出歧义。

项目协议叠加规则——执行此技能前,先解析适用于本项目的叠加规则:在项目技能协议索引中,将此技能的名称与 Target 列匹配(默认索引为 docs/project-reference/skill-protocols-reference.md;若 docs/project-config.json 中有 referenceDocs 条目,则以其指定路径为准),且仅采用最具体的匹配层级——精确名称 > glob > *。此优先级仅用于确定叠加规则之间的顺序,绝不凌驾于此技能本身之上。只读取匹配项对应的正文,路径解析为 <protocols-dir>/<Name>.md;行中的 Body 链接仅为显示文本,绝不是读取路径。若匹配项正文缺失或格式错误,须报告并跳过——绝不依据索引中的 Description 重建正文。没有索引或没有匹配项 -> 无叠加规则,静默继续。完整约定见 .claude/skills/project-skill-protocol/references/registry.md。

叠加规则只能追加:它们只能在此技能自身协议之上增加规则,绝不能替换、覆盖、停用或重新解释已有规则——移除所有叠加规则后,此技能必须完全恢复为其文档所述的行为。叠加规则是简报,不是权限升级:它绝不能豁免工作流关卡、Git 规范、审查关卡或用户确认关卡。若叠加规则与技能本身确实冲突,或两个同等具体的叠加规则直接矛盾,须将两者都告知用户;绝不私自裁决。

必须注意:执行前解析适用于此技能的项目协议叠加规则——仅采用最具体的匹配层级(精确 > glob > *;此排序仅用于确定叠加规则之间的优先级,绝不凌驾于此技能本身之上),且只读取 <protocols-dir>/<Name>.md 中匹配的正文;正文缺失或格式错误时须报告,绝不重建。叠加规则只能追加(绝不替换此技能自身的规则),且只是简报,绝不是权限升级;同等具体的规则若相互矛盾,须交由用户处理。

  • 必须注意:任何面向用户的界面都须应用 40 条 UI/UX 设计原则(UI-1.1–UI-9.4):一个视觉焦点;按邻近关系分组;优先设计空白/加载/错误状态(§1)·≤2 种字体系列,网页正文 16px/移动端正文 17px,绝不低于 14px,45–75ch,固定的 6 级比例(§2)·文本对比度 4.5:1/边缘对比度 3:1(均须实测),仅一种强调色,绝不单靠颜色传达信息,深色模式 ≠ 反转颜色(§3)·统一使用 4/8px 单位,优先用 gap 而非外边距,内紧外松,断点由内容决定(§4)·响应时间 <100ms,涵盖全部 5 种状态,优先撤销而非确认,采用 150–250ms 缓出动画并遵循减少动态效果设置,焦点环清晰可见(§5)·说明当前位置/此处内容/下一步去向,顶层目的地 ≤5 个,使用用户的措辞,提供 URL 或返回路径(§6)·减少字段,标签清晰可见,失焦时验证,键盘操作匹配,绝不丢失输入(§7)·目标区域 ≥44×44pt,间距 8px,主要操作位于屏幕下方三分之一处,手势绝不能是唯一操作方式,适配安全区域(§8)·先搭建结构再填入数据,乐观更新须支持可见回滚,预留空间,设计慢速连接状态(§9)。项目设计系统文档的优先级高于这些条款——若确实冲突,须交由用户处理,绝不私自裁决。每项发现都须引用 UI-<clause> + file:line。仅在改动不涉及任何面向用户的界面时可跳过,并须明确说明。

收尾提醒

重要,务必注意:开始前使用任务跟踪,将工作拆分为小型待办任务

务必注意——现行协议(此技能携带的 SYNC/共享区块的简明摘要):

  • **AI 错误预防:**依据证据核实生成的内容,追踪下游引用,核实所有受影响的输出,在上下文丢失后重新阅读,并指出歧义。
  • **批判性思维:**每项主张都要提供可追溯的 file:line 证据;置信度 >80% 才采取行动。

重要,务必注意:创建新代码前,搜索代码库中 3 个以上相似模式 重要,务必注意:每项主张都要引用 file:line 证据(置信度 >80% 才采取行动) 重要,务必注意:执行 9 个维度的 UI/UX 设计原则检查——涵盖全部 40 条款(UI-1.1-UI-9.4),一次检查一个维度;每项发现都要按现有输出格式引用 UI-<clause> + file:line,且项目 SCSS/设计系统文档的优先级高于这些条款(若确有冲突 → 向用户同时说明双方观点) 重要,务必注意:添加一项最终审核待办任务,以核实工作质量

[TASK-PLANNING] 开始前,分析任务范围,并使用任务跟踪系统地将其拆分为小型待办任务和子任务。

无 Hook 提示词协议镜像(自动同步)

来源:.claude/.ck.json + .claude/skills/shared/sync-inline-versions.md(:full 区块)+ .claude/scripts/lib/hookless-prompt-protocol.cjs

[WORKFLOW-EXECUTION-PROTOCOL] [BLOCKING] 工作流执行协议 — 强制要求,重要,必须执行,关键。任何情况下都不得跳过。

**通用可移植性边界:**可复用技能和协议文本应保持项目中立;从 docs/project-config.json 和 docs/project-reference/ 中了解项目特定约定。应用 shared/sdd-artifact-contract.md 中的共享 AI-SDD。阅读 docs/project-config.json 和 docs/project-reference/docs-index-reference.md,然后打开其中列出的项目参考文档。对于规范、测试用例、行为变更、公共契约或 docs/specs/ 相关工作,应通过文档索引中列出的本地规范文档进行:当规范/测试/代码必须保持同步时,使用 feature-spec-reference.md、spec-system-reference.md、spec-principles.md 和 workflow-spec-test-code-cycle-reference.md。如果任一文件或必需的参考文档缺失或过时,则在进行常规项目特定工作之前,自动运行 $project-init(或更精简的底层流程,例如 $project-config、$docs-init、$scan-all 或 $scan --target=<key>)。只要具备此共享上下文和本地文档,任何受支持的 AI 工具都可以执行。

  1. **检测:**如果提示以明确的斜杠技能/工作流命令开头,则直接执行。否则,根据工作流目录和技能列表匹配提示。
  2. **分析:**选择最佳方案:直接执行、调用技能、启动标准工作流,或组合自定义步骤。
  3. **自动选择:**自行选择最佳方案。不要让用户在直接执行、技能、标准工作流或自定义工作流之间做选择。
  4. **启动:**对于选定的工作流,调用 $start-workflow <workflowId>;对于选定的技能,调用该技能;对于自定义工作流,直接按顺序执行自定义步骤;对于直接执行,继续处理任务。
  5. **创建任务:**如果选定路径包含多个步骤,则在执行前为所有工作流/技能/自定义步骤创建任务跟踪。
  6. **并行化:**执行任务列表前,为每项任务标记 PAR(输入独立,且写入集与其他所有 PAR 任务不重叠)或 SEQ(注明阻塞依赖),将 PAR 任务分组到各个波次,声明波次计划,并在一条消息中启动每个波次的子 Agent——每个波次都必须等待所有成员返回;除非子 Agent 自身的定义允许进一步扇出,否则只扇出一层。默认按顺序执行是缺陷;但不要并行化共享写入目标、会消费其他任务输出的任务、简单的单文件任务、技能或工作流明确规定顺序的任务,以及需要用户批准的环节。
  7. **执行:**按照上下文指令中的 Workflow Step Advancement & Parallel Phases 规则推进——由模型驱动;子 Agent 完成与内联调用一样会推进步骤;并行阶段组必须等待所有成员返回(只有所有成员都返回后才能推进,绝不能串行执行)

共享 AI-SDD 协议标记

来源:.claude/skills/shared/sync-inline-versions.md

SYNC:ai-sdd-artifact-contract

AI-SDD 工件契约 — 共享的规范驱动开发规则应保持可移植,并由源文件管理。

  1. 将可复用的 AI-SDD 原则保存在 .claude 中;将特定于仓库的路径、命令、负责人、产品和格式放在项目配置/参考文档中。
  2. 保持以下周期:spec -> plan -> tasks -> implement -> verify -> update spec/docs。
  3. 通过决策、任务、TC/测试、源证据以及文档/规范更新,追踪每项要求或不变量。
  4. 将从代码提取规范的内容仅视为参考,直到规范的权威负责人接受为止。
  5. 任何受支持的 AI 工具都可基于同步的上下文进行规划、实现、审查或验证;使用多个工具是可选的。
  6. 先更新 .claude 源文件,再同步生成的镜像;不要手动编辑 .agents、.codex 或 AGENTS.md。— 原因:镜像是生成的工件;下次同步时,手动修改会被覆盖
  7. 如果 docs/project-config.json、根目录指令文件或必需的项目参考文档缺失或过时,则在进行常规项目特定工作之前,自动运行 $project-init 或范围更窄的底层流程。

当前参考文档: 当前技能根目录中的 shared/sdd-artifact-contract.md。


SYNC:ai-sdd-artifact-contract:reminder

  • MANDATORY 应用 shared/sdd-artifact-contract.md;将可复用的 AI-SDD 保存在 .claude 中,并将本地规则保存在项目文档中。
  • MANDATORY 从代码提取的规范仅供参考,直到权威规范获批;任何受支持的 AI 工具都可基于同步的上下文执行工作。
  • MANDATORY 先更新 .claude 源文件,再同步生成的镜像;不要手动编辑 .agents、.codex 或 AGENTS.md。
  • MANDATORY 如果项目配置、根目录指令文件或必需的参考文档缺失或过时,则应自动通过 $project-init 或范围更窄的设置流程来处理项目特定工作。 [TASK-PLANNING] [MANDATORY] 在执行任何工作流或技能步骤之前,先为所有计划步骤创建/更新任务跟踪;之后随着各步骤开始/完成,持续同步更新任务跟踪。

[LESSON-LEARNED-REMINDER] [BLOCKING] 任务规划与持续改进 — MANDATORY。不得跳过。

开始前将工作拆分为小任务(任务跟踪)。添加最终任务:“分析 AI 错误与经验教训”。

提取经验教训——仅关注根本原因,而非修复表象:

  1. 指明失败模式(推理/假设失误),而非表面症状——“未阅读源代码就假设 API 存在”,而不是“使用了错误的枚举值”。
  2. 通用性测试:此失败模式是否适用于 ≥3 种情境/代码库?如果不适用,则再向上抽象一层。
  3. 写成通用规则——去除特定于项目的名称/路径/类。规则应适用于任何代码库。
  4. 合并:多个错误若属于同一种失败模式,则合并为一条经验教训。
  5. 复发门槛:“如果没有这条提醒,未来会话中是否会再次出现此问题?”——不会 → 跳过 $learn。
  6. 自动修复门槛:“$code-review/$code-simplifier/$security-review/$lint 能否发现此问题?”——能 → 改进审查技能。
  7. 两个门槛都通过 → 请用户运行 $learn。 [CRITICAL-THINKING-MINDSET] 运用批判性思维和序贯思维。每项断言都需要可追溯的证据;采取行动前,置信度须 >80%。 **反幻觉原则:**绝不将猜测当作事实——为每项断言引用来源,坦诚承认不确定性,自行检查输出错误,独立交叉核对,并对自己的信心保持怀疑——缺乏证据的确信是所有幻觉的根源。 **AI 注意力原则(首因-近因效应):**在较长提示词/协议的开头和结尾都放置最关键的 3 条规则,以确保指令在较长的上下文窗口中仍能得到遵循。 **目标驱动执行:**先定义成功标准,持续循环直至验证完成;仅当可观察的检查均通过后才停止。 **测试验证意图:**测试必须保护业务规则/不变量,并在受保护的意图遭到破坏时失败,而不只是复现当前行为。

常见 AI 错误预防(系统经验)

  • 上下文压缩后重新读取文件。 编辑前必须在同一上下文中先读取文件;上下文压缩会清除读取状态。编辑前重新读取。
  • 批量替换后 grep 旧术语。 AI 过度相信查找/替换已覆盖所有内容。批量编辑后,对整个仓库执行 grep,检查文档/配置/目录中遗漏的引用。
  • 删除前检查下游引用。 删除会连带导致文档/代码过时。移除前先梳理引用文件。
  • 丢失记忆后,创建新内容前先检查现有状态。 上下文压缩会清除先前工作的记忆。查询当前状态以便继续——绝不要盲目重复创建。
  • 根据实际代码验证 AI 生成的内容。 AI 会幻觉出 API、类名和方法签名。记录/引用前先用 grep 确认其确实存在。
  • 编辑后追踪完整依赖链。 更改定义却漏掉下游使用方。追踪完整链路。
  • 重命名时,对所有使用方文件类型执行 grep。 某些文件类型会静默忽略缺失的引用(不会产生编译错误)。搜索代码、模板、配置和生成文件。
  • 验证正确性时追踪所有代码路径。 代码存在 ≠ 代码会执行。追踪提前退出、错误分支和条件跳过——不要只看正常路径。
  • 源数据变更时,更新包含规范数据的文档。 内嵌派生数据(工作流、架构、配置)的文档会静默过时。源数据变更时,同时更新所有内嵌该数据的文档。
  • 恢复上下文后验证子 Agent 的结果。 父 Agent 压缩上下文期间,后台 Agent 可能已经完成——用 grep 验证输出,不要相信对任务已完成的假设。
  • 将完整目标列表与子 Agent 的分配任务交叉核对。 按类别并行分配子 Agent 会漏掉边界项。继续前,将各分配任务的并集与目标列表核对。
  • 子 Agent 只能从其 Agent 的 .md 定义继承知识——使用自定义 Agent 类型,不要使用内置 Explore。 采用工具 = 权限 + 知识 + 执行(编号工作流步骤)。
  • 逐步记录子 Agent 的发现,不要等最后一次性提交。 长时间运行的子 Agent 可能在最终写入前达到截断限制——导致发现丢失。指示其按章节追加到报告文件。
  • 调试时,修复前先问“责任在谁?” 追踪调用方(数据错误)还是被调用方(处理错误)。在责任层修复——绝不要只修补症状出现的位置。
  • 测试失败 → 先记录暂定结论,再追踪/编辑,然后调查。 使用完整的五类分类:SOURCE-WRONG(生产代码违背意图)、TEST-WRONG(断言/设置已过时)、TEST-NOT-OPTIMAL(测试有效但脆弱或信号弱)、ENVIRONMENT-BLOCKED(外部状态阻止得出结论),或 AMBIGUOUS(意图/证据不足以安全判断)。然后追踪根因,并对照规范依据(如果存在,查看 docs/specs/**)和源代码进行交叉验证。绝不要只为让测试变绿而削弱断言、添加跳过、放宽超时或更改源代码。
  • 提取/重构后,对所有已移除名称执行 grep。 主文件“完成” ≠ 次要文件干净。宣布完成前,在整个范围内搜索每个已移除的符号。
  • 假定现有值是有意设定的——更改或将其标记为缺陷前先问为什么。 仅凭模式匹配判定“错误”会忽略上下文。更改或报告任何常量/限制/标志/阈值前:阅读注释、git blame、调用方的执行顺序(使该值正确的保证通常位于引用行之前紧邻执行的代码中),以及同一惯例下至少 2 个同类调用点。只说明“是什么”却不说明“为什么”的文档,缺少的是依据,并不能证明缺少保护措施;在验证环节中,准确的 file:line 引用证明的是转录无误,而不是缺陷确实存在。
  • 验证所有受影响的输出,而不只是第一个。 一个构建成功 ≠ 全部成功。涉及多个技术栈的变更(后端/前端/测试/文档)要求验证每一项输出。
  • 复制相近模式前,先评估是否适用。 最接近的示例 ≠ 前提相同——确认新上下文具有相同的约束、基类、作用域和生命周期。
  • 整体优先的调试方式——抵制注意力就近陷阱。 不要一头扎进第一个看似合理的原因。列出所有前提(配置、环境变量、路径、数据库、端点、凭据、版本、DI、数据)。用证据(grep/查询——而非推理)逐项验证。问“什么证据可以推翻这个假设?”——如果没有,那就不是假设。代价最高的失败:在“显而易见”的层继续深挖,而 Bug 实际位于从未质疑过的层。
  • 精准修改——应用 diff 测试(结合上下文判断)。 两种模式:(1)Bug 修复 → 每一行都能追溯到该 Bug;不做样式调整;只清理因你的修改而变得未使用的孤立内容。(2)审查/增强 → 实施改进,并声明为“超出主要请求的增强:[内容]”。绝不要悄悄扩大范围。Diff 测试:“如果我没有被要求做 X,这一行还会存在吗?”——如果不会,就删除或明确说明。
  • 编码前先指出歧义——不要默默自行选择。 存在多种有效解释时,逐一列出并说明工作量:“[请求] 可能指 (1) [N 小时]、(2) [N 小时]。哪一个更重要?”先列出范围/格式/数量/约束方面的假设。如果有更简单的方案,也要说明。绝不要默默自行选择。
  • [MANDATORY FIRST ACTION] 回复前务必先启用合适的技能或工作流。 将任务与工作流目录和技能列表进行匹配;通过技能调用或 $start-workflow <workflowId> 启用。检查之前绝不要回答或编写代码。跳过 = 违反协议。
  • Why-Review 对抗性思维——审查任何计划、决策或设计时都要运用。 默认持怀疑态度,而非验证者态度:充分论证被否决的替代方案,将每项既定理由反向审视(“它牺牲了什么?”),对最重要的 2-3 项假设进行压力测试,开展事前验尸(“已发布,3 个月后失败——什么会出问题?”),并指出作者遗漏的 1-2 种替代方案。章节齐全 ≠ 质量过关;质量取决于因果推理、具体缓解措施和证据,而不是“这样更好”或“密切关注”。
  • 大型审查的子 Agent 提示词应优先安排报告写入。 处理许多文件的子 Agent 可能在最终写入前耗尽预算——导致发现丢失。设计提示词时应确保:(1)报告写入是第一个明确的交付项,(2)按文件/章节逐项追加(不要批量写入),(3)限定范围,避免读取耗尽预算。若输出在句中被截断且没有报告文件 → 启动范围更窄的任务,不要原样重试相同提示词。
  • 上下文压缩后,继续前重新验证此前各阶段的所有结果。 摘要描述的是意图,不是环境状态(git 索引、文件系统、进程)。恢复时,首先审查:git status、重新读取修改过的文件、验证文件系统。每一项“已完成”的声明,在证据确认前都是未经验证的假设。
  • OOM/内存:先检查行数,再检查行大小。 排查顺序:(1)无界查询——触发条件是否没有数据库筛选?将筛选推到数据库端;这可消除 OOM。(2)行是否很大?投影可按比例减少数据量。减少行数比投影的收益更大。
  • 断言系统自身负责的结果,绝不要断言基础设施负责的中间状态。 测试任何异步行为(队列/代理传递、重试、后台任务、缓存、复制)时,应断言最终业务/实体状态。绝不要断言传递记录——消费/发送状态、尝试次数、最后错误、代理、调度程序或 outbox/inbox 表中的行存在与否或数量。这些记录属于共享基础设施,任何同时运行的进程(同伴 Worker、第二个副本、遗留的本地容器)都可能写入,且通常使用确定性的共享键;因此,断言会悄悄测试开发者的环境,而不是系统:单独运行时通过,一旦有其他进程共享该代理和数据库就会不稳定。每个断言都要问:“无论哪个进程执行了这项工作,该断言都会成立吗?”——如果不会,就改为断言已收敛的数据状态。推论:进程本地的故障注入和进程内遥测不能用于控制任何进程都可能执行的工作——将它们用作压力放大器(启用 → 限定时间窗口 → 停用 → 断言收敛),绝不要用作前置条件。
  • 不要让领域概念进入通用/共享/基础设施层。 可复用层(共享库、框架、基础设施模块)不得引用任何特定使用方的领域概念——租户/客户/产品 ID、业务实体、功能规则。泄漏进来后,代码能够编译并运行,因此会悄无声息地通过审查,同时让“可复用”层与某个使用方耦合。保持共享类型与领域无关;通过子类/组合将领域字段/逻辑下放到使用方。——原因:与某个使用方的领域耦合的层不再可复用。

评论

支持 Markdown