CI / flake (push) Skipped
CI / flake (pull_request) Successful in 1m6s
Add to jira-tooling memory: - per-issue-type transition required fields (Story Cancelled needs Resolution + Justification; Epic Cancelled needs neither) - cancel/won't-do resolution IDs (Won't Fix 10068, Canceled 10070, Obsolete 10073) - customfield_10070 (Justification) requires ADF, not a plain string, despite its textarea schema Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
26 lines
1.9 KiB
Markdown
26 lines
1.9 KiB
Markdown
---
|
|
name: jira-tooling
|
|
description: Jira MCP tool quirks — comment markdown, transitions, link direction, WSP transition IDs
|
|
metadata:
|
|
type: feedback
|
|
---
|
|
|
|
**Comment markup:** `addCommentToJiraIssue` `commentBody` renders as Markdown — use `###` headings, `**bold**`, backtick `code`, `1.` / `-` lists. Do NOT use wiki markup (`h3.`, `{{code}}`, `_italic_`, `#` numbered) — it renders literally.
|
|
|
|
**Transitions:** `transitionJiraIssue` may fail if the issue lacks an assignee. Set assignee first via `editJiraIssue` when a transition errors on assignee requirement.
|
|
|
|
**Transition required fields (WSP):** the same target status can enforce different required fields per issue type — e.g. `Cancelled` on a Story requires `Resolution` + `Justification`, but on an Epic requires neither (so an Epic can land in Cancelled while still reading Unresolved). Fetch requirements with `getTransitionsForJiraIssue` + `expand=transitions.fields` before transitioning. Cancel/won't-do resolution values: `Won't Fix` (10068), `Canceled` (10070), `Obsolete` (10073 — use for superseded-by-another-ticket).
|
|
|
|
**ADF-only custom fields:** the WSP `Justification` field (`customfield_10070`) advertises schema `textarea` (string) but the API rejects a plain string — it requires an Atlassian Document Format object (`{type:"doc",version:1,content:[...]}`). If a transition/edit errors with "Operation value must be an Atlassian Document", wrap the text in ADF.
|
|
|
|
**Issue link direction:** For `createIssueLink`, "X is blocked by Y" means `inwardIssue=Y` (the blocker), `outwardIssue=X` (the blocked), `type.name="Blocks"`. Inward = the side the link points _from_; outward = the side it points _to_.
|
|
|
|
**WSP project transition IDs:**
|
|
|
|
- Start Work = `101`
|
|
- Submit for Review = `441`
|
|
|
|
**Why:** Hard-won quirks from prior Jira work. Cuts trial-and-error.
|
|
|
|
**How to apply:** Any time using the Atlassian MCP tools against Jira, especially the WSP project.
|