dpritchett
Joined 17 years ago
Joined 17 years ago
Usually I’m returning TSV as a default format and I add a `help-all` subcommand to list every available command at once when needed. Another thing that helps is adding just-in-time context-sensitive hints, such as: user has just run a list query with at least one result. Add a one-liner to the response explaining the command shape for getting the detail view of the first response.
In terms of skill files, I like to have my CLI generate them dynamically at runtime by walking their own current command tree and then feeding that through a text template.
Examples from a public project: https://github.com/radiusmethod/gitlab-kiosk/blob/main/skill...
I feel like most mainstream programming languages do this sort of work for their standard libraries and their official docs. Go and Python come to mind, but plenty others do this reasonably well to the point where one mostly doesn’t need to read the implementation code to effectively use the standard library itself.
Example: “skin” has multiple sounds to help decipher the word as spelled: “sss”, “sk”, “ih”, “nnn”, “iinn”.
Identifying some of those sounds in order helps a reader to sound out the word “skin”. After doing this a few times in a context that helps the reader confirm the meaning of the word they’ve just sounded out they’ll learn it outright.
From that point forward they can recognize “skin” on sight without requiring any context.
Independently wealthy folks can stay in the game longer without needing to extract a lot of cash compensation in the company’s early years.
I imagine this is a large part of why tooling and language wars are still compelling throughout decades of computing. No amount of lecturing on the joy of e.g. Rails vs. Node will really convince anyone to use an “outdated”, slow, dynamically typed language like Ruby in 2025 — even in places where it’d be a major win.
I imagine most of us here can agree that some elevate the craft and ritual to great effect while others avoid such high-minded conceits in favor of shipping whatever hits the expected target this week.
I’ve been both at different points in my career. Usually it’s a response to my environment.
Professionally: backend systems, cloud-native infrastructure, Kubernetes, CI/CD, and developer tooling. Personally: an application developer who enjoys building leverage.
I still enjoy dropping into unfamiliar codebases, building small studies in miniature, and leaving systems a little easier to work in than I found them.
Currently building:
Seevee: an agent-driven resume workbench that treats a career as a conversation instead of a document.
Timerbox: a cross-platform Gio desktop timer inspired by the workflow I've relied on for years.
Blog: dpritchett.net
GitHub: github.com/dpritchett
LinkedIn: linkedin.com/in/danielpritchett
Email: [email protected]