golang

  • 13th November 2026

apic: a command line for any HTTP API, without writing a CLI per service

apic turns any HTTP API into a command line tool: it reads the API definition (OpenAPI / Swagger, or a few lines of YAML) and builds one command per endpoint, with parameters as options and shell completion.

  • Definitions become commands: a service with an OpenAPI document is one site add away; for an internal service without one, list its endpoints in a few lines of YAML. apic link also gives a site its own command, such as petctl.
  • Environments and authentication: separate base URLs and credentials for dev and prod; bearer, basic, apikey, log-in-for-a-token and token-from-a-command auth; writes to production need --yes.
  • Picking, paging, formatting: --pick takes fields from any level and renames them, --all-pages walks and merges the pages, -o table / yaml makes the result readable.
  • For people and AI agents: stdout carries only the response body, exit codes have fixed meanings, and apic skill writes a SKILL.md for agents. Secrets are masked in -v, --dry-run and error messages.
…
Read more →
  • 27th October 2026

gofer: run Claude Code and Codex as reviewable jobs on your own machines

With three or four Claude Code and Codex sessions open across two computers and a container, I kept losing track of simple things. Which session is waiting for me? What did the agent I asked to fix a test change, and did it run the tests? The job I handed out last night: did it finish, get stuck, or crash an hour in? And when I’m away from my desk, can I check from my phone and approve something?

gofer is the tool I wrote for that. In one line: your agents, your machines, one control plane. It runs Claude Code, Codex, ACP agents or plain commands as tracked, reviewable jobs on every machine you own, with no cloud in between and no inbound ports to open on the workers.

Open a job waiting for review, read the diff, accept and merge it

…
Read more →
  • 26th October 2026

14 turns, 3 context resets, and the turn-1 constraint still holds: long sessions in suga

Keep an agent in one session long enough and three things go wrong. The context fills up and gets compacted, and the part that gets dropped is the constraint you gave it in the first turn. Every request carries a few thousand tokens of fixed overhead, so long sessions get expensive. And when something breaks, there is no record of what the agent did.

suga is a personal coding agent I write in Go. The goal is a session that can stay with me for a full working day. This post covers the trade-offs it makes for long sessions, which of them are backed by data and which experiments failed, and how it works with gofer, my job platform. suga itself is built on gofer, one batch of agent jobs at a time.

The current version is v0.49. It is v0, so minor releases may break things. It is MIT licensed. What follows is an introduction to suga.

suga: long agent sessions that keep the turn-1 constraint

…
Read more →
  • 28th September 2026

miglite v0.8.0: ship migrations inside the binary

The last post about miglite covered v0.4.0 in June. In the three months since then, it reached v0.8.0 through four releases and 69 commits (v0.4.0..v0.8.0). The main problem I wanted to solve was carrying a migrations/ directory alongside the binary. A few flags that were accepted but did nothing also needed fixing.

miglite v0.8.0: embed migrations in the binary

…
Read more →
  • 4th July 2026

cliui: terminal UI helpers for Go CLI apps

Many CLI tools start with a parser, a few commands, and some fmt.Println calls. That works until the tool needs readable config output, clear errors, prompts, progress bars, and logs that do not break in CI.

github.com/gookit/cliui is for that middle ground: not a full-screen TUI, but more than loose terminal prints. It splits the common pieces into three packages: show for structured output, interact for prompts and selections, and progress for long-running work.

cliui poster

…
Read more →
  • 24th June 2026

rotatefile: log rotation, compression, and cleanup for Go

Go’s standard logging packages can write to an io.Writer, but they do not decide when a log file should rotate, how many old files to keep, or when disk usage should be capped. Once a service writes logs to local files, those details become part of the system.

github.com/gookit/rotatefile stays deliberately small: it provides an io.Writer with file rotation, gzip compression, and cleanup. You can keep using log/slog, log, zap, or gookit/slog; rotatefile only handles the file lifecycle.

rotatefile poster

…
Read more →
  • 22nd June 2026

GCli v3.8: shared options, doc generation, and safer binding

GCli v3.8 is out. Since v3.5, the project has added friendlier argument parsing, richer struct binding, type-safe generic flag helpers, inherited command options, and built-in markdown/man-page generation.

If you maintain a nested CLI rather than a small command wrapper, this release is worth a closer look.

GCli v3.8 release poster

…
Read more →
  • 18th June 2026

miglite: raw SQL migrations for Go projects

Database migration tools usually pick one of two lanes. Some describe schema changes in their own DSL and generate SQL for you. Others take the SQL you already wrote, run it in order, and record what has been applied.

github.com/gookit/miglite stays in the second lane. It does not replace SQL, and the library does not pull database drivers into your dependency tree by default. It discovers migration files, parses UP/DOWN sections, runs SQL in a transaction, and records the migration status in the database.

miglite poster

…
Read more →
  • 6th June 2026

GCli v3.5 release: shell completion, command middleware, grouped help and more

GCli is a command-line application and tool library for Go. This post covers the main changes from v3.3.1 to the recently released v3.5, including the v3.4 cycle.

These updates focus on developer experience and underlying stability. If you write CLI tools in Go, a few of these features are worth upgrading for.

…
Read more →
  • 24th January 2024

gookit goutil release v0.6.15

gookit/goutil 💪 Go 常用功能的扩展工具库。包含:数字,字符串,slice/数组,Map,结构体,反射,文本,文件,错误,时间日期,测试,CLI,命令运行,系统信息,格式化,常用信息获取等等。

…
Read more →
  • 28th June 2023

gookit/goutil - released v0.6.10, an extension library of common Go features

gookit/goutil An extended library of Go’s common functionality. Contains: number, string, slice/array, Map, struct, reflection, text, file, error, time and date, test, CLI, command run, system information, formatting, common information acquisition, etc.

…
Read more →
  • 19th June 2023

gookit/slog - release v0.5.2, Lightweight, configurable, extensible logging library

gookit/slog 📑 Lightweight, configurable, extensible logging library written in Go. Support multi level, multi outputs and built-in multi file logger, buffers, clean, rotate-file handling.

…
Read more →
  • 9th July 2022

cflag - wraps and extends Go flag build pertty CLI command

cflag - wraps and extends Go flag build pertty CLI command

…
Read more →
  • 6th July 2022

gitw - Git 命令包装器,生成 git 变更记录日志

gitw - Git 命令包装器,生成 git 变更记录日志,获取 repo 信息和一些 git 命令工具。

  • 包装本地 git 命令
  • 快速运行 git 命令
  • 快速查询存储库信息
    • 获取 remote, branch 详细信息
  • 通过 git log 快速生成版本变更日志
    • 允许自定义生成配置
    • 允许自定义生成过滤、样式等
    • 可以直接在 GitHub Actions 中使用
…
Read more →
  • 16th June 2022

slog - Lightweight, configurable, extensible Go logging library

Read more →