stale-ticket-triage

stale-ticket-triage is a skill for Claude Code, Codex from aozyildirim/Agena. It costs 57 tokens per session (710 once invoked), scanned A, original, MIT.

A scheduled assistant that reviews old active tickets and recommends closing, snoozing, or keeping each one. A ticket is a tracked work item, and snoozing postpones it without treating it as finished.

In plain words
What is it for?
Use it to scan tickets older than a chosen age, apply conservative triage decisions, and save those decisions so repeated scans do not duplicate them.
Why use it?
It replaces a recurring meeting where someone manually examines every old ticket. The assistant gives one-sentence reasons so a project manager can review many recommendations quickly.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to scan tickets older than a chosen age, apply conservative triage decisions, and save those decisions so repeated scans do not duplicate them.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/aozyildirim/agena/stale-ticket-triage
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add aozyildirim/Agena --skill stale-ticket-triage
Clone the repo
git clone --depth 1 https://github.com/aozyildirim/Agena

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for stale-ticket-triage

README.md
[![agentmods](https://agentmods.dev/badge/skills/aozyildirim/agena/stale-ticket-triage/github.svg)](https://agentmods.dev/skills/aozyildirim/agena/stale-ticket-triage)
Your own site
<a href="https://agentmods.dev/skills/aozyildirim/agena/stale-ticket-triage"><img src="https://agentmods.dev/badge/skills/aozyildirim/agena/stale-ticket-triage/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for stale-ticket-triage

Your own site · 80×15
<a href="https://agentmods.dev/skills/aozyildirim/agena/stale-ticket-triage"><img src="https://agentmods.dev/badge/skills/aozyildirim/agena/stale-ticket-triage.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 57 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 710 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00057 $0.00710
Opus 5 $0.00028 $0.00355
Sonnet 5 $0.00011 $0.00142
Haiku 4.5 $0.00006 $0.00071

Measured 12d ago against content hash 101b8f41e3fb, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

stale-ticket-triage scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/agena/stale-ticket-triage/SKILL.md · 68 lines

How it starts

The opening of the file, as written. The whole thing — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Stale Ticket Triage

Backlogs accumulate dead rows. Most teams have a recurring Friday meeting where someone walks every ticket older than X days and decides whether to close, snooze, or keep it. That hour is the perfect AI workload — the decision is shallow but the volume is high.

How to apply this pattern

  1. Define stale: a ticket is stale when its updated_at is older than the org's threshold (default 30 days) AND its status is still in the active set (not Closed / Done / Cancelled).

  2. Schedule the scan (chip-pick: every 6h / 12h / daily 9am / weekly Sundays / monthly). Each run hits the source-platform API for every project the org cares about, lists stale issues, and sends each through a short LLM call.

  3. System prompt the LLM with three explicit verdictsclose / snooze / keep — plus a one-sentence reason. Be conservative on close: only pick it when the ticket itself signals resolution (links a merged PR, mentions a follow-up). Default to snooze when unsure; never close from silence alone.

  4. Persist each verdict as a triage decision row keyed by (org, source, external_id) so re-runs are idempotent. Status transitions: pendingapplied / skipped / overridden.

  5. One-click bulk approve in the UI: the human reviews the AI verdicts in a list, hits "Apply all AI suggestions", and the system writes back to Jira / Azure DevOps in a single batch.

Example LLM reply format

VERDICT: close
REASON: Closed by PR #4221 (merged 38 days ago); customer hasn't
        responded since the fix shipped.
VERDICT: snooze
REASON: Still relevant but no recent customer activity; revisit when
        the related epic resumes.

Notes

  • Audit trail is non-negotiable. Every AI verdict and every human override needs a row with timestamp + user id. Bulk-approve must not destroy history; it appends.
  • Source-side scan (read tickets directly from Jira / Azure DevOps) scales better than relying on imported task records, because most stale tickets were never imported into the AI tool.
  • Threshold is per-workspace. Solo product teams might want 14 days; enterprise backlogs need 60-90.
  • The verdict prompt is short on purpose — long prompts encourage the model to add commentary and skip the structured reply.
  • Pair with reporter-routing rules so security tickets bypass the triage flow entirely — those should never be auto-closed.

Read the full file on GitHub · 68 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 68 lines · 57 tokens per session scan A 101b8f41e3fb

Subscribe to this mod's changes

stale-ticket-triage is a skill published in the GitHub repository aozyildirim/Agena (99 stars, last pushed 1mo ago), licensed MIT. It adds 57 tokens to every session and 710 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.