Agent skill

Michel Monitor Pull Request GitHub Actions

by PackmindHub in PackmindHub/packmind

Diagnose a failed, stuck, or never-triggered CI run on a GitHub PR, apply a local fix if possible, push it, and document the result in a single running PR comment.

Apache-2.0Auto-check passedDevOps & Cloud

Install Michel Monitor Pull Request GitHub Actions

skills CLI
$ npx skills add PackmindHub/packmind --skill michel-monitor-pull-request-github-actions -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install PackmindHub/packmind michel-monitor-pull-request-github-actions --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/PackmindHub/packmind.git skills-src && mkdir -p .claude/skills && cp -r skills-src/scripts/michel/michel-monitor-pull-request-github-actions .claude/skills/michel-monitor-pull-request-github-actions && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
michel-monitor-pull-request-github-actions
GitHub stars
318
Token cost
~2.6k tokens
SKILL.md length
875 words
Files
1
Skills in repo
35
Repo updated
First seen
Licence
Apache-2.0

At a glance

Diagnose a failed, stuck, or never-triggered CI run on a GitHub PR, apply a local fix if possible, push it, and document the result in a single running PR comment.

  • Works in 5 steps: Classify — any_failure vs stuck → Diagnose a failure → Apply a fix and push → …
  • With anyfailure
  • SKILL.md covers Decision flow, 1. Classify — any_failure vs…, 2. Diagnose a failure and 3. Apply a fix and push, plus 2 more sections
  • Calls gh, git and nx

What it does

Michel Monitor Pull Request GitHub Actions is an agent skill from PackmindHub/packmind. Diagnose a failed, stuck, or never-triggered CI run on a GitHub PR, apply a local fix if possible, push it, and document the result in a single running PR comment. Invoke whenever Michel's CI monitor loop triggers with anyfailure, stuck, or nottriggered — the bash loop already handles pending and allgreen silently, so this skill never sees those states.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering CI/CD and Pull requests. It works with GitHub Actions, Bash and GitHub. The repository describes itself as: Packmind seamlessly captures your engineering playbook and turns it into AI context, guardrails, and governance. The licence is Apache-2.0.

When your agent uses it

  • With anyfailure
  • Nottriggered — the bash loop already handles pending and allgreen silently
  • So this skill never sees those states

Example prompts

  • “/michel-monitor-pull-request-github-actions”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Classify — any_failure vs stuck
  2. Diagnose a failure
  3. Apply a fix and push
  4. Single running PR comment
  5. Terminal states — unfixable or timeout

What it can do on your machine

Read from SKILL.md and the folder at commit 67de8a2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • git
    • nx
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Michel Monitor Pull Request GitHub Actions loads about 2.6k tokens when it runs. Until then it costs about 103 tokens; SKILL.md has 875 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~103
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from PackmindHub/packmind at commit 67de8a2, republished under its Apache-2.0 licence (© PackmindHub). 875 words, ~2,620 tokens.

