Help us improve
Share bugs, ideas, or general feedback.
From issue-triage
Restructures a poorly written tracker issue into a clear, self-contained document a stranger can act on. Works with Azure DevOps and Jira across all archetypes (Bug, Incident, Story, Feature, Task, Spike).
npx claudepluginhub incubyte/ai-pluginsHow this skill is triggered — by the user, by Claude, or both
Slash command
/issue-triage:issue-refinerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Take a tracker issue that is hard to read and turn it into a document a stranger can open cold, in a year, and act on. Reorganize the content. Never delete it. Every fact in the original survives the rewrite, just placed somewhere it can be found.
Refines brief bug, feature, or refactor descriptions into structured issues with technical context, code links, and details for developers and AI agents.
Task creation for issue trackers — structured descriptions, acceptance criteria, field categorization, and tracker linking. Invoke whenever task involves creating work items in any issue tracker — bugs, features, stories, tasks, or any tracked work from standalone requests or decomposition documents.
Updates GitHub issue descriptions with structured analysis (summary, requirements, references, implementation plan, impact scope) based on issue number, request, code, docs, and designs.
Share bugs, ideas, or general feedback.
Take a tracker issue that is hard to read and turn it into a document a stranger can open cold, in a year, and act on. Reorganize the content. Never delete it. Every fact in the original survives the rewrite, just placed somewhere it can be found.
This skill does not write to the tracker. It returns the refined title and markdown body as plain text. The caller (the issue-triage agent in Phase 3 prep, or a user invoking the skill directly with a manual write step) batches the write through the adapter's diff-and-confirm gate.
The skill writes markdown only. The issuekit:tracker-adapter body-format converter projects to AzDO HTML or Jira ADF at write time.
The skill works two ways. When a user pastes an issue and asks to refine it, the skill fetches and refines, then returns. When the issue-triage agent calls in Phase 3 prep, the agent has already fetched the payload and the investigation report; skip the fetch step.
Six ordered steps. Steps 1, 4, and 5 require reading the corresponding reference file when you reach that step. Do not pre-load the references at the start of the run.
references/classification-guide.md.)assets/template.md, including only the sections the archetype calls for. (Reference also applies issuekit:prose-style rules to the output before returning.)references/title-guide.md.)The skill returns:
{
refined_title: string,
refined_body: string (markdown),
archetype: "Bug" | "Incident" | "Story" | "Feature" | "Task" | "Spike",
warnings: string[] // out-of-subset markdown, content-loss notes
}
Read references/gathering-guide.md when you reach this step. It documents which fields to request, the round-trip content-loss check, and the completeness gate that blocks Step 2 until comments and history have been read.
When the caller (the issue-triage agent) has already fetched the issue and exposes the payload, reuse it. Don't re-fetch.
If a direct invocation: call getIssue(id) and getIssueComments(id) via issuekit:tracker-adapter. The adapter normalizes the body to markdown regardless of source format.
Use the table below. The archetype is the single most important variable in the rewrite because it picks which template sections appear in the final description.
| Archetype | Typical tracker types | What the content looks like |
|---|---|---|
| Bug | Bug, Defect | A user-visible symptom, an error, broken behavior, or unexpected output. May include reproduction steps. |
| Incident | Incident, Outage, Issue (AzDO Agile), Impediment (Scrum), anything tagged Sev-* | Production impact, blast radius, timeline, mitigation steps, post-mortem context. |
| Story | Story, User Story, Product Backlog Item (Scrum), Requirement (CMMI), Enhancement, New Feature | A user need or business goal, acceptance criteria, design specs, links to product briefs. |
| Feature | Feature | Epic-level feature initiative; multiple stories sit under it. |
| Task | Task, Sub-task, Chore, Tech Debt | Operational work: cleanup, configuration, migration, dependency upgrade, runbook execution. |
| Spike | Spike, Research, Investigation, Task with spike label | Open questions to resolve, exploration scope, proof-of-concept boundaries, preliminary findings. |
When the issue type and the content disagree, trust the content. An issue typed Bug whose body is acceptance criteria and a Figma link is a Story. An issue typed Task describing user-visible breakage is a Bug.
Hold the archetype as working context. Do not surface it in the output unless the user asks.
Catalog every distinct fact found in the description, every comment, the history (when read), and any linked issues that add scope. Read references/classification-guide.md when you reach this step. It defines the information categories and the verified-vs-unverified flag every item carries.
Apply the rewrite principles from references/classification-guide.md (already loaded in Step 3). The principles cover symptoms-over-solutions, evidence-over-claims, prose-over-tables, and the rules for surfacing decisions buried in comment threads.
Structure the rewritten content using assets/template.md. Three rules are non-negotiable:
Read references/title-guide.md when you reach this step.
Before returning, invoke issuekit:prose-style on the refined body. The skill runs the writing-style rules (em dashes, LLM vocabulary, opener phrases, hedging). The refined body that comes back is what the skill returns to the caller.
The body must conform to the canonical markdown subset in issuekit/skills/tracker-adapter/references/body-format.md. Headings, bold, italic, inline code, fenced code, bullet/numbered lists, links, blockquotes, horizontal rules, mentions via @[userRef]. Tables only when 4+ rows with distinct columns. No HTML, no wiki markup, no strikethrough, no interactive checkboxes.
Out-of-subset constructs in the input round-trip as literal text and trigger a one-line warning in the returned warnings array.
These rules apply to everything this skill produces.
issuekit:prose-style runs on the refined body before return; these rules are the floor.