{
  "markdown": "# gh-verify-skills\n\nFive skills that stand between a pull request and a trusted merge — the\nparallel reviewer fan-out, the two verifiers that prove a claim instead of\nrepeating it, the pre-merge audit, and the post-merge dispatcher. Packaged as a\nsingle plugin named `gh-verify`, installable on six coding-agent harnesses.\n\nThe thread running through all of them: **never report a pass you did not\nmeasure.** Each one names what it could not reach rather than quietly leaving it\nout.\n\n## Skills\n\n| Skill | Invoke | What it does |\n|-------|--------|--------------|\n| `review-all` | `/gh-verify:review-all <PR#> [remote] [--defer-reply M] [--no-reply] [--force-review]` | Runs a `/simplify` auto-fix pass alone first and pushes it, then dispatches agy, codex, opencode and hermes over the simplified head **in a single turn**, aggregates their verdicts into the `review-blocked` merge-gate label, then replies inline or on a delay. Never approves. |\n| `live` | `/gh-verify:live [<PR#>] [remote] [--url U] [--matrix full] [--dry-run]` | Attaches to the app you already have running, proves the process really is serving the PR's merge commit, then drives the PR's claims through the browser with machine-readable assertions. Findings that survive self-refutation become issues. |\n| `merged` | `/gh-verify:merged [<PR#>] [remote] [--matrix full] [--no-diff-check]` | For repos with nothing to serve: clones the merge commit into a temp dir and re-runs the checks there, so a dirty worktree cannot fake a pass. Compares which test cases actually exist in the clone versus your tree. |\n| `exception-merge-checklist` | `/gh-verify:exception-merge-checklist [<PR#>] [--skip-bisect] [--auto-fix]` | Ten read-only checks right before an exception-track hand-merge — broken rebase intermediates, lock drift, YAML damage, over-broad formatter writes, missing test mocks. `--auto-fix` stages, never commits. |\n| `post-merge-verify` | `/gh-verify:post-merge-verify <PR#> [remote]` | Dispatch only: closes the tab that implemented the PR, rebases main, and opens a fresh session running `live` or `merged` per the watched-repos registry. Verifies nothing itself. |\n\n### Visual guides and worked examples (GitHub Pages)\n\n- `review-all` — [visual guide](https://deity719.github.io/gh-verify-skills/skill-guides/review-all.html) · [usage example](https://deity719.github.io/gh-verify-skills/skill-output/review-all-usage.html) (PR number to gate label and replies)\n- `live` — [visual guide](https://deity719.github.io/gh-verify-skills/skill-guides/live.html) · [usage example](https://deity719.github.io/gh-verify-skills/skill-output/live-usage.html) (running app to verification report)\n- `merged` — [visual guide](https://deity719.github.io/gh-verify-skills/skill-guides/merged.html) · [usage example](https://deity719.github.io/gh-verify-skills/skill-output/merged-usage.html) (merge commit to fresh-clone report)\n- `exception-merge-checklist` — [visual guide](https://deity719.github.io/gh-verify-skills/skill-guides/exception-merge-checklist.html) · [usage example](https://deity719.github.io/gh-verify-skills/skill-output/exception-merge-checklist-usage.html) (PR number to ten-point audit)\n- `post-merge-verify` — [visual guide](https://deity719.github.io/gh-verify-skills/skill-guides/post-merge-verify.html) · [usage example](https://deity719.github.io/gh-verify-skills/skill-output/post-merge-verify-usage.html) (merged PR to verification session)\n\nEach page is generated from a Markdown source under\n[`docs/skill-guides/`](docs/skill-guides) and [`docs/skill-output/`](docs/skill-output).\n\n### Picking between them\n\nThe discriminator is **where in the PR's life you are standing**:\n\n| Before the merge | At the merge | After the merge |\n|---|---|---|\n| `review-all` — fan out the reviewers, set the gate label | `post-merge-verify` — dispatch the verification session | `live` — an app is serving the code |\n| `exception-merge-checklist` — the hand-merge audit | | `merged` — nothing to serve, use a fresh clone |\n\n`live` and `merged` are sister skills covering the same post-merge slot with\ndifferent proofs: `live` proves the **serving checkout's** identity, `merged`\nproves a **fresh clone's**. Both also run on an unmerged PR branch.\n\n`review-all` is the only skill here that writes to your branch, and only the\n`/simplify` auto-fix commit it runs. Nothing here approves or merges a PR.\n\n## Install\n\n### Claude Code\n\n```\n/plugin marketplace add dEitY719/gh-verify-skills\n/plugin install gh-verify@gh-verify-skills\n```\n\n### Codex\n\n```\ncodex plugin install dEitY719/gh-verify-skills\n```\n\n### Kimi CLI\n\n```\nkimi plugin install dEitY719/gh-verify-skills\n```\n\n### Hermes Agent\n\n```\nhermes plugins install dEitY719/gh-verify-skills\n```\n\n### OpenCode\n\nSee [`.opencode/INSTALL.md`](.opencode/INSTALL.md).\n\n### Gemini CLI / Antigravity\n\n```\ngemini extensions install https://github.com/dEitY719/gh-verify-skills\n```\n\nAntigravity (`agy`) shares `~/.gemini`, so it inherits the install.\n\n## Harness support\n\nThese skills are written in Claude Code's vocabulary. The per-harness tool\nmappings and capability gaps are documented once, in\n[`dEitY719/harness-skills/references/`](https://github.com/dEitY719/harness-skills/tree/main/references)\n(dEitY719/dotfiles#1410 F-5); read the one file for the harness you are on.\n\n| Skill | Claude Code | Codex | Kimi | Gemini / Antigravity | Hermes | OpenCode |\n|-------|:-----------:|:-----:|:----:|:--------------------:|:------:|:--------:|\n| `review-all` | full | partial | partial | partial | partial | partial |\n| `live` | full | partial | partial | partial | partial | partial |\n| `merged` | full | full | full | full | full | full |\n| `exception-merge-checklist` | full | full | full | full | full | full |\n| `post-merge-verify` | full | full | full | full | full | full |\n\nWhat \"partial\" means:\n\n- **`review-all`** needs a parallel subagent primitive. Its Step 3 dispatches\n  four reviewer lanes in one turn; a harness without that runs them\n  sequentially, which is slower but still correct. What is *not* acceptable is\n  dropping lanes — the verdict Step 3.5 records must reflect every lane that\n  actually ran. The `/simplify` auto-fix pass is not one of those four: it runs\n  alone in Step 2.5, and moving it back beside them is a defect\n  (dEitY719/gh-verify-skills#18).\n- **`live`** needs a browser driver. Its `references/driver.md` defines a\n  ladder down to a degraded check set, and the report has to declare which rung\n  it reached.\n- **`post-merge-verify`** needs the `herdr` CLI. Without it the skill is a\n  silent no-op by design, on every harness including Claude Code.\n\nTwo more constraints apply everywhere: `gh` must be authenticated for the host\nthe remote points at, and several skills source shell helpers\n(`${SHELL_COMMON}/functions/*.sh`). Those helpers are vendored here under\n`lib/vendor/shell-common/`: an upstream `~/dotfiles` checkout is preferred when\npresent (tier 1) and the vendored copy is the fallback (tier 2), per the\nresolution order in\n[`dEitY719/harness-skills/references/plugin-root.md`](https://github.com/dEitY719/harness-skills/blob/main/references/plugin-root.md).\n\n## Layout\n\nManifests live at the repo root and all point at one flat `skills/` directory:\n\n```\n.\n├── skills/{review-all,live,merged,exception-merge-checklist,post-merge-verify}/\n│   ├── SKILL.md\n│   ├── references/\n│   └── evals/                                (live, merged)\n├── .claude-plugin/{marketplace,plugin}.json     Claude Code\n├── .codex-plugin/plugin.json                    Codex\n├── .kimi-plugin/plugin.json                     Kimi CLI\n├── .hermes-plugin/{plugin.yaml,__init__.py}     Hermes Agent\n├── .opencode/plugins/gh-verify.js + INSTALL.md  OpenCode\n├── .agents/plugins/marketplace.json             Antigravity\n├── gemini-extension.json + GEMINI.md            Gemini CLI\n├── package.json\n├── CLAUDE.md · AGENTS.md -> CLAUDE.md\n└── LICENSE\n```\n\nOnly Claude Code understands a nested `plugins/<name>/skills/` layout. The other\nfive harnesses resolve manifests at the repo root and a skills tree at\n`./skills/`, so this repo keeps everything flat. See [`CLAUDE.md`](CLAUDE.md) for\nthe full rationale and contribution rules.\n\nThe `.kimi-plugin/` manifest is pre-provisioned: Kimi CLI is not installed on the\nmaintainer's machines yet, and shipping the manifest now costs nothing and saves\na migration later.\n\n## CI\n\n[`.github/workflows/validate.yml`](.github/workflows/validate.yml) calls the\nreusable workflow owned by\n[`dEitY719/harness-skills`](https://github.com/dEitY719/harness-skills/blob/main/.github/workflows/skill-check.yml)\n(dEitY719/dotfiles#1410 D-10) — manifest parsing, required files, skill frontmatter,\nprogressive-disclosure line limits, the Codex description budget, version\nagreement, shellcheck, and an emoji gate.\n\nThere are no checks defined in this repo. To change what is validated here, open\na PR against `harness-skills`; a merge to its `main` ships to all fifteen repos\nat once.\n\nOne input is tuned for this repo and documented inline in `validate.yml`:\n`allow-emoji-paths`, for the one reference file that specifies the dotfiles\nai-metrics footer. `max-skill-lines` is left at the shared default of 100 —\nevery `SKILL.md` here is under it.\n\n## Provenance\n\nThese skills were extracted from\n[`dEitY719/dotfiles`](https://github.com/dEitY719/dotfiles) as a content\nsnapshot — no history rewriting. The source commit SHA is recorded in this\nrepo's first commit message.\n\n| dotfiles `claude/skills/` | here |\n|---|---|\n| `devx-pr-review-all` | `review-all` |\n| `devx-pr-verify-live` | `live` |\n| `devx-pr-verify-merged` | `merged` |\n| `devx-exception-merge-checklist` | `exception-merge-checklist` |\n| `gh-pr-post-merge-verify` | `post-merge-verify` |\n\nThe `devx-pr-` / `gh-pr-` prefixes are dropped because the plugin namespace\n(`gh-verify:`) now supplies them. Every description still lists its old trigger\nforms, so `/devx-pr-verify-live` and friends keep working; the dotfiles\noriginals also stay put until dEitY719/dotfiles#1410 Phase 4 removes them. One\nexception: `merged` carries `/gh-verify:merged` and `/devx:pr-verify-merged`\nbut no longer the hyphen form `/devx-pr-verify-merged` — with all three its\ndescription measured 426 characters, a Check 16 FAIL (see #10, Section D).\n\nThis is part of Phase 2 of the dotfiles #1410 migration; `packaging-skills` was\nPhase 0, and `harness-skills` / `notes-skills` are its Phase 1 siblings.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n",
  "bytes": 10468,
  "sha": "de0cc6f744d847e1d9b0f4f06ceeaa4dea749a5046011adc7c56172e039b5d08",
  "repo_slug": "deity719/gh-verify-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_deity719_gh_verify_skills_7d3ae9c5/readme"
}