Source profileQuality 91/100Review permissions

laurigates/claude-plugins/git-plugin/skills/gh-workflow-monitoring/SKILL.md

gh-workflow-monitoring

`gh run watch` — block until a GitHub Actions run finishes, no polling loop. Use when waiting for CI after a push or following a triggered workflow to completion.

Source repository stars
54
Declared platforms
0
Static risk flags
1
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

`gh run watch` — block until a GitHub Actions run finishes, no polling loop.

Best for

  • Watch and monitor GitHub Actions workflow runs using gh run watch - a blocking command that follows runs until completion without needing timeouts or polling.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/laurigates/claude-plugins --skill "git-plugin/skills/gh-workflow-monitoring"
Safe inspection promptEditorial

Inspect the Agent Skill "gh-workflow-monitoring" from https://github.com/laurigates/claude-plugins/blob/c056e44b978db58648ad20440dc1515cb09af09d/git-plugin/skills/gh-workflow-monitoring/SKILL.md at commit c056e44b978db58648ad20440dc1515cb09af09d. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    List runs for specific workflow

    gh run list -w "CI" --json databaseId,name,status,conclusion -L 5

    gh run list -w "CI" --json databaseId,name,status,conclusion -L 5
  2. 02

    View with step details

    gh run view $RUNID --verbose

    gh run view $RUNID --verbose
  3. 03

    Extract One Step's Bare Output from --log

    gh run view --log is tab-delimited: every line is \t\t . To scrape one step's stdout back to its bare form — dropping the job and step columns and the per-line timestamp — filter to the step name (field-2 substring) and strip the timestamp, which is the first space-delimited tok…

    gh run view --log is tab-delimited: every line is \t\t . To scrape one step's stdout back to its bare form — dropping the job and step columns and the per-line timestamp — filter to the step name (field-2 substring) and…
  4. 04

    All lines from the step whose name contains "clean warm run", de-columned

    gh run view $RUNID --log \ | awk -F'\t' '/clean warm run/ { sub(/^[^ ] /, "", $3); print $3 }' bash gh run view $RUNID --log \ | awk -F'\t' '/bench \(clean warm/ { sub(/^[^ ] /, "", $3); print $3 }' \ | grep -E 'RESULT|SANITY' bash

    gh run view $RUNID --log \ | awk -F'\t' '/clean warm run/ { sub(/^[^ ] /, "", $3); print $3 }' bash gh run view $RUNID --log \ | awk -F'\t' '/bench \(clean warm/ { sub(/^[^ ] /, "", $3); print $3 }' \ | grep -E 'RESULT|…
  5. 05

    Workflow Patterns

    Review the “Workflow Patterns” section in the pinned source before continuing.

    Review and apply the “Workflow Patterns” source section.

Permission review

Static risk signals and limitations

Runs scripts

medium · line 8

The documentation asks the agent to run terminal commands or scripts.

| Watching a workflow run until it completes via blocking `gh run watch` | Use `gh-cli-agentic` for one-shot JSON queries of run/PR check state |

Runs scripts

medium · line 11

The documentation asks the agent to run terminal commands or scripts.

| Finding the latest in-progress run for a workflow | Use `gh-cli-agentic` to list completed runs by status filter |

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars54SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
laurigates/claude-plugins
Skill path
git-plugin/skills/gh-workflow-monitoring/SKILL.md
Commit
c056e44b978db58648ad20440dc1515cb09af09d
License
MIT
Collected
2026-08-28
Default branch
main
View the original SKILL.md

GitHub Workflow Monitoring

When to Use This Skill

Use this skill when...Use the alternative when...
Watching a workflow run until it completes via blocking gh run watchUse gh-cli-agentic for one-shot JSON queries of run/PR check state
Waiting for CI after a push, or triggering a workflow and following progressUse git-fix-pr to diagnose AND auto-correct failing checks on a PR
Chaining on a run's outcome with gh run watch --exit-statusUse github-actions-plugin:github-actions-inspection to read a finished run's logs and stack traces
Finding the latest in-progress run for a workflowUse gh-cli-agentic to list completed runs by status filter

Watch and monitor GitHub Actions workflow runs using gh run watch - a blocking command that follows runs until completion without needing timeouts or polling.

Core Commands

Watch a Run Until Completion

# Watch most recent run (interactive selection if multiple)
gh run watch

# Watch specific run ID
gh run watch $RUN_ID

# Compact mode - show only relevant/failed steps (recommended for agents)
gh run watch $RUN_ID --compact

# Exit with non-zero if run fails (useful for chaining)
gh run watch $RUN_ID --exit-status

# Combined: compact output, fail on error
gh run watch $RUN_ID --compact --exit-status

Key Flags:

FlagDescription
--compactShow only relevant/failed steps (less output)
--exit-statusExit non-zero if run fails
-i, --intervalRefresh interval in seconds (default: 3)

Find Runs to Monitor

# List in-progress runs
gh run list --status in_progress --json databaseId,name,status,createdAt

# List runs for specific workflow
gh run list -w "CI" --json databaseId,name,status,conclusion -L 5

# List runs for current branch
gh run list --branch $(git branch --show-current) --json databaseId,name,status

# List runs triggered by specific event
gh run list --event push --json databaseId,name,status -L 10

# List failed runs
gh run list --status failure --json databaseId,name,conclusion,createdAt -L 5

Status Values: queued, in_progress, completed, waiting, pending, requested

Conclusion Values (when completed): success, failure, cancelled, skipped, neutral, timed_out

View Run Details

