ork-assess
Assess a code change, design, architecture, workflow, or competing options against explicit criteria and evidence. Use when a…
Manually dispatched classifier for every open PR with a failed check: runs ci-debug headless, posts a collapsed verdict per PR. Proposes only, never pushes. Use for all red PRs; for one run, use ci-debug.
Claude Code
$ npx -y skills add yonatangross/orchestkit --skill ci-sentinel --agent claude-code
Codex
$ npx skills add yonatangross/orchestkit --skill ci-sentinel -a codex -y
Cursor
$ npx skills add yonatangross/orchestkit --skill ci-sentinel -a cursor -y
Gemini CLI
$ npx skills add yonatangross/orchestkit --skill ci-sentinel -a gemini-cli -y
GitHub Copilot
$ npx skills add yonatangross/orchestkit --skill ci-sentinel -a github-copilot -y
OpenCode
$ npx skills add yonatangross/orchestkit --skill ci-sentinel -a opencode -y
Windsurf
$ npx skills add yonatangross/orchestkit --skill ci-sentinel -a windsurf -y
name: ci-sentinel
license: MIT
compatibility: "Claude Code 2.1.277+ (uses --permission-mode + --no-session-persistence for headless GHA runs; --bare was tried but doesn't honor ANTHROPIC_API_KEY in CC 2.1.143 — see SKILL body for the trade-off)."
description: "Manually dispatched classifier for every open PR with a failed check: runs ci-debug headless, posts a collapsed verdict per PR. Proposes only, never pushes. Use for all red PRs; for one run, use ci-debug."
argument-hint: "[install|status|enable|disable]"
context: fork
# user-typed commands stay interactive; CC backgrounds forks by default (#3093)
background: false
disable-model-invocation: false
user-invocable: true
allowed-tools: "Bash Read Write Edit Grep Glob"
skills: [github-operations, memory]
model: sonnet
metadata:
category: workflow-automation
version: "0.1.0"
author: "OrchestKit"
complexity: "medium"
tags: "ci, sentinel, automation, github-actions, propose-dont-apply, autonomous"
triggers:
keywords: [sentinel, "self-healing ci", "auto-classify failures", "watch open PRs"]
examples:
- "install the CI sentinel in this repo"
- "show me sentinel status for the platform repo"
- "disable the sentinel — it's commenting too much"
anti-triggers: [fix this CI, debug this run]
paths:
- ".github/workflows/ci-sentinel.yml"
- ".sentinel/**"Runs the `/ci-debug` playbook classification over every red PR in one dispatch, so recurring CI failures are classified without a session per PR. Origin: the 2026-05-16 insights audit found most CI-debugging sessions re-ran that same classification by hand.
▶️ manual workflow_dispatch (no schedule, by policy)
│
▼
📥 gh pr list (newest 50 open) → each with a FAILURE check, any author,
required or not (first max_prs, default 10)
│
▼
🤖 for each PR (skipping those already commented at this SHA):
fetch its failed logs → claude -p with no tools, /ci-debug playbook inlined → verdict
│
▼
💬 post collapsed PR comment with marker so future runs dedupe
│
▼
📜 append { ts, pr, sha, tokens } to this run's .sentinel/ledger.jsonl| Risk | Mitigation | |---|---| | Token cost runaway | Dispatch is manual, so no run starts by itself. `max_prs` (default 10) and a 300 s per-PR timeout cap one run. | | Duplicate comments on the same SHA | Marker `<!-- ork:ci-sentinel sha=<short> -->` on every comment; workflow scans existing comments before posting. | | Wrong-classification spam | Propose-don't-apply means the worst outcome is a noisy but accurate-looking comment. You can collapse them; you can't unmerge a bad auto-fix. | | Stuck PR keeps re-classifying | Idempotent on SHA — only re-runs if you push new commits. | | Sentinel itself breaking CI | Runs on `ubuntu-latest`, no `pull_request` trigger, no `push` trigger. Cannot block any other workflow. |
1. Copy `.github/workflows/ci-sentinel.yml` from the OrchestKit repo into the target repo (this skill ships it). 2. Mint a Max-plan OAuth token with `claude setup-token`, then add it as the `CLAUDE_CODE_OAUTH_TOKEN` secret: `gh secret set CLAUDE_CODE_OAUTH_TOKEN -R <owner>/<repo>`. The workflow reads this natively from job-level env; `ANTHROPIC_API_KEY` is **not** used any more, and setting it alone leaves the run red: the workflow's auth canary hard-fails when `CLAUDE_CODE_OAUTH_TOKEN` is unset or expired. 3. Trigger a manual run with `inputs.dry_run = true` to validate the wiring. 4. Once a dry-run posts no comments and looks healthy in the job summary, dispatch a real run whenever you want a sweep. Do not add a schedule: automatic runs draw on the shared weekly quota, and the workflow allows only `workflow_dispatch` by policy.
Rotate the token the same way when the canary reports a 401: `claude setup-token`, then re-run `gh secret set`.
If you run the sentinel locally via `claude --bg` instead of the workflow:
> **Pin it:** Press `Ctrl+T` in `claude agents` to pin the session. Pinned background sessions stay alive when idle (no silent reaping between runs), restart in place to apply CC updates rather than dying, and under memory pressure are shed only after non-pinned sessions.
> **Resume it:** Sessions started via `claude --bg` appear in `/resume` marked `bg` — recover a crashed sentinel directly through `/resume` instead of the agent view.
The workflow is intentionally configured via in-file env vars (not workflow inputs) so a fork stays self-contained:
| Var | Default | Meaning | |---|---|---| | `ORK_SENTINEL_PER_PR_TIMEOUT_S` | `300` | Per-PR wall-clock cap on the `claude -p` invocation. | | `max_prs` (workflow_dispatch input) | `10` | Cap on PRs analyzed in one sweep. | | `dry_run` (workflow_dispa
The Complete AI Development Toolkit for Claude Code. 115 skills, 36 agents, 163 hooks. Install `ork` for stable (v10.x).
Assess a code change, design, architecture, workflow, or competing options against explicit criteria and evidence. Use when a…
Compare plausible implementation, architecture, product, or operational approaches before committing to one. Use when a request…
Map an unfamiliar codebase, feature, architecture, data flow, or operational path with file-backed evidence. Use when a request…
Render an answer inline as compact ASCII or box-drawing art with semantic status icons. Use for status, inventories, budgets,…
Make an approved, scoped change and prove the affected behavior. Use when a request asks to implement, build, add, or land a…
Review a pull request or branch for correctness, regressions, security, operational risk, and missing evidence. Use when a…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.