Vortex CI Failure Analysis Skill
Analyze failed GitHub Actions runs for the Vortex repository and identify whether the failure is
caused by the PR, pre-existing flakiness, infrastructure, or an unrelated main-branch issue.
Inputs
Use any PR number, repository, run ID, failed job metadata, or log snippets supplied by the user or
automation prompt. If a needed value is missing, discover it with the narrowest gh command that
can answer the question.
Workflow
List failed jobs for the workflow run:
gh run view <run-id> --repo <owner/repo> --json jobs
Fetch only failed job logs first:
gh run view <run-id> --repo <owner/repo> --job <job-id> --log-failed
If that fails, use the Actions API:
gh api repos/<owner/repo>/actions/jobs/<job-id>/logs
If any gh command fails with error connecting to api.github.com in a sandbox, rerun it with
escalated network permissions immediately.
Classify each failure:
- Rust build errors: compiler diagnostics, spans, trait bound failures, feature-gate issues.
- Rust test failures: failing test name, panic/assertion output, expected vs actual values,
source path and line.
- Clippy failures: lint name, file path, line, and suggested fix if shown.
- Formatting or public API failures: changed files and commands needed to regenerate output.
- Python/docs failures: pytest, maturin, Sphinx, doctest, or packaging output.
- Infrastructure failures: toolchain download, cache, runner, network, disk, timeout, or
service issues.
Fetch the PR diff and metadata only after the failing log section is understood:
gh pr view <pr-number> --repo <owner/repo> --json title,body,baseRefName,headRefName,files,commits
gh pr diff <pr-number> --repo <owner/repo>
Reproduce narrowly when practical:
cargo test -p <crate-name> <test-name>
cargo clippy -p <crate-name> --all-targets --all-features
make -C docs doctest
uv run --all-packages pytest <path>
Check whether the same failure appears on recent main-branch runs or open issues before calling
it PR-caused.
Report Format
Post or return one concise Markdown report:
## CI Failure Analysis
### Status
<PR-caused | likely pre-existing | infrastructure | inconclusive>
### Failed Jobs
- `<job name>`: <build | test | clippy | fmt | docs | infra>
### Relevant Log Output
```text
<only the failing lines needed to understand the issue>
```
### Correlation With PR Changes
<Explain whether the diff touches the failing area and cite files/functions.>
### Recommended Next Step
<One or two concrete commands or code fixes.>
Rules
- Show relevant failure excerpts, not full logs.
- If many tests fail, detail the first few distinct failures and summarize the rest.
- Do not guess. If causation is unclear, say what was checked and what would resolve it.
- Prefer one PR comment or one final report over multiple fragmented updates.
1---2name: ci-failure-analysis3description: Analyze Vortex GitHub Actions CI failures. Use when asked to investigate failed CI runs, failed jobs, or when the user mentions "/ci-failure-analysis".4---56# Vortex CI Failure Analysis Skill78Analyze failed GitHub Actions runs for the Vortex repository and identify whether the failure is9caused by the PR, pre-existing flakiness, infrastructure, or an unrelated main-branch issue.1011## Inputs1213Use any PR number, repository, run ID, failed job metadata, or log snippets supplied by the user or14automation prompt. If a needed value is missing, discover it with the narrowest `gh` command that15can answer the question.1617## Workflow18191. List failed jobs for the workflow run:2021 ```bash22 gh run view <run-id> --repo <owner/repo> --json jobs23 ```24252. Fetch only failed job logs first:2627 ```bash28 gh run view <run-id> --repo <owner/repo> --job <job-id> --log-failed29 ```3031 If that fails, use the Actions API:3233 ```bash34 gh api repos/<owner/repo>/actions/jobs/<job-id>/logs35 ```36373. If any `gh` command fails with `error connecting to api.github.com` in a sandbox, rerun it with38 escalated network permissions immediately.39404. Classify each failure:4142 - Rust build errors: compiler diagnostics, spans, trait bound failures, feature-gate issues.43 - Rust test failures: failing test name, panic/assertion output, expected vs actual values,44 source path and line.45 - Clippy failures: lint name, file path, line, and suggested fix if shown.46 - Formatting or public API failures: changed files and commands needed to regenerate output.47 - Python/docs failures: pytest, maturin, Sphinx, doctest, or packaging output.48 - Infrastructure failures: toolchain download, cache, runner, network, disk, timeout, or49 service issues.50515. Fetch the PR diff and metadata only after the failing log section is understood:5253 ```bash54 gh pr view <pr-number> --repo <owner/repo> --json title,body,baseRefName,headRefName,files,commits55 gh pr diff <pr-number> --repo <owner/repo>56 ```57586. Reproduce narrowly when practical:5960 ```bash61 cargo test -p <crate-name> <test-name>62 cargo clippy -p <crate-name> --all-targets --all-features63 make -C docs doctest64 uv run --all-packages pytest <path>65 ```66677. Check whether the same failure appears on recent main-branch runs or open issues before calling68 it PR-caused.6970## Report Format7172Post or return one concise Markdown report:7374````markdown75## CI Failure Analysis7677### Status78<PR-caused | likely pre-existing | infrastructure | inconclusive>7980### Failed Jobs81- `<job name>`: <build | test | clippy | fmt | docs | infra>8283### Relevant Log Output84```text85<only the failing lines needed to understand the issue>86```8788### Correlation With PR Changes89<Explain whether the diff touches the failing area and cite files/functions.>9091### Recommended Next Step92<One or two concrete commands or code fixes.>93````9495## Rules9697- Show relevant failure excerpts, not full logs.98- If many tests fail, detail the first few distinct failures and summarize the rest.99- Do not guess. If causation is unclear, say what was checked and what would resolve it.100- Prefer one PR comment or one final report over multiple fragmented updates.