agentsclimarketplace

Pull request description

Skill emaarco/hogwarts/plugins/felix-felicis/skills/pull-request-description

A magical place where my skills, rules, and plugins for AI agents are defined, which magically boost productivity 🏰πŸͺ„

Install
npx -y skills add emaarco/hogwarts --skill pull-request-description

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Draft a consistent pull-request / merge-request title and body β€” a Conventional-Commit title (respecting repo-defined types & scopes) and a structured, compact body that links its issue β€” then create or update the PR/MR. Use when opening a PR or MR, writing a PR description or body, or asked to make PR titles and descriptions consistent.

SKILL.md

5.7 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it

Skill: pull-request-description

Draft a consistent, compact PR/MR title and body, then create or update the PR/MR. Goal: a structured, compact write-up that β€” in the best case β€” always links the issue it builds on.

IMPORTANT

  • GitHub β†’ gh CLI. GitLab β†’ glab CLI. Never call the forge APIs directly.
  • Write the title and body in English, even when the conversation is in another language.
  • Repo conventions win. Only fall back to the bundled defaults when the repo defines none.
  • Always show the full draft and confirm before creating or updating anything.
  • If a required CLI is missing, abort and ask the user to install it, then restart the skill.
  • When a gh/glab call fails, use AskUserQuestion to ask how to proceed (retry / stop / other).

Instructions

Step 1 β€” Gather the change

  • Base branch: default to the repo's default branch (gh repo view --json defaultBranchRef or git remote show origin) unless the user names another.
  • Commits & diff:
    git log --oneline <base>..HEAD
    git diff --stat <base>...HEAD
    
    Read enough of the actual diff to describe why and what accurately. Never invent changes.
  • Detect the forge: inspect git remote -v β€” github.com β†’ GitHub, gitlab β†’ GitLab.

Step 2 β€” Find the linked issue

Best-case PRs link the issue they build on. Look, in order:

  1. Branch name (e.g. 123-…, feature/PROJ-123, fix/#123).
  2. Commit messages / bodies (#123, Closes #123, PROJ-123).
  3. The user's input / conversation context.
  4. If none found, ask via AskUserQuestion whether an issue exists β€” but don't block if there genuinely is none.

Pick the link keyword:

  • Same-repo issue this PR resolves β†’ closing keyword (Closes #NN) so it auto-closes on merge (only works when the PR targets the default branch).
  • Otherwise β†’ a non-closing reference (Refs #NN, Part of #NN), or the full issue URL for cross-repo issues or external trackers (e.g. Jira).

Step 3 β€” Discover title conventions

Default: Conventional Commits β€” type(scope): subject β€” unless the repo says otherwise. Search for repo-defined rules (allowed types / scopes), in priority order:

  1. commitlint β€” commitlint.config.{js,cjs,mjs,ts}, .commitlintrc*, or package.json#commitlint. Read the type-enum / scope-enum rules.
  2. release-please β€” release-please-config.json / .release-please-manifest.json: in a monorepo the package keys are the valid scopes (one scope per package).
  3. PR-title lint workflow β€” .github/workflows/* using e.g. amannn/action-semantic-pull-request (types: / scopes: inputs).
  4. CONTRIBUTING.md β€” documented commit / PR conventions.
  5. Fallback scope β€” infer from the changed top-level package/folder (monorepo: plugins/<x> β†’ scope <x>); omit the scope if the change is repo-wide or the repo doesn't use scopes.

Rules (see references/title-conventions.md for the full type list):

  • Subject: imperative mood, lower-case start, no trailing period, ≀ ~72 chars.
  • Breaking change β†’ type(scope)!: … (and describe it in the body).
  • If the repo squash-merges, the PR title becomes the commit message β€” it must be a valid Conventional Commit.

Step 4 β€” Discover body conventions

  1. GitHub template β€” .github/PULL_REQUEST_TEMPLATE.md, .github/PULL_REQUEST_TEMPLATE/*.md, PULL_REQUEST_TEMPLATE.md, or docs/….
  2. GitLab template β€” .gitlab/merge_request_templates/*.md.
  3. CONTRIBUTING.md β€” sections describing the expected PR/MR structure.
  4. Fallback β€” the bundled references/pr-body-template.md.

If a repo template exists, follow it and fill only the sections you have real content for.

Step 5 β€” Draft

Compose the title (Step 3) and body (Step 4). Keep it compact:

  • Why before What; bullets over prose; no filler.
  • No manual line breaks inside a sentence or bullet β€” write each paragraph and list item as one continuous line and let GitHub soft-wrap it. Break only between sections (a blank line). Hard-wrapping mid-sentence splits list items and reads as broken in the diff.
  • Put the issue link where the template expects it, otherwise as the last line of the body.
  • Include optional sections (breaking changes, out-of-scope, screenshots) only when they add value.

Step 6 β€” Show & confirm

Present the full title + body and use AskUserQuestion: create / edit / cancel. Also confirm whether to create a new PR/MR or update the branch's existing one (gh pr view / glab mr view). Apply edits and re-show if requested.

Step 7 β€” Create or update

Write the body to a temp file and pass it as a file to avoid shell-quoting issues.

GitHub:

gh pr create --base <base> --title "<title>" --body-file <file>
gh pr edit <number> --title "<title>" --body-file <file>

GitLab:

glab mr create --target-branch <base> --title "<title>" --description "$(cat <file>)"
glab mr update <iid> --title "<title>" --description "$(cat <file>)"

Step 8 β€” Report

Show the final PR/MR URL and the linked issue:

gh pr view <number> --json url,title --jq '.url'   # GitHub
glab mr view <iid>                                  # GitLab

What ships with it: 2 files

4.6 KB alongside SKILL.md

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.