Commits
ai-usage, day 1: tidying the house before programming
First day of the project: documented agent skills, own fork renamed to ai-usage, a domain glossary, and a widget spec born from facts, not opinions.
Yesterday I started a new project: ai-usage, a small Go program that shows the quota consumption from my AI providers (Codex, MiniMax, and z.ai) directly in the terminal and, through its own plugin, in Term's status bar. If you read this journal, you already know the need that gave rise to it: usage windows that close halfway through a task and leave the agent stuck with a 429. Before explaining how I built it, this first day was about something else: tidying the house.
The house before the code
I spent the first part of the day setting up the working infrastructure: documenting the repository's agent skills (issue tracker on GitHub, triage labels, domain conventions) so that any AI session entering it could operate without asking questions. I also set the tracker's conventions in writing: how the map of unknowns should be organized and how open blockers should be counted. It may look like bureaucracy, but it prevents two sessions from different agents from choosing different tickets or linking themselves to an already closed blocker.
Initial decisions
The project does not start from scratch: it grows out of fuelcheck, a minimal Go project by emanuelarcos that I found while looking for a starting point. The decision was to make it its own private repository —fxescandell/ai-usage— while keeping the upstream fork as an untouched copy, with no work of our own: all our work lives in the new repository, and the rule is written down so that no future session writes to it by mistake. The CI, which was still building paths using the old name, was updated before the first push so that nothing would break.
Vocabulary first, code later
Before implementing anything, I established the domain vocabulary in a glossary: provider, usage window, consumption (always normalized to consumed, never to remaining), reset, traffic light, queue, pill. The code, tests, and specs will use these terms; this way, the domain is described consistently across every session.
A spec made of facts
The research into credentials and payloads (three closed issues) and a prototype using real data fed into the widget spec. The prototype established concrete facts: MiniMax's short window lasts 4 hours, not 5; z.ai does not return a weekly window for the plans tested; and the horizontal line with three providers is around 96 characters long. The chosen design variant: everything on a single line with the names aligned. Tomorrow: building it.