本技能用于编写和审查 Go 命令行工具,目标是正确生成、监督和关闭其他进程或并发工作负载,适用于守护进程、进程监督器、任务/Worker 运行器、部署或迁移工具、需要 shell 调用的测试夹具,以及需要在编排器要求时干净退出的程序。面向 Unix 类系统(Linux、macOS)上的 Go 1.22+,部分规则注明 Windows 差异;预设读者已掌握 Go,只纠正该领域易出错的特定默认行为。
主要能力按七类组织:信号与优雅关闭(sig)、子进程(exec)、并发与工作负载(work)、context 传递(ctx)、错误与退出码(err)、CLI 框架与标志(cli)、进程状态与监督(state)。涉及的具体要点包括:用 signal.NotifyContext 监听 SIGINT/SIGTERM 并支持二次信号强制退出;使用 exec.CommandContext 配合 cmd.Cancel/cmd.WaitDelay 避免直接 SIGKILL 子进程;通过 Setpgid 与 kill(-pgid) 处理孙进程与进程组;用 cmd.Output() 安全捕获输出,避免在 Wait() 后读管道死锁;用 errgroup.WithContext 与 SetLimit(n) 做有界并发,防止 PID/文件描述符耗尽;context 作为显式参数而非结构体字段,并对每个派生 context 调用 defer cancel();用 select 监听 ticker 与 ctx.Done() 而非 time.Sleep;采用 main→run() error→os.Exit(1) 结构以保留 defer 清理;用 proc.Signal(syscall.Signal(0)) 探测存活;用 os.OpenFile(O_CREATE|O_EXCL) 原子创建 PID 文件,并对每个子进程调用 cmd.Wait() 避免僵尸进程。
使用方式:先判断任务所属类别,再阅读 references/ 下对应的规则文件(每条规则独立、指出所纠正的错误默认行为),应用模式并参照规则中的 Reference 链接。规则之间交叉链接,任务跨类别时可顺链接阅读。扩展技能时复制 assets/templates/_template.md,先写 WHY,再给一个使用真实命名的规范示例。
限制:仅针对上述领域特定默认行为,不教授 Go 基础;平台假设为 Unix 类系统,Windows 差异仅在少数规则中提示;规则引用的权威来源为标准库文档、官方 Go 博客与 cobra 文档。安装命令、版本号与价格信息暂未提供。