Releases: gitwingo/ci-why
v0.1.1
What's new
Initial release of ci-why — stop reading 400 lines of CI logs to find the 3 that matter.
Install
pip install ci-whyUsage
# From a log file
ci-why build.log
# Pipe from GitHub CLI
gh run view --log | ci-why -
# Pattern analysis only — no API call needed
ci-why build.log --no-aiWhat it does
Scans any CI log file, strips the noise (download progress, debug lines, group markers), and surfaces the exact lines that caused the failure — with surrounding context. Optionally uses Claude to explain the root cause and suggest concrete fix steps in plain English.
Failure signals detected
- Test failures (Jest, pytest, Go test)
- Tracebacks and panics
- Non-zero exit codes
- Missing modules and import errors
- Build and compilation errors
- Dependency errors (npm, yarn, pip)
- Network timeouts and connection errors
- Lint and type check errors (ESLint, mypy, ruff, TypeScript)
- Permission errors
AI explanation (optional)
Set ANTHROPIC_API_KEY in your environment to get plain-English root cause analysis and fix steps. Works without it too — pattern matching runs regardless.
Full documentation
See the README for all options and examples.
v0.1.0
What's new
Initial release of ci-why — stop reading 400 lines of CI logs to find the 3 that matter.
Install
pip install ci-whyUsage
# From a log file
ci-why build.log
# Pipe from GitHub CLI
gh run view --log | ci-why -
# Pattern analysis only — no API call needed
ci-why build.log --no-aiWhat it does
Scans any CI log file, strips the noise (download progress, debug lines, group markers), and surfaces the exact lines that caused the failure — with surrounding context. Optionally uses Claude to explain the root cause and suggest concrete fix steps in plain English.
Failure signals detected
- Test failures (Jest, pytest, Go test)
- Tracebacks and panics
- Non-zero exit codes
- Missing modules and import errors
- Build and compilation errors
- Dependency errors (npm, yarn, pip)
- Network timeouts and connection errors
- Lint and type check errors (ESLint, mypy, ruff, TypeScript)
- Permission errors
AI explanation (optional)
Set ANTHROPIC_API_KEY in your environment to get plain-English root cause analysis and fix steps. Works without it too — pattern matching runs regardless.
Full documentation
See the README for all options and examples.