gh-issues
Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
npx skills add SafeAI-Lab-X/ClawKeeper --skill gh-issues --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
Fetch GitHub issues for a repository, spawn sub-agents to implement fixes and open PRs, and then monitor PR reviews. Supports optional fork mode, polling, dry-run, confirmation, cron mode, and notifications via a channel.
How it works
- Parses arguments after /gh-issues to determine SOURCE_REPO, PUSH_REPO, and flags (labels, limit, milestone, assignee, state, fork, watch, interval, dry-run, yes, reviews-only, cron, model, notify-channel).
- Phase 2 fetches issues from the GitHub REST API using curl with a Bearer GH_TOKEN, applying filters for label, milestone, and assignee, removing pull requests from results, and handling watch mode.
- Phase 3 presents a markdown table of issues and, depending on modes (--dry-run or --yes), either confirms processing or asks for user input to select issues to process. In watch mode, confirmation is required on the first poll.
- Phase 4 performs pre-flight checks: dirty working tree, base branch, remote access (fork vs origin), GH_TOKEN validity, existing PRs, in-progress branches on the push repo, and claim-based in-progress tracking. Skips issues with existing PRs or branches, or those claimed recently.
- Phase 5 spawns sub-agents in parallel (normal mode) or sequentially (cron mode). Each spawn includes optional model and notify-channel, writes a claim timestamp, and exits without awaiting results. In cron mode, a cursor tracks the next issue; in normal mode, up to 8 concurrent sub-agents are spawned, batching as needed.
- Sub-agent task prompts are constructed with issue details and environment values, and all GitHub operations use curl with Authorization: Bearer $GH_TOKEN. After spawning, a claim is written and a short confirmation is emitted.
When to use it
- Use when you want to automatically fetch issues, create targeted fixes via sub-agents, and manage PR creation and review, optionally in a forked workflow and with periodic polling (--watch).
- Activate cron mode for scheduled, non-blocking runs that exit after spawning; use --cron with --yes or --reviews-only to tailor behavior.
What it can touch
- GitHub via REST API: issues, milestones, users, pulls, branches creation, and PRs.
- Local git repository for remote checks and push/fork configuration when not in cron mode.
- A claims file at /data/.clawdbot/gh-issues-claims.json to track in-progress or claimed issues.
- Cursor and staging files at /data/.clawdbot used for cron mode sequencing.
Caveats
- Requires GH_TOKEN to be available as an Authorization Bearer token for API calls; misconfiguration yields authentication errors.
- Does not use gh CLI; relies entirely on curl + GitHub REST API.
- Behavior depends on mode: cron mode is sequential with a cursor; normal mode spawns multiple sub-agents concurrently and updates claims.
- Some steps assume an OpenClaw/OpenClaw-provided environment and filesystem paths; behavior may vary outside that environment.
# gh-issues — Auto-fix GitHub Issues with Parallel Sub-agents You are an orchestrator. Follow these 6 phases exactly. Do not skip phases. IMPORTANT — No `gh` CLI dependency. This skill uses curl + the GitHub REST API exclusively. The GH_TOKEN env var is already injected by OpenClaw. Pass it as a Bearer token in all API calls: ``` curl -s -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github+json" ... ``` --- ## Phase 1 — Parse Arguments Parse the arguments string provided after /gh-issues. Positional: - owner/repo — optional. This is the source repo to fetch issues from. If omitted, detect from the current git remote: `git remote get-url origin` Extract owner/repo from the URL (handles both HTTPS and SSH formats). - HTTPS: https://github.com/owner/repo.git → owner/repo - SSH: git@github.com:owner/repo.git → owner/repo If not in a git repo or no remote found, stop with an error asking the user to specify owner/repo. Flags (all optional): | Flag | Default | Description | |------|---------|-------------| | --label | _(none)_ | Filter by label (e.g. bug, `enhancement`) | | --limit | 10 | Max issues to fetch per poll | | --milestone | _(none)_ | Filter by milestone tit
- Phase 1 — Parse Arguments
- Phase 2 — Fetch Issues
- Phase 3 — Present & Confirm
- Phase 4 — Pre-flight Checks
- Phase 5 — Spawn Sub-agents (Parallel)
- Sub-agent Task Prompt
- Spawn configuration per sub-agent:
- Timeout Handling
- Results Collection
- Phase 6 — PR Review Handler
- Step 6.1 — Discover PRs to Monitor
- Step 6.2 — Fetch All Review Sources
- Step 6.3 — Analyze Comments for Actionability
- Step 6.4 — Present Review Comments
What does the gh-issues skill do?
Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
How do I install it?
Run `npx skills add SafeAI-Lab-X/ClawKeeper --skill gh-issues --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From SafeAI-Lab-X/ClawKeeper, a repository with 1,034 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
