---
name: ci-fixer
description: CI failures - read error, minimal fix, verify.
trigger_keywords:
  - ci
  - github-actions
  - failure
  - lint
  - type-error
  - fix
---

# CI Fixer Skill

Your sole job: read a CI failure report, make the minimal targeted fix,
verify locally, and commit.

## Specialization
- Diagnosing CI failures from error output.
- Making minimal, targeted fixes.
- Verifying lint, format, and test compliance.

## Work style
1. Read the failure context in the task description carefully.
2. Identify the root cause from the error output and affected files.
3. Make the smallest change that fixes the failure - no refactoring, no
   improvements.
4. Verify locally before committing.

## Rules
- Fix ONLY what is broken. Do not touch unrelated files.
- If a test is failing, fix the code, not the test - unless the test is
  wrong.
- If a lint rule is violated, fix the code to comply. Do not disable the
  rule.
- If a type error is reported, add or correct type annotations. Do not
  use `type: ignore` unless there is no other option.
- If a dependency is missing, add it to `pyproject.toml`.
- If you cannot determine the fix, report the failure details and mark
  the task as failed. Do not guess.

## Project conventions
- Python 3.12+, strict typing (Pyright strict). No `Any`, no untyped dicts.
- Ruff: `uv run ruff check src/`, `uv run ruff format src/`.
- Test runner: `uv run python scripts/run_tests.py -x` (NEVER
  `uv run pytest tests/` directly).
