From dev-team
Systematic CI/CD failure diagnosis with hypothesis-first approach, environment delta analysis, and anti-patterns. Use when CI fails, pipelines break, or the user says "CI is failing", "build broke", "pipeline error", or "tests pass locally but fail in CI".
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev-team:ci-debuggingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
CI failures are diagnosed systematically, not by guessing. This skill prevents the common anti-pattern of "just re-run it" by enforcing a hypothesis-first approach.
CI failures are diagnosed systematically, not by guessing. This skill prevents the common anti-pattern of "just re-run it" by enforcing a hypothesis-first approach.
Read the full CI log output. Identify:
Before touching any code, state a hypothesis: "I believe X is failing because Y, and I can verify by Z."
Good hypotheses are specific and falsifiable:
Bad hypotheses:
Compare local vs CI environments using this checklist:
| Factor | Check |
|---|---|
| Runtime version | Node, Python, Go, JDK, Ruby, .NET — exact version match? |
| OS and architecture | macOS vs Linux, x86 vs ARM? |
| Dependency resolution | Lockfile committed? Registry differences? Private packages accessible? |
| Environment variables | All required vars set? Secrets populated? |
| Parallelism | Tests run in parallel in CI but serial locally? Shared state? |
| Memory/CPU | CI runner constrained? OOM killer? |
| Network | External service dependencies? DNS resolution? Firewall rules? |
| Filesystem | Case sensitivity (macOS vs Linux)? Temp directory permissions? Path length? |
| Timezone/locale | Date formatting tests? Locale-dependent string comparisons? |
| Docker | Image tag latest drifted? Layer cache stale? Build context different? |
Before fixing, reproduce the failure locally:
Before calling Monitor on a job whose completion time matters:
timeout_ms to a safety margin over that estimate (e.g., double it), capped at the tool's documented max (3,600,000 ms / 1 hour).persistent: true and pair it with a command that exits on the job's own terminal state (success/failure/timeout), never an unbounded tail -f/while true with no exit condition, so the monitor self-terminates instead of requiring a manual TaskStop.persistent: true rather than repeating the same timeout.Fix the root cause. Verify the fix locally. Push and confirm CI passes.
| Anti-pattern | Why it's wrong | What to do instead |
|---|---|---|
| Retry the build | Masks the root cause, wastes CI minutes | Read the logs, form a hypothesis |
| Add retry/sleep to test | Hides race conditions, makes tests slow | Fix the shared state or ordering issue |
| Skip the failing test | Reduces coverage, hides regressions | Fix the test or the code |
| Push a speculative fix | Pollutes git history, might not work | Reproduce locally first |
| Blame "flaky CI" | Normalizes unreliable pipelines | Every failure has a cause — find it |
| Re-arming a timed-out Monitor call | Wastes a round-trip and leaves a gap in coverage | Estimate timeout_ms from a duration signal, or use persistent: true (see Monitoring long-running jobs) |
npx claudepluginhub bdfinst/agentic-dev-team --plugin dev-teamDiagnoses and fixes CI/CD pipeline failures including build errors, test failures, and environment issues. Guides users through triage and repair workflows.
Diagnoses a failing CI run against an 11-pattern playbook, classifies the failure, cites relevant memory, and proposes the exact fix command without applying it.
Monitors running CI builds on GitHub Actions and CircleCI via polling, reports completion status, and diagnoses failures by fetching logs, job summaries, and artifacts.