Jira: Issue Search
Read-only. Run from this skill's directory:
python3 ../jira/scripts/jira_tool.py search --jql "assignee = currentUser() AND updated <= -14d" \
[--max_results 100] [--only summary,status,priority] [--fields customfield_10056]
(First-time setup, once per environment: pip install -r ../jira/requirements.txt.)
--jql is required. Prints one JSON document: structured issue results
matching the query. key, url, custom_fields, and blocked are
always present; every other field is controlled by --only. Never
invent or fabricate issue data -- everything you state must come from
this JSON.
--only (optional, comma-separated named fields, e.g.
summary,status,priority,labels,description) asks for exactly the
fields you need instead of everything -- the main lever for keeping
bulk results token-cheap. Omit it for the default set: everything
except description and the time-tracking fields (description is
free text that can run long, and is rarely needed to scan many issues
at once -- pass it explicitly, e.g. --only summary,description, when
you actually need it). Valid names: summary, status, priority,
issue_type, assignee, reporter, updated, created, due_date,
labels, links, description, components, subtasks,
original_estimate_seconds, time_spent_seconds,
remaining_estimate_seconds.
--fields (optional, comma-separated) requests extra raw Jira field
IDs in addition to --only -- use it for instance-specific custom
fields, e.g. a "Figma Link" field, always surfaced in custom_fields.
Discover its ID first by running list_fields (via the jira skill's
CLI, python3 ../jira/scripts/jira_tool.py list_fields); never guess a
customfield_NNNNN id.
--only's field names and --jql's field names are different
vocabularies -- don't mix them up. --only uses this skill's own
snake_case names (due_date, issue_type); --jql uses Jira's own
JQL field names, which differ: due (not due_date), issuetype
(not issue_type), reporter for "who filed this" (not creator --
don't invent an alternate field name just because a query returns
nothing). Never write a status literal into --jql (e.g.
status = 'Pending') unless you've actually seen that exact status
name in a prior result -- a plausible guess doesn't error, it just
silently returns zero misleading results. If a query built with the
right, known field names still returns nothing, say exactly what you
searched and ask, rather than silently swapping in a different field
name and retrying.
- For subtask/description/component questions ("which tasks have no
subtasks", "does this need frontend or backend work"), request the
relevant fields via
--only and reason over them yourself -- there is
no separate classification tool, because "frontend" vs. "backend"
isn't a fixed Jira field; it's inferred from this data.
If the result contains "error", tell the user what went wrong in
plain language (invalid JQL, permission denied, etc.) instead of
retrying silently or fabricating a result.
See ../jira/README.md for architecture details and the full
environment-variable table.
1---2name: jira-issues3description: Runs an arbitrary JQL search against Jira and returns structured issue results. Use for "find issues where...", "which of my tickets haven't been updated recently", or any query not covered by a more specific Jira skill.4---56# Jira: Issue Search78Read-only. Run from this skill's directory:910```bash11python3 ../jira/scripts/jira_tool.py search --jql "assignee = currentUser() AND updated <= -14d" \12 [--max_results 100] [--only summary,status,priority] [--fields customfield_10056]13```1415(First-time setup, once per environment: `pip install -r ../jira/requirements.txt`.)1617`--jql` is required. Prints one JSON document: structured issue results18matching the query. `key`, `url`, `custom_fields`, and `blocked` are19always present; every other field is controlled by `--only`. Never20invent or fabricate issue data -- everything you state must come from21this JSON.2223- `--only` (optional, comma-separated named fields, e.g.24 `summary,status,priority,labels,description`) asks for exactly the25 fields you need instead of everything -- the main lever for keeping26 bulk results token-cheap. Omit it for the default set: everything27 except `description` and the time-tracking fields (`description` is28 free text that can run long, and is rarely needed to scan many issues29 at once -- pass it explicitly, e.g. `--only summary,description`, when30 you actually need it). Valid names: `summary`, `status`, `priority`,31 `issue_type`, `assignee`, `reporter`, `updated`, `created`, `due_date`,32 `labels`, `links`, `description`, `components`, `subtasks`,33 `original_estimate_seconds`, `time_spent_seconds`,34 `remaining_estimate_seconds`.35- `--fields` (optional, comma-separated) requests extra *raw* Jira field36 IDs in addition to `--only` -- use it for instance-specific custom37 fields, e.g. a "Figma Link" field, always surfaced in `custom_fields`.38 Discover its ID first by running `list_fields` (via the `jira` skill's39 CLI, `python3 ../jira/scripts/jira_tool.py list_fields`); never guess a40 `customfield_NNNNN` id.41- **`--only`'s field names and `--jql`'s field names are different42 vocabularies -- don't mix them up.** `--only` uses this skill's own43 snake_case names (`due_date`, `issue_type`); `--jql` uses Jira's own44 JQL field names, which differ: `due` (not `due_date`), `issuetype`45 (not `issue_type`), `reporter` for "who filed this" (not `creator` --46 don't invent an alternate field name just because a query returns47 nothing). Never write a status literal into `--jql` (e.g.48 `status = 'Pending'`) unless you've actually seen that exact status49 name in a prior result -- a plausible guess doesn't error, it just50 silently returns zero misleading results. If a query built with the51 right, known field names still returns nothing, say exactly what you52 searched and ask, rather than silently swapping in a different field53 name and retrying.54- For subtask/description/component questions ("which tasks have no55 subtasks", "does this need frontend or backend work"), request the56 relevant fields via `--only` and reason over them yourself -- there is57 no separate classification tool, because "frontend" vs. "backend"58 isn't a fixed Jira field; it's inferred from this data.5960If the result contains `"error"`, tell the user what went wrong in61plain language (invalid JQL, permission denied, etc.) instead of62retrying silently or fabricating a result.6364See `../jira/README.md` for architecture details and the full65environment-variable table.