Installs into .claude/skills of the current project.
Are you the author of Professor Triage?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/baekenough-professor-triage)
---
name: professor-triage
description: Analyze GitHub issues against current codebase and perform automated triage with priority assessment
scope: harness
version: 2.3.0
user-invocable: true
effort: high
context: fork
argument-hint: "[issue-numbers...] [--label <label>] [--state <state>] [--since <date>]"
---
# /professor-triage — Codebase-Driven Issue Triage
## Purpose
Analyzes GitHub issues directly against the current codebase. For each issue, searches relevant code, assesses impact and blast radius, determines whether the issue has already been resolved, and performs automated triage with priority and size estimation. Produces a cross-analysis report and executes low-risk triage actions automatically.
**Full phase detail**: `guides/professor-triage/phases.md`
## Usage
```
/professor-triage # Default: --state open (excludes triage-complete)
/professor-triage 587 589 590 591 592 # Direct issue numbers
/professor-triage --label codex-release # Custom label filter
/professor-triage --since 2026-03-20 # Date filter
```
When `pipeline auto-dev`'s triage step invokes this skill with a release manifest (issue numbers from scope-selection) instead of a user typing issue numbers directly, the Phase 5 label differs — see the "Auto-dev manifest detection" bullet under Phase 5 Action Policy below.
## Workflow Contract
5-phase pipeline:
| Phase | Name | Owner | Model |
|-------|------|-------|-------|
| 1 | Gather | Orchestrator | — |
| 2 | Codebase Analysis | Explore agents | haiku |
| 3 | Cross-Analyze | Orchestrator (opus for >15 issues) | sonnet/opus |
| 4 | Multi-Perspective Analysis & Output | general-purpose agents | sonnet/opus |
| 5 | Act | mgr-gitnerd | — |
## Lightweight Mode (Cross-Tier Substitution)
Independent of the auto-dev compression tier selected, this skill's Phase 1-4 may be replaced by a lightweight orchestrator analysis instead of a full skill spawn, but only when the conditions in `.claude/skills/pipeline/workflows/auto-dev.yaml` (runtime source) `## Cross-tier — Lightweight Skill-Mode Substitution` are met (scope ≤3 issues, code evidence or a measured root cause with the command used, and a mandatory justification log entry). This skill does not duplicate those conditions here — that section is the authoritative gate.
When lightweight mode is used, the triage output (Phase 4E artifact and/or Phase 4D comment) MUST state which mode produced it: `mode: full` or `mode: lightweight`.
## Delegation Contract
| Phase | Agent | Mode |
|-------|-------|------|
| Phase 2 codebase search | Explore (haiku) | bypassPermissions |
| Phase 4A Senior Architect | general-purpose (sonnet) | bypassPermissions |
| Phase 4B Project Colleague | general-purpose (sonnet) | bypassPermissions |
| Phase 4C Professor Synthesis | general-purpose (opus) | bypassPermissions |
| Phase 4D triage comment | mgr-gitnerd | bypassPermissions |
| Phase 4E artifact report | general-purpose | bypassPermissions |
| Phase 5 GitHub actions | mgr-gitnerd | bypassPermissions |
**Agent selection constraint**: Phases 4A, 4B, 4C, 4E MUST use `general-purpose` (NOT `arch-documenter`). `arch-documenter` has `disallowedTools: [Bash]` — cannot run the `gh`/shell commands these phases require. See #1043.
## Parallelization (R009/R018)
- 1-3 issues: single Explore agent per issue, parallel per R009
- 4-10 issues: parallel Explore agents, max 4 concurrent
- 10+ issues: Agent Teams per R018
- Phase 4A + 4B: parallel; Phase 4C: after both; Phase 4D + 4E: parallel; Phase 4F: gate
## Artifact Output (R006/R010)
Under `mode: "bypassPermissions"`, agents write directly to `.claude/outputs/` with Write/Edit — no temp-script wrapping is needed (CC v2.1.121+, #1101). When spawning Phase 4A/4B/4C/4E agents, include verbatim in each agent prompt:
```
**Artifact output (for this task)**
If your task involves writing artifacts under `.claude/outputs/`, write the file to
`.claude/outputs/sessions/<date>/<artifact>.md` using the Write tool directly (create the
directory if needed). Your Agent tool call runs under `mode: "bypassPermissions"`, so direct
Write/Edit on `.claude/` is permitted.
```
See R006 "Sensitive Path Handling" (CC v2.1.121+ direct-write convention).
## Phase 5 Action Policy
**Automatic** (low-risk, reversible):
- Issue already resolved by commit → `gh issue close --reason "completed"` + resolving commit comment
- Cross-analysis "Not Applicable" → `gh issue close --reason "not planned"`
- Duplicate series → close older + `duplicate` label
- All analysis complete → add `triage-complete` label (meaning: triaged but not selected in this auto-dev cycle — deferred/excluded, collected by release-plan; when this skill runs standalone rather than inside auto-dev's triage step, this is the label applied — manifest-selected issues inside auto-dev get `verify-ready` instead, #1734)
- **Auto-dev manifest detection**: when the caller supplies a release manifest (the list of issue numbers selected by `pipeline auto-dev`'s scope-selection step) as this skill's issue-number argument, treat it as auto-dev context — label those manifest issues `verify-ready`, NOT `triage-complete`. With no manifest supplied (standalone `/professor-triage`, `--label`, `--state`, or `--since` invocation), apply the default `triage-complete` label per the bullet above.
- Priority assigned → add `P1`/`P2`/`P3` label
**Confirmation required** (high-risk): issue reopen, new issue creation, epic linking, issue body modification.
**Ensure `triage-complete` label exists**: `gh label create "triage-complete" --color "0E8A16"` if missing.
## Permission Mode
When spawning agents via the Agent tool during this skill's execution, always pass `mode: "bypassPermissions"`. The Agent tool default (`acceptEdits`) overrides agent frontmatter `permissionMode`, causing permission prompts during unattended execution.