
前言
导读: 我之前对于设计 Skill 倾向于就是依据数据来支撑,现在理论讲完了,那么就来看真实案例。
这篇文章以
frontend-dev-prompt-craftSkill 为完整案例,带你走一遍从需求分析到 Eval 验证的 Skill 创建全流程。📖 本文属于《AI Agent Skill 工程化》系列实战篇
案例仓库:
https://github.com/yangmeishux/frontend-team-marketplace/tree/main/plugins/frontend-team-toolkit/skills/frontend-dev-prompt-craft
这个技能是基于我的真实项目业务存在的,所有的数据与信息,都是基于之前我做过的所有业务的基础上做的。
可以说这个技能从某种层面上,就是复制了我个人的开发经验与个人开发经验。
数据与信息的来源,大概从一年前,我使Cursor开始,到现在我基本上是Cursor为主要,Claude Code + 阿里百炼 和 Qoder 为次要。
我从使用AI工具进行编程的时候,就使用 markdown 记录下了我大部分需求开发的时候,与AI 进行对话 Chat 的时候,我记录下了一系列的相关提示词。
我某一天突然发现这些数据信息,还是可以让AI 帮我进行分析总结归类的。
这个其实就是我自己的经验与开发风格具体化的呈现。
提示词既是需求开发文档
需求开发的时候,我们没有办法直接对给AI一份文档就可以搞定所有,我们每个人不一样,写的提示词也是不一样的,我们发现一个问题:
每次给 AI 编码工具写提示词,格式五花八门。
有人写一段话,有人写列表,有人写需求文档截图。
结果呢?AI 理解不一致,效率忽高忽低。
为此我觉得,我可以将我之前记录的数据进行转换, 我们团队需要:
需要一个 Skill 来统一转化模糊需求 →结构化提示词。
这就是 frontend-dev-prompt-craft Skill 的诞生背景。
而且这个技能还可以不断迭代,集大家的所有提示词,从而打造成团队的一个重要的工具。
一套集合了全部团队开发人员的提示词 Skill ,它依据真实的项目场景而诞生,意味了它集合了我们先用的所有的项目基础知识,那么它就可以对我们每个项目很熟悉,那么提示词就好根据项目非常的精准。
完整的提示词就是需求描述 也是需求开发文档。
一、需求分析:识别任务类型
第一步:回顾历史请求
团队回顾过去 100+ 次 AI 编码请求,分类归纳。
结果:8 种前端开发任务
| 类型 | 代码 | 适用场景 | 频率 |
| 页面功能开发 | PAGE | 新增页面、按钮、列表、表单 | 35% |
| UI还原 | UI | 设计稿还原、动画效果 | 15% |
| 接口对接 | API | Yapi文档、多接口联动 | 20% |
| 技术方案设计 | ARCH | 架构重构、维护性问题 | 5% |
| 批量重构 | REFACTOR | 域名替换、批量配置修改 | 10% |
| Bug调试 | DEBUG | 排查问题、修复Bug | 10% |
| 需求分析迭代 | PRD | PRD生成开发文档、增量开发 | 3% |
| 组件迁移 | MIGRATE | 跨项目迁移、替换依赖 | 2% |
关键洞察:前端开发不是”一个任务”,而是”8 种任务类型”。每种类型需要不同的信息。
二、定义触发边界
触发条件
不触发场景
设计要点:
•触发要具体(可识别的用户语言)
•不触发要明确(边界清晰,避免误触发)
三、设计 Input Contract
每种类型需要不同的信息。我们定义 必填字段:
| 类型 | 必填字段 | 为什么必填 |
| PAGE | 页面位置、功能描述、数据来源、参考页面 | 信息不足会导致代码无法生成 |
| UI | 设计稿链接/截图、目标位置、交互要求 | UI还原需要视觉参考 |
| API | 接口地址/Yapi链接、调用场景、字段映射 | 接口对接需要契约 |
| ARCH | 现状问题、目标架构、约束条件 | 方案设计需要边界 |
| REFACTOR | 修改范围、修改规则、影响评估 | 批量操作需要范围控制 |
| DEBUG | 预期行为、实际行为、复现信息、相关代码 | 调试需要具体症状 |
| PRD | PRD链接/内容、开发阶段、相关代码位置 | 需求分析需要上下文 |
| MIGRATE | 源组件位置、目标项目、迁移策略 | 迁移需要路径 |
核心原则:必填字段 =信息不足就无法生成有效提示词的字段。
四、追问机制设计
追问规则
追问示例
用户输入:
Skill 行为:
•识别:PAGE 类型(关键词”列表页”)
•检查必填:页面位置?数据来源?功能描述?
•追问:
五、暂停检查点设计
三个必须暂停的场景:
| 场景 | 暂停原因 | Skill 行为 |
| 多类型组合 | 需确认优先级 | 「检测到多个任务类型(PAGE + API),请确认优先顺序」 |
| 必填项缺失 | 信息不足无法生成 | 「请补充必填信息后再继续」 |
| 生产环境操作 | 风险高需确认 | 「涉及生产环境修改,请确认是否继续」 |
六、编写 SKILL.md(关键片段)
文件结构
SKILL.md 核心内容(关键片段)
七、编写 test-prompts.json(关键片段)
测试用例结构
设计要点:每个类型至少 1 个测试用例,覆盖追问行为。
八、建立 Baseline
第一次跑 Eval
Baseline 记录(skill-meta.json 关键片段)
九、设置 skill-issues.jsonl
问题记录格式
设计要点:
•每个 issue 记录一个问题
•converted_to_eval 标记是否转化为测试用例
•status 跟踪问题状态
十、使用 skill-engineering 脚手架验证
十、实战回顾
从真实的提示词文件数据出发,让AI对所有的四个提示词文档进行分析提炼。
创建提炼过程,截图如下:







