Jira
Purpose
This skill provides comprehensive Jira project management capabilities through the Atlassian MCP integration. It enables agents to create, update, search, comment on, and link issues programmatically. Use this skill whenever a task involves managing work items in Jira — whether creating new tickets, updating existing ones, querying backlogs, or orchestrating cross-issue relationships.
Issue Types & Hierarchy
Hierarchy (top → bottom)
Epic
└── Story / Task / Bug
└── Sub-task
Issue Types
| Type |
Purpose |
When to Use |
| Epic |
Large body of work spanning multiple sprints |
Feature areas, initiatives, major deliverables |
| Story |
User-facing functionality |
"As a user, I want..." — delivers value to end users |
| Task |
Technical work not directly user-facing |
Infrastructure, refactoring, tooling, research spikes |
| Sub-task |
Granular unit of work under a Story/Task |
Backend endpoint, frontend component, test suite, migration |
| Bug |
Defect in existing functionality |
Something that worked before and is now broken, or doesn't match spec |
Hierarchy Rules
- Epics contain Stories, Tasks, and Bugs (via Epic Link field).
- Stories, Tasks, and Bugs can have Sub-tasks.
- Sub-tasks cannot have children.
- Every Story/Task/Bug should belong to an Epic unless it is truly standalone.
Fields Reference
Required Fields
| Field |
Description |
Notes |
project |
Project key (e.g., PROJ) |
Must exist in the Jira instance |
summary |
One-line title |
Imperative mood, <80 characters |
issuetype |
Epic, Story, Task, Sub-task, Bug |
Must match project's configured types |
Common Optional Fields
| Field |
Description |
Example Values |
description |
Detailed body (ADF or markdown) |
See templates below |
priority |
Urgency level |
Highest, High, Medium, Low, Lowest |
labels |
Categorical tags (array) |
["backend", "api", "tech-debt"] |
components |
Architectural components (array) |
["auth-service", "web-app"] |
assignee |
Account ID of the assignee |
Use jira_search to resolve names → IDs |
sprint |
Sprint ID (not name) |
Retrieve via board/sprint API |
story_points / customfield_XXXXX |
Estimation |
Fibonacci: 1, 2, 3, 5, 8, 13 |
epic_link / customfield_XXXXX |
Parent Epic key |
PROJ-42 |
fix_versions |
Target release versions |
["v2.1.0"] |
Summary Writing Conventions
- Imperative mood: "Add user authentication" not "Added user authentication" or "Adding user authentication"
- Under 80 characters: Be concise but specific
- No trailing period: Summaries are titles, not sentences
- Include scope hint: "[API] Add rate limiting to /users endpoint"
- Bug summaries state the symptom: "Login fails with 500 when email contains +"
Description Templates
Story Description:
h2. User Story
As a [persona], I want [action] so that [benefit].
h2. Acceptance Criteria
* [ ] Criterion 1
* [ ] Criterion 2
* [ ] Criterion 3
h2. Technical Notes
* Implementation approach or constraints
* Relevant endpoints, schemas, dependencies
h2. Out of Scope
* What this story explicitly does NOT cover
Bug Description:
h2. Summary
Brief description of the defect.
h2. Steps to Reproduce
# Step 1
# Step 2
# Step 3
h2. Expected Behavior
What should happen.
h2. Actual Behavior
What actually happens. Include error messages, status codes, screenshots.
h2. Environment
* Browser/OS/Device:
* Version/Build:
* Environment: staging / production
h2. Severity Assessment
* Impact: [Critical / High / Medium / Low]
* Frequency: [Always / Often / Sometimes / Rarely]
* Workaround: [None / Exists — describe]
Workflow States
Standard Workflow
To Do → In Progress → In Review → Done
| State |
Meaning |
Transition Trigger |
| To Do |
Work not started, in backlog or sprint |
Issue created or moved to sprint |
| In Progress |
Actively being worked on |
Developer starts work |
| In Review |
Code complete, awaiting review |
PR opened or review requested |
| Done |
Accepted and complete |
PR merged, QA passed |
Transition Rules
- Only transition forward unless explicitly reverting (e.g., review rejection → In Progress).
- Moving to "In Progress" should set/confirm the assignee.
- Moving to "Done" should verify all sub-tasks are also Done.
Issue Link Types
| Link Type |
Forward Description |
Reverse Description |
When to Use |
| Blocks |
blocks |
is blocked by |
Issue A must complete before B can start |
| Relates to |
relates to |
relates to |
Loosely related work, shared context |
| Duplicates |
duplicates |
is duplicated by |
Same defect reported twice |
| Clones |
clones |
is cloned by |
Copy of an issue for another project/sprint |
| Causes |
causes |
is caused by |
Root cause relationship (bugs) |
MCP Tools Available
jira_create_issue
Create a new Jira issue.
Parameters: project, summary, issuetype, description?, priority?, labels?, components?, assignee?, parent? (for sub-tasks)
Returns: key, id, self (URL)
jira_update_issue
Update fields on an existing issue.
Parameters: issue_key, fields (object with fields to update)
Returns: confirmation
jira_add_comment
Add a comment to an existing issue.
Parameters: issue_key, body (comment text)
Returns: comment ID, created timestamp
jira_link_issues
Create a link between two issues.
Parameters: inward_issue, outward_issue, link_type
Returns: confirmation
jira_search
Search issues using JQL.
Parameters: jql, fields? (array of field names), max_results?
Returns: array of matching issues
jira_get_issue
Retrieve full details of a single issue.
Parameters: issue_key
Returns: full issue object with all fields
jira_transition_issue
Move an issue to a new workflow state.
Parameters: issue_key, transition_id or transition_name
Returns: confirmation
JQL Quick Reference
Common Queries
-- My open issues
assignee = currentUser() AND status != Done
-- Sprint backlog
sprint in openSprints() AND project = PROJ
-- Unresolved bugs by priority
project = PROJ AND issuetype = Bug AND status != Done ORDER BY priority ASC
-- Recently updated
project = PROJ AND updated >= -7d ORDER BY updated DESC
-- Blocked work
issuefunction in hasLinks("is blocked by")
-- Epics missing stories
issuetype = Epic AND project = PROJ AND NOT issuefunction in hasLinks("is Epic of")
-- Issues without estimates
project = PROJ AND issuetype in (Story, Task) AND story_points is EMPTY AND sprint in openSprints()
JQL Operators
| Operator |
Example |
Notes |
=, != |
status = "In Progress" |
Exact match |
in, not in |
issuetype in (Story, Bug) |
Multiple values |
~ |
summary ~ "auth" |
Contains text (fuzzy) |
is EMPTY / is not EMPTY |
assignee is EMPTY |
Null checks |
>=, <= |
created >= -30d |
Date/number comparison |
was, was in, was not |
status was "In Progress" |
Historical state |
changed |
status changed FROM "To Do" TO "In Progress" |
Transition history |
ORDER BY |
ORDER BY priority ASC, created DESC |
Sorting |
JQL Functions
| Function |
Purpose |
currentUser() |
The authenticated user |
openSprints() |
All active sprints |
closedSprints() |
All completed sprints |
futureSprints() |
All upcoming sprints |
startOfDay(), endOfDay() |
Day boundaries |
startOfWeek(), endOfWeek() |
Week boundaries |
now() |
Current timestamp |
Comment Conventions
- Status updates: Start with the new state. "In Progress — starting backend implementation."
- Questions: Tag the person. "@john.doe — can you clarify the auth flow for SSO users?"
- Blockers: Flag clearly. "BLOCKED — waiting on PROJ-456 (API schema finalization)."
- Completion: Summarize what was done. "Done — implemented rate limiter with token bucket algorithm. See PR #234."
- Technical notes: Use code blocks for snippets, stack traces, or config.
Conventions
- Always search before creating — avoid duplicates. Run a JQL query for similar summaries first.
- One ticket, one concern — don't bundle unrelated work into a single issue.
- Link related issues — if two tickets touch the same code or feature, link them.
- Keep summaries scannable — a PM should understand the ticket from the summary alone.
- Set priority explicitly — never leave priority as the default unless it truly is Medium.
- Assign during sprint planning — not at creation time, unless the assignee is obvious.
- Sub-tasks for decomposition — if a Story has >3 days of work, break it into Sub-tasks.
Knowledge Strategy
- Patterns to capture: Project-specific field mappings (custom field IDs), common JQL queries that prove useful, description templates refined for specific teams.
- Examples to collect: Successfully created ticket payloads, effective bug reports, JQL queries for recurring audits.
- Update permission: Agents may freely add/update files in
references/. Changes to SKILL.md or scripts/ require user approval.
1---2name: jira3description: Jira project management skill for creating, updating, commenting, and linking tickets via Atlassian MCP. Use when managing Jira issues.4---56# Jira78## Purpose910This skill provides comprehensive Jira project management capabilities through the Atlassian MCP integration. It enables agents to create, update, search, comment on, and link issues programmatically. Use this skill whenever a task involves managing work items in Jira — whether creating new tickets, updating existing ones, querying backlogs, or orchestrating cross-issue relationships.1112## Issue Types & Hierarchy1314### Hierarchy (top → bottom)1516```17Epic18 └── Story / Task / Bug19 └── Sub-task20```2122### Issue Types2324| Type | Purpose | When to Use |25|------|---------|-------------|26| **Epic** | Large body of work spanning multiple sprints | Feature areas, initiatives, major deliverables |27| **Story** | User-facing functionality | "As a user, I want..." — delivers value to end users |28| **Task** | Technical work not directly user-facing | Infrastructure, refactoring, tooling, research spikes |29| **Sub-task** | Granular unit of work under a Story/Task | Backend endpoint, frontend component, test suite, migration |30| **Bug** | Defect in existing functionality | Something that worked before and is now broken, or doesn't match spec |3132### Hierarchy Rules3334- Epics contain Stories, Tasks, and Bugs (via Epic Link field).35- Stories, Tasks, and Bugs can have Sub-tasks.36- Sub-tasks cannot have children.37- Every Story/Task/Bug should belong to an Epic unless it is truly standalone.3839## Fields Reference4041### Required Fields4243| Field | Description | Notes |44|-------|-------------|-------|45| `project` | Project key (e.g., `PROJ`) | Must exist in the Jira instance |46| `summary` | One-line title | Imperative mood, <80 characters |47| `issuetype` | Epic, Story, Task, Sub-task, Bug | Must match project's configured types |4849### Common Optional Fields5051| Field | Description | Example Values |52|-------|-------------|----------------|53| `description` | Detailed body (ADF or markdown) | See templates below |54| `priority` | Urgency level | Highest, High, Medium, Low, Lowest |55| `labels` | Categorical tags (array) | `["backend", "api", "tech-debt"]` |56| `components` | Architectural components (array) | `["auth-service", "web-app"]` |57| `assignee` | Account ID of the assignee | Use `jira_search` to resolve names → IDs |58| `sprint` | Sprint ID (not name) | Retrieve via board/sprint API |59| `story_points` / `customfield_XXXXX` | Estimation | Fibonacci: 1, 2, 3, 5, 8, 13 |60| `epic_link` / `customfield_XXXXX` | Parent Epic key | `PROJ-42` |61| `fix_versions` | Target release versions | `["v2.1.0"]` |6263### Summary Writing Conventions6465- **Imperative mood**: "Add user authentication" not "Added user authentication" or "Adding user authentication"66- **Under 80 characters**: Be concise but specific67- **No trailing period**: Summaries are titles, not sentences68- **Include scope hint**: "[API] Add rate limiting to /users endpoint"69- **Bug summaries state the symptom**: "Login fails with 500 when email contains +"7071### Description Templates7273**Story Description:**74```75h2. User Story76As a [persona], I want [action] so that [benefit].7778h2. Acceptance Criteria79* [ ] Criterion 180* [ ] Criterion 281* [ ] Criterion 38283h2. Technical Notes84* Implementation approach or constraints85* Relevant endpoints, schemas, dependencies8687h2. Out of Scope88* What this story explicitly does NOT cover89```9091**Bug Description:**92```93h2. Summary94Brief description of the defect.9596h2. Steps to Reproduce97# Step 198# Step 299# Step 3100101h2. Expected Behavior102What should happen.103104h2. Actual Behavior105What actually happens. Include error messages, status codes, screenshots.106107h2. Environment108* Browser/OS/Device:109* Version/Build:110* Environment: staging / production111112h2. Severity Assessment113* Impact: [Critical / High / Medium / Low]114* Frequency: [Always / Often / Sometimes / Rarely]115* Workaround: [None / Exists — describe]116```117118## Workflow States119120### Standard Workflow121122```123To Do → In Progress → In Review → Done124```125126| State | Meaning | Transition Trigger |127|-------|---------|-------------------|128| **To Do** | Work not started, in backlog or sprint | Issue created or moved to sprint |129| **In Progress** | Actively being worked on | Developer starts work |130| **In Review** | Code complete, awaiting review | PR opened or review requested |131| **Done** | Accepted and complete | PR merged, QA passed |132133### Transition Rules134135- Only transition forward unless explicitly reverting (e.g., review rejection → In Progress).136- Moving to "In Progress" should set/confirm the assignee.137- Moving to "Done" should verify all sub-tasks are also Done.138139## Issue Link Types140141| Link Type | Forward Description | Reverse Description | When to Use |142|-----------|-------------------|---------------------|-------------|143| **Blocks** | blocks | is blocked by | Issue A must complete before B can start |144| **Relates to** | relates to | relates to | Loosely related work, shared context |145| **Duplicates** | duplicates | is duplicated by | Same defect reported twice |146| **Clones** | clones | is cloned by | Copy of an issue for another project/sprint |147| **Causes** | causes | is caused by | Root cause relationship (bugs) |148149## MCP Tools Available150151### `jira_create_issue`152Create a new Jira issue.153```154Parameters: project, summary, issuetype, description?, priority?, labels?, components?, assignee?, parent? (for sub-tasks)155Returns: key, id, self (URL)156```157158### `jira_update_issue`159Update fields on an existing issue.160```161Parameters: issue_key, fields (object with fields to update)162Returns: confirmation163```164165### `jira_add_comment`166Add a comment to an existing issue.167```168Parameters: issue_key, body (comment text)169Returns: comment ID, created timestamp170```171172### `jira_link_issues`173Create a link between two issues.174```175Parameters: inward_issue, outward_issue, link_type176Returns: confirmation177```178179### `jira_search`180Search issues using JQL.181```182Parameters: jql, fields? (array of field names), max_results?183Returns: array of matching issues184```185186### `jira_get_issue`187Retrieve full details of a single issue.188```189Parameters: issue_key190Returns: full issue object with all fields191```192193### `jira_transition_issue`194Move an issue to a new workflow state.195```196Parameters: issue_key, transition_id or transition_name197Returns: confirmation198```199200## JQL Quick Reference201202### Common Queries203204```jql205-- My open issues206assignee = currentUser() AND status != Done207208-- Sprint backlog209sprint in openSprints() AND project = PROJ210211-- Unresolved bugs by priority212project = PROJ AND issuetype = Bug AND status != Done ORDER BY priority ASC213214-- Recently updated215project = PROJ AND updated >= -7d ORDER BY updated DESC216217-- Blocked work218issuefunction in hasLinks("is blocked by")219220-- Epics missing stories221issuetype = Epic AND project = PROJ AND NOT issuefunction in hasLinks("is Epic of")222223-- Issues without estimates224project = PROJ AND issuetype in (Story, Task) AND story_points is EMPTY AND sprint in openSprints()225```226227### JQL Operators228229| Operator | Example | Notes |230|----------|---------|-------|231| `=`, `!=` | `status = "In Progress"` | Exact match |232| `in`, `not in` | `issuetype in (Story, Bug)` | Multiple values |233| `~` | `summary ~ "auth"` | Contains text (fuzzy) |234| `is EMPTY` / `is not EMPTY` | `assignee is EMPTY` | Null checks |235| `>=`, `<=` | `created >= -30d` | Date/number comparison |236| `was`, `was in`, `was not` | `status was "In Progress"` | Historical state |237| `changed` | `status changed FROM "To Do" TO "In Progress"` | Transition history |238| `ORDER BY` | `ORDER BY priority ASC, created DESC` | Sorting |239240### JQL Functions241242| Function | Purpose |243|----------|---------|244| `currentUser()` | The authenticated user |245| `openSprints()` | All active sprints |246| `closedSprints()` | All completed sprints |247| `futureSprints()` | All upcoming sprints |248| `startOfDay()`, `endOfDay()` | Day boundaries |249| `startOfWeek()`, `endOfWeek()` | Week boundaries |250| `now()` | Current timestamp |251252## Comment Conventions253254- **Status updates**: Start with the new state. "In Progress — starting backend implementation."255- **Questions**: Tag the person. "@john.doe — can you clarify the auth flow for SSO users?"256- **Blockers**: Flag clearly. "BLOCKED — waiting on PROJ-456 (API schema finalization)."257- **Completion**: Summarize what was done. "Done — implemented rate limiter with token bucket algorithm. See PR #234."258- **Technical notes**: Use code blocks for snippets, stack traces, or config.259260## Conventions2612621. **Always search before creating** — avoid duplicates. Run a JQL query for similar summaries first.2632. **One ticket, one concern** — don't bundle unrelated work into a single issue.2643. **Link related issues** — if two tickets touch the same code or feature, link them.2654. **Keep summaries scannable** — a PM should understand the ticket from the summary alone.2665. **Set priority explicitly** — never leave priority as the default unless it truly is Medium.2676. **Assign during sprint planning** — not at creation time, unless the assignee is obvious.2687. **Sub-tasks for decomposition** — if a Story has >3 days of work, break it into Sub-tasks.269270## Knowledge Strategy271272- **Patterns to capture:** Project-specific field mappings (custom field IDs), common JQL queries that prove useful, description templates refined for specific teams.273- **Examples to collect:** Successfully created ticket payloads, effective bug reports, JQL queries for recurring audits.274- **Update permission:** Agents may freely add/update files in `references/`. Changes to `SKILL.md` or `scripts/` require user approval.