把组件禁用条件写进 Skill:让 Agent 先解释违反了哪条设计规则

本文提出将组件禁用等状态规则编码为可执行、可解释的Agent Skill,强调在违反设计规则时优先输出违规编号、定位、原因及人工可选方案,而非自动修正。Skill基于YAML frontmatter定义,聚焦规则解释能力,不授权自动修改;验证覆盖组件状态、Design Token依据与规则语境,明确区分“未发现”与“已通过”,并要求保留业务动因(如加载态与禁用态差异)。当前为教学级实现,尚未部署于真实Agent环境。

封面:组件规则书与带解释的禁用按钮

“这个按钮为什么不能用红色?”如果 Agent 只把它改成蓝色,设计规则仍然没有被理解。下次生成加载态,它可能再次放入同样的冲突。比自动修正更有用的是:指出违反哪条规则,展示原因,再给用户一个可选方案。

10 月 22 日 Anthropic 宣布将 Agent Skills 捐赠给 AAIF。治理变化是背景,组件规则本身仍要写清。当前规范的最小 Skill 是带有 YAML frontmatter 的 SKILL.md;文件格式不会自动赋予规则执行能力,也不会证明某个平台一定遵守它。

把规则写成能解释的工作步骤

下面是一份教学 Skill 内容,可保存为 review-component-rules/SKILL.md。它要求先读组件状态与 Token 依据,再输出规则编号、定位、解释和建议。它没有授权安装工具、联网改设计文件或自动提交修复。

---
name: review-component-rules
description: 审阅组件的禁用、加载、错误状态与设计 Token 使用,输出规则解释和人工确认选项。
---
读取组件描述与项目规则表,缺少依据时标记 unknown。
R1:加载期间不提供重复提交入口,保留可理解的加载说明。
R2:禁用必须有明确原因;不能仅降低透明度表达。
R3:错误信息说明问题与可行动作,不把“出现错误态”直接判为违规。
R4:颜色使用项目允许的语义 Token;例外须单列理由。
每条发现输出:规则 ID、组件 ID、状态、依据、解释、替代选项。
先展示建议;用户确认前不修改组件。
import assert from 'node:assert/strict';
function review(c) {
  const issues=[];
  const add=(rule,reason,alternative)=>issues.push({rule,component:c.id,reason,alternative});
  if(c.loading && c.repeatActionEnabled)
    add('R1','加载中仍可重复提交','保留状态说明并关闭重复提交入口');
  if(c.disabled && !c.disabledReason?.trim())
    add('R2','缺少禁用原因','补充可见原因及恢复条件');
  if(c.colorToken && !['action.primary','action.danger'].includes(c.colorToken))
    add('R4','Token 不在此教学规则表中','选择允许项或提交例外说明');
  return issues;
}
const issues=review({id:'save',loading:true,repeatActionEnabled:true,
  disabled:true,disabledReason:'',colorToken:'pink.500'});
assert.deepEqual(issues.map(x=>x.rule),['R1','R2','R4']);
assert.equal(review({id:'save',error:'保存失败,请重试',
  loading:false,disabled:false,colorToken:'action.primary'}).length,0);
console.log('rules explain violations; error state itself is not a violation');

“没有发现”与“已通过”不同

示例检查器只覆盖三条可由描述数据判断的规则。它没有验证对比度、DOM 可访问名称、真实重复点击,也没有解析完整 DTCG 文件。因此返回空数组,只能写“本检查器未发现这些问题”,不能写“组件合规”。

Figma 的 10 月官方文章介绍了 guidelines 与设计系统审查场景。它说明规则语境值得提供,但不构成本文 Skill 在不同平台上的兼容性实验。这里也没有使用不可读的迁移字段或猜测新的配置参数。

替代选项要保留业务原因

加载态和禁用态可能同时出现,但不是同义词。加载表示任务在进行,禁用可能因为没有权限、数据不完整或当前不可用。解释必须对应实际原因。错误反馈也不应把原先输入清空,让用户无法修正。

Token 规则需要版本与适用范围。红色只用于危险操作可以是项目约定,不能包装成放之四海皆准的设计定律。用户提出例外时,先展示受影响状态和理由,再决定是否更新规则表。

违反规则后先解释再提供替代选项

图解释规则违反后的交互顺序;替代方案需要人工确认。它不是某个 Agent 产品实际执行或跨平台测试的截图。

让 Agent 先解释,可以把设计评审从“改成我喜欢的样子”推进到“依据是什么”。本次只验证了教学规则检查器,Skill 文本尚未安装或在真实 Agent 中运行;规则执行效果仍待实际组件验证。

验证范围与资料

本地使用 v26.3.0 检查上述示例。纯 JavaScript 示例已在 Node 权限隔离模式执行,断言通过。已运行规则函数断言;Markdown 为教学 Skill 文本,未安装、运行或测试任何平台兼容性。

以下发布日期或版本日期与访问日期分开记录;24—31日的新消息须发稿前再核对。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值