Skip to content
Back to skills

Aped Triage

ASecurity

Use when user says "triage this issue", "classify this bug", "is this in scope", "out of scope", "should we fix this now", "prioritize", "triage", or invokes aped-triage. Issue triage state machine: intake → classify → route → close/defer. Maintains .out-of-scope/ knowledge base for deferred items. Emits triage-decision.md for downstream skills.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
developmentbashawsgit

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add yabafre/aped-claude --skill aped-triage --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Aped Triage?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Aped Triage
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/yabafre-aped-triage/badge)](https://www.skillsdirectory.com/skills/yabafre-aped-triage)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: aped-triage
keep-coding-instructions: true
description: 'Use when user says "triage this issue", "classify this bug", "is this in scope", "out of scope", "should we fix this now", "prioritize", "triage", or invokes aped-triage. Issue triage state machine: intake → classify → route → close/defer. Maintains .out-of-scope/ knowledge base for deferred items. Emits triage-decision.md for downstream skills.'
allowed-tools: "Read Edit Write Bash Grep Glob"
allowed-paths:
  write: ["{{OUTPUT_DIR}}/**", "{{APED_DIR}}/**"]
  read-only: ["src/**", "tests/**", "package.json"]
---
<!-- AUTO-GENERATED from SKILL.md.tmpl. Edits will be overwritten. Run: npm run gen:skill-docs -->

**Activation guard (6.2.0):** Before any other action, run `bash {{APED_DIR}}/scripts/check-enabled.sh`. If it exits non-zero, print "APED disabled — run aped-method enable" and HALT.

# aped-triage — Issue Triage State Machine

## Purpose

Classify and route incoming issues (bugs, feature requests, questions, regressions) through a deterministic triage pipeline. Reduces hallucinated priority assignments by forcing structured evidence gathering before any classification.

## Iron Laws

See [`ETHOS.md` § aped-triage](../ETHOS.md#aped-triage) — three laws: evidence before classification; out-of-scope is a destination not a waste bin; scope verification precedes priority.

## Triage Pipeline

### Step 1: Intake — Capture the raw signal

Read the issue/bug/request. Extract:

| Field | Source |
|---|---|
| **Title** | Issue title or user description |
| **Reporter** | Who surfaced this (user, CI, monitor, self) |
| **Reproduction** | Steps to reproduce, or "not applicable" for feature requests |
| **Evidence** | Error output, screenshot, log line, test failure |
| **Affected artefact** | Which file/skill/hook/script is involved |

If ANY field is missing, ask the user before proceeding. Do not infer.

### Step 2: Scope Check

Read the current sprint/epic scope:

1. Read `{{OUTPUT_DIR}}/state.yaml` → extract `pipeline.current_phase`.
2. Read `{{OUTPUT_DIR}}/epics.md` → identify the active epic's file set.
3. If either file is missing, report "scope unknown — ask user" (never assume in-scope).

**Decision gate:**
- If the affected artefact is NOT in the current epic's file set → **OUT OF SCOPE** → Step 5.
- If the affected artefact IS in scope → continue to Step 3.
- If uncertain → ask the user. Never assume scope.

### Step 3: Classify

Assign classification based on evidence (not intuition):

| Classification | Criteria |
|---|---|
| **REGRESSION** | Worked before, broken now. `git bisect` identifies the breaking commit. |
| **BUG** | Never worked as specified. The spec says X, the code does Y. Cite both. |
| **FEATURE** | Not in any spec. The user wants new behavior. |
| **QUESTION** | Ambiguity in spec or docs. No code change needed — docs/spec clarification. |
| **DUPLICATE** | Same root cause as an existing triage record. Cite the original. |

### Step 4: Route

Based on classification + scope:

| Classification | In Scope | Route |
|---|---|---|
| REGRESSION | yes | **BLOCKER** → `aped-debug` immediately. Block current story. |
| BUG | yes | **HIGH** → create story via `aped-story`, add to current epic. |
| BUG | no | **DEFER** → Step 5 (out-of-scope). |
| FEATURE | yes | **MEDIUM** → `aped-brainstorm` → PRD flow. |
| FEATURE | no | **DEFER** → Step 5. |
| QUESTION | any | **LOW** → resolve inline, update docs. No story needed. |
| DUPLICATE | any | **CLOSE** → link to original, no action. |

### Step 5: Out-of-Scope Routing

For DEFER decisions, create a triage record:

```bash
mkdir -p {{APED_DIR}}/.out-of-scope
```

Write `{{APED_DIR}}/.out-of-scope/<date>-<slug>.md`:

```markdown
# Triage: <title>

- **Date**: <YYYY-MM-DD>
- **Classification**: <BUG|FEATURE>
- **Reporter**: <who>
- **Evidence**: <one-line>
- **Reason deferred**: <out of current sprint scope / low priority / needs design>
- **Reconsider when**: <next sprint planning / when epic X ships / never>
```

### Step 6: Emit Decision

Write `{{OUTPUT_DIR}}/triage-decision.md`:

```markdown
# Triage Decision

- **Issue**: <title>
- **Classification**: <REGRESSION|BUG|FEATURE|QUESTION|DUPLICATE>
- **Priority**: <BLOCKER|HIGH|MEDIUM|LOW|DEFER|CLOSE>
- **Route**: <aped-debug|aped-story|aped-brainstorm|docs|.out-of-scope|closed>
- **Evidence**: <cite>
- **Scope check**: <in-scope (epic X, story Y) | out-of-scope (reason)>
```

## Stop Conditions

- Issue fully classified and routed → emit triage-decision.md → DONE.
- User overrides classification → accept, note the override in the decision, proceed.
- Duplicate confirmed → link to original → DONE.

## Red Flags

| Thought | Problem |
|---|---|
| "This is obviously a P1" | No evidence cited. Do Step 1 first. |
| "I'll just fix it quickly" | Triage first. Quick fixes without triage create scope drift. |
| "It's probably in scope" | Check the epics file. "Probably" is not evidence. |
| "I'll defer this later" | Route to .out-of-scope NOW. "Later" means "never". |

Files in this skill

  • SKILL.md5 KB
  • SKILL.md.tmpl4.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.