AgentSkillsCN

go-service-scaffolder

以 OpenTelemetry 可观测性、TLS 加密传输、生命周期管理、Dockerfile、GitHub Actions CI/CD 以及 golangci-lint 为基础,快速搭建一套生产就绪的 Go HTTP 服务。适用于新建或重新生成完整的 Go 服务骨架(项目布局、配置包、服务器包、CI 工作流以及容器构建文件)时使用。

SKILL.md
--- frontmatter
name: go-service-scaffolder
description: Scaffold a production-ready Go HTTP service with OpenTelemetry observability, TLS, lifecycle management, Dockerfile, GitHub Actions CI/CD, and golangci-lint. Use when creating or regenerating a full Go service skeleton (project layout, config package, server package, CI workflows, and container build files).

Go Service Scaffolder

Create a production-ready Go HTTP service skeleton and keep outputs consistent.

Workflow

  1. Ask for required inputs:
  • App name (kebab-case)
  • Go module path
  • GitHub owner/org
  • If the user asks for database support, ask which database to scaffold: Postgres, SQLite, or both.
  1. Derive:
  • CONFIG_ENV_VAR: uppercase app name without hyphens + _CONFIG
  • METRICS_PREFIX: lowercase app name without hyphens
  1. Generate the full project file tree and file contents using the canonical spec in references/go-service-scaffold-spec.md.

  2. Replace placeholders everywhere:

  • {{APP_NAME}}
  • {{MODULE_PATH}}
  • {{GITHUB_OWNER}}
  • {{CONFIG_ENV_VAR}}
  • {{METRICS_PREFIX}}

Database constraints when database support is requested:

  • Never use an ORM.
  • For Postgres, use PGX: github.com/jackc/pgx/v5.
  • For SQLite, use modernc.org/sqlite.
  1. Run:
  • go mod init <module-path> (only if go.mod does not already exist)
  • go mod tidy
  • go test ./...
  1. Initialize git only when needed:
  • Run git init only if the target directory is not already a git repository.

Reference

Use references/go-service-scaffold-spec.md as the single source of truth for:

  • Required directory structure
  • Exact file templates
  • Post-scaffold steps and architecture notes

Load only the sections needed for the current task instead of reading the entire reference at once.