dirien/stop-building-portals-start-building-conversations/agent-ready-go
Claude Code and agent skill by dirien/stop-building-portals-start-building-conversations
- community
Checking that the SKILL.md file is still in the repository.
Prepares Go applications to work effectively with AI coding agents. Use when setting up a new Go project or retrofitting an existing one to ensure: structured JSON logging (slog/Zap/ZeroLog/Logrus), machine-readable command output, thorough golangci-lint configuration, non-interactive CLI design with --yes flags, structured error handling with meaningful exit codes, proper context.Context propagation, graceful shutdown, health check endpoints, and a standardized Makefile. Triggers when a user asks to make their Go app "agent-ready," "AI-friendly," wants to improve agent tooling/observability in a Go project, or needs to audit an existing Go project against agent-readiness best practices.
Install
npx vskill@latest install dirien/stop-building-portals-start-building-conversations/agent-ready-goSKILL.md
Agent-Ready Go
Make Go applications work effectively with AI coding agents by ensuring all tooling produces machine-readable output, errors are structured, and commands run non-interactively by default.
Workflow
Making a Go app agent-ready involves these steps:
- Audit — identify gaps against the agent-readiness checklist
- Structured logging — add/configure slog, Zap, ZeroLog, or Logrus with JSON output
- Machine-readable output — ensure all commands can emit JSON
- Linting — add
.golangci.ymlwith thorough config - Testing — ensure
go test -race -count=1 -timeout=5mwith coverage thresholds - Error handling — structured errors, meaningful exit codes
- Non-interactive design —
--yes/-yflags, env vars over prompts - Makefile — standardize
build,test,lint,covertargets
For greenfield projects, apply all steps. For existing projects, run the audit first and address only what's missing.
Step 1: Audit
Run this checklist against the project. Address each ❌:
- [ ] Structured logger configured (slog / Zap / ZeroLog / Logrus)
- [ ] Logger outputs JSON when not a TTY or when
LOG_FORMAT=json - [ ] CLI commands support
--jsonor--output jsonflag - [ ]
.golangci.ymlexists with a thorough linter set - [ ]
go test -racepasses - [ ] Code coverage ≥ 80% enforced
- [ ]
go vet ./...passes clean - [ ] All errors wrapped with context (
fmt.Errorf("...: %w", err)) - [ ] Exit codes: 0 = success, non-zero = failure (no panics in CLI entry)
- [ ]
context.Contextthreaded through all I/O-bound functions - [ ] Interactive prompts have
--yes/-ybypass flag - [ ]
Makefilewithbuild,test,lint,cover,citargets - [ ] Graceful shutdown on SIGTERM/SIGINT (HTTP services)
- [ ] Health check endpoints (
/healthz,/readyz) for HTTP services - [ ]
govulncheck ./...passes clean - [ ]
NO_COLORrespected; no ANSI codes in non-TTY output - [ ] Config loaded from env vars with validation at startup
Step 2: Structured Logging
See references/logging.md for setup patterns for slog, Zap, ZeroLog, and Logrus.
Key requirements:
- Use JSON format when
!isatty(os.Stdout.Fd())orLOG_FORMAT=json - Include fields:
level,ts,msg, plus context fields - Never use
fmt.Printlnfor operational log output - Log to stderr; keep stdout clean for machine-readable data
Step 3: Machine-Readable Output
Agents parse stdout to validate results. Every non-trivial command must support JSON output.
Rule: structured data → stdout; progress/human messages → stderr.
Step 4: Linting
Copy assets/.golangci.yml to the project root, then:
Requires golangci-lint v1.59+ (v1.x series).
See references/testing.md for linter explanations and tuning guidance.
Step 5: Testing
See references/testing.md for full testing setup.
Enforce minimum coverage in CI:
Step 6: Error Handling
See references/error-handling.md for structured error patterns and exit code conventions.
Quick rules:
- Always wrap:
fmt.Errorf("loading config: %w", err) - CLI
main()catches all errors and exits with appropriate code - Never call
os.Exitdeep in business logic — return errors up - Never
panicoutside ofinit()/ package-level setup
Step 7: Non-Interactive Design
See references/non-interactive.md for patterns.
Any prompt that blocks agent execution must have a --yes/-y bypass:
Step 8: Makefile
Copy assets/Makefile to the project root. Adjust BINARY_NAME and MAIN_PKG for the project.
Standard targets: make build, make test, make lint, make cover, make ci (runs full pipeline).
Resources
| File | Contents | |
|---|---|---|
| references/logging.md | slog, Zap, ZeroLog, Logrus JSON setup | |
| references/testing.md | Race detector, coverage, golangci-lint tuning | |
| references/error-handling.md | Structured errors, exit codes, context | |
| references/non-interactive.md | --yes flags, env vars, stdin detection | |
| references/services.md | HTTP graceful shutdown, health checks, OTel, request ID | |
| references/config.md | Configuration management, env var parsing, validation | |
| assets/.golangci.yml | Production-ready linter config | |
| assets/Makefile | Standard build/test/lint/cover targets |
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingslides/.agents/skills/agent-ready-go/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/dirien/stop-building-portals-start-building-conversations/agent-ready-go)