issue-triage — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited issue-triage (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Read-only triage of a bug or defect. Gathers context, maps the suspected code area, hypothesizes root causes, and produces a ranked triage report with proposed investigation paths.
Read-only by default. The skill never modifies Confluence pages, MRs, or code files, and never changes Jira ticket fields. The single exception is Phase 7: with explicit user opt-in, the final report may be posted as a comment on the originating Jira ticket.
One of:
[A-Z][A-Z0-9]+-\d+ (e.g. PROJ-1234)If neither is clear from the user's message, ask which they want to triage.
Triage Progress:
- [ ] Phase 1: Gather issue context
- [ ] Phase 2: Map suspected code area (codebase-explain)
- [ ] Phase 3: Pull related signals (git, MRs, sibling tickets)
- [ ] Phase 4: Clarify gaps with the user (grill-me)
- [ ] Phase 5: Hypothesize root causes (clarity-council)
- [ ] Phase 6: Produce triage report
- [ ] Phase 7: Optionally publish report as Jira comment (user opt-in)If Jira ticket:
jira_get_issue — summary, description, type, priority, status, components, labels, affected version, environment.jira_get_comments — capture user-reported reproduction steps and prior investigation notes.jira_get_changelog — note recent status changes, reassignments, or version field updates.jira_get_remote_links — capture linked Confluence pages, MR URLs, log dashboards.If free-form description:
Compile a Context Summary and present it. Ask if anything important is missing before proceeding.
Identify file paths, modules, error messages, function names, or stack frames mentioned in the issue.
Invoke the /codebase-explain skill against the most likely module(s). The goal is a map of:
Use Glob and Grep to confirm files exist and locate the actual symbols. If the issue mentions a stack trace, walk the trace top-down and read each frame's source.
If the suspected area is genuinely unclear from the issue, stop and ask the user which subsystem they suspect — guessing wastes context.
For each signal, time-box to the most relevant items. Don't drown in noise.
list_commits on suspected files for the last 30 days. Use Bash: git log --oneline -20 -- <path> for local. Note: who, when, and short message.list_merge_requests with search filter on suspected file paths or symbol names; limit to 5 most recent merged MRs. Look for: regressions introduced, recently changed contracts, refactors that touched the area.confluence_get_page. Look for runbooks, design intent, known limitations.jira_search with JQL like text ~ "{key error keyword}" AND project = {PROJECT} ORDER BY created DESC (limit 5). Check for already-known issues with fixes or workarounds.Present a Signals Summary: each signal with one-line takeaway + relevance flag.
Identify the open questions blocking a confident hypothesis. Examples:
If the answers materially change the hypothesis space, invoke the /grill-me skill to walk the user through these questions one at a time. Otherwise, skip this phase — don't manufacture interrogation for trivial gaps.
Invoke the /clarity-council skill in council-multi-persona agent:
user_problem: "Identify the most likely root causes for: {issue summary}"
context: |
Symptom: {one-line symptom}
Repro: {steps if known, else "not yet established"}
Environment: {where it happens}
Code map (from codebase-explain):
{paste relevant excerpts of the module map}
Recent activity in suspected area:
{top 3-5 commits / MRs with one-line takeaways}
Sibling issues:
{1-2 closest matches if any}
User-clarified facts:
{answers from Phase 4}
desired_outcome: >
3-5 ranked root-cause hypotheses, each with: a falsifiable prediction
(how to test it), the evidence supporting it, and the proposed first
diagnostic step.
selected_personas:
- researcher
- senior-architect
- senior-developer
- qa-engineer
- devils-advocate
depth: standardPersona focus:
Order of synthesis: present the researcher's evidence-quality audit first, then the ranked hypotheses. A hypothesis the researcher has flagged as evidentially weak should not be ranked #1 unless the others explicitly counter the flag.
Present the report in this format:
## Triage Report: {TICKET-KEY or short-title}
### Symptom
{1-2 sentences — what is broken, observable behavior}
### Suspected area
{module / file paths / functions implicated}
### Root cause hypotheses (ranked)
#### 1. {Hypothesis title} — {confidence: high/medium/low}
- **Why this fits:** {evidence — recent commits, related MRs, code patterns}
- **Falsifiable prediction:** "If this is the cause, then {X} should reproduce / {Y} should fix it."
- **First diagnostic step:** {what to instrument / what test to write / what to inspect}
- **Proposed solution path:** {high-level fix direction}
#### 2. {Hypothesis title} — {confidence}
{same structure}
#### 3. {Hypothesis title} — {confidence}
{same structure}
### Signals consulted
- Recent commits in {area}: {N} reviewed, {key finding or "none relevant"}
- Recent MRs touching {area}: {N} reviewed, {key finding or "none relevant"}
- Sibling tickets: {N} matches, {key finding or "no close matches"}
- Confluence: {pages reviewed if any}
### Open questions
- {questions still unresolved that would sharpen the diagnosis}
### Recommended next step
{One concrete action — e.g. "reproduce in a controlled environment first",
"ask {person} who wrote the recent commit to {area}", "instrument {X} to
test hypothesis #1", or "spike a fix branch against hypothesis #1"}
> **Read-only triage.** No tickets, code, or MRs were modified.Only runs if the input was a Jira ticket. If the input was a free-form description, skip this phase and end the skill.
After presenting the report, ask the user — using AskUserQuestion — exactly one question:
Publish this triage report as a comment on `{TICKET-KEY}`? - No (recommended default) — end the skill, no action taken. - Yes — post the report as a comment on the originating ticket.
If "No": the skill ends. Confirm with a single sentence: "Report kept local. No comment posted."
If "Yes":
jira-comment-template.md (sibling file to this SKILL.md).h2., bold is *text*, code blocks are {code}...{code}, panels are {panel}...{panel}, etc.mcp__atlassian__jira_add_comment with page_id = the ticket key (the tool also accepts issue keys for Jira comments) and body = the rendered comment.If the comment fails to post (permissions, network, etc.), surface the error and offer to retry or save the rendered comment locally — do not silently swallow the failure.
jira_create_issue, jira_update_issue, jira_transition_issue, confluence_create_page, create_or_update_file, or any other write operation. The single permitted write is jira_add_comment in Phase 7, and only after explicit user opt-in.jira-comment-template.md is mandatory whenever a comment is posted. Do not edit, soften, or omit it.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.