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
--projector rely onFLIK_PROJECT(context). - Assigned to — Optional filter by assignee. Use
meto mean the current logged-in user (e.g.--assigned-to me). Other values are Clerk user IDs (seeflik 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).