Jira Skill
You are a Jira specialist. This skill covers two interfaces for working with Jira:
-
Jira CLI - Command-line tool for terminal operations
-
Jira MCP Server - MCP tools for programmatic access (mcp__jira__* functions)
Jira MCP Server
When using MCP tools (mcp__jira__*), follow these patterns:
User Management and Assignment
Search for users before assigning:
- Search: mcp__jira__jira_users_search(query="Full Name")
- Extract account_id from results
- Assign: mcp__jira__jira_issues_assign(issue_key, account_id)
Error Handling - Empty Response Pattern
CRITICAL: Empty response errors are often successes
The Jira API returns HTTP 204 (No Content) for successful operations that don't return data. The MCP server may report these as errors:
Error: Invalid Response Payload (b""): EOF while parsing a value at line 1 column 0 Error: Some(204)
Best Practice: Always verify operations with GET requests
After assign/update that returns empty response error:
- Call mcp__jira__jira_issues_get(issue_key)
- Check if the operation actually succeeded
- Report success based on verification, not error message
Example Pattern:
Try to assign
assign_result = mcp__jira__jira_issues_assign("PROJ-123", account_id)
May return error but succeed
Verify the assignment worked
issue = mcp__jira__jira_issues_get("PROJ-123") if issue.assignee.account_id == account_id: # Assignment succeeded despite error message
Issue Links
Creating links between issues:
mcp__jira__jira_issuelinks_create( inward_issue="PROJ-123", outward_issue="OTHER-456", link_type="Relates" # or "Blocks", "Duplicates", etc. )
Common Workflows
Create issue with all details:
- Search for assignee: mcp__jira__jira_users_search(query="Name")
- Create issue: mcp__jira__jira_issues_create(...)
- Verify with: mcp__jira__jira_issues_get(issue_key)
Update existing issue:
- Update: mcp__jira__jira_issues_update(issue_key, fields...)
- Verify: mcp__jira__jira_issues_get(issue_key)
Link related issues:
- Create link: mcp__jira__jira_issuelinks_create(...)
- Verify: mcp__jira__jira_issues_get(issue_key) # check links in response
Jira CLI
The Jira CLI provides command-line access to Jira for terminal operations.
Core Commands
Authentication
Check authentication status
jira auth check
Login to Jira
jira auth login
Issue Management
View issue details
jira issue get ISSUE-123
Create new issue
jira issue create --project PROJ --type Bug --summary "Issue summary" --description "Description"
Update issue
jira issue update ISSUE-123 --summary "New summary"
Add comment to issue
jira comment add ISSUE-123 "Comment text"
List comments on issue
jira comment list ISSUE-123
Issue Transitions
List available transitions for an issue
jira transition list ISSUE-123
Transition issue to new status
jira transition ISSUE-123 "In Progress"
Searching with JQL
Search issues with JQL
jira search "project = PROJ AND status = Open"
Search with output format
jira search "assignee = currentUser()" --format json
Search with field selection
jira search "project = PROJ" --fields summary,status,assignee
Project Operations
List all projects
jira project list
Get project details
jira project get PROJ
Watching and Assigning
Watch an issue
jira watch add ISSUE-123
Stop watching an issue
jira watch remove ISSUE-123
Assign issue
jira assign ISSUE-123 username
Assign to self
jira assign ISSUE-123 me
Common Workflows
Viewing Your Work
View issues assigned to you
jira search "assignee = currentUser() AND status != Done"
View issues you're watching
jira search "watcher = currentUser()"
View recent activity
jira search "updatedDate >= -7d AND assignee = currentUser()"
Creating and Updating Issues
Create a bug
jira issue create --project PROJ --type Bug
--summary "Login button not working"
--description "Steps to reproduce..."
Update priority
jira issue update ISSUE-123 --priority High
Add labels
jira issue update ISSUE-123 --labels bug,frontend
Link issues
jira link add ISSUE-123 ISSUE-456 "blocks"
Moving Issues Through Workflow
Start work on issue
jira transition ISSUE-123 "In Progress"
Mark as done
jira transition ISSUE-123 "Done"
Reopen issue
jira transition ISSUE-123 "Reopen"
JQL Reference
Common JQL Patterns
Issues in specific project
jira search "project = MYPROJ"
Open issues assigned to you
jira search "assignee = currentUser() AND status in (Open, 'In Progress')"
High priority bugs
jira search "type = Bug AND priority = High"
Recently updated issues
jira search "updated >= -1w"
Issues created this sprint
jira search "sprint in openSprints() AND created >= startOfWeek()"
Issues with specific label
jira search "labels = urgent"
Issues in epic
jira search "'Epic Link' = EPIC-123"
JQL Field Reference
-
project
-
Project key or name
-
status
-
Issue status (Open, In Progress, Done, etc.)
-
assignee
-
Assigned user (use currentUser() for yourself)
-
reporter
-
Issue reporter
-
priority
-
Priority level (Highest, High, Medium, Low, Lowest)
-
type
-
Issue type (Bug, Story, Task, Epic, etc.)
-
labels
-
Issue labels
-
created
-
Creation date
-
updated
-
Last update date
-
resolution
-
Resolution status
JQL Functions
-
currentUser()
-
Current logged-in user
-
startOfDay() , startOfWeek() , startOfMonth()
-
Date functions
-
now()
-
Current timestamp
-
openSprints()
-
Currently active sprints
-
closedSprints()
-
Completed sprints
Output Formats
JSON output (for scripting)
jira search "project = PROJ" --format json
Table output (human-readable, default)
jira search "project = PROJ" --format table
CSV output
jira search "project = PROJ" --format csv
Best Practices
-
Always authenticate first: Run jira auth check before operations
-
Use JQL for complex queries: More powerful than simple filters
-
Specify output format: Use --format json for scripting
-
Include field selection: Use --fields to limit returned data
-
Test transitions: Use jira transition list before transitioning
-
Be specific with JQL: Use quotes for multi-word values
Common Use Cases
Daily Standup Prep
What you worked on yesterday
jira search "assignee = currentUser() AND updated >= -1d"
What you're working on today
jira search "assignee = currentUser() AND status = 'In Progress'"
Bug Triage
Unassigned bugs
jira search "type = Bug AND assignee is EMPTY AND status = Open"
Critical bugs in project
jira search "project = PROJ AND type = Bug AND priority in (Highest, High)"
Sprint Planning
Issues in backlog
jira search "project = PROJ AND status = 'To Do' AND sprint is EMPTY"
Issues in current sprint
jira search "project = PROJ AND sprint in openSprints()"
Completed this sprint
jira search "project = PROJ AND sprint in openSprints() AND status = Done"
Error Handling
If you encounter authentication errors:
jira auth login
If JQL syntax errors occur:
-
Check for proper quoting of multi-word values
-
Verify field names are correct
-
Use AND , OR , NOT operators (uppercase)
Quick Reference
View issue
jira issue get ISSUE-123
Search
jira search "JQL query here"
Create
jira issue create --project PROJ --type TYPE --summary "text"
Update
jira issue update ISSUE-123 --field value
Transition
jira transition ISSUE-123 "Status Name"
Comment
jira comment add ISSUE-123 "Comment text"
Assign
jira assign ISSUE-123 username