真实需求演示:
我找了个需求,如下图:

不使用技能,AI理解的需求:

使用技能,AI理解的需求,并生成的提示词:




从上述的提示词可以看出来,只有你补充一下接口和相关的数据枚举值,那么这个生成的提示词就是你本次需求开发的开发文档。
你不需要写太多的需求描述。只需要补充一下,这样的提示词就是真实需求的开发文档。
我的这个是网上找的截图,如果是真实的项目中,提示词还是会给出符合你当前项目的需求功能描述。
所以后续开发就直接让AI根据你的提示词进行开发就可以了。
真正做到了一句话就可以完成整个需求开发。
案例展示的功能,比较适合二次迭代项目。当然新的需求也是可以的。
创建过程回顾
| 步骤 | 做了什么 | 关键产出 |
| 1 | 回顾历史请求,识别任务类型 | 8 种类型分类 |
| 2 | 定义触发边界 | trigger + trigger_negation |
| 3 | 设计 Input Contract | 8 种类型的必填字段表 |
| 4 | 设计追问机制 | 追问规则 + 示例 |
| 5 | 设计暂停检查点 | 3 个暂停场景 |
| 6 | 编写 SKILL.md | 完整技能定义 |
| 7 | 编写 test-prompts.json | 8 个测试用例 |
| 8 | 建立 Baseline | 14/14 passing (100%) |
| 9 | 设置 skill-issues.jsonl | 问题记录机制 |
| 10 | 脚手架验证 | PASS |
关键要点
1.任务分类是起点:不清楚任务类型,就无法设计 Input Contract
2.必填字段是核心:信息不足就无法生成有效输出
3.追问是交互设计:缺失信息必须追问,不能假设
4.Baseline 是锚点:第一次跑 Eval 的结果,是后续迭代的基线
5.问题池是迭代基础:skill-issues.jsonl 记录发现的问题,后续转化为 Eval
附赠资产
| 资产 | 说明 | 获取方式 |
| 完整 SKILL.md | frontend-dev-prompt-craft 完整技能定义 | GitHub链接 |
| 完整 test-prompts.json | 8 个测试用例完整内容 | GitHub链接 |
| skill-issues 模板 | 问题记录 JSONL 格式模板 | 见下方 |
skill-issues.jsonl 模板
核心结论:从”凭感觉”到”有章法”
这篇文章走完了一个 Skill 从 0 到 1 的完整生命周期。
回头来看,Skill 工程化的核心不在于工具或格式,而在于思维方式的转变:
| 传统做法 | 工程化做法 |
| “我觉得 AI 应该懂” | 明确定义 8 种任务类型 |
| “写越长越好” | 必填字段 = 信息不足就无法生成的字段 |
| “出了问题再说” | Baseline + Eval 提前拦截退化 |
| “凭经验迭代” | skill-issues.jsonl 记录 → 转化为测试用例 |
五个关键认知:
1.任务分类是起点——不清楚 AI 要处理什么类型的请求,就无法设计有效的 Input Contract
2.必填字段是核心——每个字段背后都应该是”缺失就无法工作”的真实场景,而不是”可能有用”的想象
3.追问是交互设计的灵魂——AI 不应该猜测,缺失信息必须追问,这是 Skill 与用户之间的契约
4.Baseline 是迭代的锚点——第一次跑 Eval 的 100% 不是终点,而是后续所有修改的”退化检测线”
5.问题池是持续进化的基础——skill-issues.jsonl 不是摆设,每个 open 的问题都应该在下一次迭代中转化为 Eval 或修复
最后的话:
这个 frontend-dev-prompt-craft Skill 本质上是我差不多两年时间的 AI 编程经验的”数字化身”。
它不是凭空设计出来的,而是从 100+ 次真实请求中提炼、从反复踩坑中总结、从 Eval 验证中打磨出来的。
Skill 工程化不是”写完就结束”,而是”发布才开始”。
真正的价值在于后续的持续迭代:
每次发现问题 → 记录到 issues → 转化为 Eval → 修改 SKILL.md → 验证不退化。
这个闭环跑起来之后,你的 Skill 才会真正成为团队的”集体智慧沉淀”。
好的 Skill 不是写出来的,是”养”出来的。
文章来自:51CTO
