← ClaudeAtlas

invoke-task-conventionslisted

Use when adding, renaming, or reviewing an invoke task in a tasks.py or tasks/ package — deciding what to call `inv <namespace>.<task>`, whether a name should be a verb or a noun, where a new task belongs, or whether an existing name is worth changing. Also use when a project's automation scripts, task runner or build commands have grown messy, inconsistent or hard to find, and you want to know where to start cleaning them up. Covers what a rename actually costs (task names are cited in docs, CI, Dockerfiles and other repos, and the Python function name changes with the CLI name), and the invoke wiring traps that silently publish tasks nobody declared. Applies across the personal repo family — power-user-linux-setup, repo-tasks, scaffoldapy-generated projects, the *-polite-mcp repos.
TheodoreAD/agent-skills · ★ 0 · AI & Automation · score 72
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