Bitwarden Product Analyst
Skill 37 of 65
Write user-facing release notes for a Bitwarden release from a Jira release tag and the
7 minutes · 1,576 words · 19 sections
Install
npx skills add bitwarden/ai-plugins --skill writing-release-notesnpx skills add bitwarden/ai-plugins/plugin marketplace add bitwarden/ai-pluginsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Produce concise, user-facing release notes for a Bitwarden release. The output is what customers read — on GitHub, in the App Store, or in Google Play — so every word should be benefit-oriented, jargon-free, and accurate about what users will actually experience.
Bitwarden Designer
Bitwarden Product Analyst
Bitwarden Tech Lead
Bitwarden Testing Tools
Claude Config Validator · Reviewing…
Claude Retrospective
65 skills · 321 min
Automated Jira lookups require the bitwarden-atlassian-tools plugin (its MCP server exposes search_issues, get_issue, and get_issue_comments). Without it, or when running in a Claude.ai Project (MCP tools are unavailable there), fall back to asking the user to paste the release page content and the Slack thread text directly — the rest of this skill works identically either way. There is no Slack MCP integration in this marketplace; the Slack thread is always gathered by asking the user to paste it.
Gather two inputs before writing anything:
Ask the user for the Jira release page URL (e.g. https://bitwarden.atlassian.net/projects/CL/versions/12345/tab/release-report-all-issues) or the release version name (e.g. 2025.7.0).
If search_issues is available, resolve the query:
/versions/) and query by ID: fixVersion = 12345 ORDER BY issuetype ASCfixVersion = "2025.7.0" ORDER BY issuetype ASCCall search_issues with fields: ["summary", "issuetype", "labels", "components", "status", "description"], and page through results using the returned nextPageToken until none is returned. For each issue, capture summary, issue type, labels, components, status, and any feature flag references found in the description. Feature flag references usually surface more completely in the Slack thread (Step 1b); only call get_issue_comments for individual issues where the flag is ambiguous after checking both sources.
If MCP tools are not available (web app context), ask the user to paste the release page content or a list of ticket summaries directly into the conversation.
The #release Slack thread is posted weekly and specifies which feature flags are toggled for the release. This is critical for two reasons:
Ask the user to paste the thread content.
Parse the thread to extract:
Identify:
If the release covers multiple repos with separate release notes (e.g., clients and server each have their own GitHub release), confirm with the user whether they want notes for all or one.
Go through every issue in the release and classify it. Only items that pass the filter appear as named bullet points.
Feature flags that are fully removed from the server codebase in this release. Flag removal is the moment self-hosted users gain access to a feature. Write each removal as a user-facing line describing what the feature does — not the internal flag identifier. See Step 4 for format.
For every flag the Slack thread lists as enabled, check whether any issue gathered in Step 1a references it. If none do, the underlying work may have shipped in an earlier release and is only now going live (reportable), or it may guard an internal refactor or infrastructure change that was never going to be user-facing (collapses like any other item in that category).
Resolve what the flag guards, in this order:
fixVersion (e.g. text ~ "flag-identifier" ORDER BY created ASC), to find the ticket(s) that originally implemented the feature.search_issues is unavailable, ask the user for a one-line description of what the flag enables, and classify that description the same way — do not guess or invent functionality.If the filter says it’s user-facing, write a plain-language line about the feature going live (Step 4 format rules). If the filter says it collapses or excludes, let it fall into the catch-all line or drop it, same as any other item in that category.
Added, Updated, Fixed, Improved, RemovedVarious under-the-hood improvements and minor bug fixesInformative, brief, benefit-forward. Avoid marketing superlatives (“exciting”, “powerful”). Avoid engineering jargon (“refactored”, “migrated”, “scaffolded”, “deprecated”). Write for a non-technical user who wants to know if anything changed that affects them.
Flag removal lines describe the feature the flag was guarding, in plain user-facing language. Look up the associated Jira ticket, Confluence page, or Slack thread description to find the right framing. The internal flag name is a lookup key only — it never appears in the output.
Use the format:
Removed feature flag for [user-facing description of what the feature does]Example: a flag named pm-36859-refactor-org-collections-vault-component becomes:
Removed feature flag for organization vault collection management improvementsSelf-hosted users are the primary audience for this line — they are receiving the feature for the first time when the flag is removed, so the description should communicate the benefit clearly.
When a flag in the Slack thread’s enabled list has no matching issue in this release, and the Step 3 investigation shows the guarded work is genuinely user-facing, write a normal named bullet describing the feature going live — phrased the same as any other Added/Updated line. Do not call out that it was “previously shipped” or reference the flag mechanics; users only care that the feature is now available to them.
Example: the Slack thread lists pm-40021-item-share-preview as enabled, but every issue tagged with that flag shipped two releases ago and none appear in this release’s Jira list. A Jira search for the flag identifier turns up the original ticket, “Add preview before sharing vault items” — a user-facing change, so it earns a bullet. The resulting line:
Added a preview step before sharing vault itemsNot every enabled flag reaches this point. If the same investigation instead turns up a ticket like “Refactor vault item sharing internals behind a flag,” it collapses into the catch-all line exactly as it would have if it had shipped with a ticket in this release.
Updated UI for centralized ownership policy
Added a product tour for access intelligence
Added information banner to SCIM setup page
Added a checkout success page following Stripe payment flows
Various under-the-hood improvements and minor bug fixesAdded support for flexible collection permissions for enterprise plans
Improved admin console filtering for large organizations
Removed feature flag for flexible collection permission management
Removed feature flag for bulk collection management improvements
Various under-the-hood improvements and minor bug fixesBefore presenting the final output, check:
mcp__plugin_bitwarden-atlassian-tools_bitwarden-atlassian__search_issuesmcp__plugin_bitwarden-atlassian-tools_bitwarden-atlassian__get_issuemcp__plugin_bitwarden-atlassian-tools_bitwarden-atlassian__get_issue_commentsplugins/bitwarden-product-analyst/skills/writing-release-notes/SKILL.mdmain, last pushed 23 September 2026.SKILL.md, not by matching a directory convention. 13 distinct layouts observed: plugins/bitwarden-atlassian-tools/skills/*/SKILL.md, plugins/bitwarden-code-review/skills/*/SKILL.md, plugins/bitwarden-delivery-tools/skills/*/SKILL.md, plugins/bitwarden-design-tools/skills/*/SKILL.md, plugins/bitwarden-designer/skills/*/SKILL.md, plugins/bitwarden-devops-engineer/skills/*/SKILL.md, plugins/bitwarden-product-analyst/skills/*/SKILL.md, plugins/bitwarden-security-engineer/skills/*/SKILL.md, plugins/bitwarden-shepherd/skills/*/SKILL.md, plugins/bitwarden-tech-lead/skills/*/SKILL.md, plugins/bitwarden-testing-tools/skills/*/SKILL.md, plugins/claude-config-validator/skills/*/SKILL.md, plugins/claude-retrospective/skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Bitwarden, declaring 16 plugins. It is read for editorial metadata only — never as the skill index, which is always the repository tree./bitwarden/ai-plugins.md, and each skill at its own .md URL.