mcpField
G
go-skills

go-skills

github.com/llama-farm开发83655 次安装21 周前更新
代码仓库

关于 go-skills

go-skills 为 LlamaFarm CLI 开发者提供 Go 编码指南,涵盖惯用、可维护和安全的实践,并附有核心工程主题的检查清单。

主要功能

  1. 01Go 错误处理与并发指南
  2. 02测试与安全检查清单
  3. 03惯用 Go 编码模式
  4. 04LlamaFarm CLI 代码约定

适用场景

  1. 01审查 LlamaFarm CLI 的 Go 代码变更
  2. 02统一错误处理与并发实践
  3. 03检查测试和安全做法

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/llama-farm/llamafarm --skill go-skills

安装后在 Claude Code 中输入/go-skills确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

concurrency.md
error-handling.md
patterns.md
security.md
testing.md

详细介绍

LlamaFarm CLI 的 Go 技能

适用于 LlamaFarm CLI 开发的通用 Go 最佳实践。这些指南可确保 Go 代码符合惯用写法、易于维护且安全。

技术栈

  • Go 1.24+
  • Cobra(CLI 框架)
  • Bubbletea(TUI 框架)
  • Lipgloss(终端样式)

目录结构

cli/
  cmd/           # Command implementations
    config/      # Configuration types and loading
    orchestrator/ # Service management
    utils/       # Shared utilities
    version/     # Version and upgrade handling
  internal/      # Internal packages
    tui/         # TUI components
    buildinfo/   # Build information

快速参考

错误处理
  • 始终为错误添加上下文:fmt.Errorf("operation failed: %w", err)
  • 对预期情况使用哨兵错误:var ErrNotFound = errors.New("not found")
  • 函数调用后立即检查错误
并发
  • 使用 sync.Mutex 保护共享状态
  • 读操作远多于写操作时,使用 sync.RWMutex
  • 使用通道在 goroutine 之间通信
  • 始终使用 defer 解锁互斥锁
测试
  • 使用表驱动测试实现全面覆盖
  • 使用接口以便模拟
  • 测试文件名:同一包中的 *_test.go
安全
  • 切勿记录凭据或令牌
  • 在调试日志中隐藏敏感标头
  • 验证所有外部输入
  • 使用 context.Context 取消操作

清单文件

文件描述
patterns.md符合 Go 惯用写法的模式
concurrency.mdGoroutine、通道、同步
error-handling.md错误包装、哨兵错误
testing.md表驱动测试、模拟
security.md输入验证、安全编码

值得牢记的 Go 谚语

  1. “不要通过共享内存来通信;要通过通信来共享内存”
  2. “错误是值”
  3. “少量复制胜过少量依赖”
  4. “清晰胜过巧妙”
  5. “设计架构,命名组件,记录细节”

此代码库中的常见模式

HTTP 客户端接口
type HTTPClient interface {
    Do(req *http.Request) (*http.Response, error)
}
使用互斥锁管理进程
type ProcessManager struct {
    mu        sync.RWMutex
    processes map[string]*ProcessInfo
}
Cobra 命令模式
var myCmd = &cobra.Command{
    Use:   "mycommand",
    Short: "Brief description",
    RunE: func(cmd *cobra.Command, args []string) error {
        // Implementation
        return nil
    },
}
Bubbletea 模型模式
type myModel struct {
    // State fields
}

func (m myModel) Init() tea.Cmd { return nil }
func (m myModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { /* ... */ }
func (m myModel) View() string { return "" }

评论

支持 Markdown