neo ticket
Manage team tickets.
A ticket is team-scoped planning work, addressed KEY-N, and a team’s board is its tickets. The repo-scoped twin is neo issue, which works a repository’s intake (owner/repo#N); see neo docs tickets-and-issues.
neo ticket [OPTIONS] <COMMAND>neo ticket create
Section titled “neo ticket create”Create a ticket on a team’s board.
Fields come from flags, an issue document (--edit, --from-file), or both — flags win.
neo ticket create [OPTIONS] --team <TEAM>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--team |
<TEAM> |
yes | Team key (ENG or <workspace>/ENG) whose board the ticket lands on. A ticket has no repo, so this is its only scope |
|||
--title |
<TITLE> |
no | Title, required unless --edit or --from-file supplies it. It is the whole of what a list, a search result or a link preview shows; the detail belongs in --body |
|||
--body |
<BODY> |
no | Markdown description. Mutually exclusive with --body-file |
|||
--body-file |
<PATH> |
no | Read the markdown description from a file instead of a shell argument — - reads stdin. Avoids shell-quoting long bodies. Mutually exclusive with --body |
|||
--priority |
<PRIORITY> |
no | none, urgent, high, medium, low |
Priority to file it at. Left to the server’s default when omitted | ||
--status |
<STATUS> |
no | backlog, todo, in_progress |
Initial status. Omitted: backlog for a ticket (the board’s intake column), todo for a repo issue |
||
--label |
<NAME> |
no | Label to attach, by name; repeatable. Resolved against the repo’s or team’s labels (labels lists them) before anything is created, so a typo files nothing. Replaces the document’s labels when given |
|||
--assignee |
<HANDLE> |
no | Handle to assign (alice or @alice; @me is you); repeatable. Replaces the document’s assignees when given |
|||
--edit, -e |
no | Write it in $VISUAL / $EDITOR (else vi): opens an issue document — a template on create, the current values on edit — and applies what you save. Saving an empty title on create aborts with nothing sent; edit sends only what changed. Flags given beside it win over what you save |
||||
--from-file |
<PATH> |
no | Read an issue document (frontmatter, then the markdown body) from PATH; - reads stdin. The non-interactive twin of --edit, for an editor plugin piping a buffer in. Keys the document leaves out keep their current value on edit; flags given beside it win |
|||
--tracks |
<OWNER/REPO#N> |
no | Repo-bound issue this ticket tracks, as acme/api#1526 or api#1526 (owner defaults to your handle) — accepting a triage item. The ticket and the tracks link are written in one transaction; the issue stays open |
|||
--json |
no | Print the created ticket as JSON |
neo ticket triage
Section titled “neo ticket triage”List a team’s triage: open repo issues no ticket tracks yet.
Covers the repositories the team holds a grant on, filtered to the ones you can read. Accept an item with neo ticket create --team KEY --tracks owner/repo#N, link it to an existing ticket with neo ticket track, or close it with neo issue close.
neo ticket triage [OPTIONS] --team <TEAM>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--team |
<TEAM> |
yes | Team key (ENG or <workspace>/ENG) whose triage to list |
|||
--json |
no | Print every page, merged, as one JSON response |
neo ticket list
Section titled “neo ticket list”List a team’s board.
A board holds the team’s tickets and nothing else, so every row renders KEY-N. A repo-bound issue lives on its repo’s issue list (neo issue list <owner>/<repo>) even when it carries the same team. Every filter is applied by the server, and every page is followed.
neo ticket list [OPTIONS] --team <TEAM>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--team |
<TEAM> |
yes | Team key (ENG or <workspace>/ENG) whose board to list |
|||
--state |
<STATE> |
no | open |
open, closed, all, backlog, todo, in_progress, in_review, done, cancelled, duplicate |
open (non-terminal), closed (done/cancelled/duplicate), all, or one exact status |
|
--search |
<TEXT> |
no | Only issues whose title, description or number contain TEXT (case-insensitive, matched by the server) | |||
--label |
<NAME> |
no | Only issues carrying this label, by name | |||
--assignee |
<HANDLE> |
no | Only issues assigned to HANDLE; @me is you |
|||
--priority |
<PRIORITY> |
no | none, urgent, high, medium, low |
Only issues at this priority | ||
--limit |
<N> |
no | Stop after N issues. Omitted: every page | |||
--json |
no | Print {issues} as JSON, every fetched page merged |
neo ticket mine
Section titled “neo ticket mine”List the tickets and issues assigned to you, across every team and repo.
--created lists the ones you filed instead. Same list as neo issue mine: both kinds, each under its own reference.
neo ticket mine [OPTIONS]| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--created |
no | The ones you filed, instead of the ones assigned to you | ||||
--state |
<STATE> |
no | open |
open, closed, all |
open (non-terminal), closed (done/cancelled/duplicate) or all |
|
--limit |
<N> |
no | Stop after N. Omitted: every page | |||
--json |
no | Print every page, merged, as one JSON response |
neo ticket labels
Section titled “neo ticket labels”List the labels a team offers.
The names --label, --add-label and an issue document’s labels resolve against.
neo ticket labels [OPTIONS] --team <TEAM>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
--team |
<TEAM> |
yes | Team key (ENG or <workspace>/ENG) whose labels to list |
|||
--json |
no | Print {labels} as JSON |
neo ticket view
Section titled “neo ticket view”Show one ticket with its comments
neo ticket view [OPTIONS] <TICKET>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket to act on, as ENG-7 or <workspace>/ENG-7 |
||||
--json |
no | Print {issue, comments} as JSON |
||||
--document |
no | Print it as an issue document (frontmatter with its labels and assignees, then the body) — the format edit --from-file reads back, for an editor plugin’s buffer |
neo ticket context
Section titled “neo ticket context”Agent context pack for a ticket (always JSON).
The ticket plus its labels, links, comments, and every linked PR (open AND closed) with a checks summary and review comments/threads. --attachments <DIR> also downloads the images it references.
neo ticket context [OPTIONS] <TICKET>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket to act on, as ENG-7 or <workspace>/ENG-7 |
||||
--attachments |
<DIR> |
no | Also download every attachment the pack references into DIR (created if missing), as <id>.<ext>. stdout is still exactly the JSON pack; each attachment gets one line on stderr, /a/<id> -> <path>, or a skip line for one you cannot read, which is not an error |
|||
--json |
no | Accepted so every verb takes --json; the pack is always JSON |
neo ticket close
Section titled “neo ticket close”Close a ticket with a terminal status
neo ticket close [OPTIONS] <TICKET>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket to act on, as ENG-7 or <workspace>/ENG-7 |
||||
--reason |
<REASON> |
no | done |
done, cancelled, duplicate |
Terminal status to close it with | |
--comment |
<BODY> |
no | Markdown comment to post before closing | |||
--json |
no | Print the updated ticket as JSON |
neo ticket edit
Section titled “neo ticket edit”Edit a ticket’s fields, labels and assignees.
Only what differs from the ticket’s current state is sent; anything omitted keeps its current value. At least one of --title, --body, --body-file, --priority, --status, a label or assignee flag, --edit or --from-file is required. A failure partway through reports which writes landed and which were never attempted.
neo ticket edit [OPTIONS] <TICKET>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket to act on, as ENG-7 or <workspace>/ENG-7 |
||||
--title |
<TITLE> |
no | Replace the title | |||
--body |
<BODY> |
no | Markdown description. Mutually exclusive with --body-file |
|||
--body-file |
<PATH> |
no | Read the markdown description from a file instead of a shell argument — - reads stdin. Avoids shell-quoting long bodies. Mutually exclusive with --body |
|||
--priority |
<PRIORITY> |
no | none, urgent, high, medium, low |
Replace the priority | ||
--status |
<STATUS> |
no | backlog, todo, in_progress, in_review, done, cancelled, duplicate |
Move it to this status. Sent by transition, as the web UI does: to a terminal status (done/cancelled/duplicate) it is a close with that reason; from a terminal status to an open one it is a reopen, then the status; between open statuses it is the plain field write. A document’s status: is sent the same way |
||
--add-label |
<NAME> |
no | Attach a label, by name; repeatable. Resolved against the repo’s or team’s labels (labels lists them) |
|||
--remove-label |
<NAME> |
no | Detach a label, by name; repeatable. One that is not attached is left alone | |||
--add-assignee |
<HANDLE> |
no | Assign someone (alice or @alice; @me is you); repeatable |
|||
--remove-assignee |
<HANDLE> |
no | Unassign someone; repeatable. One who is not assigned is left alone | |||
--edit, -e |
no | Write it in $VISUAL / $EDITOR (else vi): opens an issue document — a template on create, the current values on edit — and applies what you save. Saving an empty title on create aborts with nothing sent; edit sends only what changed. Flags given beside it win over what you save |
||||
--from-file |
<PATH> |
no | Read an issue document (frontmatter, then the markdown body) from PATH; - reads stdin. The non-interactive twin of --edit, for an editor plugin piping a buffer in. Keys the document leaves out keep their current value on edit; flags given beside it win |
|||
--json |
no | Print the updated ticket as JSON |
neo ticket reopen
Section titled “neo ticket reopen”Re-open a closed ticket
neo ticket reopen [OPTIONS] <TICKET>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket to act on, as ENG-7 or <workspace>/ENG-7 |
||||
--json |
no | Print the updated ticket as JSON |
neo ticket comment
Section titled “neo ticket comment”Comment on a ticket
neo ticket comment [OPTIONS] --body <BODY> <TICKET>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket to act on, as ENG-7 or <workspace>/ENG-7 |
||||
--body |
<BODY> |
yes | Markdown comment body | |||
--json |
no | Print the created comment as JSON |
neo ticket claim
Section titled “neo ticket claim”Atomically claim a ticket (backlog/todo → in_progress, assigned to you).
Exactly one claimer wins; a lost claim exits non-zero with the server’s 409 — the agent loop’s mutual exclusion.
neo ticket claim [OPTIONS] <TICKET>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket to act on, as ENG-7 or <workspace>/ENG-7 |
||||
--json |
no | Print the claimed ticket as JSON |
neo ticket release
Section titled “neo ticket release”Release a claimed ticket: in_progress → todo, drop your assignment
neo ticket release [OPTIONS] <TICKET>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket to act on, as ENG-7 or <workspace>/ENG-7 |
||||
--json |
no | Print the released ticket as JSON |
neo ticket track
Section titled “neo ticket track”Record that a ticket tracks a repo-bound issue.
The direction is fixed: planning work tracks intake, never the reverse. The inverse (tracked_by) row is written by the server in the same transaction and is never created directly.
neo ticket track [OPTIONS] <TICKET> <ISSUE>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket doing the tracking, as ENG-7 or <workspace>/ENG-7 |
||||
<ISSUE> |
yes | Repo-bound issue being tracked, as acme/api#1526 or api#1526 (owner defaults to your handle). A bare #1526 is not accepted — a leading # is a comment to the shell |
||||
--json |
no | Print the created link as JSON |
neo ticket untrack
Section titled “neo ticket untrack”Remove a ticket’s tracking link to a repo-bound issue.
Both rows of the pair go in one transaction.
neo ticket untrack [OPTIONS] <TICKET> <ISSUE>| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<TICKET> |
yes | Ticket that was doing the tracking, as ENG-7 or <workspace>/ENG-7 |
||||
<ISSUE> |
yes | Repo-bound issue to stop tracking, as acme/api#1526 |
||||
--json |
no | Print the ticket’s links as they stand after the removal, as JSON ({links}) — the route itself answers 204 with no body |