Download SKILL.mdSave it as .claude/skills/michel-monitor-pull-request-github-actions/SKILL.md (or your agent's skills folder).
name
michel-monitor-pull-request-github-actions
description
Diagnose a failed, stuck, or never-triggered CI run on a GitHub PR, apply a local fix if possible, push it, and document the result in a single running PR comment. Invoke whenever Michel's CI monitor loop triggers with `any_failure`, `stuck`, or `not_triggered` — the bash loop already handles `pending` and `all_green` silently, so this skill never sees those states.

Monitor a pull request's GitHub Actions CI

Called during one iteration of the CI monitor loop. The harness prompt already contains everything needed to start:

  • {{CHECKS_JSON}} — snapshot of all check statuses at loop entry
  • {{REASON}} — any_failure, stuck, or not_triggered
  • {{PR_NUMBER}}, {{BRANCH}}, {{WORKDIR}}, {{ITER}}, {{MAX_ITER}}

Decision flow

Read CHECKS_JSON in prompt
  → if REASON == "stuck":          document timeout in running comment → done
  → if REASON == "not_triggered":  investigate why CI never started, document → done
  → if REASON == "any_failure":
      1. Identify failing run(s) via gh run list
      2. Fetch failed logs with gh run view --log-failed
      3. Match pattern → apply fix locally
      4. Commit + push
      5. Create or update running comment
      (if unfixable: document reason → done, no push)

1. Classify — any_failure vs stuck

The bash outer loop has already classified the state; you are invoked only in these two cases:

{{REASON}}MeaningAction
any_failureAt least one completed check has conclusion ∈ {failure, timed_out, cancelled, action_required}Diagnose and fix (sections 2–3)
stuckA workflow started but has been in-progress for >20 minDocument timeout in running comment (section 5) — no code changes
not_triggeredZero checks ever registered for the whole monitoring window — CI never startedInvestigate why (section 5) and document — no code changes

conclusion values to recognise: success / failure / timed_out / cancelled / action_required / neutral / skipped / stale / null.

A completed check with conclusion = null counts as failure.

gh CLI contract — re-fetch with gh run list, NOT gh pr checks

Do not use gh pr checks here. It resolves the commit's statusCheckRollup over GraphQL, and the worker's fine-grained PAT has no permission that can read the Checks API (check-runs). It always partial-fails with Resource not accessible by personal access token (…statusCheckRollup.contexts.nodes.N), returns an empty body, and makes a healthy PR look like zero checks — the bug that produced false not_triggered loops. There is no fine-grained permission that fixes this; only a classic PAT (repo scope) or a GitHub App can read check-runs.

Re-fetch CI state with gh run list instead — it hits GET /actions/runs (Actions:read, which the token has) and reports each workflow run's status and conclusion directly, no GraphQL:

bash
gh run list --branch <BRANCH> --repo <OWNER/REPO> \
  --json databaseId,status,conclusion,workflowName,startedAt,headSha --limit 50

Classify only the runs whose .headSha equals the PR head commit (gh pr view <PR_NUMBER> --repo <OWNER/REPO> --json headRefOid --jq .headRefOid); runs on the branch with a different SHA are stale from earlier pushes.

run statemeaning
status != "completed"pending
completed + conclusion ∈ {success, neutral, skipped}pass
completed + conclusion ∈ {failure, timed_out, cancelled, action_required, startup_failure, null}fail

2. Diagnose a failure

Step 1 — Start from the snapshot

Read {{CHECKS_JSON}} in the prompt first — it is the snapshot of the head commit's runs (name, status, conclusion, bucket) at loop entry. Only re-fetch if you need data fresher than the snapshot, and use gh run list to do it (see the gh CLI contract above) — never gh pr checks, which the fine-grained PAT cannot read.

Step 2 — Find the failing run
bash
gh run list --branch <BRANCH> --repo <OWNER/REPO> \
  --json databaseId,name,status,conclusion,workflowName,url \
  --limit 10 | jq '.[] | select(.conclusion == "failure")'
Step 3 — Read failed step logs
bash
gh run view <RUN_ID> --repo <OWNER/REPO> --log-failed

--log-failed returns only the failing steps' output — much smaller than full logs.

Step 4 — Get job/step names if needed
bash
gh run view <RUN_ID> --repo <OWNER/REPO> --json jobs
Step 5 — Match the root cause
Log patternLikely causeFix
ESLint / Lint errorsCode violates ESLint rulesFix the lint errors in the affected files
Jest / test failureAssertion failed or file errorFix the test or the production code it covers
TypeScript / tsc errorType mismatch, bad importFix the type error in the source
Build error (nx build)Missing dep, bad import pathFix import or tsconfig
Missing secret / env varRequired CI env not setDocument as unfixable — you cannot add CI secrets
Repeated identical failureSame error as prior iterationDocument as unfixable — cycling wastes iterations

Detecting a repeated failure: fetch the running comment body, scan for the previous iteration's **Failure:** and **Cause:** lines, and compare their error signature to the current run's log output. If the signatures match, declare unfixable rather than pushing another identical attempt.

Show full SKILL.md (307 more words)Show less

3. Apply a fix and push

Edit and commit
bash
git -C <WORKDIR> add <changed-files>
git -C <WORKDIR> commit -m "🐛 fix(ci): <short description>"

Validate the projects you touched with targeted nx test <project> / nx lint <project> before pushing, then let CI confirm — CI re-runs the full nx affected gate on the PR as the authoritative check (that is what you are monitoring).

Push
bash
git push -u origin <BRANCH> --force-with-lease --no-verify

--force-with-lease only overwrites the remote tip if it matches the last-known ref, so it is safe for force-push. Push with --no-verify: the full gate already ran in the validation phase before the first push and CI re-runs it as the authoritative check, so re-running the local pre-push hook here only duplicates CI's work (and a non-zero exit risks losing the run).

4. Single running PR comment

There is exactly one running comment per PR, identified by <!-- michel-ci-monitor -->. Posting a second comment fragments the history and makes the PR timeline hard to follow — always find the existing one and patch it in place.

Look up the comment ID
bash
gh api --paginate "repos/<OWNER>/<REPO>/issues/<PR_NUMBER>/comments" \
  --jq '[.[] | select(.body | contains("<!-- michel-ci-monitor -->"))] | first | .id'

--paginate ensures the comment is found even if the PR has more than 30 comments.

Create the comment (first failure, no comment exists yet)
bash
gh pr comment <PR_NUMBER> --repo <OWNER>/<REPO> --body "$(cat <<'BODY'
<!-- michel-ci-monitor -->
## Michel — CI Monitor

### Iteration 1

**Failure:** <workflow / job / step>
**Cause:** <1-2 sentences>
**Fix applied:** <what was changed and why>
**Commit:** <git sha>
BODY
)"
Update the comment (subsequent iterations)

