watch-ci-and-advance
Monitor CI as a queue system. Advance other ready work while waiting. Report gate deltas, not polls.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Monitor CI as a queue system. Advance other ready work while waiting. Report gate deltas, not polls.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
ICN development companion for the InterCooperative Network Rust monorepo. Use when working on ICN code, docs, deployment, or protocol design. Provides crate-aware routing to specialist agents (icn-architect, icn-economist, icn-ops), enforces project conventions, and understands the current sprint state, cluster topology, and demo flow status. Triggers on: any ICN crate names, "cooperative contract", "mutual credit", "governance", "gossip", "K3s", "icn-dev", "ops/mcp", "Sprint", "demo flow", "CCL", "federation", "DID", "ledger", "trust graph", "icnd", "icnctl".
Full sprint-batch or stacked-PR integration pipeline. Owns merge order, rebases, local gates, and main sync.
Full sprint-batch or stacked-PR integration pipeline. Owns merge order, rebases, local gates, and main sync.
Show full ICN development status dashboard — active sessions, sprint tasks, worktree freshness, CI state, and cluster health
ICN session preflight. This skill should be used when the user explicitly invokes "/icn-agent-pack:preflight", or asks to "run preflight", "orient me on ICN", or "check the ICN session environment". Loads canonical docs and the latest handoff, then verifies branch, gh auth, ports, toolchain, and a light cargo check. Read-only; reports, never fixes.
ICN repo navigator / knowledge graph. This skill should be used when the user explicitly invokes "/icn-agent-pack:navigator", or asks to "map the repo", "build/refresh the knowledge graph", "trace this concept to its source", or "show the conceptual map / impact map". Begins the living repository knowledge-graph and conceptual-map workflow, grounded in the icn-ops MCP tools and (future) generated graph artifacts.
| name | watch-ci-and-advance |
| description | Monitor CI as a queue system. Advance other ready work while waiting. Report gate deltas, not polls. |
| argument-hint | [PR number | run ID] |
| user-invocable | true |
| allowed-tools | Bash |
| truth_contract | {"canonical_sources":["ops/state/truth/policy.json","ops/state/config/repo-map.json"],"live_load_required":["gh run list --limit 5 --json databaseId,status,name,conclusion,createdAt","gh api repos/InterCooperative-Network/icn/actions/runners --jq '.runners[]'"],"examples_only":["The 4-check example in Phase 3 is illustrative — always use all required checks from policy.json"],"never_hardcode":["required check set or count (read from ops/state/truth/policy.json#merge.required_checks or branch protection API)","runner IP (read from ops/state/config/repo-map.json#infrastructure.k3s.ci_runner)"]} |
Treat CI as a queue system. While the runner is busy, do useful work. Report only meaningful state changes, not repetitive status dumps.
The transcript spent significant time in a passive poll cycle: check → still pending → wait → check. Meanwhile, other PRs could have been rebased, verified, and readied. This skill turns waiting time into advance work.
# Check if runner is actively processing or just queued
gh run list --limit 5 --json databaseId,status,name,conclusion,createdAt \
--jq '.[] | "\(.databaseId) \(.name) \(.status) \(.conclusion // "running")"'
Classify:
in_progress: runner is actively working — productive waitqueued + age > 5 min: runner contention likelyqueued + age > 30 min: definitely queue-stalled, likely safe to --admin merge after manual local verify# Check runner health
gh api repos/InterCooperative-Network/icn/actions/runners \
--jq '.runners[] | {name:.name, status:.status, busy:.busy}'
While CI runs, prioritize in this order:
# Find PRs not currently in CI queue
gh pr list --json number,headRefName,statusCheckRollup \
--jq '.[] | select(.statusCheckRollup | length == 0 or all(.[]; .state != "IN_PROGRESS")) | .number'
Instead of printing the full check table every poll, track which gates changed:
# Snapshot required gates only (read policy.json for the canonical list — never hardcode)
REPO_ROOT="$(git rev-parse --show-toplevel)"
REQUIRED=$(python3 -c "
import json
p = json.load(open('${REPO_ROOT}/ops/state/truth/policy.json'))
print(repr(set(p['merge']['required_checks'])))
")
gh pr checks <N> --json name,state,conclusion \
| python3 -c "
import sys, json
required = $REQUIRED
checks = {c['name']:c for c in json.load(sys.stdin) if c['name'] in required}
for name, c in sorted(checks.items()):
status = c['conclusion'] if c['state'] == 'COMPLETED' else c['state']
print(f'{name:20s} {status}')
"
Output format — only report changes, not repeats:
[CI delta] Clippy: pass (was pending)
[CI delta] Build Release: pass (was pending)
[CI delta] Test: still running
When required gates resolve:
integrate-pr-stack for sequencing)fix-ci or fix-rust-lints to address| Signal | Meaning |
|---|---|
pending / 0s for < 5 min | Normal startup delay |
pending / 0s for 5–30 min | Likely queue contention |
pending / 0s for > 30 min | Queue-stalled; local verify + --admin is valid |
in_progress for > 20 min | Likely running (full workspace test suite takes ~14 min) |
| Check disappears after push | Normal: new commit resets CI identity |
ci-runner). IP in ops/state/config/repo-map.json#infrastructure.k3s.ci_runner. Parallel PR merges cause queue.Test Coverage and Compare Against Base often tail the required gates — ignore them for merge decisions.--admin after local verify
if the queue is stalled.--admin
is viable rather than waiting indefinitely.