Safely inspect and update Jira tickets with approval before any change. — Claude Skill
Uno skill Claude per Claude Code di Softaworks — esegui /jira in Claude·Aggiornato il 12 giu 2026·vmain@3027f20
Helps view, create, comment, transition, and search Jira issues using the Jira CLI or Atlassian MCP, while checking current ticket state before writes.
- Finds the right Jira backend: local CLI, Atlassian MCP tools, or setup guidance.
- Reads the current ticket before changing status, assignee, labels, priority, or comments.
- Creates and updates issues from product notes, bug reports, PRDs, or sprint findings.
- Requires approval for write actions and verifies the Jira result afterward.
A PM or engineer switches into Jira, remembers CLI flags or field names, and risks editing a ticket without checking current state.
Run /jira with the ticket request. The skill detects the backend, fetches state first, drafts the change, asks approval, and verifies the result.
Per chi
Cosa fa
Turn a bug, PRD fragment, or sprint note into a clear Jira issue.
Inspect assigned work, blockers, stale issues, and active sprint progress.
Move a ticket only after available workflow transitions are checked.
Come funziona
Provide a Jira key, project key, JQL query, or ticket content.
Fetch the current issue state, available transitions, and relevant fields.
Draft the change in plain language for review.
Apply the approved Jira action and verify the final state.
Opzioni di input
Issue key, project key, sprint, assignee, status, or JQL query.
Esempio
Project: SHOP Problem: customers on Safari sometimes see a timeout after clicking Pay Priority: high Evidence: - 12 support reports since Monday - Mostly Safari 17 on iOS - Payment eventually succeeds if customer retries Acceptance criteria: - Customer sees success or a clear recoverable error - Support can identify affected sessions Do not create the ticket until I approve the draft.
SHOP-### High priority bug: Safari checkout timeout after Pay click. Includes impact, reproduction notes, affected browser, expected behavior, actual behavior, and acceptance criteria.
Shows the exact Jira create command or MCP call and waits for approval before writing to Jira.
After creation, fetches the returned issue key, confirms status, priority, labels, and description.
Add Support and Payments components, link support examples, and create a separate investigation task if logs are missing.
Metriche migliorate
Funziona con
Primary system for issue viewing, creation, transitions, comments, sprint status, and JQL search.
Use commits, pull requests, and code context to prepare accurate Jira ticket content.
Reference PRDs or project documentation when drafting or updating Jira issues.
Vuoi usare Jira?
Scegli come iniziare.
Installa ed esegui questo skill localmente sul tuo computer.
Apri un terminale sul tuo computer e incolla questo comando:
Questo scarica lo skill con tutti i suoi file sul tuo computer:
Aggiungi -g alla fine per renderlo disponibile in tutti i tuoi progetti.
Avvia Claude Code, poi digita il comando:
Jira
Natural language interaction with Jira. Supports multiple backends.
Backend Detection
Run this check first to determine which backend to use:
1. Check if jira CLI is available:
→ Run: which jira
→ If found: USE CLI BACKEND
2. If no CLI, check for Atlassian MCP:
→ Look for mcp__atlassian__* tools
→ If available: USE MCP BACKEND
3. If neither available:
→ GUIDE USER TO SETUP
| Backend | When to Use | Reference |
|---|---|---|
| CLI | jira command available | references/commands.md |
| MCP | Atlassian MCP tools available | references/mcp.md |
| None | Neither available | Guide to install CLI |
Quick Reference (CLI)
Skip this section if using MCP backend.
| Intent | Command |
|---|---|
| View issue | jira issue view ISSUE-KEY |
| List my issues | jira issue list -a$(jira me) |
| My in-progress | jira issue list -a$(jira me) -s"In Progress" |
| Create issue | jira issue create -tType -s"Summary" -b"Description" |
| Move/transition | jira issue move ISSUE-KEY "State" |
| Assign to me | jira issue assign ISSUE-KEY $(jira me) |
| Unassign | jira issue assign ISSUE-KEY x |
| Add comment | jira issue comment add ISSUE-KEY -b"Comment text" |
| Open in browser | jira open ISSUE-KEY |
| Current sprint | jira sprint list --state active |
| Who am I | jira me |
Quick Reference (MCP)
Skip this section if using CLI backend.
| Intent | MCP Tool |
|---|---|
| Search issues | mcp__atlassian__searchJiraIssuesUsingJql |
| View issue | mcp__atlassian__getJiraIssue |
| Create issue | mcp__atlassian__createJiraIssue |
| Update issue | mcp__atlassian__editJiraIssue |
| Get transitions | mcp__atlassian__getTransitionsForJiraIssue |
| Transition | mcp__atlassian__transitionJiraIssue |
| Add comment | mcp__atlassian__addCommentToJiraIssue |
| User lookup | mcp__atlassian__lookupJiraAccountId |
| List projects | mcp__atlassian__getVisibleJiraProjects |
See references/mcp.md for full MCP patterns.
Triggers
- "create a jira ticket"
- "show me PROJ-123"
- "list my tickets"
- "move ticket to done"
- "what's in the current sprint"
Issue Key Detection
Issue keys follow the pattern: [A-Z]+-[0-9]+ (e.g., PROJ-123, ABC-1).
When a user mentions an issue key in conversation:
- CLI:
jira issue view KEYorjira open KEY - MCP:
mcp__atlassian__jira_get_issuewith the key
Workflow
Creating tickets:
- Research context if user references code/tickets/PRs
- Draft ticket content
- Review with user
- Create using appropriate backend
Updating tickets:
- Fetch issue details first
- Check status (careful with in-progress tickets)
- Show current vs proposed changes
- Get approval before updating
- Add comment explaining changes
Before Any Operation
Ask yourself:
-
What's the current state? — Always fetch the issue first. Don't assume status, assignee, or fields are what user thinks they are.
-
Who else is affected? — Check watchers, linked issues, parent epics. A "simple edit" might notify 10 people.
-
Is this reversible? — Transitions may have one-way gates. Some workflows require intermediate states. Description edits have no undo.
-
Do I have the right identifiers? — Issue keys, transition IDs, account IDs. Display names don't work for assignment (MCP).
NEVER
-
NEVER transition without fetching current status — Workflows may require intermediate states. "To Do" → "Done" might fail silently if "In Progress" is required first.
-
NEVER assign using display name (MCP) — Only account IDs work. Always call
lookupJiraAccountIdfirst, or assignment silently fails. -
NEVER edit description without showing original — Jira has no undo. User must see what they're replacing.
-
NEVER use
--no-inputwithout all required fields (CLI) — Fails silently with cryptic errors. Check project's required fields first. -
NEVER assume transition names are universal — "Done", "Closed", "Complete" vary by project. Always get available transitions first.
-
NEVER bulk-modify without explicit approval — Each ticket change notifies watchers. 10 edits = 10 notification storms.
Safety
- Always show the command/tool call before running it
- Always get approval before modifying tickets
- Preserve original information when editing
- Verify updates after applying
- Always surface authentication issues clearly so the user can resolve them
No Backend Available
If neither CLI nor MCP is available, guide the user:
To use Jira, you need one of:
1. **jira CLI** (recommended):
https://github.com/ankitpokhrel/jira-cli
Install: brew install ankitpokhrel/jira-cli/jira-cli
Setup: jira init
2. **Atlassian MCP**:
Configure in your MCP settings with Atlassian credentials.
Deep Dive
LOAD reference when:
- Creating issues with complex fields or multi-line content
- Building JQL queries beyond simple filters
- Troubleshooting errors or authentication issues
- Working with transitions, linking, or sprints
Do NOT load reference for:
- Simple view/list operations (Quick Reference above is sufficient)
- Basic status checks (
jira issue view KEY) - Opening issues in browser
| Task | Load Reference? |
|---|---|
| View single issue | No |
| List my tickets | No |
| Create with description | Yes — CLI needs /tmp pattern |
| Transition issue | Yes — need transition ID workflow |
| JQL search | Yes — for complex queries |
| Link issues | Yes — MCP limitation, need script |
References:
- CLI patterns:
references/commands.md - MCP patterns:
references/mcp.md
Documenti di riferimento
name: jira description: Use when the user mentions Jira issues (e.g., "PROJ-123"), asks about tickets, wants to create/view/update issues, check sprint status, or manage their Jira workflow. Triggers on keywords like "jira", "issue", "ticket", "sprint", "backlog", or issue key patterns.
Jira
Natural language interaction with Jira. Supports multiple backends.
Backend Detection
Run this check first to determine which backend to use:
1. Check if jira CLI is available:
→ Run: which jira
→ If found: USE CLI BACKEND
2. If no CLI, check for Atlassian MCP:
→ Look for mcp__atlassian__* tools
→ If available: USE MCP BACKEND
3. If neither available:
→ GUIDE USER TO SETUP
| Backend | When to Use | Reference |
|---|---|---|
| CLI | jira command available | references/commands.md |
| MCP | Atlassian MCP tools available | references/mcp.md |
| None | Neither available | Guide to install CLI |
Quick Reference (CLI)
Skip this section if using MCP backend.
| Intent | Command |
|---|---|
| View issue | jira issue view ISSUE-KEY |
| List my issues | jira issue list -a$(jira me) |
| My in-progress | jira issue list -a$(jira me) -s"In Progress" |
| Create issue | jira issue create -tType -s"Summary" -b"Description" |
| Move/transition | jira issue move ISSUE-KEY "State" |
| Assign to me | jira issue assign ISSUE-KEY $(jira me) |
| Unassign | jira issue assign ISSUE-KEY x |
| Add comment | jira issue comment add ISSUE-KEY -b"Comment text" |
| Open in browser | jira open ISSUE-KEY |
| Current sprint | jira sprint list --state active |
| Who am I | jira me |
Quick Reference (MCP)
Skip this section if using CLI backend.
| Intent | MCP Tool |
|---|---|
| Search issues | mcp__atlassian__searchJiraIssuesUsingJql |
| View issue | mcp__atlassian__getJiraIssue |
| Create issue | mcp__atlassian__createJiraIssue |
| Update issue | mcp__atlassian__editJiraIssue |
| Get transitions | mcp__atlassian__getTransitionsForJiraIssue |
| Transition | mcp__atlassian__transitionJiraIssue |
| Add comment | mcp__atlassian__addCommentToJiraIssue |
| User lookup | mcp__atlassian__lookupJiraAccountId |
| List projects | mcp__atlassian__getVisibleJiraProjects |
See references/mcp.md for full MCP patterns.
Triggers
- "create a jira ticket"
- "show me PROJ-123"
- "list my tickets"
- "move ticket to done"
- "what's in the current sprint"
Issue Key Detection
Issue keys follow the pattern: [A-Z]+-[0-9]+ (e.g., PROJ-123, ABC-1).
When a user mentions an issue key in conversation:
- CLI:
jira issue view KEYorjira open KEY - MCP:
mcp__atlassian__jira_get_issuewith the key
Workflow
Creating tickets:
- Research context if user references code/tickets/PRs
- Draft ticket content
- Review with user
- Create using appropriate backend
Updating tickets:
- Fetch issue details first
- Check status (careful with in-progress tickets)
- Show current vs proposed changes
- Get approval before updating
- Add comment explaining changes
Before Any Operation
Ask yourself:
-
What's the current state? — Always fetch the issue first. Don't assume status, assignee, or fields are what user thinks they are.
-
Who else is affected? — Check watchers, linked issues, parent epics. A "simple edit" might notify 10 people.
-
Is this reversible? — Transitions may have one-way gates. Some workflows require intermediate states. Description edits have no undo.
-
Do I have the right identifiers? — Issue keys, transition IDs, account IDs. Display names don't work for assignment (MCP).
NEVER
-
NEVER transition without fetching current status — Workflows may require intermediate states. "To Do" → "Done" might fail silently if "In Progress" is required first.
-
NEVER assign using display name (MCP) — Only account IDs work. Always call
lookupJiraAccountIdfirst, or assignment silently fails. -
NEVER edit description without showing original — Jira has no undo. User must see what they're replacing.
-
NEVER use
--no-inputwithout all required fields (CLI) — Fails silently with cryptic errors. Check project's required fields first. -
NEVER assume transition names are universal — "Done", "Closed", "Complete" vary by project. Always get available transitions first.
-
NEVER bulk-modify without explicit approval — Each ticket change notifies watchers. 10 edits = 10 notification storms.
Safety
- Always show the command/tool call before running it
- Always get approval before modifying tickets
- Preserve original information when editing
- Verify updates after applying
- Always surface authentication issues clearly so the user can resolve them
No Backend Available
If neither CLI nor MCP is available, guide the user:
To use Jira, you need one of:
1. **jira CLI** (recommended):
https://github.com/ankitpokhrel/jira-cli
Install: brew install ankitpokhrel/jira-cli/jira-cli
Setup: jira init
2. **Atlassian MCP**:
Configure in your MCP settings with Atlassian credentials.
Deep Dive
LOAD reference when:
- Creating issues with complex fields or multi-line content
- Building JQL queries beyond simple filters
- Troubleshooting errors or authentication issues
- Working with transitions, linking, or sprints
Do NOT load reference for:
- Simple view/list operations (Quick Reference above is sufficient)
- Basic status checks (
jira issue view KEY) - Opening issues in browser
| Task | Load Reference? |
|---|---|
| View single issue | No |
| List my tickets | No |
| Create with description | Yes — CLI needs /tmp pattern |
| Transition issue | Yes — need transition ID workflow |
| JQL search | Yes — for complex queries |
| Link issues | Yes — MCP limitation, need script |
References:
- CLI patterns:
references/commands.md - MCP patterns:
references/mcp.md
Jira Skill
Natural language interaction with Jira for managing issues, sprints, and workflows. This skill enables Claude to view, create, update, and transition Jira tickets using conversational commands.
Purpose
The Jira skill bridges the gap between natural language requests and Jira operations. Instead of remembering specific CLI commands or API calls, you can simply tell Claude what you want to do with your Jira tickets, and the skill handles the technical details.
Key benefits:
- Conversational interface: Ask questions like "What are my open tickets?" or "Move PROJ-123 to Done"
- Dual backend support: Works with either the jira CLI or Atlassian MCP
- Safety-first approach: Always fetches current state before modifications and requires approval for changes
- Context-aware: Detects issue keys (e.g., PROJ-123) in conversation and offers relevant actions
When to Use
This skill activates when you:
- Mention Jira issue keys (e.g., "Show me PROJ-123", "What's the status of ABC-456?")
- Ask about tickets ("List my open tickets", "What's assigned to me?")
- Want to create issues ("Create a bug ticket for the login issue")
- Need to update tickets ("Move this to In Progress", "Assign PROJ-123 to me")
- Check sprint status ("What's in the current sprint?", "Show sprint backlog")
- Manage workflow ("Close this ticket", "Add a comment to PROJ-123")
Trigger phrases include:
- "create a jira ticket"
- "show me PROJ-123"
- "list my tickets"
- "move ticket to done"
- "what's in the current sprint"
- Any mention of "jira", "issue", "ticket", "sprint", or "backlog"
How It Works
1. Backend Detection
When activated, the skill first determines which backend is available:
- CLI backend: Checks if the
jiracommand is installed - MCP backend: Looks for Atlassian MCP tools (
mcp__atlassian__*) - No backend: Guides you to install one of the above
2. Operation Execution
Once a backend is detected:
- Read operations (viewing, listing): Execute immediately and display results
- Write operations (create, update, transition):
- Fetch current issue state first
- Show proposed changes
- Request user approval
- Execute the operation
- Verify the result
3. Safety Checks
Before any modification, the skill:
- Fetches current issue state (never assumes status or assignee)
- Checks who else might be affected (watchers, linked issues)
- Verifies the operation is reversible or warns if not
- Confirms correct identifiers (transition IDs, account IDs)
Key Features
Issue Management
- View issues: See full details including description, status, assignee, and comments
- List issues: Filter by assignee, status, type, priority, labels, or custom JQL
- Create issues: Create tickets with full field support including multi-line descriptions
- Update issues: Modify summary, description, priority, labels, and custom fields
- Assign issues: Assign to yourself, others, or unassign
Workflow Operations
- Transition issues: Move tickets through workflow states (To Do, In Progress, Done)
- Add comments: Document progress or decisions on tickets
- Link issues: Create relationships between tickets (blocks, relates to, duplicates)
Sprint Management
- List sprints: View active, future, or closed sprints
- Sprint issues: See what's in the current sprint
- Add to sprint: Move issues into a sprint
Search and Query
- Natural language search: Find issues matching text queries
- JQL support: Use full Jira Query Language for complex searches
- Filter combinations: Combine assignee, status, type, and date filters
Usage Examples
Viewing Issues
"Show me PROJ-123"
"What's the status of ABC-456?"
"Display the details of that bug ticket"
Listing Issues
"List my open tickets"
"What issues are in progress?"
"Show me high priority bugs"
"Find all tickets updated this week"
"What's assigned to [email protected]?"
Creating Issues
"Create a bug ticket for the login timeout issue"
"Make a new task for updating the documentation"
"Create a story for implementing the export feature with acceptance criteria"
Updating Issues
"Move PROJ-123 to In Progress"
"Assign this ticket to me"
"Mark the bug as done"
"Add a comment saying the fix is deployed"
"Change the priority to high"
Sprint Operations
"What's in the current sprint?"
"Show me the active sprint"
"List sprint backlog items"
Advanced JQL Queries
"Find all bugs created this week"
"Show unassigned high-priority issues"
"List tickets I updated recently"
"Find issues blocked by PROJ-100"
Prerequisites
You need one of the following backends configured:
Option 1: jira CLI (Recommended)
The jira CLI provides fast, local access to Jira.
Installation:
# macOS
brew install ankitpokhrel/jira-cli/jira-cli
# Linux
# Download from https://github.com/ankitpokhrel/jira-cli/releases
Setup:
jira init
Follow the prompts to configure your Jira server URL and authentication.
Option 2: Atlassian MCP
The Atlassian MCP provides Jira access through Model Context Protocol.
Configure the Atlassian MCP in your Claude settings with your Atlassian credentials. This enables access to mcp__atlassian__* tools.
Output
Issue View
When viewing an issue, you'll see:
- Issue key and summary
- Status, priority, and type
- Assignee and reporter
- Description
- Recent comments
- Linked issues
Issue Lists
Lists display in a table format showing:
- Issue key
- Summary
- Status
- Assignee
- Priority
Operation Results
After modifications, the skill:
- Confirms the action was successful
- Shows the updated state
- Reports any errors with resolution guidance
Best Practices
Before Creating Issues
- Check if a similar issue already exists
- Understand the project's required fields
- Use clear, descriptive summaries
- Include acceptance criteria for stories
Before Transitioning
- Let the skill fetch available transitions (they vary by project)
- Some workflows require intermediate states
- Add comments explaining why you're making the transition
For Assignments
- With MCP, always use account IDs (not display names)
- Verify the user exists in the project
- Consider notifying the assignee separately
For Bulk Operations
- Request explicit approval before bulk changes
- Each change notifies watchers
- Consider timing to avoid notification storms
General Tips
- Always let the skill fetch current state before modifications
- Preserve original information when editing descriptions
- Use the "open in browser" feature for complex editing
- Check linked issues before making major changes
Safety Guidelines
The skill follows strict safety protocols:
Always:
- Shows commands/tool calls before executing
- Requests approval before modifications
- Preserves original content when editing
- Verifies updates after applying
- Surfaces authentication issues clearly
Never:
- Transitions without fetching current status first
- Assigns using display names with MCP (only account IDs work)
- Edits descriptions without showing the original
- Uses
--no-inputwithout all required fields - Assumes transition names are universal across projects
- Bulk-modifies without explicit approval
Troubleshooting
Authentication Issues
CLI:
# Reinitialize
jira init
# Verify connection
jira me
MCP:
- Check MCP connection status
- Reconnect the Atlassian service
- Verify API token permissions
Common Errors
| Error | Cause | Solution |
|---|---|---|
| "Issue not found" | Invalid key | Verify the issue key is correct |
| "Transition not available" | Workflow constraint | Check available transitions first |
| "Permission denied" | Project access | Verify your Jira permissions |
| "Invalid assignee" | Wrong ID format | Use account ID, not display name |
| "Required field missing" | Project config | Check project's required fields |
Backend Not Available
If neither CLI nor MCP is available:
-
Install jira CLI (recommended):
brew install ankitpokhrel/jira-cli/jira-cli jira init -
Or configure Atlassian MCP in your Claude settings
Reference Files
For advanced usage, the skill includes detailed reference documentation:
references/commands.md: Complete CLI command reference with examplesreferences/mcp.md: Full MCP tool reference with JQL query guide
These are loaded on-demand when handling complex operations like:
- Multi-line descriptions
- Complex JQL queries
- Transition workflows
- Issue linking
Commands Reference
Complete reference for the jira CLI.
Viewing Issues
# View single issue
jira issue view ISSUE-KEY
# View with more comments
jira issue view ISSUE-KEY --comments 5
# Get raw JSON
jira issue view ISSUE-KEY --raw
Listing Issues
# List all issues in project
jira issue list
# List my issues
jira issue list -a$(jira me)
# Filter by status (use quotes for multi-word statuses)
jira issue list -s"In Progress"
jira issue list -s"To Do"
jira issue list -sDone
# Filter by type
jira issue list -tBug
jira issue list -tStory
jira issue list -tTask
jira issue list -tEpic
# Filter by priority
jira issue list -yHigh
jira issue list -yCritical
# Filter by label
jira issue list -lurgent -lbug
# Combine filters
jira issue list -a$(jira me) -s"In Progress" -yHigh
# Search with text
jira issue list "login error"
# Recently accessed
jira issue list --history
# Issues I'm watching
jira issue list -w
# Created/updated filters
jira issue list --created today
jira issue list --created week
jira issue list --updated -2d
# Plain output for scripting
jira issue list --plain --no-headers
# Specific columns
jira issue list --plain --columns key,summary,status,assignee
# Raw JQL query
jira issue list -q"status = 'In Progress' AND assignee = currentUser()"
# Paginate results
jira issue list --paginate 20
jira issue list --paginate 10:50 # start:limit
Creating Issues
# Interactive creation
jira issue create
# Non-interactive with all fields
jira issue create \
-tBug \
-s"Login button not working" \
-b"Users cannot click the login button on Safari" \
-yHigh \
-lbug -lurgent
# Create and assign to self
jira issue create -tTask -s"Summary" -a$(jira me)
# Create subtask (requires parent)
jira issue create -tSub-task -P"PROJ-123" -s"Subtask summary"
# Create with custom fields
jira issue create -tStory -s"Summary" --custom story-points=3
# Skip prompts for optional fields
jira issue create -tTask -s"Quick task" --no-input
# Open in browser after creation
jira issue create -tBug -s"Bug title" --web
# Read description from file
jira issue create -tStory -s"Summary" --template /path/to/template.md
# Read description from stdin
echo "Description here" | jira issue create -tTask -s"Summary"
Multi-line content: The CLI chokes on multi-line strings. Write to /tmp first:
cat > /tmp/jira_body.md <<'EOF'
## Description
User needs ability to export data...
## Acceptance Criteria
- Export works for CSV
- Export works for JSON
EOF
jira issue create --no-input \
-tStory \
-pPROJ \
-s"Add export functionality" \
-b"$(cat /tmp/jira_body.md)"
Transitioning Issues
# Move to a state
jira issue move ISSUE-KEY "In Progress"
jira issue move ISSUE-KEY "Done"
jira issue move ISSUE-KEY "To Do"
# Move with comment
jira issue move ISSUE-KEY "Done" --comment "Completed the implementation"
# Move and set resolution
jira issue move ISSUE-KEY "Done" -R"Fixed"
# Move and reassign
jira issue move ISSUE-KEY "In Review" -a"[email protected]"
# Open in browser after transition
jira issue move ISSUE-KEY "Done" --web
Assigning Issues
# Assign to specific user
jira issue assign ISSUE-KEY "[email protected]"
jira issue assign ISSUE-KEY "John Doe"
# Assign to self
jira issue assign ISSUE-KEY $(jira me)
# Assign to default assignee
jira issue assign ISSUE-KEY default
# Unassign
jira issue assign ISSUE-KEY x
Comments
# Add comment
jira issue comment add ISSUE-KEY -b"This is my comment"
# Add comment from file
jira issue comment add ISSUE-KEY --template /path/to/comment.md
Sprints
# List sprints
jira sprint list
# Active sprint only
jira sprint list --state active
# Add issue to sprint
jira sprint add SPRINT-ID ISSUE-KEY
# Close sprint
jira sprint close SPRINT-ID
Linking Issues
| Relationship | Meaning |
|---|---|
Blocks | First ticket blocks second |
Relates | General relationship |
Duplicate | Same work |
Epic-Story | Story belongs to Epic |
# Basic link
jira issue link PROJ-123 PROJ-456 "Relates"
# Blocker (blocker comes first)
jira issue link PROJ-100 PROJ-200 "Blocks"
# Meaning: PROJ-100 blocks PROJ-200
# Link to epic
jira issue link PROJ-EPIC PROJ-STORY "Epic-Story"
Other Commands
# Open issue in browser
jira open ISSUE-KEY
# Show current user
jira me
# Server info
jira serverinfo
# List projects
jira project list
# List boards
jira board list
MCP Reference
Complete reference for Atlassian Jira operations via MCP.
MCP Tool Reference
Search Operations
mcp__atlassian__searchJiraIssuesUsingJql
Search Jira using JQL (Jira Query Language).
Parameters:
jql(required): JQL query stringmaxResults: Maximum results (default: 50)startAt: Pagination offsetfields: Comma-separated fields to return
Example:
mcp__atlassian__searchJiraIssuesUsingJql(jql: "project = PROJ AND status = 'In Progress'")
Issue Operations
mcp__atlassian__getJiraIssue
Retrieve full issue details by key.
Parameters:
issueKey(required): Issue key (e.g., "PROJ-123")expand: Additional data (changelog, transitions, renderedFields)
Example:
mcp__atlassian__getJiraIssue(issueKey: "PROJ-123")
mcp__atlassian__createJiraIssue
Create a new issue.
Parameters:
projectKey(required): Target projectissueType(required): Issue type (Story, Bug, Task, Epic, etc.)summary(required): Issue titledescription: Detailed descriptionassignee: Account ID (use lookupJiraAccountId first)priority: Priority name (Highest, High, Medium, Low, Lowest)labels: Array of labelscomponents: Array of component names- Custom fields as needed
Example:
mcp__atlassian__createJiraIssue(
projectKey: "PROJ",
issueType: "Story",
summary: "Implement user authentication",
description: "Add OAuth2 authentication flow...",
labels: ["backend", "security"]
)
mcp__atlassian__editJiraIssue
Update an existing issue.
Parameters:
issueKey(required): Issue to update- Any field to update (summary, description, assignee, etc.)
Example:
mcp__atlassian__editJiraIssue(
issueKey: "PROJ-123",
description: "Updated description with more details..."
)
Transition Operations
mcp__atlassian__getTransitionsForJiraIssue
Get available status transitions for an issue.
Parameters:
issueKey(required): Issue key
Returns: List of available transitions with IDs and names.
mcp__atlassian__transitionJiraIssue
Change issue status.
Parameters:
issueKey(required): Issue keytransitionId(required): Transition ID from getTransitionscomment: Optional comment for the transition
Workflow:
- Get transitions:
getTransitionsForJiraIssue("PROJ-123") - Find desired transition ID from results
- Execute:
transitionJiraIssue(issueKey: "PROJ-123", transitionId: "31")
Comment Operations
mcp__atlassian__addCommentToJiraIssue
Add a comment to an issue.
Parameters:
issueKey(required): Issue keybody(required): Comment text (supports Jira markdown)
User Operations
mcp__atlassian__lookupJiraAccountId
Find user account ID for assignments.
Parameters:
query(required): Search by display name, email, or username
Example:
mcp__atlassian__lookupJiraAccountId(query: "[email protected]")
Usage: Always look up account IDs before assigning issues.
Project Operations
mcp__atlassian__getVisibleJiraProjects
List available Jira projects.
Parameters:
maxResults: Maximum results
mcp__atlassian__getJiraProjectIssueTypesMetadata
Get issue types and required fields for a project.
Parameters:
projectKey(required): Project key
Usage: Call before creating issues to understand required fields.
mcp__atlassian__getJiraIssueTypeMetaWithFields
Get detailed field metadata for an issue type.
Parameters:
projectKey(required): Project keyissueTypeId(required): Issue type ID
JQL (Jira Query Language) Reference
Basic Syntax
field operator value [AND|OR field operator value]
Common Fields
| Field | Description | Example |
|---|---|---|
project | Project key | project = "PROJ" |
issuetype | Issue type | issuetype = Bug |
status | Issue status | status = "In Progress" |
assignee | Assigned user | assignee = currentUser() |
reporter | Issue creator | reporter = "jobarksdale" |
priority | Priority level | priority = High |
labels | Issue labels | labels = "backend" |
component | Components | component = "API" |
created | Creation date | created >= -30d |
updated | Last update | updated >= -7d |
resolved | Resolution date | resolved >= startOfMonth() |
sprint | Sprint name/ID | sprint in openSprints() |
epic | Parent epic | "Epic Link" = PROJ-100 |
parent | Parent issue | parent = PROJ-50 |
text | Full-text search | text ~ "authentication" |
summary | Title search | summary ~ "login" |
description | Description search | description ~ "OAuth" |
Operators
| Operator | Meaning | Example |
|---|---|---|
= | Exact match | status = Done |
!= | Not equal | status != Closed |
~ | Contains (text) | summary ~ "auth*" |
!~ | Does not contain | summary !~ "test" |
> >= < <= | Comparisons | priority >= High |
IN | Multiple values | status IN (Open, "In Progress") |
NOT IN | Exclude values | status NOT IN (Done, Closed) |
IS | Null check | assignee IS EMPTY |
IS NOT | Not null | assignee IS NOT EMPTY |
WAS | Historical value | status WAS "In Progress" |
CHANGED | Field changed | status CHANGED |
Functions
| Function | Description | Example |
|---|---|---|
currentUser() | Logged-in user | assignee = currentUser() |
now() | Current timestamp | created <= now() |
startOfDay() | Midnight today | updated >= startOfDay() |
startOfWeek() | Start of week | created >= startOfWeek() |
startOfMonth() | Start of month | created >= startOfMonth() |
endOfDay() | End of today | due <= endOfDay() |
openSprints() | Active sprints | sprint in openSprints() |
closedSprints() | Completed sprints | sprint in closedSprints() |
linkedIssues() | Linked issues | issue in linkedIssues("PROJ-123") |
Relative Dates
# Days
created >= -7d # Last 7 days
updated >= -30d # Last 30 days
# Weeks
created >= -2w # Last 2 weeks
# Months
created >= -1M # Last month
# Specific date
created >= "2024-01-01"
Ordering
# Order by priority, highest first
project = PROJ ORDER BY priority DESC
# Multiple sort fields
project = PROJ ORDER BY status ASC, created DESC
Complex Query Examples
# My open issues, high priority
assignee = currentUser() AND status NOT IN (Done, Closed) AND priority >= High
# Bugs created this week
issuetype = Bug AND created >= startOfWeek() ORDER BY priority DESC
# Epics in progress with stories
issuetype = Epic AND status = "In Progress" AND issueFunction in hasLinks("is parent of")
# Issues updated by me recently
updatedBy = currentUser() AND updated >= -7d ORDER BY updated DESC
# Blocked issues
status = Blocked OR "Flagged" = "Impediment"
# Issues linked to specific epic
"Epic Link" = PROJ-100 AND status != Done
# Sprint backlog items
sprint in openSprints() AND status = "To Do" ORDER BY rank ASC
# Unassigned high-priority bugs
issuetype = Bug AND assignee IS EMPTY AND priority >= High
# Issues I'm watching
watcher = currentUser()
# Recently resolved by team
resolved >= -7d AND project = PROJ ORDER BY resolved DESC
Issue Linking
Limitation
The Atlassian MCP does not currently support creating issue links. Use the bundled jira-link-issues script instead.
Link Types
| Link Type | Inward | Outward | Use Case |
|---|---|---|---|
| Depends On | is dependency of | depends on | Task dependencies |
| Blocks | is blocked by | blocks | Blocking relationships |
| Relates To | relates to | relates to | General relationships |
| Clones | is cloned by | clones | Cloned issues |
| Duplicates | is duplicated by | duplicates | Duplicate issues |
Script Usage
# Link PROJ-123 depends on PROJ-456
~/.claude/skills/jira/jira-link-issues PROJ-123 PROJ-456 "Depends On"
# PROJ-100 blocks PROJ-200
~/.claude/skills/jira/jira-link-issues PROJ-100 PROJ-200 "Blocks"
# General relationship
~/.claude/skills/jira/jira-link-issues PROJ-50 PROJ-75 "Relates To"
Finding Link Types
Query the Jira API to get available link types:
curl -s -u "$JIRA_USER:$JIRA_API_TOKEN" \
"$JIRA_BASE_URL/rest/api/3/issueLinkType" | jq '.issueLinkTypes[].name'
Required environment variables:
JIRA_BASE_URL: Your Atlassian instance (e.g.,https://yourcompany.atlassian.net)JIRA_USER: Your email addressJIRA_API_TOKEN: API token from Atlassian account settings
Description Formatting
Jira Markup (Wiki Style)
h1. Heading 1
h2. Heading 2
h3. Heading 3
*bold text*
_italic text_
-strikethrough-
+underline+
{code:java}
public class Example {
// code here
}
{code}
{quote}
Quoted text here
{quote}
* Bullet list
** Nested bullet
# Numbered list
## Nested number
[Link text|https://example.com]
[Issue link|PROJ-123]
||Header 1||Header 2||
|Cell 1|Cell 2|
{panel:title=Panel Title}
Panel content here
{panel}
Atlassian Document Format (ADF)
For createJiraIssue, descriptions may use ADF format:
{
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{"type": "text", "text": "Description text"}
]
}
]
}
Error Handling
Common Errors
| HTTP Code | Error | Cause | Resolution |
|---|---|---|---|
| 400 | Bad Request | Invalid field values | Check required fields for issue type |
| 401 | Unauthorized | Invalid credentials | Run /mcp to reconnect |
| 403 | Forbidden | Insufficient permissions | Check project permissions |
| 404 | Not Found | Issue/project doesn't exist | Verify key is correct |
| 422 | Unprocessable | Validation failed | Check field constraints |
Authentication Issues
If MCP tools return authentication errors:
- Run
/mcpto check connection status - Reconnect the Atlassian MCP service if disconnected
- Verify API token permissions in Atlassian settings
Field Validation
Before creating issues:
- Get project metadata:
getJiraProjectIssueTypesMetadata - Check required fields for the issue type
- Look up user account IDs for assignee fields
- Verify custom field IDs and valid values
Common Workflows
Move Ticket to Done
1. Get available transitions:
mcp__atlassian__getTransitionsForJiraIssue(issueKey: "PROJ-123")
→ Returns list with transition IDs
2. Find "Done" transition ID from response
3. Execute transition:
mcp__atlassian__transitionJiraIssue(
issueKey: "PROJ-123",
transitionId: "done_id"
)
4. Add comment:
mcp__atlassian__addCommentToJiraIssue(
issueKey: "PROJ-123",
body: "Completed and deployed"
)
Create and Assign Issue
1. Look up user account ID:
mcp__atlassian__lookupJiraAccountId(query: "[email protected]")
→ Returns account ID
2. Create issue with assignment:
mcp__atlassian__createJiraIssue(
projectKey: "PROJ",
issueType: "Task",
summary: "Implement feature X",
description: "Details here...",
assignee: "account_id_from_step_1"
)
List My In-Progress Issues
mcp__atlassian__searchJiraIssuesUsingJql(
jql: "assignee = currentUser() AND status = 'In Progress' ORDER BY updated DESC"
)
Get Project Info Before Creating
1. List available projects:
mcp__atlassian__getVisibleJiraProjects()
2. Get issue types for project:
mcp__atlassian__getJiraProjectIssueTypesMetadata(projectKey: "PROJ")
3. Create issue with correct type:
mcp__atlassian__createJiraIssue(
projectKey: "PROJ",
issueType: "Story",
summary: "...",
description: "..."
)