# /ci-triage-minimax Skill **Purpose:** Delegate triage of a failing Gitea Actions run to a MiniMax M3 sub-session: logs fetched via `gitea-agent-companion`, analysed in MiniMax, and a short triage file (failing step, error excerpt, probable cause, suggested action, confidence) returns. Classic payload-dwarfs-answer offload. Canonical placement: after `gac tail --until run-complete` exits 1. **Location:** `custom-claude-skills/skills/ci-triage-minimax/` — thin wrapper over `ci-triage-minimax-run` (small-scripts), which owns all mechanics. ## Usage `/ci-triage-minimax owner/repo [run-number] [job]` → the skill picks the newest `failure` row from `gac inspect owner/repo` if no run number, then runs: ``` ci-triage-minimax-run --repo owner/repo --run [--job ] ``` Triage lands in `${XDG_RUNTIME_DIR:-/tmp}/ci-triage-minimax/-/run--triage.md`. ## Key design points - **Token boundary stays inside gac** (env → token file → secrets path); the wrapper never reads or passes the Gitea token. Logs are **redacted** (credential patterns → `[REDACTED]`) before reaching MiniMax — CI logs carry unmasked clone URLs. - **gac's `failed_step` steers the prompt:** when non-null MiniMax analyses *why*, not *which*; when null the contract requires the literal `UNKNOWN` — no fabricated step names. - **gac exit mapping:** gac 2 (usage) → 1, gac 3 (auth/API/not-found, often transient) → 2, so the skill's retry/fallback logic fires correctly. - **Exit contract** 0/1/2/3; fallback on 2/3 = `gac inspect --logs` directly, triage in-session. - **`## Suggested next action` is advisory only** — the operator re-derives commands, never copy-runs third-party model output shaped by anyone who can trigger CI. ## Which modes use it Any mode doing post-push CI watching (`gac tail` pattern in root CLAUDE.md). Related: [[script-ci-triage-minimax-run]], [[skill-review-minimax]], [[skill-ask-minimax]]. ## Gotchas - The run number is the web-UI number, not the API id; gac resolves it within its `--limit` window — very old runs may report not-found (exit 2 here). - Multi-job runs with no failed job need `--job` (gac CLI-17); the skill passes the third argument through. - Run-picking (newest failure) is done by the skill reading gac's human table — deliberately not automated in the script (unversioned parse).