# Get run status with jobs
gh run view $RUN_ID --json status,conclusion,jobs,name,createdAt

# View with step details
gh run view $RUN_ID --verbose

# Get failed logs only (most useful for debugging)
gh run view $RUN_ID --log-failed

# Get full logs
gh run view $RUN_ID --log

# View specific job
gh run view --job $JOB_ID

# Open in browser
gh run view $RUN_ID --web

Extract One Step's Bare Output from --log

gh run view --log is tab-delimited: every line is <job>\t<step>\t<timestamp> <log line>. To scrape one step's stdout back to its bare form — dropping the job and step columns and the per-line timestamp — filter to the step name (field-2 substring) and strip the timestamp, which is the first space-delimited token of field 3:

# All lines from the step whose name contains "clean warm run", de-columned
gh run view $RUN_ID --log \
  | awk -F'\t' '/clean warm run/ { sub(/^[^ ]* /, "", $3); print $3 }'

This is the durable way to read a succeeded step's output for structured markers — RESULT …, a PASS/FAIL line, a JSON blob a job printed — when --log-failed doesn't apply (nothing failed; you just want the output). The whole job's log is one stream, so narrow to the step first, then grep the markers:

gh run view $RUN_ID --log \
  | awk -F'\t' '/bench \(clean warm/ { sub(/^[^ ]* /, "", $3); print $3 }' \
  | grep -E 'RESULT|SANITY'

Notes: match the step name as it appears in the workflow's name: (the awk /pattern/ is a plain regex over the whole tab-joined line — anchor with a distinctive substring to avoid matching the same text inside a log line); [^ ]* matches the timestamp because it never contains a space, so a mangled first token can't over-strip the line.

Workflow Patterns

Trigger and Watch

# Trigger workflow and immediately watch it
gh workflow run "CI" && sleep 2 && gh run watch --compact --exit-status

# Trigger with inputs
gh workflow run "Deploy" -f environment=staging -f version=1.2.3

Wait for PR Checks

# Get the latest run for a PR's head commit
RUN_ID=$(gh run list --branch $(gh pr view $PR --json headRefName --jq '.headRefName') -L 1 --json databaseId --jq '.[0].databaseId')
gh run watch $RUN_ID --compact --exit-status

Monitor Multiple Runs

# List all in-progress runs and watch the first one
gh run list --status in_progress --json databaseId,name --jq '.[0]'

# Get all active run IDs
gh run list --status in_progress --json databaseId --jq '.[].databaseId'

Agentic Patterns

Find and Watch Latest Run

# 1. Find the run
RUN_ID=$(gh run list -L 1 --json databaseId --jq '.[0].databaseId')

# 2. Watch it (blocking - waits until complete)
gh run watch $RUN_ID --compact --exit-status

Diagnose Failures

# 1. Find failed run
gh run list --status failure -L 1 --json databaseId,name,conclusion

# 2. Get failed logs
gh run view $RUN_ID --log-failed

CI Integration Flow

# After pushing, find and watch the triggered run
git push origin HEAD
sleep 5  # Wait for GitHub to register the run
RUN_ID=$(gh run list --branch $(git branch --show-current) -L 1 --json databaseId --jq '.[0].databaseId')
gh run watch $RUN_ID --compact --exit-status

Agentic Optimizations

ContextCommand
Watch until donegh run watch $ID --compact --exit-status
Find in-progressgh run list --status in_progress --json databaseId,name
Latest run IDgh run list -L 1 --json databaseId --jq '.[0].databaseId'
Failed logsgh run view $ID --log-failed
Scrape a succeeded step's stdoutgh run view $ID --log | awk -F'\t' '/STEP/{sub(/^[^ ]* /,"",$3);print $3}'
Trigger + watchgh workflow run "$NAME" && sleep 2 && gh run watch --compact
PR run statusgh pr checks $PR --json name,state,conclusion

Why gh run watch Over Polling

ApproachProblem
sleep + pollWastes time, may miss completion, timeout complexity
WebhookRequires infrastructure, not CLI-friendly
gh run watchBlocks until complete, shows progress, returns exit code

Benefits of gh run watch:

  • Blocking: Waits until run completes - no timeout management needed
  • Live updates: Shows progress during execution
  • Exit codes: Returns 0 on success, non-zero on failure
  • Compact mode: --compact reduces output to relevant steps only
  • Chain-friendly: Use with && for conditional next steps

Error Handling

# Watch with error handling
gh run watch $RUN_ID --compact --exit-status && echo "Success" || echo "Failed"

# Check if run exists before watching
gh run view $RUN_ID --json status 2>/dev/null && gh run watch $RUN_ID --compact

Context Expressions

Use in command frontmatter:

- In-progress runs: !`gh run list --status in_progress --json databaseId,name --jq '.[0]'`
- Latest run: !`gh run list -L 1 --json databaseId,name,status,conclusion`

See Also

  • gh-cli-agentic - General GitHub CLI patterns
  • git-branch-pr-workflow - PR and branch workflows

Frequently asked questions

What to verify before installation and use

What does the gh-workflow-monitoring source document cover?

`gh run watch` — block until a GitHub Actions run finishes, no polling loop.

How do I install gh-workflow-monitoring?

The source record exposes this install command: npx skills add https://github.com/laurigates/claude-plugins --skill "git-plugin/skills/gh-workflow-monitoring". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 10029,236

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10025,136

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 10015,385

wanshuiyin/Auto-claude-code-research-in-sleep

citation-audit

Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.

Computed 10014,706

prowler-cloud/prowler

postgresql-indexing

PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance