Use when the user provides a single Jira issue key and asks whether it is still relevant, still applicable, still pending, still a bug, has been fixed, or can be closed. Trigger phrases include "Is [TICKET] still relevant?", "Is this still an issue?", "Is PM-123 still pending?", "Has this been fixed?", "Can we close this?", "Is this ticket still valid?", "Is this still applicable?", "Does this bug still exist?". Fetches the ticket and verifies the described problem against the current codebase to return a verdict with evidence. This skill assesses a single ticket at a time; invoke it iteratively for multiple tickets.
npx skills add https://github.com/bitwarden/ai-plugins --skill assessing-jira-issue-relevance
Determine whether a Jira issue still applies to the current codebase. Fetch the ticket, locate the specific code path it describes, compare current behavior against the ticket's description, and return a verdict with evidence.
Use get_issue with expand: ["renderedFields", "names"]. Extract:
git log searches.github.com/bitwarden/<repo> URL, or a linked PR/commit.Also note these staleness signals from the ticket fields before moving on:
get_issue) and check whether all other child tickets are resolved. A lone surviving task in an otherwise-completed epic is a strong signal that the work may have been intentionally deferred or forgotten — not that it's still needed.After fetching the ticket, always do both of the following:
Fetch issue comments (get_issue_comments): Comments often contain decisions that never made it back into the description — root cause findings, "we decided not to fix this", priority calls, or pointers to where the fix landed. Read them before building search targets.
Fetch linked issues (get_issue_remote_links and the issuelinks field): Look specifically for blocking relationships — issues this ticket blocks or is blocked by. A ticket blocked by unresolved work may not be actionable yet; a blocker that has since been resolved may mean this ticket is now ready. Fetch (get_issue) any directly linked issues to check their current status and extract additional technical context. Do not traverse more than one level deep.
Settle which repositories are in scope and confirm they are readable before searching anything. Do not begin Step 3 until all three checks below pass.
Bitwarden has many repositories — clients, server, sdk-internal, sdk-sm, android, ios, mcp-server, and others. Treat the candidate set as open; never assume a ticket must belong to one of the repos you have seen before.
1. Determine the repos.
If the ticket carries strong evidence (a literal repo name, a github.com/bitwarden/<repo> URL, or a linked PR/commit), use it and move on.
Otherwise, infer the most likely repo(s) from the weaker signals and present that inference for confirmation with AskUserQuestion. State what you inferred and the signal it rests on, offer the plausible alternatives you considered, and allow multiple selections — tickets legitimately span repos. Never search a repo the user has not confirmed.
2. Resolve each repo to a path.
Use the current working directory if it is that repo; otherwise look for a sibling directory of the same name; otherwise ask for the path. Confirm each resolved path is a real checkout:
git -C <path> rev-parse --show-toplevel
3. Verify the repo is cloned, and stop if it is not.
If a repo in scope has no checkout on disk, ask whether to clone it. On approval, clone it and continue.
If the user declines to clone, stop immediately. Return no verdict. State which repo was unavailable and that the assessment could not be completed. This halt applies even when other repos in scope are present — do not assess the available half and do not downgrade to a weaker verdict. Searching a repo that is not on disk returns no matches, which is indistinguishable from the code having been removed; proceeding would produce a confident "No longer relevant" on a ticket that is still live.
This halt is distinct from the Cannot determine verdict in Step 5. "Cannot determine" means the ticket was too vague to trace. This means the evidence was never accessible.
From the ticket, identify 2–5 specific identifiers to search for in code. Prioritize:
ValidateLegacyMigrationAsync, unlockViaBiometrics, validateCanManagePermission)BaseRequestValidator, LockComponent, CollectionDialog)"trial/send-verification-email", "verify-email-token")"managePermissionRequired")DenyLegacyUserMinimumVersion)If the ticket names no specific identifiers, derive them from the described behavior: what function would implement this, what component would render this UI, what endpoint would serve this request?
Run searches in the repo(s) confirmed in Step 2.
First, orient yourself in each repo: read its CLAUDE.md and README to find the source roots, module layout, and test locations. Do this rather than relying on remembered directory names — layouts differ per repo and change over time.
Then:
git log --oneline --since="<filed-date>" -- <file-path>
Look for commits that might have silently addressed the issue — refactors, renames, feature flag removals, component rewrites. If a commit looks relevant, read its diff on the affected lines.
Compare what the ticket describes against what the code does today. Reach a conclusion.
Verdict options:
file:line that proves it.git log provides no signal. State what you searched and why it was inconclusive. Only use this after exhausting the search targets.Format: Lead with the verdict and its justification in plain prose. Cite file:line references as evidence. If still relevant, state what specifically remains to be done — do not just restate the ticket. If staleness signals are present even for a "Still relevant" verdict, note them at the end: ticket age, epic completion state, priority, and assignee. Keep it tight; a verdict paragraph with supporting evidence is sufficient.
get_issue call often changes the recommendation from "build this" to "confirm whether this is still wanted"git log on the relevant filesFour worked examples: a bug where the described code path was silently refactored away, a task whose implementation gap is confirmed present, a spike made obsolete by later work, and a ticket whose repo is not cloned locally, where the skill halts without a verdict.
Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
Intelligently organizes your files and folders across your computer by understanding context, finding duplicates, suggesting better structures, and automating cleanup tasks. Reduces cognitive load and keeps your digital workspace tidy without manual effort.
Generates creative domain name ideas for your project and checks availability across multiple TLDs (.com, .io, .dev, .ai, etc.). Saves hours of brainstorming and manual checking.
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Implements Manus-style file-based planning for complex tasks. Creates task_plan.md, findings.md, and progress.md. Use when starting complex multi-step tasks, research projects, or any task requiring >5 tool calls.
Creative research ideation and exploration. Use for open-ended brainstorming sessions, exploring interdisciplinary connections, challenging assumptions, or identifying research gaps. Best for early-stage research planning when you do not have specific observations yet. For formulating testable hypotheses from data use hypothesis-generation.
Comprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
Take bitwarden/assessing-jira-issue-relevance from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.