ci-driver
/ci-driver
Prowadzi CI jednego PR do zielonego stanu jako podagent: czeka, poprawia zakres, wypycha zmiany i scala tylko po zgodzie.
- Autor
- shepherdjerred ↗
- Repozytorium
- monorepo ↗
- Licencja
- GPL-3.0
- Ostatnia zmiana repozytorium
- 12.11.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 1
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Brak sygnałów. Repozytorium zmienione 12.11.2026, bez odwołań do wycofanych modeli i API.
GPL-3.0, otwarta.
Co robi i kiedy
Prowadzi CI jednego PR do zielonego stanu jako podagent: czeka, poprawia zakres, wypycha zmiany i scala tylko po zgodzie.
Wyzwalacze z opisu
Oryginalny opis (EN)
Drive one PR's CI to green as a delegated subagent — wait, fix in scope, push, re-wait — and merge only when the request authorized it. Use when running as the ci-driver subagent, or when asked to "get/drive CI green" or "get it green, then merge".
Jak działa
- Inputs
- Wait cheaply
- Loop
- Report
Podgląd SKILL.md
---
name: ci-driver
description: Drive one PR's CI to green as a delegated subagent — wait, fix in scope, push, re-wait — and merge only when the request authorized it. Use when running as the ci-driver subagent, or when asked to "get/drive CI green" or "get it green, then merge".
---
# CI driver
The main chat delegates a "get CI green" loop to you so that waiting and fix
turns happen in your small context, not its large one. Work on exactly the PR
you were given. Your final answer is the only thing the main chat reads.
## Inputs
The spawn message names the PR (or branch), whether merging is authorized, and
any scope limits. Merge only when the original request said to merge. If the PR
or the merge authorization is unclear, report back instead of guessing.
## Wait cheaply
Each wait is one blocking command, held so that it costs no turns:
- **Claude Code:** run it with `run_in_background` and act on the completion
notification. Do not read the output file, sleep, or poll meanwhile.
- **Codex:** run it inside one `exec` cell whose first line is
`// @exec: {"yield_time_ms": 3600000}`. Start it with
`tools.exec_command({cmd, yield_time_ms: 30000})`. While the result has a
`session_id` and no exit code, loop
`tools.write_stdin({session_id, chars: "", yield_time_ms: 300000})`. Then
`text()` the final output. If the cell yields before finishing, call `wait`
on it with `yield_time_ms` 3600000. Never use the `sleep` tool or status
loops.
The blocking command depends on the repository:
| Repository | Wait | Wait, then merge |
| ------------------------- | ----------------------------- | ----------------------------- |
| `shepherdjerred/monorepo` | `toolkit ci wait <PR> --json` | `toolkit pr land <PR> --json` |
| Other GitHub repositories | `gh pr checks <PR> --watch` | the repo's own merge flow |
In the monorepo, load `monorepo-delivery` and follow it for fixes, pushes and
review findings. `packages/toolkit/README.md` defines the exit codes.
## Loop
1. Wait. Use `pr land` only when merging is authorized.
2. Act on the result:
- **Ready (0) or merged (0):** stop and report.
- **CI failure or conflict (1):** read the report's diagnostics, and
`toolkit ci explain <PR>` if they are not enough. Fix the cause within
the PR's scope, run focused local checks, commit, and push through the
repository's flow (`toolkit git-spice` in the monorepo). Then wait again
on the new head.
- **Review findings:** address them, then resolve each thread with an
audited reason, as the delivery skill describes.
- **Head changed (4)** by your own push: wait again. Changed by someone
else: stop and report.
- **Human action (3), main red (5), timeout (6), closed (7), merge failed
(8):** stop and report. Never try to fix main.
3. Stop and report after two fix attempts that leave the same failure, and on
infrastructure failures such as killed pipelines or runner loss. Do not
blindly restart pipelines. The main chat or the user decides how to
escalate.
Never skip a test, weaken a gate, or suppress an error to get green. Keep
unrelated worktree changes intact and stage explicit paths.
## Report
End with this, and nothing else the main chat must dig for:
```text
Outcome: green | merged | blocked | escalated
PR: <url> @ <head SHA>
Pipeline: <url and final status>
Fixes: <one line per commit pushed, or "none">
Blocker: <what stopped you, with the command or log that shows it>
Not verified: <deployment, runtime, or anything else not checked>
```
Wersje
W bazie nie ma innych skilli o nazwie ci-driver.
Migawka bazy z 13.11.2026 · wersja paczki 79f8caa222f0 (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 100iterate-pr
Poprawia pull request aż do zielonego CI: naprawia błędy CI, odpowiada na uwagi z przeglądu i wypycha poprawki w automatycznym cyklu uwagi, poprawka, push, oczekiwanie. - 100goal-release
Przeprowadza wydanie od początku do końca: otwiera PR wydania i szkic GitHub release, czeka na zielone CI, scala PR i aktualizuje formułę Homebrew. - 100green
Uruchamia lokalnie rzeczywiste bramki CI repozytorium i doprowadza je do zielonego: czyta nieudany krok, naprawia przyczynę i powtarza tylko ten job, bez osłabiania bramek. - 100ci-fix-loop
Diagnozuje awarie CI w GitHub Actions w pętli: pobiera logi, znajduje przyczynę, stosuje celową poprawkę, pushuje i czeka na kolejny przebieg, aż wszystkie checki zazielenieją lub potrzebny jest człowiek. - 100ci-fix-loop
Diagnozuje awarie CI w GitHub Actions w pętli: pobiera logi, znajduje przyczynę, stosuje celową poprawkę, pushuje i czeka na kolejny przebieg, aż wszystkie checki zazielenieją lub potrzebny jest człowiek. - 100pr
Wypycha bieżącą gałąź i otwiera PR, przepisuje treść otwartego PR na podstawie commitów albo czeka na CI i scala go, na wyraźną prośbę.