jira-assistant

Manage Jira issues via Atlassian MCP — search, create, update, transition status, and handle sprint tasks. Auto-detects workspace configuration. Use when user says "create a Jira ticket", "update my sprint", "check Jira status", "transition this issue", "search Jira", or "move ticket to done". Do NOT use for Confluence pages (use confluence-assistant).

1,875 stars

Best use case

jira-assistant is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Manage Jira issues via Atlassian MCP — search, create, update, transition status, and handle sprint tasks. Auto-detects workspace configuration. Use when user says "create a Jira ticket", "update my sprint", "check Jira status", "transition this issue", "search Jira", or "move ticket to done". Do NOT use for Confluence pages (use confluence-assistant).

Teams using jira-assistant should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/jira-assistant/SKILL.md --create-dirs "https://raw.githubusercontent.com/tech-leads-club/agent-skills/main/packages/skills-catalog/skills/(development)/jira-assistant/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/jira-assistant/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How jira-assistant Compares

Feature / Agentjira-assistantStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Manage Jira issues via Atlassian MCP — search, create, update, transition status, and handle sprint tasks. Auto-detects workspace configuration. Use when user says "create a Jira ticket", "update my sprint", "check Jira status", "transition this issue", "search Jira", or "move ticket to done". Do NOT use for Confluence pages (use confluence-assistant).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Jira Assistant

You are an expert in using Atlassian MCP tools to interact with Jira.

## When to Use

Use this skill when the user asks to:

- Search for Jira issues or tasks
- Create new Jira issues (Task, Epic, Subtask)
- Update existing issues
- Transition issue status (To Do → In Progress → Done, etc.)
- Add comments to issues
- Manage assignees
- Query issues with specific criteria

## Configuration

**Project Detection Strategy (Automatic):**

1. **Check workspace rules first**: Look for Jira configuration in `.cursor/rules/jira-config.mdc`
2. **If not found**: Use MCP search tools to discover available projects
3. **If still unclear**: Ask user to specify project key
4. **Use detected values** for all Jira operations in this conversation

### Configuration Detection Workflow

When you activate this skill:

1. Check if workspace has `.cursor/rules/jira-config.mdc` with Jira configuration
2. If found, extract and use: Project Key, Cloud ID, URL, Board URL
3. If not found:
   - Use `search("jira projects I have access to")` via MCP
   - Present discovered projects to user
   - Ask: "Which Jira project should I use? (e.g., KAN, PROJ, DEV)"
4. Store the configuration for this conversation and proceed with operations

**Note for skill users:** To configure this skill for your workspace, create `.cursor/rules/jira-config.mdc` with your project details.

## Workflow

### 1. Finding Issues (Always Start Here)

**Use `search` (Rovo Search) first** for general queries:

```
search("issues in {PROJECT_KEY} project")
search("tasks assigned to me")
search("bugs in progress")
```

- Natural language works better than JQL for general searches
- Faster and more intuitive
- Returns relevant results quickly
- Replace `{PROJECT_KEY}` with the detected project key from configuration

### 2. Searching with Specific Criteria

**Use `searchJiraIssuesUsingJql`** when you need precise filters:

**⚠️ ALWAYS include `project = {PROJECT_KEY}` in JQL queries**

Examples (replace `{PROJECT_KEY}` with detected project key):

```
project = {PROJECT_KEY} AND status = "In Progress"
project = {PROJECT_KEY} AND assignee = currentUser() AND created >= -7d
project = {PROJECT_KEY} AND type = "Epic" AND status != "Done"
project = {PROJECT_KEY} AND priority = "High"
```

### 3. Getting Issue Details

Depending on what you have:

- **If you have ARI**: `fetch(ari)`
- **If you have issue key/id**: `getJiraIssue(cloudId, issueKey)`

### 4. Creating Issues

**ALWAYS use the detected `projectKey` and `cloudId` from configuration**

#### Step-by-step process:

```
a. View issue types:
   getJiraProjectIssueTypesMetadata(
     cloudId="{CLOUD_ID}",
     projectKey="{PROJECT_KEY}"
   )

b. View required fields:
   getJiraIssueTypeMetaWithFields(
     cloudId="{CLOUD_ID}",
     projectKey="{PROJECT_KEY}",
     issueTypeId="from-step-a"
   )

c. Create the issue:
   createJiraIssue(
     cloudId="{CLOUD_ID}",
     projectKey="{PROJECT_KEY}",
     issueTypeName="Task",
     summary="Brief task description",
     description="## Context\n..."
   )
```

**Note:** Replace `{PROJECT_KEY}` and `{CLOUD_ID}` with values from detected configuration.

**Available issue types:**

- Task (default)
- Epic
- Subtask (requires `parent` field with parent issue key)

### 5. Updating and Transitioning Issues

#### Edit fields:

```
editJiraIssue(cloudId, issueKey, fields)
```

#### Change status:

```
1. Get available transitions:
   getTransitionsForJiraIssue(cloudId, issueKey)

2. Apply transition:
   transitionJiraIssue(cloudId, issueKey, transitionId)
```

