agentleFS
vanillagreencomvanillagreencom/kendex/.agents/skills/github/SKILL.md

github

Skill76 starsChanged 2 months agoMITView on GitHub

Load to work a GitHub pull request: threads, comments, reviews, CI logs, merges.

  • Reads credentials

166 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use taskflow-inbox-triage, BlueBubbles and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • AtomicBot-aiSkill

    taskflow-inbox-triage

    Also in 6 projects that use this

  • jiulingyunSkill

    BlueBubbles

    为Clawdbot构建或更新BlueBubbles外部通道插件(扩展包,REST发送/探测,webhook入站)。

    Also in 20 projects that use this

  • hkyutongSkill

    node-connect

    Diagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps. Use when QR/setup code/manual connect fails, local Wi-Fi works but VPS/tailnet does not, or errors mention pairing required, unauthorized, bootstrap token invalid or expired, gateway.bind, gateway.remote.url, Tailscale, or plugins.entries.device-pair.config.publicUrl.

    Also in 18 projects that use this

  • molt-botSkill

    discord-e2e

    Test Discord with Convex-leased QA bots: check credentials without a Gateway, exercise owned messages, or prove OpenClaw replies, files, threads, reactions, streaming, and typing. Distinguish API and Gateway evidence from manual user interactions.

    Also in 10 projects that use this

  • molt-botSkill

    openclaw-repair-sweep

    Run scoped OpenClaw issue/PR repair campaigns: coordinate workers, prove root causes, and land or close verified work under the requested authority.

    Also in 10 projects that use this

  • clawdbotSkill

    openclaw-performance

    Performance work in OpenClaw: a slow or heavy flow (latency, CPU, memory, SQL, RPC, renders), writing or reviewing a perf PR, or adding a cache. Count the work, delete waste first, cache last.

    Also in 7 projects that use this

  • +2 more from molt-bot

The file

We split this skill into the rules it gives an agent

2 rules. 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 151 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Keep secrets in .env.local.

    line 88
  2. Very specific:

    VAR_SIGN: use a multi-line GraphQL query with -F variables.

    line 92

“Common” is measured: kept by at least 6 in 10 of the 151 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- kendex:project-instructions:start -->

Project Instructions

<!-- kendex:shared-instructions:start -->

Problems with a kendex-owned skill go through kendex report; check ownership in the file first.

<!-- kendex:shared-instructions:end --><!-- kendex:project-instructions:end -->

GitHub Queries

.agents/skills/github/scripts/github.sh [-C <path>] <command> [options]

Commands

