Agent skill

PR

by tbhb in tbhb/vale-ai-tells

Open a pull request for the current branch. An agent skill from tbhb/vale-ai-tells.

Apache-2.0Auto-check passedDevelopment

Install PR

skills CLI
$ npx skills add tbhb/vale-ai-tells --skill pr -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install tbhb/vale-ai-tells pr --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/tbhb/vale-ai-tells.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/pr .claude/skills/pr && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pr
GitHub stars
115
Token cost
~2.9k tokens
SKILL.md length
1,639 words
Files
8 (incl. scripts)
Skills in repo
27
Repo updated
First seen
Licence
Apache-2.0

At a glance

Open a pull request for the current branch. An agent skill from tbhb/vale-ai-tells.

  • Works in 9 steps: the checklist → confirm the branch is ready → draft the description → …
  • Draft a pull request in a tbhb repo
  • SKILL.md covers Preflight, Step 0: the checklist, Step 1: confirm the branch is… and Step 2: draft the description, plus 7 more sections
  • Runs Shell scripts from its folder; calls gh, mise and bash

What it does

PR is an agent skill from tbhb/vale-ai-tells. Open a pull request for the current branch. A forked writer drafts the title and the pull request properties and the template's sections into PRAGENTDESC.md. An independent reviewer then reads that draft against the branch, and a mechanical validator checks it against the template. The operator confirms before anything publishes. Whatever follows routes to the watch-pr and fix-pr and merge-pr skills. Use this whenever the user asks to open or draft a pull request in a tbhb repo, and whenever a task ends in one.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts (for example `scripts/create-pr.sh`, `scripts/guard-gh.sh` and `scripts/preflight.sh`).

It sits in Development, covering Pull requests. The repository describes itself as: In today's rapidly evolving landscape, vale-ai-tells is a comprehensive, cutting-edge Vale style package that empowers writers to seamlessly delve into the rich tapestry of AI…. The licence is Apache-2.0.

When your agent uses it

  • Draft a pull request in a tbhb repo
  • Whenever a task ends in one

Example prompts

  • “/pr”

Requirements

  • A Bash shell

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. the checklist
  2. confirm the branch is ready
  3. draft the description
  4. pass the prose gates
  5. review the draft, and loop
  6. run the validator and the prose gates
  7. ask the operator how far to take it
  8. publish the pull request
  9. route the rest

What it can do on your machine

Read from SKILL.md and the folder at commit 4c7abc9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 6 files in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • gh
    • mise
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

PR loads about 2.9k tokens when it runs. Until then it costs about 130 tokens; SKILL.md has 1,639 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~130
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from tbhb/vale-ai-tells at commit 4c7abc9, republished under its Apache-2.0 licence (© tbhb). 1,639 words, ~2,865 tokens.

Download SKILL.mdSave it as .claude/skills/pr/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
pr
description
Open a pull request for the current branch. A forked writer drafts the title and the pull request properties and the template's sections into PR_AGENTDESC.md. An independent reviewer then reads that draft against the branch, and a mechanical validator checks it against the template. The operator confirms before anything publishes. Whatever follows routes to the watch-pr and fix-pr and merge-pr skills. Use this whenever the user asks to open or draft a pull request in a tbhb repo, and whenever a task ends in one.
license
Apache-2.0

Open a pull request

Work the steps in order. A pair of hooks runs alongside them and refuses the shortcuts. A direct gh pr create is out, so is a gh pr edit rewriting the title or body, and so is any publish whose description the reviewer hasn't seen in its current form.

This skill ends when the pull request is open. From there watch-pr, fix-pr, and merge-pr take over, and step 8 routes to whichever the operator asked for.

Preflight

!bash ${CLAUDE_SKILL_DIR}/scripts/preflight.sh

Step 0: the checklist

Track these steps with the session's task-list tools where it carries them. Newer harnesses leave those tools out by default, and a session without them works the list in order as written.

  1. Confirm the branch is ready
  2. Draft the description in PR_AGENTDESC.md
  3. Pass the prose gates with fix-prose
  4. Review the draft with review-pr-description
  5. Run the validator and the prose gates
  6. Ask the operator how far to take it
  7. Publish the pull request
  8. Route the rest

