Repository-first CI audit across major CI platforms.
CI Perf Lint scans workflows plus repository context, prioritizes CI waste, and produces a shareable improvement plan with measurement hints and AI-ready handoff instructions.
It does not just list warnings. It tells you what to fix first.
Run once against a repository:
# recommended (faster startup)
bunx ci-perf-lint
# or
npx ci-perf-lintPipe directly into AI tools:
bunx ci-perf-lint | opencode
bunx ci-perf-lint | claude -p "Apply the findings above to fix workflows"
bunx ci-perf-lint | gemini
bunx ci-perf-lint | codex execInstall globally for repeated use:
bun install -g ci-perf-lint
# or
npm install -g ci-perf-lintEach run returns:
- Top findings
- What to fix first
- Measurement hints
- AI-ready handoff
The output is designed to be:
- readable by humans
- directly usable by AI
- easy to paste into Slack, issues, or PRs
Use CI Perf Lint when:
- CI has become slow
- runner cost needs review
- PR feedback loops are too long
- workflows have accumulated over time
- you need a quick CI improvement report
- you want to safely delegate fixes to AI
This is not a daily lint tool. It is a high-value audit tool for CI owners.
CI Perf Lint
Repository: acme/api
Workflows scanned: 5
Top findings
1. missing-path-ignore-for-non-code
Context: docs/, *.md, and *.txt changes trigger full CI in 3 workflows
Why it matters: avoidable runs increase runner cost and PR latency
Suggested action: add paths-ignore for non-code files
Measurement hint: confirm docs-only PR skips all heavy workflows
2. duplicate-install-or-lint
Context: npm install runs in both ci.yml and lint.yml
Why it matters: repeated dependency installs add cost and delay feedback
Suggested action: consolidate into a shared job or reuse artifacts
Measurement hint: compare total workflow duration before and after
3. missing-dependency-cache
Context: actions/setup-node used without cache in 2 workflows
Why it matters: install cost is paid on every run
Suggested action: enable package-manager-aware caching
Measurement hint: compare install step duration
4. avoid-svg-component-imports (src/icons.tsx:12:1 +3 more) [repository-wide source/tooling]
Context: avoid-svg-component-imports appears in 4 source/tooling locations; apply one consistent fix pattern where appropriate.
Why it matters: SVG component imports can increase transform cost and module count when plain asset URLs would be enough.
Suggested action: replace ordinary SVG component imports with asset URL imports where dynamic component behavior is not needed
Measurement hint: compare transform time, bundle/module counts, and build output before and after
CI Perf Lint is designed as a repository-level audit tool.
Default scope:
- workflows under
.github/workflows/ - repository-level context such as configuration, structure, and cross-workflow patterns
Repository context includes signals such as:
- duplicated logic across workflows
- inconsistent caching strategies
- repo-level tool usage
- trigger patterns across workflows
Typical flow:
- scan the repository and workflows
- identify repository-wide waste patterns
- prioritize top improvements
- optionally drill down per workflow
CI inefficiencies are often repository-wide:
- docs changes trigger multiple workflows
- similar lint or setup logic is duplicated across files
- caching strategy differs between workflows
- only some workflows use concurrency controls
CI Perf Lint separates CI optimization into two phases:
- Deterministic audit
- AI-driven implementation
Typical usage:
- run the audit
- review top findings
- pipe output to AI or copy and paste it
- apply fixes
- verify using measurement hints
You can.
CI Perf Lint improves that workflow by:
- avoiding repeated context reconstruction
- providing deterministic findings
- separating higher-confidence issues from broader suggestions
- including measurement steps for verification
AI becomes more reliable when given structured constraints.
Default run:
ci-perf-lintRender AI handoff:
ci-perf-lint . --format handoffInclude exploratory suggestions:
ci-perf-lint . --mode exploratoryMarkdown output:
ci-perf-lint . --format markdownJSON output:
ci-perf-lint . --format json --top 10Focus modes:
ci-perf-lint . --workflow-only
ci-perf-lint . --repository-onlyShow selected workflows:
ci-perf-lint . --show-workflowsStrict mode shows higher-confidence warnings by default. Exploratory mode also includes broader suggestions.
CI Perf Lint includes dozens of rules covering:
- trigger conditions
- concurrency
- dependency caching
- checkout patterns
- duplicate steps
- Docker build patterns
- language-specific CI optimizations
- AI-oriented migration suggestions
See https://ci-perf-lint.veritycost.com/rules/ for the current rule index.
CI Perf Lint is:
- not a correctness linter
- not a runtime profiler
- not a generic AI wrapper
It is a static analyzer for CI/CD waste, designed to produce actionable, shareable improvement plans.
bun run lint
bun run audit:static
bun test --parallelCI Perf Lint tells you:
- what to fix
- what to fix first
- how to verify it
- how to safely apply it with AI