从0到1,怎么编写一个skill
2026/6/30 1:58:43 网站建设 项目流程

当使用AI帮助编辑代码的时候,AI编写永远达不到预期,以及和自己想法不一致,这个时候就要根据 Go 生态编写 Skill ,所以我把编写 Skill 的流程重构为“四步法”


第一步:挖掘“Go 项目特有的痛点”(定义边界)

作为 Go 程序员,你要写的 Skill 不是为了“写诗”,而是为了约束 AI 别写出烂代码。所以开工前,先问自己 3 个问题:

  1. AI 最容易在 Go 里犯什么错?(答案:吞掉err、滥用interface{}、不处理 Context 超时、在循环里拼接字符串)

  2. 项目的“死穴”在哪?(比如你们的car项目,死穴是订单状态机和 Nacos 服务发现)

  3. 团队 Code Review 最常骂哪句话?(比如“不准在Common里写业务代码”)

对应你的code-guard:你写的“不吞错误”、“订单状态机不准跳”、“跨服务必须 gRPC”,正是你们团队 Code Review 时的核心痛点。把 CR 清单变成 Skill 规则,就是 Go 程序员写 Skill 的第一性原理。


第二步:搭建符合 Go 工程美学的 Skill 目录

Go 讲究“简洁”和“组合”。Skill 的目录同样要遵循职责单一原则。

不要把所有东西塞进一个SKILL.md(否则就像main.go里写一万行)。按照渐进式披露,标准骨架应该是:

text

my-go-skill/ # 你的技能包 ├── SKILL.md # ⭐ 核心:只放"行为指令"和"铁律"(像 Go 的接口定义) ├── references/ # 📚 按需加载的"百科全书"(像 Go 的 pkg 文档) │ ├── project-arch.md # 存放你的微服务架构图、目录树 │ └── proto-definitions.md # 存放 proto 依赖关系 └── scripts/ # 🛠️ 可执行脚本(像 Go 的 cmd 工具) ├── lint-check.sh # 一键跑 go vet + gofmt └── proto-gen.sh # 一键生成 pb.go

第三步:编写SKILL.md—— 套用“Go 三板斧”模板

把你刚才写的内容抽象一下,以后写任何 Go Skill 都可以直接套用这个Go 专属模板

1. 元数据(YAML)—— 定好触发“路由”

yaml

--- name: 技能英文名(小写+连字符) description: 包含【技术栈】+【触发词】+【产出物】。例如:"约束 Go+grpc 项目代码规范,用户说写代码/修bug时触发" allowed-tools: Read, Grep, Bash(go:*, gofmt:*)
2. 核心铁律(把Effective Go翻译成 AI 指令)

不要写“要优雅”,要写“绝对禁止”。针对 Go 的写法:

Go 常见烂代码Skill 里的铁律写法(直接复制进你的规则)
吞掉错误data, _ := db.Find(...)“出现_ =或裸_接收 err,直接拒绝执行”
循环内拼接字符串for { str += item }“循环内拼接字符串必须用strings.Builder
不传递 Contextdb.Query(sql)“所有 DB/Redis/gRPC 调用必须带ctx context.Context参数”
魔法常量if status == 2“业务状态码必须使用constiota,不准写数字字面量”
返回裸 errorreturn errors.New("fail")“必须用fmt.Errorf("xxx: %w", err)包裹上下文”
3. 自动化兜底(告诉 AI 自检命令)

Go 有极强的官方工具链,必须让 AI 在写完代码后自动(或提醒)跑一遍:

“代码交付前,AI 必须按顺序执行以下命令进行自检,若未通过则禁止交付:

  1. go vet ./...(静态检查)

  2. gofmt -l .(格式化检查)

  3. go mod tidy(依赖清理)”


第四步:把“架构细节”扔进references/(防止 AI 上下文爆炸)

你在code-guard里画的那张漂亮的 ASCII 架构图car/目录树,正是 AI 最容易“看了就忘”或“占满脑子”的部分。

Go 程序员的处理方式:把它们拆出去。
SKILL.md里只留一句引用:

“当需要确认文件存放路径或服务间调用关系时,请 AI 主动读取references/project-struct.md中的架构图和目录树。”

这样,AI 只有在准备新建文件或跨服务调用时,才会去翻目录,平时写业务逻辑时根本不会加载这部分无用 Token。

Skill 还可以再进化一步——注入“生成代码”的能力

你可以专门写一个 Skill 叫go-proto-generator,它的scripts/下放一个gen.sh
当用户说“根据这个表结构生成 gRPC 服务”时,AI 不是直接生成乱码,而是执行你的脚本,并遵循SKILL.md里的规则:

  • order.proto必须在Common/proto/order/

  • 生成的pb.go必须使用//go:generate protoc ...注解

  • service.go必须实现UnimplementedOrderServer


📝 给你的“从 0 到 1”速查清单(下次直接用)

步骤Go 程序员专属动作
0. 找痛点翻最近的 Git 提交记录,看 CR 时改得最多的是什么
1. 建目录mkdir skill-name && cd $_ && mkdir references scripts
2. 写 SKILL.md只写:触发词 + 绝对禁止列表 + 自检命令(go vet
3. 移文档架构图、Nacos配置、表结构 ER 图,扔进references/
4. 写脚本gofmtgo modprotoc命令写成.sh文件
5. 压测故意给 AI 一个带_ = err的烂代码,看它会不会拒绝执行

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询