Skills

Speed Up Ci

CI is slow, time to green, how long do checks take, p50/p90, make CI faster, speed up a...

Install

npx skills add different-ai/openwork --skill speed-up-ci -g -a claude-code -y
Repository
different-ai/openwork24.4k
Category
Git and review
Updated
3d ago
License
See repository
Context cost
Lightabout 1,354 tokens
Runs scripts
No, instructions only

What it does

CI is slow, time to green, how long do checks take, p50/p90, make CI faster, speed up a job or spec, hillclimb CI. Use to measure PR CI time, find where a job's seconds go, and land speedups one measured change at a time without weakening any check.

Skill: Speed up CI

CI speed is a measured number, not a feeling. Measure it the same way every time, find where the seconds actually go, change one thing, measure again, keep it only if the number moved and every check still guards what it did.

1. Measure time to green

node .github/scripts/ci-time-to-green.mjs --hours 24            # all PRs
node .github/scripts/ci-time-to-green.mjs --hours 6 --branch-prefix perf/ci-x --json
  • required: push → last merge-gating check green (openwork-tests-required, warden-clear).
  • full: push → last GitHub Actions check green. "Evidence preview" is ignored (a link, not a test).
  • Failed or unfinished commits are excluded from the percentiles and counted separately.

Record the baseline (p50/p90/p99 and n) before changing anything. Compare p50/p90 with at least ~20 commits; one PR's run is a data point, not a trend.

2. Find where the seconds go

Never guess from YAML. Read the timings GitHub and the test kit already record.

# Every job and step of a run, with durations
gh run view <run-id> --json jobs --jq '.jobs[] | "\(.name)", (.steps[] | "  \(.name)")'
gh api repos/different-ai/openwork/actions/jobs/<job-id> \
  --jq '.steps[] | "\(((.completed_at|fromdate)-(.started_at|fromdate)))s \(.name)"'
# Full log (strip colours)
gh api --allow-escape-sequences repos/different-ai/openwork/actions/jobs/<job-id>/logs | sed 's/\x1b\[[0-9;]*m//g'

For e2e specs, download the run's pr-proof-* artifacts and read test-runs/*/test-run.json: every trace entry has a stage, channel, verb and ms. Sum ms by (stage, channel, verb): world/seed/den|desktop|appWeb is time spent starting services; body/* is the test. Compare createdAt/closedAt with the first and last trace entry to see setup and teardown the trace does not cover.

Read the whole SKILL.md on GitHub

More in Git and review