From jira
Generate a daily JIRA summary with intelligent triage and ABCDE priority classification. Groups tasks into Action Needed, Ready to Proceed, and Info categories with actionable summaries. Creates optional Claude Code todo lists for follow-up. Use when the user wants a daily standup summary, task triage, daily review, morning briefing, sprint check-in, or wants to know what needs attention in JIRA today. Triggers on any request mentioning daily summary, standup prep, triage, daily review, morning briefing, what needs my attention, sprint status check, or daily JIRA report.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jira:jira-daily-summaryopusThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate a prioritized daily summary of JIRA tasks with intelligent triage into three action groups and Brian Tracy ABCDE classification. Uses the `jira-fetch` script to pull all data via REST API in one call — no MCP overhead, no subagents, no token waste.
Generate a prioritized daily summary of JIRA tasks with intelligent triage into three action groups and Brian Tracy ABCDE classification. Uses the jira-fetch script to pull all data via REST API in one call — no MCP overhead, no subagents, no token waste.
AskUserQuestionjira-fetch script to get all issues with descriptions and commentsUse a single AskUserQuestion call with two questions:
Use the selected language for the entire output. Translate section headers according to the translations in references/format.md.
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 the resolved domain, projectKey, and base URL (https://{domain}) for the rest of the session. The base URL is needed for clickable task links in the output.
This single step replaces the old search + subagent extraction pattern. The jira-fetch script fetches all issues with full descriptions and comments in one call, returning a minimal JSON file with plaintext data ready for triage.
Map the selected time frame to a JQL query:
| Time Frame | JQL |
|---|---|
| Active sprint assigned to me | project = {projectKey} AND sprint in openSprints() AND assignee = currentUser() ORDER BY priority DESC |
| Updated/commented today | project = {projectKey} AND updated >= startOfDay() ORDER BY updated DESC |
| Updated/commented yesterday + today | project = {projectKey} AND updated >= startOfDay(-1d) ORDER BY updated DESC |
| Last 3 days | project = {projectKey} AND updated >= startOfDay(-3d) ORDER BY updated DESC |
Find the fetch script via Glob:
pattern: **/jira-fetch/scripts/fetch-issues.mjs
Run the script:
node "${SCRIPT_PATH}" \
--domain "${DOMAIN}" \
--jql "${JQL}" \
--output "/tmp/jira-daily-summary-$(date +%Y%m%d-%H%M%S).json"
If the script fails, show the error and stop. Common issues: missing JIRA_EMAIL or JIRA_API_TOKEN env vars.
Read the output JSON file. The data contains per issue: key, type, status, priority, assignee, reporter, labels, fixVersions, summary, created, updated, description (plaintext), comments[] (with author, created, body as plaintext).
Store the file path — it will be used again in Step 8 for task processing.
Classify every task into exactly one of three groups. The groups represent different levels of urgency — getting this right matters because it determines what the user focuses on first.
Use the full issue data from the JSON file (description, comments with author and dates, assignee, reporter, status, priority) for accurate triage.
Tasks requiring my immediate action. These represent blocked work or situations where the team is waiting on me. Delaying these has a multiplier effect because other people cannot proceed.
Before classifying, perform a directionality analysis on each comment: identify (1) who is speaking, (2) who is being asked to act (the target — tagged person, named person, or implied addressee), and (3) what action is requested. Only classify as Action Needed when I am the target of the request, not merely mentioned as context.
Classify a task as Action Needed when any of these apply:
Do NOT classify as Action Needed when:
Tasks assigned to me that are ready for the next step. These are opportunities to move work forward — no blockers, just needs my processing.
Classify a task as Ready to Proceed when:
Everything that does not fit Action Needed or Ready to Proceed. This is context that helps the user stay informed about team progress without requiring action.
When in doubt between groups, classify into Info rather than Action Needed — false urgency is worse than missing a low-priority item.
Assign each task a priority letter A through E using the Brian Tracy method. The letter determines the order in which tasks appear within their triage group (A first, E last).
| Letter | Meaning | Typical Signals |
|---|---|---|
| A | Must do | Blocker/Critical priority, team blocked, imminent release, production issue |
| B | Should do | Major priority, upcoming release, someone waiting but not fully blocked |
| C | Nice to do | Normal priority, no dependencies, no time pressure |
| D | Delegate | Assigned to me but better suited for someone else |
| E | Eliminate | Can be dropped, deferred, or is no longer relevant |
For the full methodology with edge cases and sorting rules, see references/abcde-methodology.md.
Sort tasks within each triage group: A first, then B, C, D, E. Within the same letter, sort by priority descending, then by release proximity, then by last-updated descending.
Produce the summary following the format defined in references/format.md. Full example: references/example.md.
Start with a 2-4 sentence overview:
Generate one table per triage group: Action Needed, Ready to Proceed, Info.
All tables use the same columns:
| Task | | Title | Summary |
Column rules:
[PROJ-123](https://{domain}/browse/PROJ-123)... if over 70 characters{Ver} · {Status} · {Assignee} — followed by narrative summary (~30-50 words). Ver is fixVersion or — if missing. Status uses color emoji prefix (⚪ To Do/Open/Backlog/New, 🔵 In Progress/In Review/Reviewed/Testing/QA/Code Review/In Development, 🟢 Done/Ready to Deploy/Deployed/Closed/Resolved/Released). Assignee is the person's first name. The narrative portion names specific people and who-to-whom dynamics rather than using passive voice.If any group has more than 15 tasks, show individual rows only for A and B items. Summarize C/D/E as a single row:
| — | C-E | {count} additional tasks | No immediate action required. |
Action Needed is never condensed — every item there deserves individual attention.
After presenting the summary, use AskUserQuestion with header "Todo list":
If the user selects a group, use TaskCreate for each task in the selected group(s):
{ABCDE} — {PROJ-KEY}: {title} (e.g., A — SF-234: Fix payment callback timeout)Working on {PROJ-KEY} (e.g., Working on SF-234)After creating todos, confirm how many were created and for which group(s). Then proceed to Step 8.
Work through the todo list one task at a time. For each task, repeat the following cycle:
Read the issue data from the JSON file fetched in Step 3. The file contains full description and up to 50 comments in plaintext — sufficient for task processing without additional API calls.
Find the issue by its key in the issues array.
Present the task as a heading with the expanded summary below it:
PROJ-123 — {title}
{expanded summary}
The expanded summary should be 2-3x more detailed than the table summary (~60-90 words). Include:
Use AskUserQuestion (header: "Action") with options contextual to the task's triage group and status. Examples:
Action Needed tasks:
Ready to Proceed tasks:
Adapt options based on what the task actually needs — these are examples, not a fixed list.
Based on the user's chosen action, draft a JIRA comment in the language selected in Step 1. Present the draft as plain text:
JIRA Comment Draft — please review:
{comment content}
Confirm to send, or let me know what to change.
Writing rules:
After the user confirms (or edits and confirms) the comment:
cloudId if not yet known — call getAccessibleAtlassianResources MCP tool once per session to get the cloud instance ID. Cache it for subsequent comments.addCommentToJiraIssue MCP tool with cloudId, issueKey, and body to post the comment.TaskUpdate (status: completed)If the user chose "Skip" in Step 8c, mark the todo as completed without sending a comment and move to the next task.
npx claudepluginhub mrstroz/claude-code-plugins --plugin jiraFetches a JIRA issue and distills it into a structured task with acceptance criteria, sprint context, and codebase analysis. Surfaces missing criteria, scope, and risks, and can enrich the JIRA issue with analysis or spawn sub-tickets.
Extracts action items and assignees from meeting notes or Confluence pages, looks up Jira account IDs, and creates tasks.