CLI stories and bugs

Stories and bugs are the main work items in Flik. They live inside a project and have an id like mypr-1, mypr-2, etc. (project is the 4-letter acronym.)

For the full data model—every JSON field, defaults, status rules, and REST routes (not just CLI flags)—see Issue model.


Listing

flik get stories [--project mypr] [--assigned-to user_id]
flik get bugs    [--project mypr] [--assigned-to user_id]
  • Project — Use --project or rely on FLIK_PROJECT (context).
  • Assigned to — Optional filter by assignee. Use me to mean the current logged-in user (e.g. --assigned-to me). Other values are Clerk user IDs (see flik get users).

List responses include count and items (array of issues).


Creating

flik add story "Title" [--project mypr] [--assigned-to id] [--status open|in_progress|done|cancelled] [--priority medium] [--points N] [--notes "..."] [--description "..."] [--acceptance-criteria "..."] [--due-at RFC3339] [--component "..."] [--external-ref url] [--metadata-json '{"k":"v"}'] [--parent-id mypr-2] [--sprint-id id] [--label l1 --label l2] [--block mypr-3] [--blocked-by mypr-4]

flik add bug "Title" [--project mypr] [--assigned-to id] [--status ...] [--severity medium] [--description "..."] [--steps "..."] [--expected "..."] [--actual "..."] [--environment "..."] [--regression true|false] [--affected-version v] [--fixed-in-version v] [--due-at ...] [--component ...] [--external-ref ...] [--metadata-json ...] [--parent-id ...] [--sprint-id ...] [--label ...] [--block ...] [--blocked-by ...]

Use --assigned-to me to assign to the current user. For other assignees, use a user_id from flik get users.

The server assigns the next numeric id (e.g. mypr-1, mypr-2). parent-id must reference an existing issue in the same project. metadata-json must be a JSON object.

API responses include created_by / updated_by, workflow timestamps (resolved_at, closed_at when terminal), and the extended fields above when set.


Updating and deleting

flik update story mypr-1 --title "New title" [--status in_progress] [--description "..."] [--acceptance-criteria "..."] [--due-at ...] [--label a --label b] ...
flik update bug   mypr-2 --title "New title" [--status done] [--steps "..."] [--regression true|false] ...
# Unified form (all issue fields):
flik update object mypr-1 --title "New title" --status done --acceptance-criteria "..." --steps "..."

Use --assigned-to me to assign to the current user. For --label, --block, and --blocked-by, the flag is only applied if you pass it; the lists you pass replace the stored lists (use empty --label with no values only if your shell sends an empty array—prefer update object with explicit JSON via API for edge cases).

flik delete story mypr-1
flik delete bug   mypr-2
flik delete object mypr-1

Only the fields you pass are updated. Status must be open, in_progress, done, or cancelled. Moving to done or cancelled sets closure timestamps; moving back to open / in_progress clears them.


Getting one issue

flik get object mypr-1

Returns the full story or bug by id. Requires project context (or --project).