Jira Communication
CLI scripts via uv run, all supporting --help, --json, --quiet, --debug.
Auto-Trigger
On Jira URL or issue key (PROJ-123), pick by intent — each is one call:
| Intent |
Tool |
| triage / work on ticket |
jira-issue.py work KEY |
| start QA review |
jira-issue.py qa KEY |
| QA-fail follow-up |
jira-issue.py qa-fail KEY |
| field-only lookup |
jira-issue.py get KEY --fields ... |
| change status |
jira-issue.py act KEY → jira-transition.py do |
| audit / sibling discovery |
jira-qa-gather.py KEY |
Auth issues → jira-setup.py. Anti-pattern: get + comment list — use the matching verb.
Scripts
Under ${CLAUDE_SKILL_DIR}/scripts/{core,workflow,utility}/.
Core: jira-issue.py, jira-search.py, jira-worklog.py, jira-attachment.py, jira-setup.py, jira-validate.py
Workflow: jira-create.py, jira-transition.py, jira-comment.py, jira-move.py, jira-sprint.py, jira-board.py, jira-version.py, tempo-account.py
Utility: jira-user.py, jira-fields.py, jira-link.py, jira-weblink.py, jira-worklog-query.py, jira-watchers.py, jira-qa-gather.py
Execution Style
Run directly. Scripts report ✓/✗. Destructive ops: --dry-run. Global flags before subcommand: jira-issue.py --json get PROJ-123.
Basic Usage
uv run ${CLAUDE_SKILL_DIR}/scripts/core/jira-issue.py get PROJ-123
uv run ${CLAUDE_SKILL_DIR}/scripts/core/jira-search.py query "assignee = currentUser() AND status != Closed" -n 5 -f key,summary,status
uv run ${CLAUDE_SKILL_DIR}/scripts/core/jira-issue.py update PROJ-123 --assignee me --priority Critical
uv run ${CLAUDE_SKILL_DIR}/scripts/workflow/jira-comment.py add PROJ-123 "Comment text"
uv run ${CLAUDE_SKILL_DIR}/scripts/workflow/jira-transition.py do PROJ-123 "In Progress"
uv run ${CLAUDE_SKILL_DIR}/scripts/core/jira-worklog.py add PROJ-123 2h --comment "Work done"
uv run ${CLAUDE_SKILL_DIR}/scripts/workflow/jira-create.py issue PROJ "Summary" --type Task
Transitions: list shows each transition's id and what its screen requires; pass the id to do — a name or
a target status is not always unique, and an ambiguous one is refused rather than guessed.
Terminal transitions: pass --resolution <value> (Done, Won't do); if rejected ("cannot be set"),
retry without it — references/intent-verbs.md. Versions: read references/versions.md before jira-version.py.
Mentions: posting commands verify [~username] (miss → suggestions); get/work print usernames (references/fields-and-users.md).
Related Skills
jira-syntax: descriptions/comments use Jira wiki markup, not Markdown.
No editorializing
State what happened, not how good it is — references/no-editorializing.md.
References
references/jql-quick-reference.md, references/jql-cookbook.md
references/multi-profile.md — --profile
references/troubleshooting.md — auth, 401/403
references/issue-editing.md — edit, delete, clear fields, --fields-json
references/creation.md — create, --parent, fields, admin-scope (project, tempo-account.py)
references/comments.md — edit, delete, lint, body via -
references/worklog.md — --started, ranges, --tempo-account, delete
references/attachments.md — upload, download
references/links.md — links
references/agile.md — sprints/boards
references/no-editorializing.md — no self-praise
references/fields-and-users.md — custom field IDs, users, issue types
references/watchers.md — watch, subscribe, list watchers
references/versions.md — fix/affects versions, releases, version CRUD
references/qa-gather.md — audit bundle (siblings, prose URLs)
references/intent-verbs.md — work / qa / qa-fail / act, exact transition names
Authentication
Cloud: JIRA_URL + JIRA_USERNAME + JIRA_API_TOKEN. Server/DC: JIRA_URL + JIRA_PERSONAL_TOKEN. Config via ~/.env.jira or ~/.jira/profiles.json.
1---2name: jira-communication3description: Use when handling Jira issues, sprints, boards, links, fields, worklogs, attachments, or users, or on any Jira intent without a key ("create/find a ticket", "pick a project"). Auto-triggers on Jira URLs and issue keys (PROJ-123). Also use when MCP Atlassian tools fail or are unavailable for Jira Server/DC.4license: (MIT AND CC-BY-SA-4.0). See LICENSE-MIT and LICENSE-CC-BY-SA-4.05---6
7# Jira Communication
8
9CLI scripts via `uv run`, all supporting `--help`, `--json`, `--quiet`, `--debug`.
10
11## Auto-Trigger
12
13On Jira URL or issue key (PROJ-123), pick by **intent** — each is one call:
14
15| Intent | Tool |
16|---|---|
17| triage / work on ticket | `jira-issue.py work KEY` |
18| start QA review | `jira-issue.py qa KEY` |
19| QA-fail follow-up | `jira-issue.py qa-fail KEY` |
20| field-only lookup | `jira-issue.py get KEY --fields ...` |
21| change status | `jira-issue.py act KEY` → `jira-transition.py do` |
22| audit / sibling discovery | `jira-qa-gather.py KEY` |
23
24Auth issues → `jira-setup.py`. **Anti-pattern:** `get` + `comment list` — use the matching verb.
25
26## Scripts
27
28Under `${CLAUDE_SKILL_DIR}/scripts/{core,workflow,utility}/`.
29
30**Core**: `jira-issue.py`, `jira-search.py`, `jira-worklog.py`, `jira-attachment.py`, `jira-setup.py`, `jira-validate.py`
31**Workflow**: `jira-create.py`, `jira-transition.py`, `jira-comment.py`, `jira-move.py`, `jira-sprint.py`, `jira-board.py`, `jira-version.py`, `tempo-account.py`
32**Utility**: `jira-user.py`, `jira-fields.py`, `jira-link.py`, `jira-weblink.py`, `jira-worklog-query.py`, `jira-watchers.py`, `jira-qa-gather.py`
33
34## Execution Style
35
36Run directly. Scripts report `✓`/`✗`. Destructive ops: `--dry-run`. Global flags before subcommand: `jira-issue.py --json get PROJ-123`.
37
38## Basic Usage
39
40```bash
41uv run ${CLAUDE_SKILL_DIR}/scripts/core/jira-issue.py get PROJ-123
42uv run ${CLAUDE_SKILL_DIR}/scripts/core/jira-search.py query "assignee = currentUser() AND status != Closed" -n 5 -f key,summary,status
43uv run ${CLAUDE_SKILL_DIR}/scripts/core/jira-issue.py update PROJ-123 --assignee me --priority Critical
44uv run ${CLAUDE_SKILL_DIR}/scripts/workflow/jira-comment.py add PROJ-123 "Comment text"
45uv run ${CLAUDE_SKILL_DIR}/scripts/workflow/jira-transition.py do PROJ-123 "In Progress"
46uv run ${CLAUDE_SKILL_DIR}/scripts/core/jira-worklog.py add PROJ-123 2h --comment "Work done"
47uv run ${CLAUDE_SKILL_DIR}/scripts/workflow/jira-create.py issue PROJ "Summary" --type Task
48```
49
50> **Transitions**: `list` shows each transition's id and what its screen requires; pass the **id** to `do` — a name or
51> a target status is not always unique, and an ambiguous one is refused rather than guessed.
52> **Terminal transitions**: pass `--resolution <value>` (`Done`, `Won't do`); if rejected ("cannot be set"),
53> retry without it — `references/intent-verbs.md`. **Versions**: read `references/versions.md` before `jira-version.py`.
54> **Mentions**: posting commands verify `[~username]` (miss → suggestions); `get`/`work` print usernames (`references/fields-and-users.md`).
55
56## Related Skills
57
58**jira-syntax**: descriptions/comments use Jira wiki markup, not Markdown.
59
60## No editorializing
61
62State what happened, not how good it is — `references/no-editorializing.md`.
63
64## References
65
66- `references/jql-quick-reference.md`, `references/jql-cookbook.md`
67- `references/multi-profile.md` — `--profile`
68- `references/troubleshooting.md` — auth, 401/403
69- `references/issue-editing.md` — edit, delete, clear fields, `--fields-json`
70- `references/creation.md` — create, `--parent`, fields, admin-scope (`project`, `tempo-account.py`)
71- `references/comments.md` — edit, delete, lint, body via `-`
72- `references/worklog.md` — `--started`, ranges, `--tempo-account`, `delete`
73- `references/attachments.md` — upload, download
74- `references/links.md` — links
75- `references/agile.md` — sprints/boards
76- `references/no-editorializing.md` — no self-praise
77- `references/fields-and-users.md` — custom field IDs, users, issue types
78- `references/watchers.md` — watch, subscribe, list watchers
79- `references/versions.md` — fix/affects versions, releases, version CRUD
80- `references/qa-gather.md` — audit bundle (siblings, prose URLs)
81- `references/intent-verbs.md` — `work / qa / qa-fail / act`, exact transition names
82
83## Authentication
84
85Cloud: `JIRA_URL` + `JIRA_USERNAME` + `JIRA_API_TOKEN`. Server/DC: `JIRA_URL` + `JIRA_PERSONAL_TOKEN`. Config via `~/.env.jira` or `~/.jira/profiles.json`.