Stop before any of it where preflight reports a rebase, merge, or cherry-pick in progress, or a missing precondition. Say what's wrong and hand back.

Step 1: confirm the branch is ready

Preflight answered each of these, so read rather than re-run:

  • The branch has commits the base doesn't. Nothing to open otherwise.
  • The branch isn't the default branch.
  • Uncommitted changes stay out of the pull request. Where preflight listed some, say so and let the operator decide before going on.
  • A pull request may already exist. Where one is open, publishing updates it rather than opening a second.
  • The branch has a current base. Where preflight reports it behind the default branch, run the rebase skill before opening, so the reviewer reads the branch against the base it actually merges into.

Preflight also settled the draft on disk. It removed a stale PR_AGENTDESC.md where no open pull request matched it, then scaffolded a fresh one from the template. That scaffold has the frontmatter keys, a placeholder title, and every section the template declares, so nothing downstream reproduces the template's shape from memory. It fails the validator until something fills it, which is the point.

Step 2: draft the description

Invoke the write-pr-description skill, passing the repository root from preflight as its argument.

It runs forked, which keeps the branch diff in its context rather than this one, and it runs the mechanical validator until it reports nothing before returning. It comes back with DRAFT: WRITTEN plus what it changed, or with DRAFT: BLOCKED plus what stopped it. Where it reports a block, say what it found and hand back, because this workflow has nothing left to publish.

Don't write PR_AGENTDESC.md yourself. A guard hook refuses it, because editing the draft here means reading the diff here, which spends the whole point of forking the writer.

Step 3: pass the prose gates

Invoke the fix-prose skill, passing the draft and the task that judges it:

text
Skill(fix-prose, args: "PR_AGENTDESC.md mise run lint-pr-description")

It runs the lint rounds in a subagent, so the findings stay out of this session.

Run it before the review rather than after. The review in the next step signs the exact bytes it cleared, and a lint fix landing later voids that signature and buys another round.

Step 4: review the draft, and loop

Invoke the review-pr-description skill, passing the repository root. It runs as an independent agent that watched neither the work nor the drafting, so it reads the description against the branch with no memory of what anyone meant to write.

Its verdict drives a loop:

  • VERDICT: PASS ends the loop. Go on to step 5.
  • VERDICT: CHANGES REQUIRED sends the findings back to write-pr-description, verbatim, in its arguments. Then review again.

Bound it at three rounds, counting only the rounds a finding caused. A round the branch caused doesn't count against the bound. A remediation commit or a rebase changes what the description has to describe, and the reviewer then reads a branch it has never seen. Say which kind each round was as you go, so the count is accurate.

Past three, stop rather than opening a fourth. Report the count out loud along with the findings that keep coming back, and let the operator decide whether to go on.

A bound nobody reports is one nobody notices breaking.

This step is mandatory, and create-pr.sh enforces it. A clean verdict signs the exact bytes of the draft, a finding erases any earlier signature, and a later edit voids it the same way.

Step 5: run the validator and the prose gates

text
mise run lint-pr-description

That task runs the mechanical checks, then vale and cspell over the draft. The validator settles the frontmatter shape, the title's form and bounds, section presence and order, empty sections, surviving comments, unclosed fences, dead links, and whether every backticked path exists. Each finding names a line and the fix.

Resolve every one through fix-prose rather than editing it yourself, because a direct edit here spends the context that skill exists to save. Edited the draft either way? Then step 4 runs again, because the gate compares bytes rather than intentions.

Show full SKILL.md (786 more words)Show less

Step 6: ask the operator how far to take it

Print the draft first so the operator reads it in your message text rather than in the truncated widget:

text
Branch:  <branch> into <base>
Commits: <count>

<the entire PR_AGENTDESC.md contents, verbatim>

Preflight answered both of this step's questions under == pre-approval ==. Where it reported pr: GRANTED, the operator answered them for the whole session in advance, through mise run preapprove. Print the preceding block so the draft still reaches them, name the grant this publish goes under, and take both answers from the grant rather than from a question:

Preflight lineHow far to take itHow fixes land
pr: GRANTED, merge: GRANTEDOpen, fix, and mergeSeparate commits
pr: GRANTED, merge: not grantedOpen, watch, and fixSeparate commits

