From jira
Generate detailed release notes for a single Jira version. Transforms technical issues into a professional, business-facing feature overview with categorized items. Use when the user wants release notes, a version summary, a release plan, or a feature overview for a specific version. Triggers on any request mentioning release notes, version summary, release plan, or feature overview.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jira:jira-release-notesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate professional, client-facing release notes from Jira version data. Produces a detailed feature-by-feature overview for a single release version with categorized items. Uses the `jira-fetch` script to pull all issue data via REST API in one call — no MCP overhead, no subagents, no token waste.
Generate professional, client-facing release notes from Jira version data. Produces a detailed feature-by-feature overview for a single release version with categorized items. Uses the jira-fetch script to pull all issue data via REST API in one call — no MCP overhead, no subagents, no token waste.
AskUserQuestionjira-fetch script to get all issues for the versionBefore anything else, use a single AskUserQuestion call with two questions:
If Confluence output is selected, immediately follow up with one more AskUserQuestion (header: "Confluence URL") asking for the target Confluence page URL (the full URL, e.g. https://mycompany.atlassian.net/wiki/spaces/PROJ/pages/123456).
If $ARGUMENTS contains version number(s) (e.g., 2.1.0, v3.0), extract them for use in Step 3.
Use the selected language for the entire document. Translate section headers according to the translations in the respective format reference file.
Look for a JIRA configuration block in the project's CLAUDE.md:
## JIRA
- Domain: mycompany.atlassian.net
- Project key: PROJ
If found, use that domain and project key. If not found, ask via AskUserQuestion (header: "JIRA Configuration"):
Store the resolved domain, projectKey, and base URL (https://{domain}) for the rest of the session. The base URL is needed for clickable task links in the output.
This single step replaces the old search + subagent extraction pattern. The jira-fetch script fetches all issues with full descriptions and comments in one call, returning a minimal JSON file with plaintext data ready for transformation into release notes.
Find the fetch script via Glob:
pattern: **/jira-fetch/scripts/fetch-issues.mjs
If a version was extracted from $ARGUMENTS, run a targeted fetch:
node "${SCRIPT_PATH}" \
--domain "${DOMAIN}" \
--jql "project = ${PROJECT_KEY} AND fixVersion = \"${VERSION}\" ORDER BY priority DESC, issuetype ASC" \
--output "/tmp/jira-release-notes-${VERSION}-$(date +%Y%m%d-%H%M%S).json"
If no version was provided, discover available versions first:
node "${SCRIPT_PATH}" \
--domain "${DOMAIN}" \
--jql "project = ${PROJECT_KEY} AND fixVersion IS NOT EMPTY ORDER BY fixVersion DESC" \
--output "/tmp/jira-release-versions-$(date +%Y%m%d-%H%M%S).json"
Read the JSON output and extract unique version names from the fixVersions field across all issues. Present discovered versions to the user via AskUserQuestion (header: "Version") as selectable options. Allow free text input for a version not in the list.
After the user selects a version, filter the already-fetched data to keep only issues where fixVersions includes the selected version. No second fetch needed — the discovery data already contains full issue details.
If the script fails, show the error and stop. Common issues: missing JIRA_EMAIL or JIRA_API_TOKEN env vars.
The JSON output contains per issue: key, type, status, priority, assignee, reporter, labels, fixVersions, components, summary, created, updated, description (plaintext), comments[] (with author, created, body as plaintext).
Descriptions and comments are the key inputs for transforming technical issues into business-value summaries in Steps 5-6. Having them available directly (instead of via subagent extraction) enables better cross-issue reasoning — detecting duplicate features, identifying themes, and producing more consistent language.
Apply these filtering rules to determine which issues appear in the release notes:
| Issue Type | Priority | Action |
|---|---|---|
| Epic, Story, Feature | Any | Always include |
| Task | Major or higher | Include if user-facing (check summary/labels) |
| Task | Normal or lower | Skip (unless summary suggests a user-facing feature) |
| Bug, Hotfix | Critical, Blocker | Always include |
| Bug, Hotfix | Major | Always include |
| Bug, Hotfix | Normal | Include (skip only if purely internal/technical) |
| Bug, Hotfix | Minor, Trivial | Skip (unless it affects a visible user workflow) |
| Sub-task, Chore | Any | Skip |
Keyword exclusion — skip issues whose summary contains any of these terms (case-insensitive): refactor, chore, cleanup, ci/cd, pipeline, dependency update, bump, internal, tech debt, lint, formatting.
Use a two-pass approach:
Assign each issue to a category based on labels, components, and keywords in the summary and description:
| Keywords / Labels | Category |
|---|---|
| ui, ux, frontend, design, layout, css | User Experience |
| performance, speed, cache, optimization, latency | Performance & Reliability |
| security, auth, permission, access, encryption | Security & Compliance |
| api, integration, webhook, sync, connector | Integrations |
| report, analytics, dashboard, metrics, chart | Reporting & Analytics |
| No match found | New Capabilities |
Bug Fixes category — All issues with type Bug or Hotfix are placed into a dedicated Bug Fixes section, separate from the thematic feature categories above. Do not mix bugs into feature categories. The Bug Fixes section always appears after the Features section in the final document (see Step 7).
Review the automatic categorization and adjust:
For each issue, produce:
Use the description and comments fields from the JSON data to understand what changed from the user's perspective. Having full issue data available enables more accurate business-value transformation than working from summaries alone.
Assemble the final document following the structure defined in references/format.md.
# [Project] Release Notes — Version X.Y.Z
**Release:** X.Y.Z | **Target:** [quarter/date] | **Status:** [overall status]
## Executive Summary
[2-3 sentences highlighting how this release improves the client's experience and business outcomes.]
## Features
### [Category Name]
- **PROJ-101 — Feature Name.** Summary sentence one. Summary sentence two.
- **PROJ-205 — Feature Name.** Summary sentence one. Summary sentence two.
- **PROJ-318 — Feature Name.** Summary sentence one. Summary sentence two.
## Bug Fixes
- **PROJ-410 — Fix Name.** What was broken. What now works correctly.
- **PROJ-415 — Fix Name.** What was broken. What now works correctly.
## Key Metrics & Impact *(optional)*
[Measurable improvements if available from issue data.]
Full example: references/example.md
If a version has more than 20 features:
Present the complete release notes inside a clearly marked block and use AskUserQuestion (header: "Review"):
If the user asks for adjustments, apply changes and present the updated draft again. Repeat until the user confirms.
Present the final release notes in a code block and suggest saving to a file:
Your release notes are ready. Want me to save them to
docs/release-notes/release-notes-{version}.md?
If the user confirms, write the file.
Confluence publishing requires a cloudId. Resolve it now by calling getAccessibleAtlassianResources MCP tool — this is the only MCP call in this skill, and only when Confluence output was selected.
Use the available Confluence MCP tools to publish:
[Project] Release Notes — Version X.Y.Z in the project's Confluence spaceIf no Confluence MCP tools are found, fall back to markdown output and inform the user.
After publishing, suggest adding a link from the product roadmap page to this release notes page.
npx claudepluginhub mrstroz/claude-code-plugins --plugin jiraGenerates user-facing release notes from tickets, PRDs, or changelogs. Categorizes changes into new features, improvements, fixes for announcing updates.
Generates user-facing release notes from tickets, PRDs, changelogs, or git logs, organized by category (new features, improvements, fixes).
Generates polished user-facing release notes from completed Linear, Jira, or GitHub Issues tickets: filters visible changes, groups by product area, saves .docx to Google Drive before releases or weekly.