id = "jira-cli"
name = "Jira CLI"
homepage = "https://github.com/ankitpokhrel/jira-cli"
description = "An interactive command-line client for Jira."
executables = ["jira"]
[dotfiles]
paths = ["[configHome]/.jira/.config.yml"]
exclude = []
secret = []
[commands]
format = 1
label = "Jira CLI"
description = "Search and create Jira issues. Pick a subcommand; flags without a documented long name are offered by their short form only."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["issue", "list"]
label = "List issues"
description = "Search issues in the current project. Output is interactive unless a plain, raw or CSV format is chosen."
[[commands.subcommand.source]]
id = "ref"
kind = "manual"
url = "https://github.com/ankitpokhrel/jira-cli/blob/main/README.md"
revision = "2026-10-27"
evidence = """
jira issue list -yHigh -s"To Do" --created month -lbackend -a$(jira me)
You can load a specific configuration file by using the `--config/-c` flag
$ jira issue list --created -7d
$ jira issue list -s"To Do"
$ jira issue list --plain
$ jira issue list --raw
$ jira issue list --csv
$ jira issue list --order-by rank --reverse
$ jira issue list -q "summary ~ cli"
jira issue list -w
jira issue list -a"User A" -r"User B"
jira issue list -w -pXYZ
jira issue list -a$(jira me) -tBug -sDone -rFixed --reverse
"""
[[commands.subcommand.field]]
id = "status"
label = "Status"
type = "string"
option = ["-s"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "priority"
label = "Priority"
type = "string"
option = ["-y"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "assignee"
label = "Assignee"
type = "string"
option = ["-a"]
description = "A user name, or x for unassigned."
sources = ["ref"]
[[commands.subcommand.field]]
id = "reporter"
label = "Reporter"
type = "string"
option = ["-r"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "label"
label = "Labels"
type = "string"
option = ["-l"]
multiple = true
sources = ["ref"]
[[commands.subcommand.field]]
id = "type"
label = "Issue type"
type = "string"
option = ["-t"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "created"
label = "Created"
type = "string"
option = ["--created"]
description = "For example -7d, week or month."
sources = ["ref"]
[[commands.subcommand.field]]
id = "jql"
label = "Raw JQL"
type = "string"
option = ["--jql", "-q"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "project"
label = "Project"
type = "string"
option = ["-p"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "watching"
label = "Issues I am watching"
type = "boolean"
option = ["-w"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "plain"
label = "Plain output"
type = "boolean"
option = ["--plain"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "raw"
label = "Raw JSON output"
type = "boolean"
option = ["--raw"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "csv"
label = "CSV output"
type = "boolean"
option = ["--csv"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "order_by"
label = "Order by"
type = "string"
option = ["--order-by"]
suggestions = [{ value = "rank", label = "Rank" }]
sources = ["ref"]
[[commands.subcommand.field]]
id = "reverse"
label = "Reverse order"
type = "boolean"
option = ["--reverse"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "config"
label = "Config file"
type = "path"
path = { kind = "file", role = "input" }
option = ["--config", "-c"]
sources = ["ref"]
[[commands.subcommand.task]]
id = "mine"
label = "Issues in a status"
fields = ["status", "assignee", "plain"]
required = ["status"]
[[commands.subcommand.task]]
id = "jql"
label = "Run a JQL query"
fields = ["jql", "plain"]
required = ["jql"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["status", "priority", "assignee", "reporter", "label", "type", "created", "jql", "plain"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["project", "watching", "raw", "csv", "order_by", "reverse", "config"]
[[commands.subcommand]]
path = ["issue", "create"]
label = "Create an issue"
description = "Create an issue non-interactively. Custom fields and Markdown templates are left out."
[[commands.subcommand.source]]
id = "ref"
kind = "manual"
url = "https://github.com/ankitpokhrel/jira-cli/blob/main/README.md"
revision = "2026-10-27"
evidence = """
$ jira issue create -tBug -s"New Bug" -yHigh -lbug -lurgent -b"Bug description" --fix-version v2.0 --no-input
To attach epic to an issue on creation, you can use `-P/--parent` field.
$ jira issue create -tStory -s"Epic during creation" -PEPIC-42
"""
[[commands.subcommand.field]]
id = "type"
label = "Issue type"
type = "string"
option = ["-t"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "summary"
label = "Summary"
type = "string"
option = ["-s"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "priority"
label = "Priority"
type = "string"
option = ["-y"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "label"
label = "Labels"
type = "string"
option = ["-l"]
multiple = true
sources = ["ref"]
[[commands.subcommand.field]]
id = "body"
label = "Description"
type = "string"
option = ["-b"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "fix_version"
label = "Fix version"
type = "string"
option = ["--fix-version"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "parent"
label = "Parent / epic key"
type = "string"
option = ["--parent", "-P"]
sources = ["ref"]
[[commands.subcommand.field]]
id = "no_input"
label = "Skip interactive prompts"
type = "boolean"
option = ["--no-input"]
sources = ["ref"]
[[commands.subcommand.task]]
id = "create"
label = "Create without prompts"
fields = ["type", "summary", "priority", "label", "body", "no_input"]
required = ["type", "summary", "no_input"]
set = { no_input = [true] }
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["type", "summary", "priority", "label", "body", "no_input"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["fix_version", "parent"]