Write the new body to a tempfile to avoid shell-quoting issues with $, backticks, or multi-line content:

bash
COMMENT_ID=$(gh api --paginate "repos/<OWNER>/<REPO>/issues/<PR_NUMBER>/comments" \
  --jq '[.[] | select(.body | contains("<!-- michel-ci-monitor -->"))] | first | .id')

EXISTING=$(gh api "repos/<OWNER>/<REPO>/issues/comments/${COMMENT_ID}" --jq '.body')

cat > /tmp/comment-body.md <<BODY
${EXISTING}

### Iteration <N>

**Failure:** <details>
**Cause:** <details>
**Fix applied:** <details or 'Unfixable — see below'>
BODY

gh api -X PATCH "repos/<OWNER>/<REPO>/issues/comments/${COMMENT_ID}" \
  -F body=@/tmp/comment-body.md

Comment body structure — cumulative, one ### Iteration N heading per invocation:

  • What workflow / job / step failed
  • Root cause (from the logs)
  • Fix applied — or "Unfixable" with reason
  • Git commit SHA if a fix was pushed

5. Terminal states — unfixable or timeout

When you cannot fix the problem or the workflow is stuck, update the running comment and return without committing anything.

Unfixable:

### Iteration <N> — Unfixable

**Failure:** <details>
**Reason not fixable:** <missing CI secret | repeated identical failure | infra issue | error outside codebase>
**Recommendation:** Manual intervention required.

Timeout (stuck):

### Timeout reached

Workflow **<name>** has been running for >20 minutes — likely a CI infrastructure issue, not a code problem.
No fix was attempted. Manual re-run or intervention may be needed.

CI did not trigger (not_triggered):

First confirm with gh run list --branch <BRANCH> --repo <OWNER/REPO> whether any run exists. Zero runs ⇒ the workflow never started — most often no self-hosted runner was available, a branch/path filter excluded the PR, or the run needs approval.

### CI did not trigger

No checks registered for this PR within the monitoring window. CI did not start
— likely no self-hosted runner available, a branch/path filter, or a required run
approval. No fix was attempted. Verify runner availability / workflow triggers,
then re-run.

© PackmindHub, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in scripts/michel/michel-monitor-pull-request-github-actions of PackmindHub/packmind.

Open the folder on GitHubat commit 67de8a2

Compare with similar skills

Michel Monitor Pull Request GitHub Actions next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Michel Monitor Pull Request GitHub Actions compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Michel Monitor Pull Request GitHub Actions this skillPackmindHub/packmind318—~2.6kAutomated safety check: PassApache-2.0
CIaiblueprinthq/ai-blueprint463—~2.2kAutomated safety check: PassMIT
CIopenJiuwen-ai/sciencediscovery159—~2.2kAutomated safety check: PassApache-2.0
Diy Netlifyswyxio/skills176—~1.1kAutomated safety check: PassMIT
ONNX Runtime CI Managementmicrosoft/onnxruntime22k—~4.1kAutomated safety check: PassMIT
Renovate Actions PR Reviewbacknotprop/plannotator9.3k—~640Automated safety check: PassApache-2.0

Similar skills

  • CI

    aiblueprinthq/ai-blueprint

    Set up or normalize one project Verify command and matching GitHub Actions checks while preserving existing CI, with an optional local pre-push hook.

    463 GitHub stars~2.2k tokensUpdated 2 days ago
    DevOps & CloudAuto-check passed
  • CI

    openJiuwen-ai/sciencediscovery

    Read, diagnose, and change the CI pipeline: GitHub Actions on pull requests, the nightly schedule and the release tag.

    159 GitHub stars~2.2k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Diy Netlify

    swyxio/skills

    Build or audit an isolated Netlify/Vercel-style pull-request preview workflow using GitHub Actions and the project's existing hosting provider.

    176 GitHub stars~1.1k tokensUpdated 6 days ago
    DevOps & CloudAuto-check passed
  • ONNX Runtime CI Management

    microsoft/onnxruntime

    Official

    Triggers, re-runs and unblocks the CI checks on an ONNX Runtime pull request, after diagnosing whether a failure is transient or needs a code change.

    22k GitHub stars~4.1k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Renovate Actions PR Review

    backnotprop/plannotator

    Reviews Renovate pull requests that bump GitHub Actions by checking pinned SHAs against upstream tags, scanning changelogs and confirming workflows stay compatible.

    9.3k GitHub stars~640 tokensUpdated today
    DevelopmentAuto-check passed
  • Generates and optimizes GitHub Actions workflows with swarm coordination, using named modes for PR management, issue tracking, releases and repository structure.

    817 GitHub starsUsed in 6 repos~6k tokens
    DevOps & CloudAuto-check passed

