Skip to content

Tasks and documents ​

Commands that create project documents, keep numbers unique, record the progress of a task. Document layers are requirements, use-cases, features, tasks, reports, deliverables, decisions, proposals and data.

scaffold ​

Creates a document of a layer from the built-in skeleton and takes the next free number. Any field of the skeleton is accepted as a flag; --backlog (links the document to a backlog entry) and --domain (names the domain of a requirement) are two of them. It also runs git fetch --prune so that the number accounts for other branches. Create documents with this command and not by hand: the shape of a document is judged by the checks, and the skeleton already has it. The result is printed as JSON, with the path of the new file. When a similar requirement exists, a hint on standard error suggests editing it instead of creating a duplicate.

npx noomoo scaffold --layer <layer> --title <title> [--zone <zone>] [--coverage <ids>] [--features <ids>] [--dependsOn <ids>] [--tags <tags>] [--taskId <TASK-NNN>] [--docsDir <path>]
npx noomoo scaffold --layer data --kind contract --title <resource>
npx noomoo scaffold --layer architecture --slice <backend|frontend|api|logging|infra|metrics|db>

Flags: --layer names the layer, --title the title, --zone the zone of a task, --coverage the requirements a task covers, --features the features of a document, --dependsOn the predecessors of a task, --tags the tags, --taskId takes the number of a proposal or a decision from a task (only for those two layers), --docsDir points to a documents directory other than docs, --kind selects a contract for the data layer, the kind of a report or the kind of work of a task, --slice selects an architecture slice, which takes no number and needs no title.

Exit: 0 — the document was created, or the design of the task already exists and the command points to it; 1 — a conflict (the number or file is taken), invalid arguments, or architecture slices that are required and not ready.

raw ​

Keeps the ledger of raw materials, docs/raw-ledger.json: the path, content hash, capture date and origin of every file in the raw folder (raw.dir). The raw files stay out of git; the ledger is committed. sync records new files, follows renamed ones by their hash and takes the new hash of changed ones. capture saves the text on its input as a file of the inbox, word for word under a line naming its origin, and records it; the same text captured again creates nothing. Which intake proposals parsed a file is computed from their sources, not stored.

npx noomoo raw sync
npx noomoo raw capture --origin chat|interview|file --slug <slug>

Flags: --origin names where the text came from, --slug is the Latin part of the file name.

Exit: 0 — done; 2 — wrong arguments or empty text.

backlog-id ​

Prints the next free number of a backlog entry. The number accounts for entries on other branches and in neighbouring worktrees, which a scan of the current files does not see. The references to other branches are refreshed first; if that fails, the number is still printed and a warning says it may be stale.

npx noomoo backlog-id [--json]

Flags: --json prints {"id": "...", "stale": false}.

Exit: 0 — a number was printed.

contour-issue ​

Shows the text of an issue built from a contour backlog record CB-NNN that has the decision inbox. Tokens, values of secret-looking constants, absolute local paths, mail addresses and links other than GitHub and the noomoo site are replaced by markers of their kind before anything is shown. Without confirmation the command prints the cleaned title and body, the kinds of replacements, and a line saying that nothing was created; it does not call gh and opens no connection. With --yes (or a "yes" at the terminal question) it runs gh issue create as you and adds the line Issue: #N to the record; a record that already has the line is reported without a call. Without gh, or when it fails, the cleaned draft is saved to .noomoo/contour-issue-CB-NNN.md and the address of the new-issue form is printed.

npx noomoo contour-issue CB-NNN [--yes]

Flags: --yes — confirm creation without the terminal question.

Exit: 0 — the preview was printed, the issue was created, the record already had a number, or the draft was saved; 1 — the record is missing or is not in the inbox state; 2 — wrong arguments.

estimate ​

Asks a reviewing model, through the Claude CLI, to estimate a task in hours against the estimation rubric; the text of the task document and the rubric are passed to the model. It prints the result with its rationale, and records the hours in the - Оценка: line of the task document. Running it again replaces the line.

npx noomoo estimate <TASK-NNN>

Flags: none.

Exit: 0 — the estimate was made; 1 — the estimate failed; 2 — no task given.

close-axis ​

Marks the implementation of a task as done (✓ done (date)) in its task document. Without --apply it prints the plan and writes nothing. With --require-green-review a task without a green review artifact is not closed. With --in-branch the axis of the named task is closed before the merge, by the commit of the executor in the task's branch: the date is today and the review gate is always on. With --undo a task whose axis was closed too early is returned to work. With --apply the plan of the task moves to implementations/archive/, and --undo moves it back. Without a task, the command finds merged tasks through git and takes the date from the merge commit.

npx noomoo close-axis [<TASK-NNN>] [--apply] [--docs <path>] [--require-green-review]
npx noomoo close-axis <TASK-NNN> --in-branch [--apply] [--docs <path>]
npx noomoo close-axis <TASK-NNN> --undo [--apply] [--docs <path>]

Flags: --apply writes the change, --docs points to a documents directory other than docs, --require-green-review closes only tasks with a green review artifact, --in-branch closes before the merge, --undo reopens an axis closed too early.

Exit: 0 — done, including --undo when there is nothing to undo; 1 — git is not available, the review gate refused in --in-branch mode, or an undo was refused; 2 — wrong arguments in --in-branch or --undo mode.

reopen ​

Reopens an accepted task. A reason is required: a reopening without a named reason is a silent rollback of acceptance. Without --apply it prints what would change and writes nothing.

npx noomoo reopen <TASK-NNN> --reason "<reason>" [--docs <path>] [--apply]

Flags: --reason states why the task is reopened, --docs points to a documents directory other than docs, --apply writes the change.

Exit: 0 — shown or applied; 1 — refused, with the reason on standard error.

event ​

Records a phase mark of the task workflow: the start or the end of a phase, and for an end whether the phase was passed or blocked. The mark is written to the project event log and tells what the agent said about its own work, not what the machine observed. The command never stops the work: if there is nowhere to write, it still exits 0.

npx noomoo event phase --task <TASK-NNN> --phase <0|1|2|3|4|5|6|7|И|О> --mark start|end [--outcome ok|blocked]

Flags: --task names the task, --phase the phase, --mark whether the phase starts or ends, --outcome how the phase ended.

Exit: 0 — the mark was accepted; 2 — wrong arguments.