home / skills / openclaw / skills / jira

jira skill

/skills/jdrhyne/jira

This skill helps you manage Jira issues by creating, viewing, updating, and tracking sprint progress across backends.

npx playbooks add skill openclaw/skills --skill jira

Review the files below or copy the command above to add this skill to your agents.

Files (5)
SKILL.md
6.2 KB
---
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.
metadata:
  {
    "openclaw":
      {
        "emoji": "🎫",
        "requires":
          {
            "anyBins": ["jira"],
            "env": ["JIRA_API_TOKEN"],
          },
      },
  }
---

# 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 KEY` or `jira open KEY`
- **MCP:** `mcp__atlassian__jira_get_issue` with the key

---

## Workflow

**Creating tickets:**
1. Research context if user references code/tickets/PRs
2. Draft ticket content
3. Review with user
4. Create using appropriate backend

**Updating tickets:**
1. Fetch issue details first
2. Check status (careful with in-progress tickets)
3. Show current vs proposed changes
4. Get approval before updating
5. Add comment explaining changes

---

## Before Any Operation

Ask yourself:

1. **What's the current state?** β€” Always fetch the issue first. Don't assume status, assignee, or fields are what user thinks they are.

2. **Who else is affected?** β€” Check watchers, linked issues, parent epics. A "simple edit" might notify 10 people.

3. **Is this reversible?** β€” Transitions may have one-way gates. Some workflows require intermediate states. Description edits have no undo.

4. **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 `lookupJiraAccountId` first, or assignment silently fails.

- **NEVER edit description without showing original** β€” Jira has no undo. User must see what they're replacing.

- **NEVER use `--no-input` without 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`

Overview

This skill provides natural-language interaction with Jira to create, view, update, and manage issues and sprints across multiple backends. It detects issue keys and relevant triggers, chooses the appropriate backend (CLI or Atlassian MCP), and guides or executes actions while enforcing safe workflow practices. The skill emphasizes fetching current state, showing commands before execution, and getting approval for changes.

How this skill works

The skill inspects user text for Jira keywords and issue key patterns like PROJ-123. It runs a backend detection sequence: prefer the jira CLI if available, fall back to Atlassian MCP tools if present, or provide setup guidance when neither is installed. For CLI it maps intents to jira commands; for MCP it maps intents to specific mcp__atlassian__ tool calls. It always fetches issue details first, shows the planned command or API call, and asks for confirmation before applying changes.

When to use it

  • When the user mentions an issue key (e.g., PROJ-123) or asks to view a ticket
  • To create or draft a new Jira issue from conversation context
  • To transition, assign, or comment on issues while preserving workflow safety
  • To list personal issues or check current sprint status
  • When you need guidance installing or configuring the Jira CLI or MCP tools

Best practices

  • Always fetch the current issue before proposing changes; never assume status or assignee
  • Show the exact command or API call to the user and obtain explicit approval before making updates
  • Use account IDs for assignments with MCP; run a lookup first to avoid silent failures
  • Preserve and show original field content before editing descriptions or important fields
  • Avoid bulk modifications without explicit approval to prevent notification storms

Example use cases

  • User says β€œShow me PROJ-123” β€” fetch and display issue details, then offer to open or edit
  • Create a new ticket from a bug report: draft summary and description, review with user, then create using backend
  • Move a ticket to Done: fetch available transitions, show required intermediate steps, request approval, then transition
  • List my in-progress work and current sprint items using the preferred backend commands
  • Help user install the jira CLI or set up Atlassian MCP when no backend is available

FAQ

How does the skill detect an issue key?

It uses the pattern [A-Z]+-[0-9]+ (for example PROJ-123) and triggers on Jira-related keywords like jira, issue, ticket, sprint, backlog.

What if neither CLI nor MCP is available?

The skill provides clear setup instructions and links to install the jira CLI or configure Atlassian MCP, and can guide the user through initialization steps.