Manage GitHub Actions workflows with the gh CLI (list, run, cancel, monitor).
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: gh-workflows
description: Manage GitHub Actions workflows with the gh CLI (list, run, cancel, monitor).
---
## When to Use
Use this skill whenever you need to inspect, trigger, or stop GitHub Actions workflows. It wraps `gh workflow` and `gh run` commands so you can keep CI pipelines healthy without leaving the terminal.
## Prerequisites
1. `gh` CLI authenticated with `gh auth login --scopes repo,workflow`. Confirm via `gh auth status`.
2. `jq` available to pretty-print JSON results.
3. Environment:
- `GITHUB_REPOSITORY` (owner/name). Ask for it if missing.
- `GITHUB_TOKEN` (gh uses it automatically once authenticated).
- `DEFAULT_BRANCH` (fallback for manual dispatches; default to `main`).
## Common Parameters
- `--repo "$GITHUB_REPOSITORY"` is required for every command.
- `--json ... --jq '.'` returns machine-friendly payloads.
- When scripts provide `workflow` names, accept either filename (`deploy.yml`) or workflow ID.
## Procedures
### List Workflows (`/workflows-list`)
1. Run: `gh workflow list --repo "$GITHUB_REPOSITORY" --limit ${LIMIT:-20} --json id,name,path,state`.
2. Use `jq` to format the response.
3. Summarize key fields: name, path, state, and id so downstream commands can use them.
### List Workflow Runs (`/workflows-runs`)
1. Require a workflow identifier.
2. Optional filters:
- Branch: `--branch ${BRANCH}` (omit if empty).
- Status: `--status ${STATUS:-all}`.
3. Command:
```bash
gh run list --repo "$GITHUB_REPOSITORY" \
--workflow "$WORKFLOW" \
${BRANCH:+--branch "$BRANCH"} \
--status ${STATUS:-all} \
--limit ${LIMIT:-20} \
--json databaseId,workflowName,displayTitle,headBranch,status,conclusion,createdAt
```
4. Pipe to `jq '.'` and surface the most recent run id for convenience.
### View a Workflow Run (`/workflows-view`)
1. Accept a `run_id` (numeric or URL) and optional `--log` flag.
2. Command:
```bash
gh run view "$RUN_ID" --repo "$GITHUB_REPOSITORY" \
--json databaseId,workflowName,displayTitle,event,headBranch,status,conclusion,logsUrl,htmlUrl
```
3. Share the JSON and hyperlink to `logsUrl`/`htmlUrl` for quick navigation.
### Cancel a Run (`/workflows-cancel`)
1. Confirm the run is in `in_progress` or `queued` state (use `gh run view`).
2. Command sequence:
```bash
gh run cancel "$RUN_ID" --repo "$GITHUB_REPOSITORY"
gh run watch "$RUN_ID" --repo "$GITHUB_REPOSITORY" --exit-status || true
```
3. Report the final status (cancelled/completed). If already finished, note that cancellation was skipped.
### Trigger a Workflow (`/workflows-trigger`)
1. Require workflow file/ID plus ref/branch.
2. Compose inputs:
```bash
EXTRA_INPUTS=${INPUTS_JSON:+--inputs "$INPUTS_JSON"}
gh workflow run "$WORKFLOW" --repo "$GITHUB_REPOSITORY" --ref "${REF:-${BRANCH:-$DEFAULT_BRANCH}}" $EXTRA_INPUTS
```
3. Capture the run id from gh output and share it for monitoring.
### Monitor a Run (`/workflows-monitor`)
1. Command: `gh run watch "$RUN_ID" --repo "$GITHUB_REPOSITORY" --exit-status`.
2. Stream output back. At completion, annotate whether the run concluded with success, failure, or cancellation.
## Safety Checks
- Never cancel or rerun workflows outside the configured repo.
- If a command fails due to missing repo/ref, prompt the user for the missing data before retrying.
- Treat manual dispatch inputs carefully—validate JSON before passing `--inputs`.
No comments yet. Be the first to comment!