Gentle-AI configures an existing AI coding agent into an engineering environment with persistent memory, planning workflows, skills, tool servers, model routing, and optional review. Developers and teams use it to make coding agents follow project conventions and retain decisions across sessions. The catalogue entries are its skills, commands, agents, and instruction.
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.
npx skills add Gentleman-Programming/gentle-ai --skill systemic-issue-triagegit clone --depth 1 https://github.com/Gentleman-Programming/gentle-aiWrote 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.
[](https://agentmods.dev/skills/gentleman-programming/gentle-ai/systemic-issue-triage)<a href="https://agentmods.dev/skills/gentleman-programming/gentle-ai/systemic-issue-triage"><img src="https://agentmods.dev/badge/skills/gentleman-programming/gentle-ai/systemic-issue-triage.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector pass
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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00057 | $0.01383 |
| Opus 5 | $0.00028 | $0.00691 |
| Sonnet 5 | $0.00011 | $0.00277 |
| Haiku 4.5 | $0.00006 | $0.00138 |
Grade A, and why
systemic-issue-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 6d 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.
How it starts
The opening of the file, as written. The whole thing — 53 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Systemic Issue Triage
Activation Contract
Use when triaging incoming issues, planning fixes for a backlog, or deciding how to respond to any bug report. The failure mode this skill exists to prevent: fixing symptoms one-by-one until the system becomes over-engineered machinery that grows exponentially and nobody can maintain.
For a full-backlog audit REPORT (dispositions across every open issue/PR), use backlog-triage; this skill governs how the resulting fixes are designed, batched, and closed.
Hard Rules
- Classify by ROOT CLASS before touching code. Every issue lands in exactly one bucket: (A) superseded by an in-flight design change — name the change and the test that proves it; (B) duplicate of a known class — name the canonical tracker; (C) real new bug — assign to a root-cause CLUSTER, never a standalone fix; (D) feature request; (E) unclear — ask the reporter, don't guess.
- Two or more issues sharing a root = ONE fix at the root, closing all of them with named test evidence. N issues never justify N patches.
- Issues close against NAMED TESTS (supersession evidence), never against promises or "should be fixed now".
- The over-engineering test before ANY fix: does it add a state, a verb, a config flag, a gate, or a parallel representation of existing truth? If yes, redesign — the correct fix usually DELETES or RELAXES something (13 states became 5; a dead-end became a one-line exit message).
- A block whose fix is "name the executable exit in the message" is a MESSAGE fix — do not build machinery around it. Every refusal must name a runnable continuation; verify runnability by executing the printed command, not by assuming.
- Blocking budget: humans may be blocked only at genuine consent and terminal decisions. Any fix that introduces a new human block or a state without a self-service exit is rejected at review, not shipped.
- If a fix crosses a systemic-cluster boundary another issue already tracks, STOP and write one unified design for the cluster (owner, error precedence, migration table per call site) before any PR. Duplicating an approved sibling issue's scope is a defect.
- Self-reported "fixed" is a claim: reproduce the original report's exact scenario on a fresh binary before closing.
- Retiring a command or verb: grep its user-facing STRING repo-wide, not just its symbol call graph. In a system where every refusal names an executable exit, deleting a verb orphans every refusal, help text, and sanctioned-exit list that names it — the user is then told to run a command that no longer exists. Recurse: each caller's callers, and any test file whose helpers other retained tests reuse. Expect a design-time inventory to undercount real scope by 2-5x; report the delta rather than trusting the citation.
- A deletion slice's deadcode ratchet may legitimately go net-POSITIVE when the consumer dies before its provider (consumer-first ordering). Report the true number and name the slice that absorbs it; forcing artificial negativity hides the transition.
- An issue's stated MECHANISM is a hypothesis; only its symptom is evidence. Reproduce before implementing. A correct conclusion routinely names the wrong line, one surface away — a test written against the stated mechanism that PASSES on unmodified main means the report is right and the diagnosis is not. Trust your reproduction over the issue text and say so.
- Broken in production but green in tests = suspect the test was TAUGHT to agree. Check whether the commit that introduced the defect also taught the corpus, a test helper, or a fixture to satisfy it; that removes the broken shape from the test surface at the moment it becomes broken. Also check for a test row asserting the defect as intended behavior. Remove it rather than leaving a test that pins a bug.
- Before deriving any plan from a contract document, identify which copy CONSUMERS receive. A docs mirror and a shipped asset drift, and the guard enforcing meaning may point at the mirror while the guard pointing at the shipped copy only counts rows. Verify the row TEXT, not the row's existence.
- A WRONG exit outranks a missing one. A dead end tells the user to stop; advice that does not work sends them in circles blaming themselves. Check each named exit still runs before treating the message as fixed.
- Closing an issue while half of it is still true strands the reporters of the other half. When one thread carries two failure modes, close nothing and comment naming both, what shipped for which, and what the rest are still waiting on.
- Distinguish "the provider lacks this fact" from "lacks it AT THIS LINE". The second is plumbing and costs nothing to thread through; only the first justifies new wire vocabulary, which is a one-way door consumers must implement forever.
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.
- 8d ago First seen · 53 lines · 57 tokens per session scan A d0562fa1e2f8
systemic-issue-triage is a skill published in the GitHub repository Gentleman-Programming/gentle-ai (6,416 stars, last pushed today), licensed MIT. It adds 57 tokens to every session and 1,383 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.
Other skills, from other repositories
jira
Unified Jira entry point. Routes to preview (default), create, or review subcommands.
incident-response
Incident management lifecycle — triage, communicate, mitigate, postmortem. Three modes — new (start incident), update (status update), postmortem (blameless RCA report).
revert
Git-aware revert that understands Draft tracks, phases, and tasks. Safely undo work at task, phase, or track level. Use when the user asks to 'revert this track', 'undo a phase', 'revert task X', or says 'roll back the last task', 'undo this work'.
standup
Generate standup summary from git history, track progress, and Jira/GitHub activity. Read-only — makes no changes to the codebase.
status
Display current progress of Draft tracks and active tasks. Shows phases, completion percentages, and blocked items.
integrations
Canonical integrations parent command. Handles external system exports and syncs. Routes intent to jira-preview or jira-create based on context.