pub enum Command {
Show 30 variants
Init,
InitAgents,
Create {Show 16 fields
title: Option<String>,
body: Option<String>,
status: Option<String>,
priority: Option<String>,
assignee: Option<String>,
labels: Option<String>,
files: Option<String>,
estimate: Option<String>,
cycles: Option<String>,
milestones: Option<String>,
reviewer: Option<String>,
start_date: Option<String>,
due_date: Option<String>,
parent: Option<String>,
related_issues: Option<String>,
type: Option<String>,
},
Link {
action: Option<LinkAction>,
from: Option<String>,
to: Option<String>,
type: Option<String>,
},
Bulk {
action: BulkAction,
},
Unlink {
from: String,
to: String,
type: Option<String>,
},
Chain {
issue: String,
},
Parent {
action: ParentAction,
},
Edit {Show 19 fields
issue: String,
title: Option<String>,
body: Option<String>,
status: Option<String>,
priority: Option<String>,
assignee: Option<String>,
labels: Option<String>,
files: Option<String>,
estimate: Option<String>,
cycles: Option<String>,
milestones: Option<String>,
reviewer: Option<String>,
start_date: Option<String>,
due_date: Option<String>,
commit: Option<String>,
parent: Option<String>,
reason: Option<String>,
related_issues: Option<String>,
type: Option<String>,
},
Move {
issue: String,
column: String,
commit: Option<String>,
reason: Option<String>,
yes: bool,
},
View {
issue: String,
show: Option<String>,
},
List {
status: Option<String>,
filter: Option<String>,
with_archived: bool,
sort: Option<String>,
group: Option<String>,
columns: Option<String>,
show: Option<String>,
},
Workflow {
action: WorkflowAction,
},
Status {
filter: Option<String>,
sort: Option<String>,
group: Option<String>,
},
Triage {
action: TriageAction,
},
Delete {
issue: String,
yes: bool,
},
Archive {
issues: Vec<String>,
},
Restore {
issues: Vec<String>,
},
Cycle {
command: CycleCommand,
},
Milestone {
command: MilestoneCommand,
},
Export {
target: String,
dry_run: bool,
project: Option<String>,
cycle: Option<String>,
output: Option<String>,
},
Import {
target: String,
triage_policy: Option<String>,
},
Rollover {
cycle: Option<String>,
yes: bool,
},
Search {
string: String,
with_archived: bool,
},
Render,
Clean {
force: bool,
},
New,
Lint {
no_foreign: bool,
},
Layout {
action: LayoutAction,
},
Mcp,
}Variants§
Init
Create a default tix.toml ([kanban.default], issues_dir, [export])
InitAgents
Append or replace the tix block in AGENTS.md (idempotent)
Create
Create an issue
Fields
parent: Option<String>Create as a child of this issue (number, filename or title fragment)
At most one parent, so this takes a single selector and there is no list form (C-001). The parent must already exist; a selector that matches no issue is refused and nothing is created.
Related issues, comma-separated: a local number/selector, a relative
or absolute path to another issue file, or a repository URL
(host/path#id). Free-form; stored verbatim.
Link
Create, edit, remove, or list typed relationships
Creating requires --type; there is no default kind, so an untyped
relationship is never recorded by accident (C-001). Omit the
subcommand to create: tix link <from> <to> --type <kind>.
Fields
action: Option<LinkAction>edit, remove, or list. Omit to create a relationship.
These three words are reserved on tix link: an issue whose number,
filename, or title selector is exactly edit, remove, or list
must be addressed by number.
Bulk
Batch editing over a selection
Preview is the default; --apply writes. Name exactly one of --select,
--filter or --search — they are different grammars, and a bulk operation
will not guess which issues you meant.
Fields
action: BulkActionUnlink
Remove a typed relationship between two issues
Fields
Chain
Print the transitive dependency chain an issue holds up
Parent
Inspect the issue hierarchy
show, children, or list. Every figure comes from the hierarchy
service’s typed values, so the CLI, the TUI detail block and the MCP read
tools report the same numbers for the same issue.
Fields
action: ParentActionshow, children, or list
Edit
Edit an issue
Fields
status: Option<String>New status
Setting the status is a move, validated by the same service as
tix mv and recorded as the same TransitionDecision — it is not a
way around the transition policy. --status "" clears the field
(matching every other field here) and is a plain field write, not a
transition, because there is no target column to judge.
parent: Option<String>Set or change the parent (number, filename or title fragment)
--parent "" clears the parent, mirroring --assignee ""; omitting the
flag leaves it untouched. Validated before any write, so a self-parent,
an unknown parent, or a change that would close a cycle leaves the file
byte-identical.
reason: Option<String>Why a transition policy is being overridden by --status
--status is validated exactly as tix mv is, so moving an issue out
of a terminal category needs the same reasoned override, and the reason
is recorded in the same History decision. --status deliberately has
no --yes: acknowledging blockers is spelled tix move … --yes, and
giving this flag a second spelling would give the audit trail two.
New related-issues list, comma-separated (--related-issues "" clears).
A local number/selector, a relative or absolute path to another issue
file, or a repository URL (host/path#id).
Move
Move an issue to a column
Fields
commit: Option<String>Commit hash to record when moving to a completion column (auto
resolves it from git history; omitted, the current HEAD is captured
automatically)
“Completion” is whatever the board’s category mapping calls
completed — not a column literally named done. On a board with
no [kanban.<name>.category_map] the board’s done_column is the
completion column.
reason: Option<String>Why a transition policy is being overridden
Required to move an issue out of a terminal category (completed
or canceled) when the board declares a category_map. The reason
is recorded in the issue’s History, so the audit trail explains
itself later. A blank value is not a reason and is refused.
A board with no category_map has no transition policy to override:
it keeps the completion definition and the commit rule, and moving
out of done stays permitted.
View
Print the full issue (frontmatter + body) to stdout
Fields
List
Table of issues
Fields
with_archived: boolInclude archived issues, marked with an ARCHIVED column
Off by default, and off for a reason: archived issues are skipped without being read, so a repository with thousands of them lists fast.
show: Option<String>Extra information to include, comma-separated
relationships adds a relationship summary and a blocked marker
per issue, read from the relationship service so the CLI and the
TUI cannot disagree.
progress adds a parent rollup; category adds the issue’s resolved
category label, read from the shared service so this surface and the
TUI cannot spell one category two ways.
Workflow
Inspect the status-category vocabulary, a board’s mapping, and the effective transition policy
A read-only surface. It never writes and never repairs, so it is safe to run
on a repository whose tix.toml is mid-edit.
Fields
action: WorkflowActionStatus
Board summary: count per column + total
Fields
Triage
Triage the inbox: read-only queue views and the four decisions
Fields
action: TriageActionDelete
Delete an issue file
Fields
Archive
Archive issue files: rename each in place to a dot-prefixed name
The default views (tix list, tix search) skip archived issues; pass
their --with-archived flag or the archived:true filter to see them.
Restore
Restore archived issue files: the inverse of tix archive
Cycle
Manage planning cycles
Fields
command: CycleCommandMilestone
Manage milestones
Fields
command: MilestoneCommandExport
Export local issues to an external tracker via glab/linear-cli
Fields
Import
Import open issues from an external tracker via glab/linear-cli, or mirror a local GitHub Spec Kit project
Fields
triage_policy: Option<String>Where an imported issue lands in the local triage inbox (WP07)
entry routes into [triage].entry_status and refuses a project with
no [triage] section instead of quietly falling back; remote keeps
the column the remote mapping named. Absent is the documented default:
route when the project has an inbox, otherwise leave the mapping alone.
Either way the report names the mapping that was used.
Rollover
Roll open issues forward from expired cycles to the next successor
Fields
Search
Search issue files for a string (case-insensitive substring over full markdown)
Fields
Render
Render the current board once and exit
Clean
Remove the backup files tix leaves beside issues it rewrites
*.tixbak (an editor save, a repair, a conflict) and *.md.bak (an
import overwrite). By default each file is confirmed interactively.
New
Open the TUI with the create-issue form already open
The session tix starts, with the modal that n opens already in front of
you: one command to file an issue, instead of “start the board, then press
n”. It is the interactive twin of tix create, which never opens the TUI.
Lint
Validate frontmatter option values in all issue files
Fields
Layout
Inspect or migrate the configured on-disk issue layout ([layout])
Fields
action: LayoutActionMcp
Serve the MCP protocol (JSON-RPC 2.0 over stdio) for agent tools
Trait Implementations§
Source§impl FromArgMatches for Command
impl FromArgMatches for Command
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut<'b>(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut<'b>( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§impl Subcommand for Command
impl Subcommand for Command
Source§fn augment_subcommands<'b>(__clap_app: Command) -> Command
fn augment_subcommands<'b>(__clap_app: Command) -> Command
Source§fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
Command so it can instantiate self via
FromArgMatches::update_from_arg_matches_mut Read moreSource§fn has_subcommand(__clap_name: &str) -> bool
fn has_subcommand(__clap_name: &str) -> bool
Self can parse a specific subcommandAuto Trait Implementations§
impl Freeze for Command
impl RefUnwindSafe for Command
impl Send for Command
impl Sync for Command
impl Unpin for Command
impl UnsafeUnpin for Command
impl UnwindSafe for Command
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more