From jira
Fetch JIRA issues via REST API and save as minimal extracted JSON. Bypasses MCP tools for maximum data efficiency and token minimization. Use when the user wants to download, fetch, pull, export, or cache JIRA data locally. Triggers on requests to fetch issues, download tasks, export JIRA data, get issues from JIRA, pull sprint/version/project data, cache JIRA issues, dump JIRA to file, or any variation like "give me data from JIRA", "I need issues from...", "pull tasks for sprint X", "get me everything from version Y". Also triggers when the user needs JIRA data saved to a file for offline analysis or for other skills to consume. Does NOT use MCP — calls JIRA REST API v3 directly via Node.js script.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jira:jira-fetchThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fetch JIRA issues via REST API v3 and save as minimal extracted JSON. Uses a zero-dependency Node.js script that calls JIRA directly — no MCP tools, no subagents, no token overhead.
Fetch JIRA issues via REST API v3 and save as minimal extracted JSON. Uses a zero-dependency Node.js script that calls JIRA directly — no MCP tools, no subagents, no token overhead.
Output per issue: key, type, status, priority, assignee, reporter, labels, fixVersions, summary, created, updated, description (plaintext), comments (up to 50, plaintext with author/datetime). All nested objects flattened, all HTML stripped.
Environment variables:
JIRA_EMAIL — Atlassian account emailJIRA_API_TOKEN — API token from https://id.atlassian.com/manage/api-tokensIf either is missing, tell the user which one and how to set it. Do not proceed without both.
Look for a JIRA configuration block in the project's CLAUDE.md:
## JIRA
- Domain: mycompany.atlassian.net
- Project key: PROJ
If found, use that domain and project key. If not found, ask via AskUserQuestion (header: "JIRA Configuration"):
Store domain and project key for the session.
Transform the user's request ($ARGUMENTS) into a valid JQL query. Construct it directly — do not ask the user for JQL syntax.
If the user's request mentions a project, use that. Otherwise use the project key from Step 1.
Common patterns:
| User says | JQL |
|---|---|
| sprint 5 of project PROJ | project = PROJ AND sprint = "Sprint 5" ORDER BY priority DESC |
| current sprint | project = PROJ AND sprint in openSprints() ORDER BY priority DESC |
| my tasks in current sprint | project = PROJ AND sprint in openSprints() AND assignee = currentUser() ORDER BY priority DESC |
| all bugs in version 2.0 | project = PROJ AND issuetype = Bug AND fixVersion = "2.0" ORDER BY priority DESC |
| everything updated this week | project = PROJ AND updated >= startOfWeek() ORDER BY updated DESC |
| tasks in "In Progress" | project = PROJ AND status = "In Progress" ORDER BY priority DESC |
| all tasks for version 3.1 | project = PROJ AND fixVersion = "3.1" ORDER BY priority DESC |
| unresolved bugs | project = PROJ AND issuetype = Bug AND resolution = Unresolved ORDER BY priority DESC |
Show the constructed JQL to the user before executing:
JQL: project = PROJ AND sprint in openSprints() ORDER BY priority DESC
If they want changes, adjust and re-show. Proceed only after confirmation.
Find the fetch script's absolute path:
Glob pattern: **/jira-fetch/scripts/fetch-issues.mjs
Store as SCRIPT_PATH. The Glob is needed because the plugin install path varies across systems — the script could be in ~/.claude/plugins/, a local checkout, or a symlinked directory. If not found, report the error — the jira plugin may not be installed correctly.
Generate the output filename using current date and time:
FILENAME: jira-fetch-YYYYMMDD-HHmmss.json
Run the script. Output goes to /tmp first so the user can preview before committing to the project directory — this avoids polluting the repo with unwanted files:
node "${SCRIPT_PATH}" \
--domain "${DOMAIN}" \
--jql "${JQL}" \
--output "/tmp/${FILENAME}"
The JQL argument must be properly quoted to handle spaces, parentheses, and special characters.
The script prints progress to stderr and the output file path to stdout. If it exits with non-zero status, show the error message and stop — do not retry.
Read the output JSON from the temp file. Display a compact summary:
Header line: Fetched {count} issues from {domain} ({fetched timestamp})
Table with all issues:
| Key | Type | Status | Priority | Assignee | Summary |
Truncate summary at 60 characters with .... This table lets the user verify the right data was fetched before saving.
Ask via AskUserQuestion (header: "Save results"):
./docs/jira/${FILENAME}If saving to docs/jira/:
./docs/jira/ directory if it doesn't exist/tmp/${FILENAME} to ./docs/jira/${FILENAME}After saving (or keeping), mention that the file is ready for use by other skills or direct reading.
npx claudepluginhub mrstroz/claude-code-plugins --plugin jiraManages Jira Cloud issues via jira CLI with JSON output: create, view, update, search issues, fetch hierarchies, manage sprints.
Queries JIRA REST API to fetch raw bug data for projects, including all fields and metadata. Supports filters by component, status, and closed issues for custom analysis.
Interacts with Jira issues via CLI scripts: search, create, update, transition, comment, log work, manage sprints/boards/attachments/links. Auto-triggers on Jira URLs and issue keys.