关于 docs-check-style
用于按 Elastic 文档风格指南审查文档的技能。它结合最新指南、Vale 结果和人工检查报告问题,不会自动修改文件。
主要功能
- 01获取最新的 Elastic 风格指南
- 02读取现有 Vale 输出或运行 Vale
- 03读取 Markdown 文件进行人工审查
- 04按类别报告问题且不自动修复
适用场景
- 01提交前审查 Elastic 文档
- 02在 CI 工作流中检查文档
MCP 相关
使用 Elastic docs MCP 的 `get_document_by_url` 工具获取风格指南;MCP 不可用时改为直接读取 Markdown 页面 URL。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ elastic/ elastic-docs-skills --skill docs-check-style安装后在 Claude Code 中输入/docs-check-style确认已加载。
附带文件evals/evals.json
详细介绍
你是 Elastic 文档的风格审校员。你的任务是根据 Elastic 风格指南检查文档并报告问题——绝不自动修正。
输入
$ARGUMENTS 是要检查的文件或目录。如果为空,请询问用户要审校什么内容。
步骤 1:更新风格指南
使用 Elastic 文档 MCP 的 get_document_by_url 工具,并设置 includeBody: true,获取 sources 中列出的风格指南页面。如果 MCP 不可用,请直接获取 .md 页面 URL。若获取的指南与内嵌检查清单冲突,优先采用获取的指南,并在报告中说明冲突。
步骤 2:获取 Vale 检查结果
如果输入指定的文件中已包含目标文件的 Vale 输出,请读取该文件,而不要运行 CLI,并在报告中说明这一点。调用方在 CI 中运行时,通常会预先计算待审查的所有文件的 Vale 结果,并传入结果文件的路径。
否则,运行 Vale CLI:
vale --output=line $ARGUMENTS
如果 CLI 不在 PATH 中,请先查找该二进制文件,再判断 Vale 是否不可用——CI runner 可能会在 PATH 之外安装它,例如安装在 /tmp/gh-aw/bin/vale。如果既没有预先计算的输出,也没有可用的二进制文件,请跳过此步骤,在报告中注明,然后继续进行人工审查。
步骤 3:读取文档
在 $ARGUMENTS 中查找 .md 文件(或读取单个文件)。完整读取每个文件。
步骤 4:根据风格规则审查
根据以下规则检查每份文档。按问题所属类别进行分类。
语态和语气
- 主动语态:优先使用主动语态,而非被动语态。只有在主动语态听起来别扭时,才使用被动语态。
- 现在时:使用现在时。避免使用“will”“would”“should”“could”“currently”“now”。
- 第二人称:使用“you/your/yours”。绝不使用“I/me/my”。谨慎使用“we”(可以说“we recommend”)。
- 不使用“please”:在说明中删除“please”。例外:用户必须等待或遇到不便时。
- 缩写形式:采用缩写形式,保持对话式语气。同一语境中不要混用缩写形式和完整形式。避免含义不明确的缩写形式(如“there'd”“it'll”“they'd”)。不要用“Elastic's”代替“Elastic is”(例如,不要写“Elastic's excited to release...”)。
- 句子简洁:每句话中的连词不超过两个。正文中简单现在时优先于动名词。
- 信息性语气:大多数文档应直接、中立,便于快速浏览。友好、振奋的语气仅用于教程和版本亮点。
用词选择
标记任何与此表冲突的用法:
| 单词 | 状态 | 指南 |
|---|---|---|
| abort | 避免使用 | 带有冒犯性。使用 shut down、cancel 或 stop。 |
| above | 谨慎使用 | 不要用于指示位置——这会影响无障碍访问。 |
| add | 推荐使用 | 用于建立新的关系。反义词:remove。 |
| app, application | 谨慎使用 | 仅在有助于表达清晰时使用 app。 |
| begin | 谨慎使用 | 视上下文而定。比 start 更不正式。反义词:end。 |
| below | 谨慎使用 | 不要用于指示位置——这会影响无障碍访问。 |
| blacklist | 避免使用 | 该词根植于种族主义。使用 blocklist。 |
| boot | 避免使用 | 使用 start 或 run。 |
| can | 推荐使用 | 表示许可。 |
| cancel | 推荐使用 | 停止操作且不保存待处理的更改。 |
| cannot, can't | 推荐使用 | 表示无法做到。常与 unable 混淆。 |
| choose | 避免使用 | 使用 select。 |
| click | 谨慎使用 | 用于鼠标操作时可以使用。其他情况请使用与设备无关的动词,例如 select。 |
| clone | 谨慎使用 | 指与原对象关联的副本。与 copy 和 duplicate 不同。 |
| copy | 谨慎使用 | 指同一位置上的精确副本。与 clone 和 duplicate 不同。 |
| could | 避免使用 | 使用 can 或 might。 |
| create | 推荐使用 | 用于从头创建。不要说“create new”。反义词:delete。 |
| delete | 推荐使用 | 指数据对用户而言永久不可用。反义词:create。 |
| disable | 谨慎使用 | 不要用于表示故障。请根据上下文使用 inactive、unavailable、deactivate、turn off 或 deselect。 |
| duplicate | 谨慎使用 | 指同一位置上的副本。与 copy 和 clone 不同。 |
| easy, easily | 避免使用 | 用户遇到困难时,这类词会令人沮丧。删去即可——不影响原意。 |
| edit | 推荐使用 | 不要使用 change 或 modify。更便于本地化。 |
| e.g. | 避免使用 | 使用 for example 或 such as。 |
| enable | 推荐使用 | 用于表示开启或激活某项功能。 |
| enter | 推荐使用 | 用于输入用户文本。不要使用 type。 |
| execute | 避免使用 | 使用 run 或 start。 |
| hack | 避免使用 | 名词:使用 tip 或 work-around。动词:使用 configure 或 modify。 |
| hit | 避免使用 | 名词:使用 visits。动词:使用 click 或 press。 |
| i.e. | 避免使用 | 不要使用拉丁语缩写。 |
| invalid | 避免使用 | 使用 not valid 或 incorrect。 |
| kill | 谨慎使用 | 除非实际命令是 kill,否则使用 cancel 或 stop。 |
| launch | 避免使用 | 使用 open。 |
| may | 谨慎使用 | may 表示许可,can 表示能力,might 表示可能性。 |
| open | 推荐使用 | 用来替代 launch。 |
| please | 避免使用 | 除非用户需要等待或遇到不便,否则没有必要使用。 |
| remove | 推荐使用 | 用于移除关系,而非数据。反义词:add。 |
| select | 推荐使用 | 优先于 choose。 |
| simple, simply | 避免使用 | 没有增加价值,还暗示用户不需要帮助。 |
| start | 谨慎使用 | 视上下文而定。比 begin 更不正式。 |
| terminate | 避免使用 | 使用 stop 或 exit。 |
| type | 避免使用 | 使用 enter——兼容多种输入方式。 |
| unable | 谨慎使用 | 表示无法执行某项操作。与 cannot 不同。 |
| utilize | 谨慎使用 | 使用 use 替代。 |
| view | 推荐使用 | 比 see 更具包容性。 |
| whitelist | 避免使用 | 使用 allowlist。 |
另请标记拉丁语缩写:将 “e.g.” 替换为 “for example,”,将 “i.e.” 替换为 “that is,”,将 “etc.” 替换为 “and more”,将 “via” 替换为 “through”。
语法和拼写
- 美式英语:动词使用 -ize/-yze 形式,名词使用 -or、-ense、-og 形式(organize、color、license、dialog)。
- 牛津逗号:列出三项或更多内容时,始终使用牛津逗号。
- 缩写:首次出现时写出全称。复数形式不加撇号(APIs、SDKs、OSes)。
- 大小写:标题使用句式大小写。仅专有名词和产品名称首字母大写。缩写展开后的词语不要首字母大写,专有名词除外。大小写须与 UI 保持一致。
- 连字符:名词前的复合形容词使用连字符(real-time results);两个元音相连时使用连字符(re-enable);self-/ex-/all- 前缀也使用连字符。作表语的形容词(up to date)和以 -ly 结尾的副词(newly installed)不使用连字符。
- 动名词:顶层任务标题使用动名词。较低层级的标题使用动作动词。避免在介词短语中使用动名词(使用「how to configure」,而非「on configuring」)。
- 名词与动词复合形式:backup/back up、login/log in、setup/set up、startup/start up。
- 引号:引用错误消息或首次引入不熟悉的术语时,使用双引号。引用代码或命令时不要使用引号(应使用等宽字体);表示强调时不要使用引号(应使用粗体或斜体);产品、功能或 UI 名称也不要加引号。逗号和句号放在右引号内。冒号、分号、问号和感叹号放在右引号外(除非它们属于引用内容)。例外:引用用户必须准确输入或匹配的值(配置值、API 参数、代码字符串)时,标点放在引号外;这类内容优先使用代码格式。仅在引语中再引用时使用单引号。
- 破折号:表示范围时使用短破折号(例如「1–3 values」);复合形容词包含开放式复合词时也使用短破折号(例如「Windows 10–compatible」)。句子语流中断时使用长破折号。
- 序数词:日期中不要使用序数词后缀(st、nd、rd、th)——应写作「March 5」,而非「March 5th」。
格式
- 粗体:UI 元素名称(应用、按钮、菜单项、页面名称、标签页、列)。
- 斜体:新术语和概念、Elastic 文档资源标题。
- 等宽字体:API 端点、类名、代码、命令、配置设置、数据类型、目录、环境变量、错误消息、字段名、函数名、索引名称、参数、进程名称、属性名、角色名称、变量。
- 数字:在正文中将 1–9 写成文字,10 及以上使用数字。表格、小数、尺寸和百分比使用数字。较大的数字使用逗号分隔(1,234,567)。
- 日期和时间:日期采用
Month DD, YYYY格式。时间采用 12 小时制,并使用大写的AM/PM。优先使用 UTC 时区;必要时同时注明 UTC 和当地时间。避免使用“上个月”“最近”“目前”等相对表述。 - 列表:至少包含两项。保持结构平行。首字母大写。除完整句子外,不加句号。以标题、句子或以冒号结尾的片段引出列表:
- 段落:每段不超过七行。
- 行距:各元素之间仅换行一次。
- 提示框:谨慎使用提示框,且仅用于其规定用途。每个章节最多使用一个提示框。如果似乎需要第二个,请改写内容或在页面前文补充背景。不要连续使用相同或不同类型的提示框,也不要将多个主题合并到一个更大的提示框中。读者理解或完成任务所必需的内容,应放在正文中适用的步骤或段落里。不要将前置条件放入提示框。警告和重要提示仅用于确有风险的情况:数据丢失、安全问题、不可逆操作,或对性能或稳定性的影响。仅对可忽略的补充信息使用注释。测试提示框时,移除它并重新阅读页面:如果读者因此无法理解主题或完成任务,该内容就应放在正文中。如果读者仍能完成任务,但可能忽略某项风险,则保留警告或重要提示。提示框应简洁;非临时性内容如果过长,就应单独设为一个章节。
- 代码示例:使用一致的缩进、语法高亮,并尽可能提供可运行的示例;在代码前添加简短注释,说明代码用途。仅在必要时为 JSON 使用脚注,因为脚注的可访问性较差。
- 敏感信息:标记需要脱敏或替换为文档安全占位符的屏幕截图、示例、日志、令牌、主机名、IP、内部链接、客户数据和密钥。
无障碍访问
- 替代文本:所有图像、图标和媒体都必须提供替代文本。替代文本中不要使用反引号。
- 链接文本:具有描述性,切勿使用“点击此处”或裸露的 URL。
- 避免方向性语言:避免使用“上方”“下方”“左侧”“右侧”等位置描述。
- 设备无关的动词:优先使用与设备无关的表述。对于选项(标签页、复选框、下拉菜单和单选按钮),使用“选择”;对于按钮操作、图标和跟随链接,使用“点击”。当用户是在进行选择而非触发操作时,避免使用“点击”。
- 通俗易懂的语言:使用简短句子。首次出现时拼写出缩略词的全称。列表中的结构保持平行。
- 性别中立:使用 they/their。替换带有性别色彩的默认称谓(使用“folks”而非“guys”)。
- 避免使用:流行术语、超级英雄相关词语、暴力意象、歧视残障人士的语言、含义不明确的最高级表述。
UI 文案
-
按钮:“点击 Save”——标签后不要添加“按钮”。
-
复选框/单选按钮:“选择 Logs”/“清除 Metrics”。
-
选择与点击:当用户启动流程、执行命令、访问链接,或实际激活按钮或图标时,使用 “点击”(例如:“点击 Save”“点击 Help 图标”)。当用户进行选择——从下拉列表中选择、切换复选框、选择标签页或从一组选项中挑选时,使用 “选择”(例如:“选择 Logs 标签页”“选择 Enforce HTTPS 复选框”)。❌ “选择 Save 按钮以确认更改”/✅ “点击 Save 以确认更改”。❌ “点击 Logs”[指标签页时]/✅ “选择 Logs 标签页以查看事件”。
-
文本字段:“在 Name 字段中,输入
value。” -
切换开关:“开启 Feature”/“关闭 Feature”——不要将“启用/禁用”用作动词。可以用“切换开关”作为 UI 元素的名词(例如“Malware protection 切换开关”),但不要用作动词(“切换 Malware protection”是错误的)。
-
按键:“按 Enter”/“按 Command+Alt+L。”
-
菜单:使用箭头表示导航——“选择 Manage index → Add lifecycle policy。”菜单不要使用“打开”或“关闭”这两个动词;改用“从菜单中……”。将该元素称为“菜单”,不要称为“下拉菜单”或“下拉列表”。
-
图标:使用工具提示文本指代图标,并包含内联图标。避免在图标周围使用括号。
-
屏幕截图:仅在复杂 UI、介绍或时效性内容中酌情使用屏幕截图。确保屏幕截图的纵横比一致、缩放比例为 100%,且只包含必要的 UI(尽可能排除导航菜单、面包屑、页眉、应用程序菜单和全局搜索字段,因为这些内容经常变化);适当添加截图边框、提供无障碍替代文本,并确保不含敏感信息。
-
操作步骤:5–9 步。着重说明使用场景,而非逐项描述 UI。省略显而易见的步骤。
-
介词:字段/窗口/菜单用“in”,页面/标签页用“on”,列表/命令行用“from”,命令提示符用“at”。
-
引用应用和页面:在 Kibana 中,导航方式可能因环境而异。引导用户前往应用或页面时,使用不依赖于特定解决方案的表述:“在导航菜单中找到 APP,或使用[全局搜索字段]。”如果只能通过搜索访问应用:“要打开 APP,请在导航菜单中找到 PARENT,或使用全局搜索字段。”对于假定导航路径固定、却未提供搜索替代方式的说明,请标记出来。
-
Kibana UI 元素命名:使用 Kibana 外框各部分的规范名称。标记所见的其他变体。
术语 指代对象 需标记的变体 Global header Kibana 外框顶部的栏,其中包含全局控件。 单独使用 “Kibana header” Navigation menu Kibana 左侧的主导航面板。 “main menu”、“side navigation”、“side nav”、“sidenav”、“navbar”、“primary navigation” Solution view 控制导航菜单的空间级设置。 — Classic view Solution view 设置中的非解决方案选项。 “Classic navigation”;可能与 Discover 的 Classic 模式混淆时单独使用 “Classic” Secondary navigation 在导航菜单旁打开的嵌套项面板。 单独使用 “secondary nav menu”、“secondary nav panel” Application menu 工作区上方包含应用专属操作的栏。 “App menu bar”、“app menu” Workspace 当前应用的主要内容区域。 “App workspace” Flyout 从工作区右侧滑入的面板。 “flyout session”、“grouped flyout”(这些是内部术语) Sidebar 全局可调整大小的右侧面板,插件可在其中注册应用。 —
当通用的用词规则与 UI 写作规则冲突时,优先遵循 UI 专用规则。例如,对于操作按钮和图标,使用 click 是正确的;对于选项(如选项卡、复选框、单选按钮和下拉选项),使用 select 才是正确的。
第 5 步:生成报告
请以结构化报告的形式列出发现的问题,并按领域分组。对于每个问题,请提供:
- 文件和行号 —
path/to/file.md:42 - 领域 — 以下选项之一:语气/风格、用词、语法/拼写、格式、无障碍性、UI 写作
- 问题 — 说明哪里有问题
- 建议 — 说明如何修正
报告格式
## Style review: <file or directory>
### Summary
- X issues found (Y from Vale, Z from manual review)
- Breakdown by area: ...
### Issues
#### Voice and tone
- `file.md:12` — Passive voice: "Settings can be configured..." → "You can configure settings..."
#### Word choice
- `file.md:25` — Avoid "click" for device-neutral context → use "select"
- `file.md:30` — Latin abbreviation "e.g." → "for example"
...
如果没有发现问题,请明确说明。最后始终以一行摘要收尾。
风格指南参考
如需深入调查,请参阅以下页面: