63 added, 173 removed. Audit A to A.
---
name: jira-todo
- description: Generate smart daily work plans with intelligent prioritization from
- Jira tickets. This skill should be used when users want to plan their workday, prioritize
- assigned tickets, or determine what to work on next based on Jira data.
+ description: Generates a prioritized daily work plan from a user's assigned Jira
+ tickets — scoring by priority, due date, blockers, and recent activity, then
+ recommending what to work on next. Use when the user asks "what should I work
+ on today", wants to plan their workday, prioritize assigned tickets, or triage
+ their Jira backlog. Not for yesterday's standup recap (use jira-daily) or raw
+ command reference (use jira-cli) — this skill is specifically for
+ forward-looking prioritization, not status reporting.
metadata:
author: mgiovani
- version: 1.0.0
- source: https://github.com/mgiovani/skills
+ version: 1.2.0
disable-model-invocation: true
- argument-hint: '[--project <KEY>] [--urgent-only] [--time-box <hours>]'
- allowed-tools: Bash(jira *), Bash(git *), Bash(cat *), Read, Task, TodoWrite
- context: fork
- agent: general-purpose
+ argument-hint: '[--project <KEY>] [--urgent-only] [--include-blocked] [--time-box <hours>]'
+ allowed-tools: Bash(jira *), Bash(git *), Read, Task, TodoWrite
---
- # Jira Todo
+ # Jira Todo - Daily Work Prioritization
- > **Cross-Platform AI Agent Skill**
- > This skill works with any AI agent platform that supports the skills.sh standard.
+ Analyzes assigned tickets and recommends what to work on next, based on actual Jira data. Complements the **jira-cli** skill (general command reference) and **jira-daily** (yesterday's standup recap) — this skill is for forward-looking prioritization.
- # Jira Todo - Daily Work Prioritization
+ ## Phase 1: Verify Jira CLI Works
- Smart daily work planner that analyzes assigned tickets and provides actionable recommendations on what to work on next. This skill complements the **jira-cli** skill, which provides general Jira CLI knowledge and command reference.
+ Before anything else, confirm the CLI is installed and authenticated:
- ## Anti-Hallucination Guidelines
+ ```bash
+ jira me
+ ```
- **CRITICAL**: Recommendations must be based on ACTUAL Jira data:
- 1. **Only reference real tickets** - Every ticket ID must come from jira CLI output
- 2. **Verify statuses** - Never assume status; read it from the API response
- 3. **Check actual priorities** - Use the priority field from Jira, never infer
- 4. **Real story points** - Only show story points if they exist in the ticket
- 5. **No invented blockers** - Only mention blockers explicitly marked in Jira
+ If that fails — command not found, not authenticated, any error — STOP here. Do not proceed to Phase 2 or any later phase, and do not simulate, infer, or fabricate ticket data to produce a plan anyway. Tell the user:
- ## Project Key Detection
+ > The `jira` CLI isn't available or isn't authenticated in this environment. Install and configure it from https://github.com/ankitpokhrel/jira-cli, then re-run this skill.
- ### Phase 1: Determine Project Key
+ This gate exists because an agent that can't reach real Jira data will otherwise write a plausible-looking report from imagined tickets and present it as a real daily plan. Every ticket ID, priority, status, and story point anywhere in this skill's output must come from a `jira` command actually run this session — never a hardcoded fixture, a "simulated" placeholder, never mention a blocker that wasn't explicitly marked (label or blocking-link field) in that output, and never a helper script that was written but not executed. If a command returns no results, say so plainly rather than inventing tickets to fill out the report sections.
+ ## Phase 2: Determine Project Key
+
Get the project key from (in order of priority):
1. **Command argument**: `--project ABC` or `-p ABC`
- 2. **Jira CLI config**: Read from `~/.config/.jira/.config.yml`
+ 2. **Jira CLI config**: Read `~/.config/.jira/.config.yml` and extract the `project.key` value.
- ```bash
- # Try to get project key from jira CLI config
- PROJECT_KEY=$(cat ~/.config/.jira/.config.yml 2>/dev/null | grep -A1 "^project:" | grep "key:" | awk '{print $2}')
- echo "Detected project: $PROJECT_KEY"
- If no project key found, ask the user to specify with `--project <KEY>`.
+ If no project key is found, ask the user to specify with `--project <KEY>`.
- ## Workflow
+ ## Phase 3: Gather Current Workload
- ### Phase 2: Gather Current Workload
+ Run these directly via Bash before recommending anything — every ticket in the output must trace back to one of these commands' actual stdout, not to a script that reproduces expected output without executing them:
```bash
# Get all assigned tickets in active statuses
jira issue list --assignee $(jira me) --status "To Do" "In Progress" "Code Review" "In Review" --plain --columns key,summary,status,priority,updated
# Check for blockers and dependencies
jira issue list --assignee $(jira me) --jql "status IN ('To Do', 'In Progress') AND (labels = 'blocked' OR description ~ 'blocked')" --plain
# Get recently updated tickets needing attention
jira issue list --assignee $(jira me) --updated -2d --status "Code Review" "In Review" "Waiting for Feedback" --plain
- ### Phase 3: Analyze with SubAgents (For Complex Workloads)
-
- If more than 5 active tickets, use parallel analysis:
-
```
- Agent 1 - Priority Analysis:
- - prompt: "Analyze these Jira tickets and score by priority. Consider: Priority field weight, due dates, recent activity, blocking status. Return sorted list with scores."
- - agent-type: "general-purpose"
- Agent 2 - Dependency Analysis:
- - prompt: "For these tickets, identify which ones are blocking others or being blocked. Map the dependency chain and impact."
- - agent-type: "general-purpose"
+ If `--include-blocked` is not set, drop blocked tickets from the main sections (still surface them under On Hold).
- Agent 3 - Context Analysis:
- - prompt: "Check git branches and recent commits. Which tickets have active development? Which need context switch?"
- - agent-type: "Explore"
- ### Phase 4: Apply Prioritization Algorithm
+ ## Phase 4: Apply Prioritization Algorithm
+ Apply this directly in the main agent — it's a short scoring pass over a daily ticket list, not worth fanning out to subagents. Only spawn parallel Explore subagents if the workload is unusually large (>30 active tickets), and only where a `Task`/subagent tool is available; otherwise do the same scoring pass sequentially inline regardless of ticket count.
+
**Priority Scoring:**
- **Critical/Urgent Priority**: Weight x 10
- **Due Soon**: Days until due date (lower = higher score)
- **Recent Activity**: Updated in last 24h = +5 points
- **Blocking Others**: Has dependents = +3 points
- **Needs Response**: Recent comments = +2 points
- **Production Bug**: Bug type with High+ priority = +4 points
**Smart Recommendations:**
```python
if ticket.priority == "Highest" and ticket.type == "Bug":
- recommendation = "DROP EVERYTHING - Critical bug"
+ recommendation = "DROP EVERYTHING - Critical bug"
elif ticket.has_recent_comments and ticket.status == "Code Review":
- recommendation = "Address review feedback ASAP"
+ recommendation = "Address review feedback ASAP"
elif ticket.is_blocking_others:
- recommendation = "Unblock others - high team impact"
+ recommendation = "Unblock others - high team impact"
elif ticket.status == "In Progress" and days_since_update > 2:
- recommendation = "Continue momentum - you were making progress"
+ recommendation = "Continue momentum - you were making progress"
else:
- recommendation = "Good candidate for focused work time"
- ### Phase 5: Generate Output
+ recommendation = "Good candidate for focused work time"
+ ```
- Use TodoWrite to track the work items identified.
+ Also check git context inline (current branch, recent commits) to see which tickets already have active work in progress, so the plan can favor continuing momentum over context-switching.
- ## Output Format
+ If `--urgent-only` is set, skip straight to just the Immediate Actions section (Priority: Highest, production bugs, blocking issues) and drop the rest of Phase 5's sections.
- For the detailed output template, see [references/output-formats.md](references/output-formats.md).
+ If `--time-box <hours>` is set, cap the Recommended Schedule at that many hours and drop lower-priority items that wouldn't fit rather than padding the schedule to fill it.
+ ## Phase 5: Generate Output
+
+ Track the identified items in a todo list (use TodoWrite if available; otherwise just list them in the report). For the detailed output template, see [references/output-formats.md](references/output-formats.md).
+
**Report sections:**
- **Immediate Actions (Do First)**: Critical/urgent tickets requiring immediate attention
- **High Impact Work (Do Today)**: High-priority items that fit into today's schedule
- **This Week (Schedule Time)**: Medium-priority items to plan for the week
- **On Hold (Monitor)**: Tickets waiting on others or blocked
- **Work Summary**: Active ticket count, estimated hours, sprint progress
- **Smart Suggestions**: Time-blocking and energy management recommendations
- **Recommended Schedule**: Hour-by-hour daily plan
## Command Options
### `--project <KEY>` or `-p <KEY>`
Specify the Jira project key explicitly.
```bash
jira-todo --project ABC
jira-todo -p PROJ
+ ```
+
### `--urgent-only`
- Show only critical/urgent tickets requiring immediate attention.
+ Show only critical/urgent tickets requiring immediate attention (Priority: Highest, production bugs, blocking issues).
```bash
jira-todo --urgent-only
- # Only shows Priority: Highest, production bugs, blocking issues
+ ```
+
### `--include-blocked`
- Include tickets that are blocked (usually filtered out).
+ Include tickets that are blocked (filtered out by default), with suggestions for unblocking.
```bash
jira-todo --include-blocked
- # Shows blocked tickets with suggestions for unblocking
+ ```
+
### `--time-box <hours>`
Optimize recommendations for specific time availability.
```bash
jira-todo --time-box 3
- # Recommends work that fits in ~3 hours
- ## Smart Features
-
- ### Context Awareness
- - Detect if work is already in progress (recent commits, branch names)
- - Suggest continuing vs. context switching based on cognitive load
- - Consider typical work patterns (morning debugging vs. afternoon planning)
-
- ### Dependency Analysis
- - Identify tickets blocking teammates
- - Show impact chain (what gets unblocked when a ticket is finished)
- - Highlight cross-team dependencies requiring coordination
-
- ### Energy Optimization
- - Suggest complex debugging for high-energy periods
- - Recommend routine tasks for low-energy times
- - Balance creative work with maintenance tasks
-
- ### Progress Tracking
- - Show sprint/milestone progress
- - Identify tickets falling behind schedule
- - Celebrate completed work momentum
+ ```
## Integration Points
- ### With jira-daily Skill
- - Previous day's work influences today's recommendations
- - Completed items inform progress tracking
-
- ### With jira-cli Skill
- - Use jira-cli for detailed command syntax and flag reference
- - Refer to jira-cli workflows for sprint and epic management patterns
-
- ### With Development Tools
- - Check current git branch for context
- - Look for recent commits related to tickets
- - Suggest based on recent file activity
+ - **jira-daily**: previous day's work influences today's recommendations
+ - **jira-cli**: use for detailed command syntax and sprint/epic management patterns
+ - **git**: check current branch and recent commits for context on active work
## Usage Examples
```bash
- # Basic usage (auto-detects project from config)
- jira-todo
-
- # Specify project explicitly
- jira-todo --project ABC
-
- # Only show urgent items
- jira-todo --urgent-only
-
- # Plan for limited time
- jira-todo --time-box 4
+ jira-todo # auto-detects project from config
+ jira-todo --project ABC # specify project explicitly
+ jira-todo --urgent-only # only show urgent items
+ jira-todo --time-box 4 # plan for limited time
+ jira-todo --include-blocked # include blocked tickets in analysis
+ ```
- # Include blocked tickets in analysis
- jira-todo --include-blocked
## Important Notes
- - **Requires jira-cli**: Install from https://github.com/ankitpokhrel/jira-cli
+ - **Requires jira-cli**: install from https://github.com/ankitpokhrel/jira-cli
- **Config location**: `~/.config/.jira/.config.yml`
- - **Project key**: Auto-detected from config or specify with `--project`
- - **Real data only**: All recommendations based on actual Jira ticket data
-
- ## Claude Code Enhanced Features
-
- This skill includes the following Claude Code-specific enhancements:
-
- ## Workflow
-
- ### Phase 2: Gather Current Workload
-
- ```bash
- # Get all assigned tickets in active statuses
- jira issue list --assignee $(jira me) --status "To Do" "In Progress" "Code Review" "In Review" --plain --columns key,summary,status,priority,updated
-
- # Check for blockers and dependencies
- jira issue list --assignee $(jira me) --jql "status IN ('To Do', 'In Progress') AND (labels = 'blocked' OR description ~ 'blocked')" --plain
-
- # Get recently updated tickets needing attention
- jira issue list --assignee $(jira me) --updated -2d --status "Code Review" "In Review" "Waiting for Feedback" --plain
- ```
-
- ### Phase 3: Analyze with SubAgents (For Complex Workloads)
-
- If more than 5 active tickets, use parallel analysis:
-
- ```
- Agent 1 - Priority Analysis:
- - prompt: "Analyze these Jira tickets and score by priority. Consider: Priority field weight, due dates, recent activity, blocking status. Return sorted list with scores."
- - subagent_type: "general-purpose"
-
- Agent 2 - Dependency Analysis:
- - prompt: "For these tickets, identify which ones are blocking others or being blocked. Map the dependency chain and impact."
- - subagent_type: "general-purpose"
-
- Agent 3 - Context Analysis:
- - prompt: "Check git branches and recent commits. Which tickets have active development? Which need context switch?"
- - subagent_type: "Explore"
- ```
-
- ### Phase 4: Apply Prioritization Algorithm
-
- **Priority Scoring:**
- - **Critical/Urgent Priority**: Weight x 10
- - **Due Soon**: Days until due date (lower = higher score)
- - **Recent Activity**: Updated in last 24h = +5 points
- - **Blocking Others**: Has dependents = +3 points
- - **Needs Response**: Recent comments = +2 points
- - **Production Bug**: Bug type with High+ priority = +4 points
-
- **Smart Recommendations:**
- ```python
- if ticket.priority == "Highest" and ticket.type == "Bug":
- recommendation = "DROP EVERYTHING - Critical bug"
- elif ticket.has_recent_comments and ticket.status == "Code Review":
- recommendation = "Address review feedback ASAP"
- elif ticket.is_blocking_others:
- recommendation = "Unblock others - high team impact"
- elif ticket.status == "In Progress" and days_since_update > 2:
- recommendation = "Continue momentum - you were making progress"
- else:
- recommendation = "Good candidate for focused work time"
- ```
-
- ### Phase 5: Generate Output
-
- Use TodoWrite to track the work items identified.
+ - **Real data only**: all recommendations are based on actual Jira ticket data