phx-triage

$npx mdskill add oliver-kriska/claude-elixir-phoenix/phx-triage

Interactively triage review findings to approve, skip, or prioritize each.

  • Filters review findings before committing to fixes, saving time.
  • Reads review files from .claude/plans/{slug}/reviews/.
  • Auto-approves Iron Law violations, then presents all findings for batch selection.
  • Outputs a filtered list of findings to fix, skipping rejected ones.

SKILL.md

.github/skills/phx-triageView on GitHub ↗
---
name: phx-triage
description: Triage review findings interactively — approve, skip, or prioritize each
  issue. Use after phx-review to filter findings before fixing.
---

# Triage — Interactive Review Resolution

Walk through review findings one by one for human decision before
committing to fixes.

## Usage

```
phx-triage .claude/plans/user-auth/reviews/user-auth-review.md
phx-triage                  # Uses most recent review
```

## Why Triage

After `phx-review` produces findings, you have three options:

1. **Fix everything** — `phx-plan .claude/plans/{slug}/reviews/...`
2. **Triage first** — `phx-triage` (filter, then fix what matters)
3. **Handle manually** — Read review, pick what to fix yourself

Best when review has 5+ findings and you want to prioritize.

## Workflow

### Step 1: Load Review

Read the review file. Parse all findings with severity.

**Auto-approve Iron Law violations**: Findings matching any Iron Law
are auto-approved as "Fix it" without asking. These are non-negotiable
in Elixir/Phoenix development.

### Step 2: Present ALL Findings for Batch Selection

Use `AskUserQuestion` with `multiSelect: true`. Start with
severity shortcuts, then list individual findings:

```
AskUserQuestion:
  question: "Which findings do you want to fix? (Iron Law violations auto-included)"
  header: "Triage"
  multiSelect: true
  options:
    - label: "All BLOCKERs ({count})"
      description: "Fix all critical issues"
    - label: "All WARNINGs ({count})"
      description: "Fix all should-fix issues"
    - label: "[BLOCKER] {title 1}"
      description: "{file}:{line} — {brief description}"
    - label: "[WARNING] {title 2}"
      description: "{file}:{line} — {brief description}"
```

If >4 options, batch into groups of 4 with severity shortcuts in
the first batch. Severity shortcuts select all findings of that
level — user can mix shortcuts with individual picks.

**AskUserQuestion discipline**: decisions only — never use it to
narrate progress. Every option carries `{file}:{line}` + counts so
the user decides without opening the review file.

### Step 3: Gather Context on Selected Items

For selected items, ask ONE batch follow-up: "Any specific
approach for any of these?" If they say "just fix them", proceed.

### Step 4: Generate Triage Summary

Write to `.claude/plans/{slug}/reviews/{slug}-triage.md` with Fix Queue
(approved items with checkboxes), Skipped, and Deferred sections.

### Step 5: Present Next Steps

```
Triage complete: {n} to fix, {n} skipped, {n} deferred.

1. Plan fixes — phx-plan .claude/plans/{slug}/reviews/{slug}-triage.md
2. Fix directly — phx-work (for simple fixes)
3. Review deferred items later
4. Capture solutions — phx-compound (if patterns were solved)
```

## Iron Laws

1. **Batch selection over one-by-one** — Use multiSelect for efficiency
2. **User decides, not the agent** — Present facts, don't push
3. **BLOCKERs cannot be skipped silently** — Warn if user tries
4. **Capture user context** — Every "fix it" should include
   any user guidance for better fixes
5. **Suggest compound after triage** — If triage reveals solved patterns
   (root cause identified, fix known), mention `phx-compound`
6. **NEVER auto-decide severity or auto-dismiss findings** — the human assigns final priority; present the agent's severity as a recommendation, not a verdict

## Integration with Workflow

```text
phx-review
       |
phx-triage  ← YOU ARE HERE (interactive filtering)
       |
phx-plan (with triage file) → phx-work → phx-compound
```

## References

- `references/triage-patterns.md` — Common triage decisions

More from oliver-kriska/claude-elixir-phoenix

SkillDescription
ash-frameworkAsh Framework — resources, actions, policies, aggregates, calculations, AshPhoenix.Form, LiveView, migrations. Use when generating resources via mix ash.codegen, editing changes, checks, types, validations, or domain code interfaces.
catchupSummarize and review what changed while you were away. Use after a weekend, vacation, or flight to check missed PRs, git commits, Linear tickets, and meetings — one prioritized brief, not a firehose.
cc-changelog|
codex-abRun an A/B codex review experiment — holistic codex review vs 3 focused dimension passes (security, ecto, liveview) on the branch diff, classify findings, report a panel-value verdict. Use when the branch is fresh, before any codex review runs.
compound-docsSearchable Elixir/Phoenix/Ecto solution documentation system with YAML frontmatter. Builds institutional knowledge from solved problems. Use when consulting past solutions before investigating new issues.
docs-check|
ecto-n1-checkDetect N+1 query anti-patterns specifically — Repo calls inside Enum/for
ecto-patternsEcto patterns — schemas, changesets, queries, migrations, Multi, associations, preloads, upserts. Use when editing Repo calls, Ecto.Query, or schema fields. Skip for Ash.
ecto:constraint-debugDebug Ecto constraint violations - trace triggers, check migrations, find duplicate data. Use when seeing unique_constraint, foreign_key_constraint, or check_constraint errors.
ecto:n1-checkDetect N+1 query anti-patterns specifically — Repo calls inside Enum/for loops, missing preloads on associations. Use when N+1 is explicitly suspected, NOT for unrelated Ecto questions or wider database performance.