Agent skill

Forge PR

by srid in srid/haskell-flake

Write engaging PR titles and descriptions for any forge (GitHub today; Bitbucket planned).

MITAuto-check passed

Install Forge PR

skills CLI
$ npx skills add srid/haskell-flake --skill forge-pr -a claude-code

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

GitHub CLI
$ gh skill install srid/haskell-flake forge-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/srid/haskell-flake.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/forge-pr .claude/skills/forge-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
forge-pr
GitHub stars
240
Token cost
~1.2k tokens
SKILL.md length
550 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Write engaging PR titles and descriptions for any forge (GitHub today; Bitbucket planned).

  • Works in 3 steps: Opening paragraph — What this PR does… → Details paragraph(s) — Only if the… → Anything notable — Breaking changes,…
  • SKILL.md covers Anti-patterns (what LLMs…, What to write instead, Style rules and Try it locally, plus 3 more sections
  • Calls gh and nix

What it does

Forge PR is an agent skill from srid/haskell-flake. Write engaging PR titles and descriptions for any forge (GitHub today; Bitbucket planned). Use when creating or updating PRs. Avoids boring bullet lists; uses narrative paragraphs with bold/italic for emphasis.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with GitHub and Bitbucket. The repository describes itself as: A flake-parts Nix module for Haskell development. The licence is MIT.

Example prompts

  • “/forge-pr”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Opening paragraph — What this PR does and why, in 2-3 sentences. Bold the key behavioral change. If there's a motivating problem, state it…
  2. Details paragraph(s) — Only if the approach is non-obvious or has trade-offs worth calling out. Use italics for subtle points. Keep it…
  3. Anything notable — Breaking changes, migration steps, or things reviewers should pay attention to. Only if applicable. Use > blockquote…

What it can do on your machine

Read from SKILL.md and the folder at commit ec69967. 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

    Shell commands in SKILL.md call:

    • gh
    • nix

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

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    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

Forge PR loads about 1.2k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 550 words of instructions outside code blocks.

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

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from srid/haskell-flake at commit ec69967, republished under its MIT licence (© srid). 550 words, ~1,242 tokens.

Download SKILL.mdSave it as .claude/skills/forge-pr/SKILL.md (or your agent's skills folder).
name
forge-pr
description
Write engaging PR titles and descriptions for any forge (GitHub today; Bitbucket planned). Use when creating or updating PRs. Avoids boring bullet lists; uses narrative paragraphs with bold/italic for emphasis.

Forge PR Writing

Write PR descriptions that fellow devs actually want to read. The writing guidance below is forge-agnostic — only the gh commands in the "Updating existing PRs" section are GitHub-specific today. Bitbucket support is tracked in srid/agency#10.

Anti-patterns (what LLMs typically produce)

  • Flat bullet lists of every file changed
  • Implementation-detail dumps ("added foo parameter to bar function")
  • Generic titles like "Update configuration" or "Fix bug in module"
  • "## Changes" / "## Testing" / "## Summary" boilerplate headers
  • Restating the diff in English

What to write instead

Title: Short, specific, interesting. Convey what changed from a user/dev perspective, not which files were touched. Use imperative mood. Under 70 chars.

Body: Write in paragraphs, not bullet lists. Structure:

  1. Opening paragraph — What this PR does and why, in 2-3 sentences. Bold the key behavioral change. If there's a motivating problem, state it directly.

  2. Details paragraph(s) — Only if the approach is non-obvious or has trade-offs worth calling out. Use italics for subtle points. Keep it high-level; reviewers can read the diff for implementation details.

  3. Anything notable — Breaking changes, migration steps, or things reviewers should pay attention to. Only if applicable. Use > blockquote for callouts.

Style rules

  • Write for a dev skimming their PR feed — they should get the gist in 5 seconds
  • Bold the most important phrase in each paragraph
  • Italics for nuance, caveats, secondary points
  • No bullet lists unless listing 3+ discrete items that genuinely aren't a narrative
  • No "## Summary" or "## Changes" headers — just write
  • No filler: "This PR...", "In this change...", "As part of..." — start with the substance
  • Link to issues/discussions where relevant (Closes #123, See #456)
  • If the PR is trivial (typo fix, version bump), a one-liner body is fine
Show full SKILL.md (272 more words)Show less

Try it locally

If the repo is a GitHub Nix flake and the PR branch contains a buildable output (package, NixOS config, etc.), include a "Try it locally" section at the end of the body. Use the GitHub owner/repo and branch name to construct the command, and put it in a fenced sh code block (not inline backticks) so GitHub renders a copy button and the command doesn't line-wrap awkwardly:

### Try it locally

```sh
nix run github:<owner>/<repo>/<branch>
```

Adjust the command as needed — nix build for non-runnable outputs, add #<output> if the default package isn't the relevant one. Omit this section entirely if the change isn't meaningfully testable via nix run/build (e.g., CI-only changes, documentation, non-Nix repos, or non-GitHub forges where flake refs would be awkward).

Passing the body to gh safely

MANDATORY: Always pass --body to gh pr create / gh pr edit / gh pr comment via a single-quoted heredoc so backticks, $, and ! survive unescaped. Double-quoted --body "..." triggers shell command substitution on backticks, and escaping them with ``` produces literal backslashes in the rendered PR (breaking code fences — see juspay/kolu#402).

sh
gh pr create --draft --title "..." --body "$(cat <<'EOF'
...body with ```sh fenced blocks``` intact...
EOF
)"

The 'EOF' (quoted delimiter) is load-bearing — it disables interpolation inside the heredoc. Never write backticks in the body as ```.

Updating existing PRs

When the user pushes further changes to an already-PR'd branch:

  1. Check if the PR title/description still accurately reflects the full scope
  2. If new commits meaningfully change what the PR does, update the title and/or body via the forge's edit command (gh pr edit on GitHub)
  3. Don't rewrite from scratch — amend the existing description to cover new ground
  4. Add a brief note about what changed if the scope expanded significantly

Examples

Bad (typical LLM output)
Title: Update NixOS configuration and add new service

## Summary
- Added `kolu` service configuration
- Updated `flake.lock`
- Modified port from 8080 to 8090
- Added health check endpoint
- Updated README

## Testing
- Tested locally
Good
Title: Add kolu service with health monitoring

**Kolu now runs as a standalone NixOS service** with its own systemd
unit and a dedicated health-check endpoint. Previously it was bolted
onto the main app process, which made restarts disruptive.

The service binds to port 8090 to avoid clashing with the dev server.
*Health checks hit `/healthz` every 30s — systemd restarts the
service on three consecutive failures.*

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

Files

Just SKILL.md in .claude/skills/forge-pr of srid/haskell-flake.

Open the folder on GitHubat commit ec69967

Compare with similar skills

Forge 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.

Forge PR compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Forge PR this skillsrid/haskell-flake240—~1.2kAutomated safety check: PassMIT
degit Project ScaffoldingRich-Harris/degit7.9k—~534Automated safety check: PassMIT
Migrate To TeamcityJetBrains/teamcity-cli125—~1.3kAutomated safety check: PassApache-2.0
Bitbucket PR ReviewGGGODLIN/claude-pr-review114—~4.8kAutomated safety check: PassMIT
GitHub PR Mirrororacle/graalpython1.7k—~1.3kAutomated safety check: PassCustom licence
Plannotator Referencebacknotprop/plannotator9.2k—~6.3kAutomated safety check: WarnApache-2.0

Similar skills

  • degit Project Scaffolding

    Rich-Harris/degit

    Downloads a repository snapshot or template with degit into an empty folder, from GitHub, GitLab, Bitbucket, Sourcehut or a Gist, optionally at a branch, tag or commit.

    7.9k GitHub stars~534 tokensUpdated 24 days ago
    DevelopmentAuto-check passed
  • Migrate To Teamcity

    JetBrains/teamcity-cli

    Official

    Migrating CI/CD pipelines to TeamCity. An agent skill from JetBrains/teamcity-cli.

    125 GitHub stars~1.3k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Bitbucket PR Review

    GGGODLIN/claude-pr-review

    A skill your agent uses when the user asks to inspect an existing Bitbucket finding, comment, author reply, diff location, or PR evidence without running a full code review.

    114 GitHub stars~4.8k tokensUpdated 19 days ago
    DevelopmentAuto-check passed
  • GitHub PR Mirror

    oracle/graalpython

    Official

    Mirror an external GitHub pull request into the internal GraalPython Bitbucket review flow, including OCA label checks, Jira creation or reuse, preserving PR commits, pre-commit cleanup, and handoff…

    1.7k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Plannotator Reference

    backnotprop/plannotator

    Reference for picking the right Plannotator tool or command for plan review, code review, annotating files and URLs, archived plan decisions and Guided Reviews.

    9.2k GitHub stars~6.3k tokensUpdated today
    DevelopmentAuto-check: warnings
  • Forge PR

    srid/emanote

    Write engaging PR titles and descriptions for any forge (GitHub today; Bitbucket planned).

    963 GitHub stars~2.6k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed

More from srid/haskell-flake

  • Do

    srid/haskell-flake

    Do a task end-to-end — implement, PR, CI loop, ship. An agent skill from srid/haskell-flake.

    240 GitHub stars~5.8k tokensUpdated 4 days ago
    Auto-check passed

Works with

Questions about Forge PR

What does Forge PR do?

Write engaging PR titles and descriptions for any forge (GitHub today; Bitbucket planned). Forge PR is an agent skill from srid/haskell-flake. Write engaging PR titles and descriptions for any forge (GitHub today; Bitbucket planned).

How do I install Forge PR in Claude Code?

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

How do I install Forge PR in Codex?

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

Can I use Forge 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 srid/haskell-flake --skill forge-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/forge-pr, .gemini/skills/forge-pr, .github/skills/forge-pr and .opencode/skills/forge-pr in your project.

What does Forge PR need to run?

Going by SKILL.md and its folder, Forge PR needs the command-line tools its instructions call (gh and nix).

Does Forge PR access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Forge 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. Review the folder before installing.

What licence does Forge PR use?

Forge PR is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Forge PR use?

About 1.2k tokens (SKILL.md is roughly 5k 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 Forge PR?

Skills that share tags, products or a category with Forge PR: degit Project Scaffolding (Rich-Harris/degit, 7.9k stars), Migrate To Teamcity (JetBrains/teamcity-cli, 125 stars), Bitbucket PR Review (GGGODLIN/claude-pr-review, 114 stars) and GitHub PR Mirror (oracle/graalpython, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Forge PR?

srid (a GitHub user) maintains it in srid/haskell-flake, which has 240 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 4, 2026.

Source: srid/haskell-flake on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.