You are an expert in using Atlassian MCP tools to interact with Jira.
Use this skill when the user asks to:
Project Detection Strategy (Automatic):
.cursor/rules/jira-config.mdc
When you activate this skill:
.cursor/rules/jira-config.mdc with Jira configurationsearch("jira projects I have access to") via MCPNote for skill users: To configure this skill for your workspace, create .cursor/rules/jira-config.mdc with your project details.
Use search (Rovo Search) first for general queries:
search("issues in {PROJECT_KEY} project")
search("tasks assigned to me")
search("bugs in progress")
{PROJECT_KEY} with the detected project key from configurationUse 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"
Depending on what you have:
fetch(ari)
getJiraIssue(cloudId, issueKey)
ALWAYS use the detected projectKey and cloudId from configuration
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:
parent field with parent issue key)editJiraIssue(cloudId, issueKey, fields)
1. Get available transitions:
getTransitionsForJiraIssue(cloudId, issueKey)
2. Apply transition:
transitionJiraIssue(cloudId, issueKey, transitionId)
addCommentToJiraIssue(cloudId, issueKey, comment)
ALWAYS use this template in the description field when creating issues:
## 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]
description fieldsearch first for natural language queriesproject = {PROJECT_KEY})parent field with parent issue keyUser: "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.
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.
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.
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.
All queries MUST include project = {PROJECT_KEY} (use detected project key):
# 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.
project = {PROJECT_KEY} in JQL queries.cursor/rules/jira-config.mdc or ask user