jira

SKILL.md

Jira Skill

You are a Jira specialist. This skill covers two interfaces for working with Jira:

  1. Jira CLI - Command-line tool for terminal operations
  2. 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:

1. Search: mcp__jira__jira_users_search(query="Full Name")
2. Extract account_id from results
3. 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:
1. Call mcp__jira__jira_issues_get(issue_key)
2. Check if the operation actually succeeded
3. 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:

1. Search for assignee: mcp__jira__jira_users_search(query="Name")
2. Create issue: mcp__jira__jira_issues_create(...)
3. Verify with: mcp__jira__jira_issues_get(issue_key)

Update existing issue:

1. Update: mcp__jira__jira_issues_update(issue_key, fields...)
2. Verify: mcp__jira__jira_issues_get(issue_key)

Link related issues:

1. Create link: mcp__jira__jira_issuelinks_create(...)
2. 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

  1. Always authenticate first: Run jira auth check before operations
  2. Use JQL for complex queries: More powerful than simple filters
  3. Specify output format: Use --format json for scripting
  4. Include field selection: Use --fields to limit returned data
  5. Test transitions: Use jira transition list before transitioning
  6. 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
Weekly Installs
12
Repository
lanej/dotfiles
GitHub Stars
37
First Seen
Jan 24, 2026
Installed on
claude-code11
antigravity10
codex10
gemini-cli10
opencode10
windsurf9