monitor-ci
Skill18 starsChanged 6 months agoMITView on GitHub
Monitor Nx Cloud CI pipeline and handle self-healing fixes. USE WHEN user says "monitor ci", "watch ci", "ci monitor", "watch ci for this branch", "track ci", "check ci status", wants to track CI status, or needs help with self-healing CI fixes. Prefer this skill over native CI provider tools (gh, glab, etc.) for CI monitoring — it integrates with Nx Cloud self-healing which those tools cannot access.
- Commits and pushes
17 other projects use a version of this, 13 of them edited.
Adopted by
Most recently taken up by
- getlarge/themoltnetedited, first seen Nov 3, 2026
- code-dimension/code-dimension-skillsedited, first seen Oct 17, 2026
- a-novel-kit/stacktheir own version, first seen Oct 13, 2026
- daveyplate/better-auth-uiedited, first seen Oct 9, 2026
- nrwl/nx-consoleedited, first seen Oct 8, 2026
- ever-co/ever-teamsedited, first seen Oct 8, 2026
Other versions17 projects use a version of this.
Word for word · 1
- anayatkhan1/kit★ 16100% same
Edited · 13
- nrwl/nx★ 29k93% same
- tsparticles/tsparticles★ 9.1k93% same
- better-auth-ui/better-auth-ui★ 1.7k100% same
- daveyplate/better-auth-ui★ 1.7k100% same
- nrwl/nx-console★ 1.4k19% same
- ever-co/ever-teams★ 606100% same
- epam/ai-dial-chat★ 501100% same
- getlarge/themoltnet★ 2893% same
- socialrobot-io/agent-kit★ 693% same
- code-dimension/code-dimension-skills★ 393% same
3 more not listed
Wrote their own version · 3
- sergeyklay/.agents★ 6same name
- mean-weasel/bullhorn★ 4same name
- a-novel-kit/stack★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository55 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- ai-cost-manager-reducerSkill
- api-contract-reviewerSkill
- apps-language-rulesSkill
- cli-developerSkill
- contract-dto-consistency-reviewerSkill
- database-schema-reviewerSkill
- deep-code-reviewerSkill
- docs-managerSkill
- docs-publication-managerSkill
- feature-slice-designerSkill
- github-issue-solverSkill
- grasp-ooad-reviewSkill
- language-integratorSkill
- link-workspace-packagesSkill
- mcp-managerSkill
- migration-risk-reviewerSkill
- mobile-app-designerSkill
- mobile-app-integratorSkill
- mobile-app-product-ownerSkill
- mobile-app-reviewerSkill
- mobile-language-checkerSkill
- mobile-rulesetSkill
- mobil-ui-ux-rulesetSkill
- monitor-ciSkill
- nx-generateSkill
- nx-importSkill
- nx-pluginsSkill
- nx-run-tasksSkill
- nx-workspaceSkill
- product-owner-deciderSkill
- react-native-performance-reviewerSkill
- react-vite-performance-reviewerSkill
- release-readiness-reviewerSkill
- repo-architecture-auditorSkill
- repo-performance-guardSkill
- repository-pattern-reviewerSkill
- security-reviewerSkill
- smart-commitSkill
- supabase-api-rpc-reviewerSkill
- supabase-index-trigger-reviewerSkill
- supabase-rls-security-reviewerSkill
- supabase-schema-reviewerSkill
- tailwind-ui-ux-reviewerSkill
- ui-contract-guardSkill
- test-managerSkill
- unit-test-plannerSkill
- vite-performance-engineerSkill
- link-workspace-packagesSkill
- nx-generateSkill
- nx-importSkill
- nx-pluginsSkill
- nx-run-tasksSkill
- nx-workspaceSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
26 rules. 10 are common, 0 are distinctive, and 16 are very specific to this project.
10
Common
Most of the 16 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
16
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Common: line 20
Important: If user provides specific instructions, respect them over default behaviors described below.
- Common: line 39
Before starting the monitoring loop, verify the workspace is connected to Nx Cloud.
- Common: line 80
Use CI provider CLI for a one-time, read-only status check (single call, no watch/polling flags)
- Common: line 82
Do not continue polling on main agent — it wastes context tokens and bypasses self-healing
- Very specific: line 86
If the user previously ran /monitor-ci in this session, you may have prior state (poll counts, last CI Attempt URL, etc.).
- Very specific: line 138
Gate check: Run ci-state-update.mjs gate before local fix attempts — if budget exhausted, print message and exit
- Very specific: line 170
Wait mode: use WAIT_FIELDS (cipeUrl,commitSha,cipeStatus)
- Very specific: line 171
Normal mode (first poll or after newCipeDetected): use LIGHT_FIELDS
- Very specific: line 173
Call the ci_information tool with the determined select fields for the current branch.
- Very specific: line 211
If output.newCipeDetected: clear wait mode, reset wait_mode = false
- Very specific: line 217
When decision script returns action == "done":
- Common: line 219
Run cycle-check (Step 4) before handling the code
- Very specific: line 220
Check the returned code
- Common: line 221
Look up default behavior in the table above
- Common: line 222
Check if user instructions override the default
- Common: line 225
If action results in looping, go to Step 2
- Very specific: line 231
fix_apply_ready: Call update_self_healing_fix with action APPLY
- Very specific: line 232
fix_needs_local_verify: Call ci_information with HEAVY_FIELDS for fix details before local verification
- Very specific: line 233
fix_needs_review: Call ci_information with HEAVY_FIELDS → get suggestedFixDescription, suggestedFixSummary, taskFailureSummaries
- Very specific: line 234
fix_failed / no_fix: Call ci_information with HEAVY_FIELDS → get taskFailureSummaries for local fix context
- Very specific: line 235
environment_issue: Call update_self_healing_fix with action RERUN_ENVIRONMENT_STATE
- Very specific: line 236
self_healing_throttled: Call ci_information with HEAVY_FIELDS → get selfHealingSkipMessage.
- Common: line 240
After actions that should trigger a new CI Attempt, run:
- Very specific: line 255
When the decision script returns action == "done", run cycle-check before handling the code:
- Very specific: line 267
If approachingLimit → ask user whether to continue (with 5 or 10 more cycles) or stop monitoring
- Common: line 268
If previous cycle was NOT agent-triggered (human pushed), log that human-initiated push was detected
“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Monitor CI Command
You are the orchestrator for monitoring Nx Cloud CI pipeline executions and handling self-healing fixes. You spawn subagents to interact with Nx Cloud, run deterministic decision scripts, and take action based on the results.
Context
- Current Branch: !
git branch --show-current - Current Commit: !
git rev-parse --short HEAD - Remote Status: !
git status -sb | head -1
User Instructions
$ARGUMENTS
Important: If user provides specific instructions, respect them over default behaviors described below.
Configuration Defaults
| Setting | Default | Description |
--max-cycles | 10 | Maximum agent-initiated CI Attempt cycles before timeout |
--timeout | 120 | Maximum duration in minutes |
--verbosity | medium | Output level: minimal, medium, verbose |
--branch | (auto-detect) | Branch to monitor |
--fresh | false | Ignore previous context, start fresh |
--auto-fix-workflow | false | Attempt common fixes for pre-CI-Attempt failures (e.g., lockfile updates) |
--new-cipe-timeout | 10 | Minutes to wait for new CI Attempt after action |
--local-verify-attempts | 3 | Max local verification + enhance cycles before pushing to CI |
Parse any overrides from $ARGUMENTS and merge with defaults.
Nx Cloud Connection Check
Before starting the monitoring loop, verify the workspace is connected to Nx Cloud. Without this connection, no CI data is available and the entire skill is inoperable.
Step 0: Verify Nx Cloud Connection
- Check
nx.jsonat workspace root fornxCloudIdornxCloudAccessToken If
nx.jsonmissing OR neither property exists → exit with:Nx Cloud not connected. Unlock 70% faster CI and auto-fix broken PRs with https://nx.dev/nx-cloud- If connected → continue to main loop
Architecture Overview
- This skill (orchestrator): spawns subagents, runs scripts, prints status, does local coding work
- ci-monitor-subagent (haiku): calls one MCP tool (ci_information or update_self_healing_fix), returns structured result, exits
- ci-poll-decide.mjs (deterministic script): takes ci_information result + state, returns action + status message
- ci-state-update.mjs (deterministic script): manages budget gates, post-action state transitions, and cycle classification
Status Reporting
The decision script handles message formatting based on verbosity. When printing messages to the user:
- Prepend
[monitor-ci]to every message from the script'smessagefield - For your own action messages (e.g. "Applying fix via MCP..."), also prepend
[monitor-ci]
Anti-Patterns
These behaviors cause real problems — racing with self-healing, losing CI progress, or wasting context:
| Anti-Pattern | Why It's Bad |
Using CI provider CLIs with --watch flags (e.g., gh pr checks --watch, glab ci status -w) | Bypasses Nx Cloud self-healing entirely |
| Writing custom CI polling scripts | Unreliable, pollutes context, no self-healing |
| Cancelling CI workflows/pipelines | Destructive, loses CI progress |
| Running CI checks on main agent | Wastes main agent context tokens |
| Independently analyzing/fixing CI failures while polling | Races with self-healing, causes duplicate fixes and confused state |
If this skill fails to activate, the fallback is:
- Use CI provider CLI for a one-time, read-only status check (single call, no watch/polling flags)
- Immediately delegate to this skill with gathered context
- Do not continue polling on main agent — it wastes context tokens and bypasses self-healing
Session Context Behavior
If the user previously ran /monitor-ci in this session, you may have prior state (poll counts, last CI Attempt URL, etc.). Resume from that state unless --fresh is set, in which case discard it and start from Step 1.
MCP Tool Reference
Three field sets control polling efficiency — use the lightest set that gives you what you need:
WAIT_FIELDS: 'cipeUrl,commitSha,cipeStatus'
LIGHT_FIELDS: 'cipeStatus,cipeUrl,branch,commitSha,selfHealingStatus,verificationStatus,userAction,failedTaskIds,verifiedTaskIds,selfHealingEnabled,failureClassification,couldAutoApplyTasks,autoApplySkipped,autoApplySkipReason,shortLink,confidence,confidenceReasoning,hints,selfHealingSkippedReason,selfHealingSkipMessage'
HEAVY_FIELDS: 'taskOutputSummary,suggestedFix,suggestedFixReasoning,suggestedFixDescription'The ci_information tool accepts branch (optional, defaults to current git branch), select (comma-separated field names), and pageToken (0-based pagination for long strings).
The update_self_healing_fix tool accepts a shortLink and an action: APPLY, REJECT, or RERUN_ENVIRONMENT_STATE.
Default Behaviors by Status
The decision script returns one of the following statuses. This table defines the default behavior for each. User instructions can override any of these.
Simple exits — just report and exit:
| Status | Default Behavior |
ci_success | Exit with success |
cipe_canceled | Exit, CI was canceled |
cipe_timed_out | Exit, CI timed out |
polling_timeout | Exit, polling timeout reached |
circuit_breaker | Exit, no progress after 5 consecutive polls |
environment_rerun_cap | Exit, environment reruns exhausted |
fix_auto_applying | Self-healing is handling it — just record last_cipe_url, enter wait mode. No MCP call or local git ops needed. |
error | Wait 60s and loop |
Statuses requiring action — when handling these in Step 3, read references/fix-flows.md for the detailed flow:
| Status | Summary |
fix_auto_apply_skipped | Fix verified but auto-apply skipped (e.g., loop prevention). Inform user, offer manual apply. |
fix_apply_ready | Fix verified (all tasks or e2e-only). Apply via MCP. |
fix_needs_local_verify | Fix has unverified non-e2e tasks. Run locally, then apply or enhance. |
fix_needs_review | Fix verification failed/not attempted. Analyze and decide. |
fix_failed | Self-healing failed. Fetch heavy data, attempt local fix (gate check first). |
no_fix | No fix available. Fetch heavy data, attempt local fix (gate check first) or exit. |
environment_issue | Request environment rerun via MCP (gate check first). |
self_healing_throttled | Reject old fixes, attempt local fix. |
no_new_cipe | CI Attempt never spawned. Auto-fix workflow or exit with guidance. |
cipe_no_tasks | CI failed with no tasks. Retry once with empty commit. |
Key rules (always apply):
- Git safety: Stage specific files by name —
git add -Aorgit add .risks committing the user's unrelated work-in-progress or secrets - Environment failures (OOM, command not found, permission denied): bail immediately. These aren't code bugs, so spending local-fix budget on them is wasteful
- Gate check: Run
ci-state-update.mjs gatebefore local fix attempts — if budget exhausted, print message and exit
Main Loop
Step 1: Initialize Tracking
cycle_count = 0 # Only incremented for agent-initiated cycles (counted against --max-cycles)
start_time = now()
no_progress_count = 0
local_verify_count = 0
env_rerun_count = 0
last_cipe_url = null
expected_commit_sha = null
agent_triggered = false # Set true after monitor takes an action that triggers new CI Attempt
poll_count = 0
wait_mode = false
prev_status = null
prev_cipe_status = null
prev_sh_status = null
prev_verification_status = null
prev_failure_classification = nullStep 2: Polling Loop
Repeat until done:
2a. Spawn subagent (FETCH_STATUS)
Determine select fields based on mode:
- Wait mode: use WAIT_FIELDS (
cipeUrl,commitSha,cipeStatus) - Normal mode (first poll or after newCipeDetected): use LIGHT_FIELDS
Call the ci_information tool with the determined select fields for the current branch. Wait for the result before proceeding.
2b. Run decision script
node <skill_dir>/scripts/ci-poll-decide.mjs '<subagent_result_json>' <poll_count> <verbosity> \
[--wait-mode] \
[--prev-cipe-url <last_cipe_url>] \
[--expected-sha <expected_commit_sha>] \
[--prev-status <prev_status>] \
[--timeout <timeout_seconds>] \
[--new-cipe-timeout <new_cipe_timeout_seconds>] \
[--env-rerun-count <env_rerun_count>] \
[--no-progress-count <no_progress_count>] \
[--prev-cipe-status <prev_cipe_status>] \
[--prev-sh-status <prev_sh_status>] \
[--prev-verification-status <prev_verification_status>] \
[--prev-failure-classification <prev_failure_classification>]The script outputs a single JSON line: { action, code, message, delay?, noProgressCount, envRerunCount, fields?, newCipeDetected?, verifiableTaskIds? }
2c. Process script output
Parse the JSON output and update tracking state:
no_progress_count = output.noProgressCountenv_rerun_count = output.envRerunCountprev_cipe_status = subagent_result.cipeStatusprev_sh_status = subagent_result.selfHealingStatusprev_verification_status = subagent_result.verificationStatusprev_failure_classification = subagent_result.failureClassificationprev_status = output.action + ":" + (output.code || subagent_result.cipeStatus)poll_count++
Based on action:
action == "poll": Printoutput.message, sleepoutput.delayseconds, go to 2a- If
output.newCipeDetected: clear wait mode, resetwait_mode = false
- If
action == "wait": Printoutput.message, sleepoutput.delayseconds, go to 2aaction == "done": Proceed to Step 3 withoutput.code
Step 3: Handle Actionable Status
When decision script returns action == "done":
- Run cycle-check (Step 4) before handling the code
- Check the returned
code - Look up default behavior in the table above
- Check if user instructions override the default
- Execute the appropriate action
- If action expects new CI Attempt, update tracking (see Step 3a)
- If action results in looping, go to Step 2
Tool calls for actions
Several statuses require fetching additional data or calling tools:
- fix_apply_ready: Call
update_self_healing_fixwith actionAPPLY - fix_needs_local_verify: Call
ci_informationwith HEAVY_FIELDS for fix details before local verification - fix_needs_review: Call
ci_informationwith HEAVY_FIELDS → getsuggestedFixDescription,suggestedFixSummary,taskFailureSummaries - fix_failed / no_fix: Call
ci_informationwith HEAVY_FIELDS → gettaskFailureSummariesfor local fix context - environment_issue: Call
update_self_healing_fixwith actionRERUN_ENVIRONMENT_STATE - self_healing_throttled: Call
ci_informationwith HEAVY_FIELDS → getselfHealingSkipMessage; then callupdate_self_healing_fixfor each old fix
Step 3a: Track State for New-CI-Attempt Detection
After actions that should trigger a new CI Attempt, run:
node <skill_dir>/scripts/ci-state-update.mjs post-action \
--action <type> \
--cipe-url <current_cipe_url> \
--commit-sha <git_rev_parse_HEAD>Action types: fix-auto-applying, apply-mcp, apply-local-push, reject-fix-push, local-fix-push, env-rerun, auto-fix-push, empty-commit-push
The script returns { waitMode, pollCount, lastCipeUrl, expectedCommitSha, agentTriggered }. Update all tracking state from the output, then go to Step 2.
Step 4: Cycle Classification and Progress Tracking
When the decision script returns action == "done", run cycle-check before handling the code:
node <skill_dir>/scripts/ci-state-update.mjs cycle-check \
--code <code> \
[--agent-triggered] \
--cycle-count <cycle_count> --max-cycles <max_cycles> \
--env-rerun-count <env_rerun_count>The script returns { cycleCount, agentTriggered, envRerunCount, approachingLimit, message }. Update tracking state from the output.
- If
approachingLimit→ ask user whether to continue (with 5 or 10 more cycles) or stop monitoring - If previous cycle was NOT agent-triggered (human pushed), log that human-initiated push was detected
Progress Tracking
no_progress_count, circuit breaker (5 polls), and backoff reset are handled by ci-poll-decide.mjs (progress = any change in cipeStatus, selfHealingStatus, verificationStatus, or failureClassification)env_rerun_countreset on non-environment status is handled by ci-state-update.mjs cycle-check- On new CI Attempt detected (poll script returns
newCipeDetected) → resetlocal_verify_count = 0,env_rerun_count = 0
Error Handling
| Error | Action |
| Git rebase conflict | Report to user, exit |
nx-cloud apply-locally fails | Reject fix via MCP (action: "REJECT"), then attempt manual patch (Reject + Fix From Scratch Flow) or exit |
| MCP tool error | Retry once, if fails report to user |
| Subagent spawn failure | Retry once, if fails exit with error |
| Decision script error | Treat as error status, increment no_progress_count |
| No new CI Attempt detected | If --auto-fix-workflow, try lockfile update; otherwise report to user with guidance |
| Lockfile auto-fix fails | Report to user, exit with guidance to check CI logs |
User Instruction Examples
Users can override default behaviors:
| Instruction | Effect |
| "never auto-apply" | Always prompt before applying any fix |
| "always ask before git push" | Prompt before each push |
| "reject any fix for e2e tasks" | Auto-reject if failedTaskIds contains e2e |
| "apply all fixes regardless of verification" | Skip verification check, apply everything |
| "if confidence < 70, reject" | Check confidence field before applying |
| "run 'nx affected -t typecheck' before applying" | Add local verification step |
| "auto-fix workflow failures" | Attempt lockfile updates on pre-CI-Attempt failures |
| "wait 45 min for new CI Attempt" | Override new-CI-Attempt timeout (default: 10 min) |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