Separate commits are the pre-approved shape because amending rewrites a commit the operator already cleared, and a grant covering that would reach past the question it answers. Amend only where the operator asks for it in the session.

Ask anyway where any of these holds:

  • the review returned a finding nobody acted on
  • a gate needed more than a mechanical fix
  • the branch reaches past what the session set out to do

Where preflight reported pr: not granted, call AskUserQuestion with question set to How far should I take this?, header set to Pull request, multiSelect set to false, and these four options in order, from the most automated to the least:

LabelDescription
Open, fix, and mergeOpen it, watch the checks, fix what fails, and squash merge once it is green.
Open, watch, and fixOpen it, watch the checks, and fix what fails. Stop before merging.
Open and watchOpen it, watch the checks, and report the result without changing anything.
Open onlyOpen it and hand back.

Ask a second question in the same call, so the operator answers both at once. Set question to How should fix commits land?, header to Fixes, multiSelect to false, and give these two options:

LabelDescription
Separate commitsEach fix lands as its own commit. History keeps the record of what broke.
Amend and force-pushFixes fold into the commit that caused them, pushed with --force-with-lease.

Neither answer is the safe default in general. A separate commit suits a branch under review, where a reviewer needs to see what changed since they last looked. Amending suits a branch nobody has read yet, where a lint fix of its own is noise the squash message would have to account for.

Record both answers. Step 8 routes on the first and passes the second to fix-pr in its arguments, so neither gets asked again.

A fifth path stays available without an option of its own. Where the operator wants the description changed, redraft it, put it back through the review, and return here.

Step 7: publish the pull request

text
bash .claude/skills/pr/scripts/create-pr.sh

That script is the only thing here that publishes, and it gates itself first:

  • runs the validator over the draft again
  • compares the review signature against the bytes on disk
  • resolves labels, the milestone, and every issue reference against the API, so an unknown one refuses cleanly rather than leaving a published pull request missing what it should carry

Only then does the branch go up and the pull request open. A second run updates the open pull request rather than opening another.

Never call gh pr create yourself. A guard hook refuses it, because every gate named here lives in that script.

Report the URL.

Step 8: route the rest

Follow the answer from step 6.

Open only ends here. Say the pull request is open and hand back.

Open and watch invokes watch-pr with the number, then reports what it found. Stop there even when something failed.

Open, watch, and fix invokes watch-pr, then fix-pr on failure, then watch-pr again to confirm. Repeat until the checks pass, then stop before merging. Bound the loop. After three rounds on the same check, stop, then report what each attempt changed.

Open, fix, and merge does the same, then invokes merge-pr with the number once the checks pass. That skill drafts the squash message and puts it through its own review. It also asks the operator to confirm before merging, so the merge gets a confirmation of its own.

Where the description drifts as remediation commits arrive, redraft it, review it again, and re-run create-pr.sh to update the published copy.

Preconditions

This skill assumes the shared tbhb toolchain:

  • gh installed and authenticated
  • a mise run lint-pr-description task
  • a gitignore entry for PR_AGENTDESC.md
  • a pull request template at .github/pull_request_template.md
  • the review-pr-description and fix-prose skills deployed alongside this one
  • the watch-pr, fix-pr, and merge-pr skills deployed for step 8

Preflight checks each. Where one is missing, tell the operator rather than improvising a substitute.

© tbhb, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 7 other files (scripts) in .claude/skills/pr of tbhb/vale-ai-tells.

  • SKILL.md
  • scripts/create-pr.sh
  • scripts/guard-gh.sh
  • scripts/preflight.sh
  • scripts/scaffold-description.sh
  • scripts/stamp-review.sh
  • scripts/validate-description.sh
  • tokens.json

Open the folder on GitHubat commit 4c7abc9

Compare with similar skills

PR next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

PR compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
PR this skilltbhb/vale-ai-tells115—~2.9kAutomated safety check: PassApache-2.0
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Check PRonyx-dot-app/onyx32k2 repos~2.3kAutomated safety check: PassMIT
Understand Diff AnalysisEgonex-AI/Understand-Anything86k1 repos~1.4kAutomated safety check: PassMIT
PR Design DocOpenHands/OpenHands90k—~2.4kAutomated safety check: PassMIT

