st cards list
# Requires one of: --board/-b, --sprint, --assignee/-a, or a views-path filter
# Options: --space/-s (required with --sprint), --status, --tag/-t, --archived
# --assignee/-a supports 'me', user name, email, or ID
# --sprint supports 'current' or sprint name/ID
# --status: comma-separated statuses or 'all'
# Canonical: backlog, committed, started, completed, cancelled
# Aliases: backlog, todo, doing, done, canceled
# (also: in-progress, in_progress, active, finished,
# closed, deployed, production, live, shipped, complete)
# When --assignee is used, defaults to backlog+committed+started (hides done/cancelled)
# --tag/-t: comma-separated tag names or IDs (cards matching any listed tag)
#
# Views-path filters (stand alone or compose with --assignee; don't combine with --board/--sprint):
# --content TEXT substring match across task title + description
# --title TEXT substring match against title only
# --priority N[,N...] comma-separated priorities (0=none..4=urgent)
# --creator REF filter by creator (name, email, ID, or 'me')
# --project REF[,REF...] comma-separated project/epic names or IDs (alias: --epic)
# --due-before DATE due date strictly before DATE; absolute or date-math (e.g. 'now+7d')
# --due-after DATE due date strictly after DATE
# --sort-by FIELD due_date | estimate | priority | status | time_created | time_updated
# --sort-desc sort descending (default ascending)
# --has-due-date tasks that do/don't have a due date (=false to invert)
# --has-priority tasks that do/don't have a priority
# --has-estimate tasks that do/don't have an estimate
# --has-tags tasks that do/don't have tags
# --has-assignees tasks that do/don't have assignees
# --has-status tasks that do/don't have a status set (no status = backlog)
# --has-parent-card equivalent to --is-child
# --is-child subtasks only (=false for top-level only)
# --is-parent tasks that have at least one subtask
# Relationship filters:
# --has-blockers tasks that ARE blocked. Use =false to invert.
# --has-blocking tasks that ARE blocking others. Use =false to invert.
# --has-relationship tasks with ANY relationship to another task. Use =false to invert.
# --relationship-types OR list: blocks, blocked_by, related, duplicates.
# Mutually exclusive: --has-blockers=true + --has-blocking=true (wire would OR
# them, returning "blocked OR blocking" — use --relationship-types=blocked_by,blocks
# if OR is what you want); --relationship-types with either semantic flag.
st cards get CARD_ID
st cards create --title "Task" -l LIST -b BOARD
# Options: --content, --priority (0-4), --estimate, --due-date (YYYY-MM-DD), --sprint, --space/-s, --assignee/-a, --project/--epic, --parent, --child, --tag/-t
# When --sprint is set, --list is optional (defaults to sprint's Todo list)
# --space/-s always required with --sprint
# --project/--epic: project name or ID to add the card to
# --parent: parent card ID
# --child: child card ID (repeatable; clearing children after create is done via `cards update --child none`)
st cards update CARD_ID
# Options: --title, --content, --list/-l, --board/-b, --sprint, --space/-s, --assignee/-a, --priority, --estimate, --due-date (YYYY-MM-DD), --project/--epic, --parent, --child, --tag/-t
# --list/-l: list name or ID; --sprint/-s not needed when moving within the card's current sprint/board
# --content replaces existing content entirely
# --sprint: name, ID, or 'current'; --space/-s always required with --sprint
# --board: name or ID. For names: scoped by --space if given, else lazy-fetches the card's current space.
# --project/--epic: project name or ID; use 'none' to remove from project
# --parent: parent card ID; use 'none' to remove from parent
# --assignee/-a: comma-separated. Adds to existing assignees (idempotent on re-add); use 'none' to clear all.
# --tag/-t: comma-separated. Adds to existing tags; use 'none' to clear all.
# --child: comma-separated child card IDs. Adds to existing children; use 'none' to clear all.
st cards delete CARD_ID # Confirms
st cards archive CARD_ID
st cards duplicate CARD_ID