#### Add comment:

```
addCommentToJiraIssue(cloudId, issueKey, comment)
```

## Default Task Template

**ALWAYS use this template** in the `description` field when creating issues:

```markdown
## Context

[Brief explanation of the problem or need]

## Objective

[What needs to be accomplished]

## Technical Requirements

[This is high level, it doesn't mention which class or file, but the technical high level objective]

- [ ] Requirement 1
- [ ] Requirement 2
- [ ] Requirement 3

## Acceptance Criteria

- [ ] Criteria 1
- [ ] Criteria 2
- [ ] Criteria 3

## Technical Notes

[Don't include file paths as they can change overtime]
[Technical considerations, dependencies, relevant links]

## Estimate

[Time estimate or story points, if applicable]
```

## Best Practices

### ✅ DO

- **Always use the detected project key** in all operations
- **Always use Markdown** in the `description` field
- **Use `search` first** for natural language queries
- **Use JQL** for precise filtering (but always include `project = {PROJECT_KEY}`)
- **Follow the task template** for consistency
- **Avoid file paths** in descriptions (they change over time)
- **Keep summaries brief** and descriptions detailed

### ⚠️ IMPORTANT

- **Issue ID** is numeric (internal)
- **Issue Key** is "{PROJECT_KEY}-123" format (user-facing)
- **To create subtasks**: Use the `parent` field with parent issue key
- **CloudId** can be URL or UUID - both work
- **Use detected configuration values** from workspace rules or user input

## Examples

### Example 1: Create a Task

```
User: "Create a task to implement user authentication"

createJiraIssue(
  cloudId="{CLOUD_ID}",
  projectKey="{PROJECT_KEY}",
  issueTypeName="Task",
  summary="Implement user authentication endpoint",
  description="## Context
We need to secure our API endpoints with user authentication.

## Objective
Implement JWT-based authentication for API access.

## Technical Requirements
- [ ] Create authentication middleware
- [ ] Implement JWT token generation
- [ ] Add token validation
- [ ] Secure existing endpoints

## Acceptance Criteria
- [ ] Users can login with credentials
- [ ] JWT tokens are generated on successful login
- [ ] Protected endpoints validate tokens
- [ ] Invalid tokens return 401

## Technical Notes
Use bcrypt for password hashing, JWT for tokens, and implement refresh token logic.

## Estimate
5 story points"
)
```

**Note:** Use actual values from detected configuration in place of placeholders.

### Example 2: Search and Update Issue

```
User: "Find my in-progress tasks and update the first one"

1. searchJiraIssuesUsingJql(
     cloudId="{CLOUD_ID}",
     jql="project = {PROJECT_KEY} AND assignee = currentUser() AND status = 'In Progress'"
   )

2. editJiraIssue(
     cloudId="{CLOUD_ID}",
     issueKey="{PROJECT_KEY}-123",
     fields={ "description": "## Context\nUpdated context..." }
   )
```

**Note:** Replace placeholders with detected configuration values.

### Example 3: Transition Issue Status

```
User: "Move task {PROJECT_KEY}-456 to Done"

1. getTransitionsForJiraIssue(cloudId="{CLOUD_ID}", issueKey="{PROJECT_KEY}-456")

2. transitionJiraIssue(
     cloudId="{CLOUD_ID}",
     issueKey="{PROJECT_KEY}-456",
     transitionId="transition-id-for-done"
   )
```

**Note:** Replace placeholders with detected configuration values.

### Example 4: Create Subtask

```
User: "Create a subtask for {PROJECT_KEY}-789"

createJiraIssue(
  cloudId="{CLOUD_ID}",
  projectKey="{PROJECT_KEY}",
  issueTypeName="Subtask",
  parent="{PROJECT_KEY}-789",
  summary="Implement validation logic",
  description="## Context\nSubtask for implementing input validation..."
)
```

**Note:** Replace placeholders with detected configuration values.

## Common JQL Patterns

All queries **MUST** include `project = {PROJECT_KEY}` (use detected project key):

```jql
# My current work
project = {PROJECT_KEY} AND assignee = currentUser() AND status = "In Progress"

# Recent issues
project = {PROJECT_KEY} AND created >= -7d

# High priority bugs
project = {PROJECT_KEY} AND type = Bug AND priority = High

# Epics without completion
project = {PROJECT_KEY} AND type = Epic AND status != Done

# Unassigned tasks
project = {PROJECT_KEY} AND assignee is EMPTY AND status = "To Do"

# Issues updated this week
project = {PROJECT_KEY} AND updated >= startOfWeek()
```

**Note:** Replace `{PROJECT_KEY}` with the actual project key from detected configuration.

## Important Notes

