0. 为什么你需要“Skill”?因为 AI 不能靠猜!

你有没有遇到过这种情况:

“Trae,帮我写个高性能的 Go HTTP 服务。”
→ 它返回一个 net/http 的 Hello World,连中间件都没加。

问题在哪?AI 不知道你的“上下文标准”。你心目中的“高性能”可能是带连接池、pprof、结构化日志、优雅关闭的完整骨架,但 AI 默认只给最简答案。

这时候,Trae Skill 就派上用场了——它让你把“专业经验”封装成可复用的技能包,让 AI 按你的规范输出代码!

在这里插入图片描述


1. 什么是 Trae Skill?

简单说,Skill 是一段预定义的指令 + 示例 + 约束,告诉 Trae:

  • 在什么场景下触发
  • 应该遵循什么规范
  • 输出什么格式的代码

你可以把它理解为:

  • 给 AI 的“编程风格指南”
  • 团队的“代码模板自动化器”
  • 你个人的“最佳实践知识库”

2. 实战:创建一个 “Go 微服务骨架” Skill

场景

你经常要新建 Go 微服务项目,每次都得手动写:

  • 带 Gin 的路由
  • zap 日志
  • pprof 监控
  • 优雅关闭
  • 配置加载(Viper)

太重复了!不如教 Trae 一次,以后一句话生成。

步骤 1:创建skill

最简单的方式就是直接跟trae对话,让AI创建一个skill

在这里插入图片描述

也可以手动创建skill,文件位置在./trea/skills下面

步骤 2:填写 Skill 元信息

Name: go-microservice-skeleton
Trigger: "create a Go microservice with Gin, zap, pprof, and graceful shutdown"
Description: 生成符合我团队规范的 Go 微服务基础骨架

步骤 3:编写 Skill Prompt

你是一个资深 Go 后端工程师,请根据用户需求生成一个生产级微服务骨架,要求:

1. 使用 Gin 作为 Web 框架
2. 日志使用 uber/zap,带 JSON 格式和 level 控制
3. 自动开启 net/http/pprof(仅在 debug 模式)
4. 支持通过 config.yaml 加载配置(用 Viper)
5. 实现优雅关闭(监听 SIGINT/SIGTERM)
6. 项目结构清晰:cmd/, internal/, pkg/, config/

请输出完整的 main.go 和目录结构说明。

步骤 4:添加示例(可选但强烈推荐)

提供一个你认可的 main.go 片段作为参考,帮助 Trae 理解你的代码风格。

步骤 5:保存并启用


3. 使用 Skill:一句话生成专业代码

现在,在聊天窗口输入:

“用 go-microservice-skeleton 创建一个用户服务”

Trae 会立刻返回:

// main.go
package main

import (
    "context"
    "log"
    "net/http"
    _ "net/http/pprof"
    "os"
    "os/signal"
    "syscall"
    "time"

    "github.com/gin-gonic/gin"
    "go.uber.org/zap"
    "github.com/spf13/viper"
)

func main() {
    // 加载配置
    viper.SetConfigName("config")
    viper.SetConfigType("yaml")
    viper.AddConfigPath(".")
    if err := viper.ReadInConfig(); err != nil {
        log.Fatal("config error:", err)
    }

    // 初始化日志
    logger, _ := zap.NewProduction()
    defer logger.Sync()

    // Gin
    r := gin.Default()
    r.GET("/health", func(c *gin.Context) {
        c.JSON(200, gin.H{"status": "ok"})
    })

    // 启动 HTTP 服务
    srv := &http.Server{
        Addr:    ":8080",
        Handler: r,
    }

    // 启动 pprof(仅调试)
    if viper.GetBool("debug") {
        go func() {
            http.ListenAndServe("localhost:6060", nil)
        }()
    }

    // 优雅关闭
    go func() {
        if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
            logger.Fatal("server failed", zap.Error(err))
        }
    }()

    quit := make(chan os.Signal, 1)
    signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
    <-quit
    logger.Info("shutting down server...")

    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    defer cancel()
    if err := srv.Shutdown(ctx); err != nil {
        logger.Fatal("server forced to shutdown", zap.Error(err))
    }
}

✅ 完全符合你的规范!
✅ 无需复制粘贴旧项目
✅ 还自动处理了 pprof 的开关逻辑


4. Skill 的高级玩法

✅ 团队共享

  • 把 Skill 导出为 JSON,团队成员一键导入
  • 统一代码风格,新人上手快

✅ 多语言支持

  • 不只是 Go!你也可以创建:
    • react-ts-component:生成带 Storybook 和测试的 TSX 组件
    • terraform-aliyun-ecs:根据你的阿里云账号习惯生成 ECS 模板

✅ 动态参数

未来 Trae 可能支持:

create user-service with port=9090, db=mysql

Skill 自动替换模板中的变量!


5. 为什么 Trae Skill 比普通 prompt 更强?

对比项 普通 Prompt Trae Skill
复用性 每次都要重写 一次定义,永久复用
触发精准度 容易误触发 通过关键词/正则精确匹配
团队协作 无法共享 可导出/导入,团队标准化
上下文隔离 容易被其他对话干扰 独立命名空间,干净可靠

6. 小结:把经验变成“可执行的知识”

Trae Skill 的本质,是将你多年积累的工程经验,转化为 AI 可执行的指令。它不是取代你,而是让你从“重复劳动”中解放出来,专注真正有创造力的部分。

就像你不会每次煮咖啡都从种咖啡豆开始,
也不该每次写服务都从 import "fmt" 开始。


Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