<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>go-subcommand on Arrans Technical blog</title><link>https://arran4.github.io/blog/tags/go-subcommand/</link><description>Recent content in go-subcommand on Arrans Technical blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>technicalblog123@arran4.com (Arran Ubels)</managingEditor><webMaster>technicalblog123@arran4.com (Arran Ubels)</webMaster><copyright>Arran Ubels. This work is licensed under a &lt;a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License&lt;/a>.</copyright><lastBuildDate>Thu, 06 Aug 2026 10:42:00 +0000</lastBuildDate><atom:link href="https://arran4.github.io/blog/tags/go-subcommand/index.xml" rel="self" type="application/rss+xml"/><item><title>Refactoring Go CLIs with go-subcommand and Agent Feedback Files</title><link>https://arran4.github.io/blog/post/2026/032-go-subcommand-infrastructure/</link><pubDate>Thu, 06 Aug 2026 10:42:00 +0000</pubDate><author>technicalblog123@arran4.com (Arran Ubels)</author><guid>https://arran4.github.io/blog/post/2026/032-go-subcommand-infrastructure/</guid><description>A Go CLI often begins with a small main.go, a few flags, and a switch statement. Then it grows.
Before long, cmd/ contains argument parsing, configuration loading, filesystem access, database calls, output formatting, and the actual application logic. Adding a command means copying another block of flag handling. Testing a command means pretending to invoke the entire executable. Changing the CLI framework risks touching the whole program.
[go-subcommand](https://github.com/arran4/go-subcommand) takes a different approach.</description></item></channel></rss>