- **Project key is mandatory** - Always include `project = {PROJECT_KEY}` in JQL queries
- **Use detected configuration** - Read from `.cursor/rules/jira-config.mdc` or ask user
- **Use Markdown** in descriptions - Not HTML or plain text
- **Follow the template** - Maintains consistency across issues
- **Natural language search first** - Use JQL only when needed
- **Avoid file paths** - They change and become outdated
- **Keep technical notes high-level** - Focus on approach, not implementation details
- **Story points are optional** - Include estimates when relevant

Related Skills

confluence-assistant

1875
from tech-leads-club/agent-skills

Expert in Confluence operations using Atlassian MCP. Use when the user says "search Confluence", "create a Confluence page", "update a page", "find documentation in Confluence", "list spaces", or "add a comment to a page". Do NOT use for Jira issues, general web search, or local file creation.

cursor-subagent-creator

1875
from tech-leads-club/agent-skills

Creates Cursor-specific AI subagents with isolated context for complex multi-step workflows. Use when creating subagents for Cursor editor specifically, following Cursor's patterns and directories (.cursor/agents/). Triggers on "cursor subagent", "cursor agent". Do NOT use for generic subagent creation outside Cursor (use subagent-creator instead).

gh-fix-ci

1875
from tech-leads-club/agent-skills

Use when a user asks to debug or fix failing GitHub PR checks that run in GitHub Actions. Uses `gh` to inspect checks and logs, summarize failure context, draft a fix plan, and implement only after explicit approval. Treats external providers (for example Buildkite) as out of scope and reports only the details URL. Do NOT use for addressing PR review comments (use gh-address-comments) or general CI outside GitHub Actions.

create-adr

1875
from tech-leads-club/agent-skills

Creates Architecture Decision Records (ADRs) to document significant architectural choices and their rationale for future team members. Use when the user says "write an ADR", "document this decision", "record why we chose X", "add an architecture decision record", "create an ADR for", or wants to capture the reasoning behind a technical choice so the team understands it later. Do NOT use when the decision hasn't been made yet (use create-rfc instead), for implementation planning (use technical-design-doc-creator), or for general documentation.

decomposition-planning-roadmap

1875
from tech-leads-club/agent-skills

Creates step-by-step decomposition plans and migration roadmaps for breaking apart monolithic applications. Use when asking "what order should I extract services?", "plan my migration", "create a decomposition roadmap", "prioritize what to split", "monolith to microservices strategy", or tracking decomposition progress. Do NOT use for domain analysis (use domain-analysis) or component sizing (use component-identification-sizing).

create-rfc

1875
from tech-leads-club/agent-skills

Creates structured Request for Comments (RFC) documents for proposing and deciding on significant changes. Use when the user says "write an RFC", "create a proposal", "I need to propose a change", "draft an RFC", "document a decision", or needs stakeholder alignment before making a major technical or process decision. Do NOT use for TDDs/implementation docs (use technical-design-doc-creator instead), README files, or general documentation.

technical-design-doc-creator

1875
from tech-leads-club/agent-skills

Creates comprehensive Technical Design Documents (TDD) with mandatory and optional sections through interactive discovery. Use when user asks to "write a design doc", "create a TDD", "technical spec", "architecture document", "RFC", "design proposal", or needs to document a technical decision before implementation. Do NOT use for README files, API docs, or general documentation (use docs-writer instead).

component-common-domain-detection

1875
from tech-leads-club/agent-skills

Finds duplicate business logic spread across multiple components and suggests consolidation. Use when asking "where is this logic duplicated?", "find common code between services", "what can be consolidated?", "detect shared domain logic", or analyzing component overlap before refactoring. Do NOT use for code-level duplication detection (use linters) or dependency analysis (use coupling-analysis).

figma

1875
from tech-leads-club/agent-skills

Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Use when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting. Covers general Figma data fetching and exploration. Do NOT use when the goal is specifically pixel-perfect code implementation from a Figma design (use figma-implement-design instead).

component-flattening-analysis

1875
from tech-leads-club/agent-skills

Detects misplaced classes and fixes component hierarchy problems — finds code that should belong inside a component but sits at the root level. Use when asking "clean up component structure", "find orphaned classes", "fix module hierarchy", "flatten nested components", or analyzing why namespaces have misplaced code. Do NOT use for dependency analysis (use coupling-analysis) or domain grouping (use domain-identification-grouping).

component-identification-sizing

1875
from tech-leads-club/agent-skills

Maps architectural components in a codebase and measures their size to identify what should be extracted first. Use when asking "how big is each module?", "what components do I have?", "which service is too large?", "analyze codebase structure", "size my monolith", or planning where to start decomposing. Do NOT use for runtime performance sizing or infrastructure capacity planning.

skill-architect

1875
from tech-leads-club/agent-skills

Expert guide for designing and building high-quality skills from scratch through structured conversation. Use when someone wants to create a new skill, build a skill, design a skill, or asks for help making Agents do something consistently. Also use when someone says "turn this into a skill", "I want to automate this workflow", "how do I teach my Agent to do X", or mentions creating SKILL.md files. Covers standalone skills and MCP-enhanced workflows. Do NOT use for creating subagents (use subagent-creator) or technical design documents (use create-technical-design-doc).