More from PackmindHub/packmind

All 35 skills in this repo
  • Michel CLI Demo Recorder

    PackmindHub/packmind

    Produce proof-of-execution demos of the Packmind CLI (packmind-cli) as terminal-styled images (colors and formatting preserved exactly), for embedding in a GitHub PR.

    318 GitHub stars~3.4k tokensUpdated 2 days ago
    Auto-check passed
  • Michel UI Demo Recorder

    PackmindHub/packmind

    Record polished UI demo videos and screenshots of a running web app using Playwright MCP — for client deliverables, release notes, feature walkthroughs, or bug repros.

    318 GitHub stars~6.4k tokensUpdated 2 days ago
    Auto-check passed
  • Packmind Create Skill

    PackmindHub/packmind

    Guide for creating effective skills. An agent skill from PackmindHub/packmind.

    318 GitHub stars~3.5k tokensUpdated 2 days ago
    Auto-check: notes
  • Doc Audit

    PackmindHub/packmind

    Audit Packmind end-user documentation (apps/doc/) for broken links, outdated CLI references, non-existent concepts, misleading information, and missing coverage.

    318 GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed
  • Feature Sprint

    PackmindHub/packmind

    Execute the implementation plan produced by /feature-spec. An agent skill from PackmindHub/packmind.

    318 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Review an implemented GitHub issue the way a senior Packmind engineer would — the human-judgment checks that ESLint, the TypeScript compiler, and e2e tests cannot catch (authorization scoping…

    318 GitHub stars~2.7k tokensUpdated 2 days ago
    Auto-check passed

Questions about Michel Monitor Pull Request GitHub Actions

What does Michel Monitor Pull Request GitHub Actions do?

Diagnose a failed, stuck, or never-triggered CI run on a GitHub PR, apply a local fix if possible, push it, and document the result in a single running PR comment. Michel Monitor Pull Request GitHub Actions is an agent skill from PackmindHub/packmind. Diagnose a failed, stuck, or never-triggered CI run on a GitHub PR, apply a local fix if possible, push it, and document the result in a single running PR comment.

When should I use Michel Monitor Pull Request GitHub Actions?

Michel Monitor Pull Request GitHub Actions fits situations like: with anyfailure; nottriggered — the bash loop already handles pending and allgreen silently; so this skill never sees those states.

How do I install Michel Monitor Pull Request GitHub Actions in Claude Code?

Run `npx skills add PackmindHub/packmind --skill michel-monitor-pull-request-github-actions -a claude-code`. Or copy the skill folder (scripts/michel/michel-monitor-pull-request-github-actions in PackmindHub/packmind) into .claude/skills/michel-monitor-pull-request-github-actions in your project. Claude Code loads it when a task matches its description.

How do I install Michel Monitor Pull Request GitHub Actions in Codex?

Run `npx skills add PackmindHub/packmind --skill michel-monitor-pull-request-github-actions -a codex`. Or copy the skill folder (scripts/michel/michel-monitor-pull-request-github-actions in PackmindHub/packmind) into .agents/skills/michel-monitor-pull-request-github-actions in your project. Codex loads it when a task matches its description.

Can I use Michel Monitor Pull Request GitHub Actions in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add PackmindHub/packmind --skill michel-monitor-pull-request-github-actions -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/michel-monitor-pull-request-github-actions, .gemini/skills/michel-monitor-pull-request-github-actions, .github/skills/michel-monitor-pull-request-github-actions and .opencode/skills/michel-monitor-pull-request-github-actions in your project.

What does Michel Monitor Pull Request GitHub Actions need to run?

Going by SKILL.md and its folder, Michel Monitor Pull Request GitHub Actions needs the command-line tools its instructions call (gh, git, nx and jq).

Does Michel Monitor Pull Request GitHub Actions access the network?

SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Michel Monitor Pull Request GitHub Actions safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Michel Monitor Pull Request GitHub Actions use?

Michel Monitor Pull Request GitHub Actions is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Michel Monitor Pull Request GitHub Actions use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Michel Monitor Pull Request GitHub Actions?

Skills that share tags, products or a category with Michel Monitor Pull Request GitHub Actions: CI (aiblueprinthq/ai-blueprint, 463 stars), CI (openJiuwen-ai/sciencediscovery, 159 stars), Diy Netlify (swyxio/skills, 176 stars) and ONNX Runtime CI Management (microsoft/onnxruntime, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Michel Monitor Pull Request GitHub Actions?

PackmindHub (a GitHub organization) maintains it in PackmindHub/packmind, which has 318 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on October 9, 2026.

Source: PackmindHub/packmind on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.