Similar skills

  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Check PR

    onyx-dot-app/onyx

    Checks a GitHub, GitLab, or Perforce (p4) pull request (or merge request, or shelved changelist) for unresolved review comments, failing status checks, and incomplete PR descriptions.

    32k GitHub starsUsed in 2 repos~2.3k tokens
    DevelopmentAuto-check passed
  • Understand Diff Analysis

    Egonex-AI/Understand-Anything

    Reads your git changes or a pull request against a prebuilt knowledge graph of the project to explain what changed, which components are affected and what is risky.

    86k GitHub starsUsed in 1 repo~1.4k tokens
    DevelopmentAuto-check passed
  • PR Design Doc

    OpenHands/OpenHands

    For a non-trivial pull request, write a self-contained HTML design doc under the temporary .pr/ directory and link a visibility-appropriate preview in the PR description, so maintainers grasp the…

    90k GitHub stars~2.4k tokensUpdated today
    DevelopmentAuto-check passed
  • WooCommerce Code Review

    woocommerce/woocommerce

    Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.

    11k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed

More from tbhb/vale-ai-tells

All 27 skills in this repo
  • Analyze Session

    tbhb/vale-ai-tells

    Query a Claude Code transcript without reading it into context, then write the retrospective to disk so it remains available after the session ends.

    115 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Codex Analyze Session

    tbhb/vale-ai-tells

    Query a Codex transcript without reading it into context, then write the retrospective to disk so it remains available after the session ends.

    115 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Codex Fix PR

    tbhb/vale-ai-tells

    Diagnose failing pull request checks, reproduce them locally, make focused fixes, commit them through codex-commit, and refresh the published description when needed.

    115 GitHub stars~575 tokensUpdated yesterday
    Auto-check passed
  • Codex Merge PR

    tbhb/vale-ai-tells

    Squash merge a pull request. An agent skill from tbhb/vale-ai-tells.

    115 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Codex PR

    tbhb/vale-ai-tells

    Open or update a pull request for the current branch with an independently drafted and reviewed PRAGENTDESC.md.

    115 GitHub stars~846 tokensUpdated yesterday
    Auto-check passed
  • Codex Rebase

    tbhb/vale-ai-tells

    Replay the current branch onto its base and establish that the result is sound.

    115 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about PR

What does PR do?

Open a pull request for the current branch. An agent skill from tbhb/vale-ai-tells. PR is an agent skill from tbhb/vale-ai-tells. Open a pull request for the current branch.

When should I use PR?

PR fits situations like: draft a pull request in a tbhb repo; whenever a task ends in one.

How do I install PR in Claude Code?

Run `npx skills add tbhb/vale-ai-tells --skill pr -a claude-code`. Or copy the skill folder (.claude/skills/pr in tbhb/vale-ai-tells) into .claude/skills/pr in your project. Claude Code loads it when a task matches its description.

How do I install PR in Codex?

Run `npx skills add tbhb/vale-ai-tells --skill pr -a codex`. Or copy the skill folder (.claude/skills/pr in tbhb/vale-ai-tells) into .agents/skills/pr in your project. Codex loads it when a task matches its description.

Can I use PR in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tbhb/vale-ai-tells --skill pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pr, .gemini/skills/pr, .github/skills/pr and .opencode/skills/pr in your project.

What does PR need to run?

Going by SKILL.md and its folder, PR needs a shell for the scripts in its folder and the command-line tools its instructions call (gh, mise and bash). Our summary lists: A Bash shell.

Does PR access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is PR safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does PR use?

PR is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does PR use?

About 2.9k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to PR?

Skills that share tags, products or a category with PR: Finishing a Development Branch (obra/superpowers, 296k stars), PR Babysitter (openinterpreter/openinterpreter, 69k stars), Check PR (onyx-dot-app/onyx, 32k stars) and Understand Diff Analysis (Egonex-AI/Understand-Anything, 86k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains PR?

tbhb (a GitHub user) maintains it in tbhb/vale-ai-tells, which has 115 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 7, 2026.

Source: tbhb/vale-ai-tells on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.