Open SourceApache-2.0 License

badgr-ci-triage

Paste a failing CI log and get a plain-English diagnosis — dependency conflict, flaky test, build error, race condition, or environment issue.

How it works

CI failures produce walls of text. Finding the root cause usually means scanning hundreds of log lines for the one error that matters. badgr-ci-triage classifies the failure instantly and tells you exactly what to do — no log reading required.

1

Read the log

Accepts log text via --log or piped stdin, so it drops straight into an existing CI failure step.

2

Classify the failure

Matches known patterns — ERESOLVE, tsc/SyntaxError, snapshot mismatches, deploy timeouts, missing env vars — into one of six categories.

3

Recommend a fix

Prints the category, the matched error line, and a concrete recommended action, with exit code 0 once categorized or 1 if the log was empty or unrecognized.

1

Install

Terminal
npx badgr-ci-triage --log "npm ERR ERESOLVE unable to resolve dependency tree"

Requires Node.js 18+.

2

Usage

Pass log text directly, or pipe it from a file or CI step. Add --json for structured output in dashboards.

Terminal
cat ci-output.txt | npx badgr-ci-triage
npx badgr-ci-triage --log "TypeError: Cannot read properties of undefined" --json

Example output

Terminal output
badgr-ci-triage — dependency failure

  ✗  ERESOLVE: unable to resolve dependency tree

  Recommended action: Delete node_modules and package-lock.json, then reinstall from scratch.
    rm -rf node_modules package-lock.json && npm install

What's included

Classifies failures as dependency, build, test, deployment, race, or environment
Accepts log text via --log or piped stdin
Recommends a concrete fix for each failure category
Detects ERESOLVE, tsc/SyntaxError, snapshot mismatches, and more
Machine-readable --json output for CI dashboards
Drop-in step for GitHub Actions failure handlers
View on GitHub →

Ready to try badgr-ci-triage?

npx badgr-ci-triage --log "npm ERR ERESOLVE unable to resolve dependency tree" — no account needed to get started.