Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/ffroliva/gflow-clinpx agentmods add skills/ffroliva/gflow-cli/pr-council-reviewWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ffroliva/gflow-cli/pr-council-review)<a href="https://agentmods.dev/skills/ffroliva/gflow-cli/pr-council-review"><img src="https://agentmods.dev/badge/skills/ffroliva/gflow-cli/pr-council-review.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Agent Snooping · line 136 Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.Fix: Remove all code or instructions that list or read other skills' files or directories. Skills should operate independently; cross-skill access is a privilege escalation.
- medium Rogue Agent · line 258 Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00125 | $0.11496 |
| Opus 5 | $0.00063 | $0.05748 |
| Sonnet 5 | $0.00025 | $0.02299 |
| Haiku 4.5 | $0.00013 | $0.01150 |
Grade A, and why
pr-council-review scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 484 lines — stays where its author put it; the contents beside it link to each section on GitHub.
pr-council-review — PR Council Review skill
Council-driven PR review. Dispatches 6 baseline + N adaptive parallel reviewers, each scoped to one dimension, each invoking the relevant Claude Code specialized skill (e.g. security-review, code-review, verify), then synthesizes a single consensus verdict.
This skill is the canonical body. The Claude Code slash command at .claude/commands/gflow/pr-council-review.md is a thin wrapper that invokes this skill. Non-Claude tools (Antigravity / Codex / Cursor / Aider) can consume this SKILL.md directly via their own skill loaders.
Three modes:
- No argument → list open PRs ranked by review priority; user picks. (See § 1.)
PR#argument → run the full council on that PR. (See § 2 onward.)- Branch mode → run the full council on the current local feature branch (no PR yet). Invoked via the
/gflow:branch-reviewwrapper. See § 8 for the PR→branch translation table and pre-flight.
Treat YELLOW as soft block — it is advisory in name only; clear it or dismiss it with a logged justification (§ 5 step 8).
0 · Pre-flight
All six checks are mandatory. Any failure (except step 6, which records a finding) halts before Phase 1/2.
ghauthenticated — rungh auth status. Non-zero exit → stop with: "ghis not authenticated. Rungh auth loginand re-invoke."- Inside the repo — assert
AGENTS.mdANDCLAUDE.mdexist in the working directory. - Resolve the argument:
- Empty → jump to Phase 1 (Prioritize).
- PR number → validate with
gh pr view <N> --json number. If error → stop with the error verbatim.
- Draft check (PR# mode only) — if
gh pr view <N> --json isDraftreturnstrue, surface a banner citing memory[[draft-pr-merge-trap]]: "PR #N is DRAFT. Reviewing is fine, but do NOT merge a draft (the merge API can close it + delete the head ref). Rungh pr ready Nfirst if you intend to merge. Continue review? (yes/no)". Ask the user before dispatching. - Capture PR head ref + SHA (pin the review) —
head_branch=$(gh pr view <N> --json headRefName --jq '.headRefName')andhead_sha=$(gh pr view <N> --json headRefOid --jq '.headRefOid'). Pin both to aREVIEWED_SHAvariable and pass to every dispatched agent so the council's verdict is anchored to one commit. The local working tree is NOT on the PR head; all file reads must go throughgit show $REVIEWED_SHA:<path>(orgit show origin/$head_branch:<path>if you fetched first). If the author pushes new commits during the review, the council still reports againstREVIEWED_SHA; the synthesizer notes any divergence in Phase 5 step 5. - Mechanical CI gate (D0 — non-LLM, runs BEFORE dispatch). The LLM dimensions reason about the diff; none of them run the repo's actual lint/format/link gates, so a whole-tree failure sails past the council (this happened on PR #269 — a latent
ruff formatfailure in a file the diff only touched went green through 8 agents, then reddened CI and dragged SonarCloudnew_coverageto 0). Run the exact CI gate commands (.github/workflows/ci.yml→ Lint / Format check / Documentation links / Repo hygiene) against the reviewed tree:# Prefer running at REVIEWED_SHA. If HEAD is already there (reviewing your own # just-pushed PR, or branch-review mode), run in place: if [ "$(git rev-parse HEAD)" = "$REVIEWED_SHA" ]; then dir=.; else \ dir=$(mktemp -d); git worktree add --detach "$dir" "$REVIEWED_SHA"; fi ( cd "$dir" && uv run ruff check src tests \ && uv run ruff format --check src tests \ && uv run python scripts/ci/check_doc_links.py \ && uv run python scripts/ci/check_repo_hygiene.py ) # if a worktree was created: git worktree remove --force "$dir" (Windows: prune later if locked)- Any non-zero → record a
D0 — CI-mechanicalRED. This is a hard blocker regardless of the LLM dimensions' verdicts; surface the failing command + output verbatim in the report and do NOT call the PR merge-ready. (Mirrors the SonarCloud-gate rule in the wrapper: the council must not bless a tree CI will reject.) - If running the gate is impractical (no
uv, worktree add fails), fall back togh pr checks <N>and inspect thetestjob's Lint/Format steps; if they are pending or failing, flag D0 asUNVERIFIED — must be confirmed green before merge, never as GREEN. - Unlike steps 1–5, a D0 failure does not halt — dispatch the LLM council anyway so its findings are gathered in one pass, then fold D0 into the Phase 5 verdict.
- Any non-zero → record a
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago Changed · +11 lines 23efb2abdf0a
- 3d ago Changed · +25 lines 8dfce3d3b783
- 4d ago Changed · +11 lines f802fa1c09f4
- 8d ago First seen · 437 lines · 125 tokens per session scan A e2c2e750e09d
pr-council-review is a skill published in the GitHub repository ffroliva/gflow-cli (171 stars, last pushed yesterday), licensed MIT. It adds 125 tokens to every session and 11,496 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
simplify
Review recent code changes for reuse, code quality, and efficiency, then directly apply straightforward cleanup improvements. Use when the user wants a post-implementation cleanup pass, pre-PR polish, or asks to simplify/refine recent changes. Invoke with /simplify or /simplify .
triage
Gatekeep and review GitHub issues and pull requests for Qwen Code maintainers. Use for GitHub Action issue triage, PR admission checks, product-direction review, KISS-focused PR review, and staged bilingual GitHub comments.
find-simplifications
Use for a periodic repo-wide sweep of qwen-code for accumulated excess surface — dead components and files, orphaned locale keys, exports nothing consumes, added-then-removed scaffolding — filing candidates on a tracking issue and landing only what a maintainer has said yes to. Repo-wide and evidence-first; every…
autofix
Review and repair current local changes until they converge, or run Qwen Code Autofix issue and review workflows from GitHub Actions.
code-clean
Cut dead code and over-long comments from termio's Swift, verifying every deletion against a build. Knows this repo's real failure mode (essay-length doc comments, not restated-code slop) and periphery's four known false-positive shapes. Invoke when the user says 'clean dead code', 'clean up the comments', 'the…
assess-quality
Audit a Mendix project against best practices for naming, security, performance, maintainability and architecture, and report a scored result. Use when asked to evaluate project quality, run a pre-go-live health check, or get oriented in an unfamiliar app.