CommandPurpose
pr-data <N> [--actionable]Get PR with threads, comments, files. --actionable: unresolved non-outdated only.
pr-view [N] [--json FIELDS]View PR details (wraps gh pr view with bounded auth/no-PR errors)
pr-threads <N> [--unresolved|--resolved] [--format=safe|raw]Complete paginated thread list/count, outdated included. Both filters apply in both formats. See PR blocked with no visible conversations.
pr-list-ready [--all] [--format=safe|table]List PRs ready for merge
pr-list-failing [--all] [--format=safe|table]List PRs with CI failures
pr-create [--title T] [--body B | --body-file PATH] [--draft] [--dry-run] [--force]Create PR as bot. Safety checks: not main, has commits, pushed; --force skips them.
pr-edit-body <N> --body-file PATHUpdate an existing PR body through the sanitized router.
pr-merge <N> [--check|--force|--admin|--auto]Merge PR. --check reports readiness as JSON on stdout plus a one-word verdict and head-run: <ids> (the run scope of the CI classification) on stderr; --auto queues a currently-blocked PR. Three exit codes, the review-thread gate, and --force/--admin. See PR Merge Outcomes.
ci-classify-refusal <N>Name the cause of a pr-merge refusal on one cause: line (fetch_error, merge_conflict, changes_requested, threads, ci_failed, ci_pending, computing, merged, closed, none; an issue prefix outside that vocabulary becomes the cause word itself, and none means the checks pass now); ci_failed adds fail: lines run-correlated to the authoritative run and superseded: lines naming runs whose checks were not counted. --help
pr-cross-check [N...] [--quick|--verify]Cross-PR analysis. --verify: full build+test (auto-detects build system).
pr-issue <N> [--format=safe|text]Extract issue ID from PR branch (configurable via GH_ISSUE_PATTERN)
label-add <PR-or-issue> <label> [--issue] [--required|--optional]Add a label after checking the live inventory. Mode semantics and exit codes: label-add --help.
label-remove <PR-or-issue> <label> [--issue]Remove a label through the sanitized router.
await-mergeable <N> [--interval S] [--max-iter N] [--quiet]Block until GitHub resolves a PR's merge state. Polls state + mergeStateStatus. Exit 0 + JSON on resolve, 124 on timeout.
ci-logs <N> [--lines N] [--format=safe|text]Get CI failure logs for PR
bot-token [--format=safe|text]Check if bot token is configured
dismiss-review <PR> [--bot|--user NAME] [--message M]Dismiss blocking review
resolve-thread <PRRT_...>Mark thread(s) resolved. Works on threads the UI cannot render. See PR blocked with no visible conversations.
unresolve-thread <PRRT_...>Reopen thread(s)
post-reply <PRRT_...|numeric-id> [body | --body-file PATH] [--pr N]Reply to review comment. --pr N is REQUIRED for numeric comment IDs; thread PRRT_... IDs need no PR number.
post-comment <PR> [body | --body-file PATH]Post PR-level comment.
find-comment <PR> --pattern <regex>Find comment by pattern/author
edit-comment <id> [body | --body-file PATH]Edit existing comment.
sticky-comment <PR> [--verdict|--analysis|--body]Get bot sticky comment. --verdict: quick pass/fail. --analysis: deep recommendation.

CI waiting belongs to .agents/skills/orch/scripts/ci-wait; await-mergeable waits for merge-state resolution.

Contracts: label-add --help, git-https-auth --help, git-diff-summary --help.

PR Merge Outcomes

Full contract: pr-merge --help. Exit 75 is volatile: the caller arms one exact head and waits on that head with the orch skill's queue-wait, whose --help § Verdicts maps each verdict to a route; an unrecognized verdict is never re-armed. With the review-gate skill installed, its watcher output contract is pr-watch.sh --help. If can_merge is false with no issues, read state. The thread gate is Policy, not mechanism. --force and the explicit-user-only --admin are its overrides.

PR blocked with no visible conversations

Under required_conversation_resolution, an outdated thread can block a merge while the UI shows none; resolve-thread reaches it by id.

github.sh pr-threads 42                  # complete list, outdated included
github.sh resolve-thread PRRT_kwDO...    # resolve by thread id

pr-threads follows every page and fails rather than returning a partial list, so a thread id absent from its output is genuinely absent. Repeat resolve-thread per blocking id until the merge clears.

Waiting for merge state

Never gate termination on gh pr view --json mergeable. That field stays UNKNOWN permanently after a merge. Use await-mergeable (resolution rules and exit codes: await-mergeable --help). To watch MANY PRs, do not hand-roll a poll loop keyed on state transitions. Use the review-gate skill's reducer when installed (.agents/skills/review-gate/scripts/pr-watch.sh).

Output Formats

Formats and flag rules: github.sh --help.

Configuration

Keep secrets in .env.local; commit non-secret defaults to kendex.settings.toml under [env]. Other contracts: github.sh --help.

Troubleshooting

VAR_SIGN: use a multi-line GraphQL query with -F variables.

Stale-token HTTP 401: clear both environment tokens:

env -u GH_TOKEN -u GITHUB_TOKEN gh pr list

github.sh falls back when keyring auth succeeds.

Dependencies

  • gh CLI (authenticated)
  • jq
  • op CLI (optional, 1Password token references)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.