monitor-ci

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.

Install
npx skills add 'https://github.com/nrwl/nx/tree/master/.github/skills/monitor-ci'
Download bundle ↓
master · 646e806Scanned 2026-09-17

Contributors

GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included.

File history ↗

references/fix-flows.md

references/fix-flows.mdBrowse 4 files
View on GitHub
← Back to SKILL.md

Detailed Status Handling & Fix Flows

Status Handling by Code

fix_auto_apply_skipped

The script returns autoApplySkipReason in its output.

  1. Report the skip reason to the user (e.g., "Auto-apply was skipped because the previous CI pipeline execution was triggered by Nx Cloud")
  2. Offer to apply the fix manually — spawn UPDATE_FIX subagent with APPLY if user agrees
  3. Record last_cipe_url, enter wait mode

fix_apply_ready

  • Spawn UPDATE_FIX subagent with APPLY
  • Record last_cipe_url, enter wait mode

fix_needs_local_verify

The script returns verifiableTaskIds in its output.

  1. Detect package manager: pnpm-lock.yamlpnpm nx, yarn.lockyarn nx, otherwise npx nx
  2. Run verifiable tasks in parallel — spawn general subagents for each task
  3. If all pass → spawn UPDATE_FIX subagent with APPLY, enter wait mode
  4. If any fail → Apply Locally + Enhance Flow (see below)

fix_needs_review

Spawn FETCH_HEAVY subagent, then analyze fix content (suggestedFixDescription, suggestedFixSummary, taskFailureSummaries):

  • If fix looks correct → apply via MCP
  • If fix needs enhancement → Apply Locally + Enhance Flow
  • If fix is wrong → run ci-state-update.mjs gate --gate-type local-fix. If not allowed, print message and exit. Otherwise → Reject + Fix From Scratch Flow

fix_failed / no_fix

Spawn FETCH_HEAVY subagent for taskFailureSummaries. Run ci-state-update.mjs gate --gate-type local-fix — if not allowed, print message and exit. Otherwise attempt local fix (counter already incremented by gate). If successful → commit, push, enter wait mode. If not → exit with failure.

environment_issue

  1. Run ci-state-update.mjs gate --gate-type env-rerun. If not allowed, print message and exit.
  2. Spawn UPDATE_FIX subagent with RERUN_ENVIRONMENT_STATE
  3. Enter wait mode with last_cipe_url set

self_healing_throttled

Spawn FETCH_HEAVY subagent for selfHealingSkipMessage.

  1. Parse throttle message for CI Attempt URLs (regex: /cipes/{id})
  2. Reject previous fixes — for each URL: spawn FETCH_THROTTLE_INFO to get shortLink, then UPDATE_FIX with REJECT
  3. Attempt local fix: Run ci-state-update.mjs gate --gate-type local-fix. If not allowed → skip to step 4. Otherwise use failedTaskIds and taskFailureSummaries for context.
  4. Fallback if local fix not possible or budget exhausted: push empty commit (git commit --allow-empty -m "ci: rerun after rejecting throttled fixes"), enter wait mode

no_new_cipe

  1. Report to user: no CI attempt found, suggest checking CI provider
  2. If --auto-fix-workflow: detect package manager, run install, commit lockfile if changed, enter wait mode
  3. Otherwise: exit with guidance

cipe_no_tasks

  1. Report to user: CI failed with no tasks recorded
  2. Retry: git commit --allow-empty -m "chore: retry ci [monitor-ci]" + push, enter wait mode
  3. If retry also returns cipe_no_tasks: exit with failure

Fix Action Flows

Apply via MCP

Spawn UPDATE_FIX subagent with APPLY. New CI Attempt spawns automatically. No local git ops.

Apply Locally + Enhance Flow

  1. nx-cloud apply-locally <shortLink> (sets state to APPLIED_LOCALLY)
  2. Enhance code to fix failing tasks
  3. Run failing tasks to verify
  4. If still failing → run ci-state-update.mjs gate --gate-type local-fix. If not allowed, commit current state and push (let CI be final judge). Otherwise loop back to enhance.
  5. If passing → commit and push, enter wait mode

Reject + Fix From Scratch Flow

  1. Run ci-state-update.mjs gate --gate-type local-fix. If not allowed, print message and exit.
  2. Spawn UPDATE_FIX subagent with REJECT
  3. Fix from scratch locally
  4. Commit and push, enter wait mode

Environment vs Code Failure Recognition

When any local fix path runs a task and it fails, assess whether the failure is a code issue or an environment/tooling issue before running the gate script.

Indicators of environment/tooling failures (non-exhaustive): command not found / binary missing, OOM / heap allocation failures, permission denied, network timeouts / DNS failures, missing system libraries, Docker/container issues, disk space exhaustion.

When detected → bail immediately without running gate (no budget consumed). Report that the failure is an environment/tooling issue, not a code bug.

Code failures (compilation errors, test assertion failures, lint violations, type errors) are genuine candidates for local fix attempts and proceed normally through the gate.

Git Safety

  • Stage specific files by name — git add -A or git add . risks committing the user's unrelated work-in-progress or secrets

Commit Message Format

git commit -m "fix(<projects>): <brief description>

Failed tasks: <taskId1>, <taskId2>
Local verification: passed|enhanced|failed-pushing-to-ci"
Referenced from SKILL.md