Skip to content

Instantly share code, notes, and snippets.

View tinnet's full-sized avatar
🐼

Martin Contento tinnet

🐼
View GitHub Profile
@tinnet
tinnet / cli-template-spec.md
Last active February 9, 2026 00:24
CLI Template Spec — Language-Agnostic

CLI Template Spec — Language-Agnostic

Feed this document to a coding agent along with the target language (e.g., "Rust", "Go", "Zig"). The agent should produce a GitHub template repository equivalent to java-native-cli-template, adapted idiomatically for the chosen language.

Note to the implementing agent: This spec was written in February 2026. The language-specific suggestions (libraries, tools, versions) reflect what was current at that time. Before blindly following them, verify that these are still the best choices. Check for newer/better alternatives, deprecated tools, or ecosystem shifts. The requirements (what the template must do) are fixed — the implementation choices (which libraries and tools to use) should reflect the best option available when you run.

Goal

A GitHub template repo that lets me click "Use this template", clone, and immediately start building a CLI tool. All the ceremony — formatting, linting, testing, CI

Keybase proof

I hereby claim:

  • I am tinnet on github.
  • I am tinnet (https://keybase.io/tinnet) on keybase.
  • I have a public key ASAN42X0kedm3KOCBBxIJ0jCl-CoowPgOKr3LkvJik91Fwo

To claim this, I am signing this object:

instance = {'_id': 'Eom0boo1iroo'}
if any(map(lambda hit: hit['_id'] != instance['_id'], hits)):
yield ValidationError(
'unique property {} conflicts with existing object: {}'.format(_ref, hit)
)
# vs.
for hit in hits:
blog.fefe.de
Verifying that +tinnet is my blockchain ID. https://onename.com/tinnet
VAGRANTFILE_API_VERSION = "2"
def make_group_hash(hostname, groups)
Hash[groups.collect { |group| [group, hostname] }]
end
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "debian/wheezy64"
config.vm.box_url = "https://github.com/jose-lpa/packer-debian_7.6.0/releases/download/1.0/packer_virtualbox-iso_virtualbox.box"
{
init: function(elevators, floors) {
var rotator = 0; // roundrobin var
var minLoad = 0.0; // 0.6 for N moves challenge
var upWaiting = [];
var downWaiting = [];
var randomInt = function (min, max) {
This just got linked to by the Y combinator news account, without proper context,
so a brief introduction: A month ago (end of May / early June 2014) I had a
Twitter conversation with a bunch of acquaintances. One tweet in the middle
of that thread, with obligatory hyperbole, was me saying that I think VR is
bad news.
Well, that part of the thread (but not the rest that provides context) recently
got retweeted, and then someone asked me if I could explain what I mean by that,
and because Twitter is a great platform for delivering 140 character slogans and
not so great for lengthy explanations, I wrote this. So, obligatory disclaimer:
### Keybase proof
I hereby claim:
* I am tinnet on github.
* I am tinnet (https://keybase.io/tinnet) on keybase.
* I have a public key whose fingerprint is 4171 0F75 4E9F 2AA6 8AEE FAF8 8B4F 1E7F BAF4 AB2F
To claim this, I am signing this object: