From 69afea8fbe4b74c08306aef9e2f0c93635253def Mon Sep 17 00:00:00 2001 From: Codechu Date: Sat, 29 Aug 2026 18:23:18 +0300 Subject: [PATCH] Say what the bare command should answer Both tools met a reader who typed their name with the argument parser's error on stderr and exit 2, naming an internal dest as the missing thing. That is the first contact a stranger has, and it was a failure that pointed at a variable name. --- project-type/TOOL.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/project-type/TOOL.md b/project-type/TOOL.md index f3c457f..b24f78f 100644 --- a/project-type/TOOL.md +++ b/project-type/TOOL.md @@ -125,6 +125,15 @@ contains and hold the shape with a test across several version strings. prints it, the others do too. *Incident: the banner appeared on `run` and not on `qualify`, which takes just as long.* +**The bare command introduces the tool.** Typing the name with no +arguments is a reader asking what this is, not a mistake. Answer with the +mark and the command list on **stdout**, exit **0**. A wrong command or a +missing flag stays an error on stderr with a non-zero exit. *Incident: the +bare command answered with the argument parser's two-line error and exit +2, naming `cmd` — an internal variable — as the thing that was missing; +the tool's first contact with a stranger was a failure, and the one place +it named an implementation detail at them.* + **One entry point, named after the tool.** `tool `, not `python -m package.module`. *Incident: a line published as a tool required the reader to know four separate module paths, none of them discoverable