invoke-task-conventionslisted
Install: claude install-skill TheodoreAD/agent-skills
# Naming and wiring invoke tasks
`inv <namespace>.<task>` should read as an imperative command. The namespace is the subject, the
task is the action: `inv apt.install-base` is "apt: install base", `inv zsh.fix-history` is "zsh:
fix history".
This is the mainstream CLI shape, not a local invention — `gh pr create`, `docker image prune`,
`kubectl config set-context` are all `<subject> <verb>`, and Azure CLI mandates it outright
("Commands must follow a `[noun] [noun] [verb]` pattern"). See
[`references/rationale.md`](references/rationale.md) for the prior art and the evidence behind each
rule below.
The examples and measurements are from this author's own repo family — `power-user-linux-setup`,
`repo-tasks`, `scaffoldapy`-generated projects — because that is where the rules were tried. The
rules are `invoke`'s and hold in any `tasks.py`; substitute your own repos wherever one of those is
named.
## The three rules
**1. Task names lead with a verb.** Name the action, not the thing produced — `apt.install-base`,
not `apt.base`; `ai.install-skills`, not `ai.skills`. Azure CLI states the same rule as "all command
names should contain a verb."
Multi-word task names put the verb first (`zsh.configure-omz`, `ide.configure-pycharm`), with one
exception: keep object-first when a pair reads as a family in `inv --list` and that adjacency is the
point — `format-check`/`format-apply`, `lint-check`/`lint-apply`. Judgment call per case, not a
second rule.
**2. Community conventions beat