Skip to content

Documentation

CLI reference

Eight verbs, what each one does, and what each one refuses.

Every command takes --root <PATH> to work on a repository other than the one you are standing in. hi's own options go before the id, so nothing in your sentence is mistaken for one.

CommandWhat it does
hi <ID> <sentence>Capture. The family picks the file; a new family starts one.
hi checkStructural problems only. Exits 1 on a broken file, never on unfinished intent.
hi ls [--family F] [--retired]Read back what you have agreed to.
hi retire <ID> [reason]Change your mind. Moves a criterion and its cases into ## Retired.
hi issue <ID> [--create]Print a ticket, or open a real GitHub issue with gh.
hi export [FAMILY | file]JSON for an agent, intent prose included.
hi indexRewrite the feature list inside INTENT.md, and nothing else in it.
hi view [--out FILE]One self-contained HTML page of the whole thing.

Capture

The default verb. There is no subcommand, because the thing you do most should be the thing you type least.

sh
hi SEND-1 "I hit enter and the message shows up right away."
hi SEND-1.a "If I have no connection it queues and tells me."
hi --root ../other-repo CHECKOUT-1 "I can pay without making an account."

The sentence you type is the sentence that lands in the file, word for word. hi collapses runs of whitespace so the line stays one line, and does nothing else to your words.

ls

sh
hi ls
hi ls --family SEND
hi ls --retired

Reads the whole repository back as a tree, grouped by file, with cases nested under what they are cases of. Every sentence is printed exactly as it sits in the file: hi does not capitalize it, wrap it, or put anything in front of it. --family narrows to one family and --retired includes what you changed your mind about.

check

hi check reports everything it finds but exits 1 on exactly six structural problems:

  1. a duplicate id
  2. a case with no parent
  3. an id that collides with a retired one
  4. a line shaped like an id that is not a valid one
  5. a family a file never declared
  6. a criterion stranded outside every section, where nothing would read it

Everything else is a note: that never touches the exit code: an empty INTENT.md, a retirement with no reason. Adding a quality gate here would break the whole premise, because incomplete intent is the normal state of intent. --json emits the same report as JSON.

retire

sh
hi retire SEND-3 "we decided this was a different product"
# the reason is optional, and you can add it later:
hi retire SEND-3 "the real reason, written once you knew it"

The criterion and every case beneath it move together into ## Retired, which hi creates if the file has none. The reason is written under the block it explains, not appended to the end. Only the root of a retirement is asked for a reason: a case went with its parent and was never a separate decision.

issue

sh
hi issue SEND-1
hi issue SEND-1 --create --repo CorvidLabs/chat

Prints a ticket-shaped markdown block: the sentence as the heading, the feature's intent prose as context, and the cases as a nested list. A retired criterion cannot be turned into work.

export

sh
hi export              # the whole repository, including INTENT.md
hi export SEND         # one family
hi export hi/send.md   # one file

The payload an agent should read before writing a spec. Retired criteria are kept apart from the live ones, so nothing downstream writes a spec for something you dropped.

view

sh
hi view                 # writes intent.html at the repository root
hi view --out share.html

One file, no network, no build step. A sticky rail lists every feature with its count, search highlights what matched, j and k move a cursor, Enter copies a link, and every id is an anchor that lands on its criterion even when a filter would have hidden it. Retired criteria are on the page behind a toggle. Nothing anywhere says whether anything is built, so nobody can read it as a progress report.

index

Regenerates the feature list inside INTENT.md, between its markers, and touches nothing else in the file. The prose around it is yours.

Next

Bringing hi to a repo, including one an agent works in.