write-pr-description
Use when a pull request title or description needs drafting or revising — before running `gh pr create`, `gh pr edit --body`, or any other command that opens…
Skill by GGGODLIN
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/gggodlin-write-pr-description
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/write-pr-description
What's inside
- Skill name
write-pr-description- Description
- Use when a pull request title or description needs drafting or revising — before running `gh pr create`, `gh pr edit --body`, or any other command that opens a PR or replaces its description on any provider, and when the user asks to "write the PR description", "draft PR text", or "revise the PR body for the latest commits". Returns prose only; the caller or provider adapter (such as bitbucket-pr-mutation) performs the write. Do not use for PR comments, reviews, approvals, merges, state changes, or read-only PR queries.
- License
- MIT
- Instructions
- 65 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (17)
- LICENSE-humanlayer-skills
- LICENSE-mattpocock-skills
- LICENSE-warpdotdev-common-skills
- SKILL.md
- after-only-no-recovery.yaml · evals/cases/
- authz-reading-order.yaml · evals/cases/
- dirty-tree.yaml · evals/cases/
- investigation-notes-stay-out.yaml · evals/cases/
- large-foundational-pr.yaml · evals/cases/
- paired-evidence-and-recovery.yaml · evals/cases/
- small-bugfix.yaml · evals/cases/
- structural-change-outline.yaml · evals/cases/
- tiny-wide-permission-change.yaml · evals/cases/
- ui-evidence-honesty.yaml · evals/cases/
- eval.yaml · evals/
- drafting-rules.md · references/
- write-pr-description-contract.test.sh · scripts/tests/
SKILL.md (first lines)
<!-- 本檔在契約測試底下:bash ~/.claude/skills/write-pr-description/scripts/tests/write-pr-description-contract.test.sh -->
# Write PR Description
Keep evidence-based prose separate from provider mutation so every adapter can reuse the same draft without transferring approval or write authority.
## Workflow
1. **Set the draft boundary.** Produce title/body prose only. Do not call provider APIs, run provider preview/apply commands, create approval artifacts, or publish a PR. If a provider adapter invoked this skill, return the candidate to that adapter; the adapter remains the sole writer and approval/read-back owner. If it runs ahead of a direct CLI write such as `gh pr create`, return the candidate to the caller, which performs that write under its own confirmation rules. Done when the planned actions contain no provider mutation.
2. **Build the local evidence set.** Use the target branch supplied by the user or adapter; if it is unresolved, ask for it rather than guessing.
- Read committed scope from `git log <base>..HEAD`, `git diff --stat <base>...HEAD`, and the relevant committed diff.
- Read `git status --short`, `git diff --cached`, and `git diff` separately. Treat staged and unstaged work as uncommitted even when it is intended for the same PR.
- Read the repository PR template, preserving its headings, order, required prompts, and comments as the structural authority.
- Read locally available issue/spec context as intent and rationale, not as proof that the branch delivered it.
- Use only actual validation receipts: an observed command/result, supplied test output, captured screenshot, or explicit statement that a check was not run. Missing evidence means “no receipt available,” not “passed.”
- Treat session investigation notes — how the defect was found, dead ends, measurements behind a chosen value — as background for understanding the diff, not as body content.
Done when every prospective result claim maps to committed diff evidence or an actual validation receipt, and every uncommitted path is identified separately.
3. **Choose the draft shape.** Read [references/drafting-rules.md](references/drafting-rules.md) before deciding density, claim phrasing, validation wording, or reviewer-guide inclusion.
- Let the repository template outrank the default shape. Do not reorder its top-level headings or add a competing generic skeleton.
- Without a template, default to `Summary` and `Validation`; add `Risk` only when the change has a meaningful failure mode. For external effects, destructive data changes, or a new persisted format, apply the recovery-boundary rules from drafting-rules.md in the existing Risk or reviewer Focus.
- Add a reviewer guide only when reading order is non-obvious, review focus needs an explicit invariant, or blast radius is wider than the diff size suggests. An authorization, permission, data-ownership, or migration change always needs the guide, however few files it touches. When included, use four compact slots: `Start` for the first exact file/symbol, `Then` for the dependent implementation path, `Validate` for the exact test/evidence path when one exists, and `Focus` for the invariant or blast radius. Use paths and symbols from the evidence instead of generic labels. Nest it under the nearest template section when an extra top-level heading would disrupt the template.
- Add a change outline when the diff changes an API or data contract, a key type, a component tree, file responsibilities, or a call or data flow; a change with no structural shift gets none. A reviewer reads a six-line tree faster than three paragraphs describing it, so the outline replaces the Summary bullets that would narrate that structure; keep Summary for what the views cannot show, such as intent and deliberate omissions. Place it as `### Change outline` under Summary unless the template has a closer slot, put one short sentence before each view, and pick only the views that match what changed:
- endpoint request/response or table columns → `diff` of the contract or columns
- a type the implementation hinges on → the type definition
- behavior logic → short pseudocode
- file responsibilities → shallow file tree, one comment per line
- React component structure → component tree with the hooks, state, and package boundaries that matter
- call or data flow → call tree
Use `diff` when an existing shape changes and a `text` or language block when it is new; drop unchanged branches; write `<` and `>` literally inside blocks; use no Mermaid, so the body stays readable where Markdown diagrams are not rendered.
Done when drafting-rules.md has been read in this run, every section has evidence-backed content, small changes have no ceremonial filler, a required reviewer guide shows all four slots, and a structural change has its outline.
4. **Draft from facts.** Match the repository’s title convention when local history shows one; otherwise use a short action-oriented title grounded in the committed diff.
- Describe verified implementation changes directly.
- Phrase issue/spec goals as intent unless diff or validation evidence proves the outcome. Never turn “should,” “acceptance asks,” or a future rollout goal into a completed result.
- Preserve validation commands and observed outcomes exactly enough to audit. Pair available before/after receipts using the validation rules in drafting-rules.md. Name important checks that were explicitly not run; do not convert unit, build, or typecheck receipts into UI, integration, rollout, or performance evidence.
- Keep a small PR to a few useful bullets. For a large foundational PR, summarize boundaries rather than listing every file.
For a body with a change outline, assign each fact to one place before writing: field/type inventories and call order belong to the views; intent, effects, conditions, and limitations belong to Summary. When revising, use the old body as a fact source rather than copying its bullet structure. Check every Summary bullet against the views: a sentence that only says a field was added, exists, or is exposed belongs only in the view. A field name may still appear in a condition or effect; “Adds a `breed` field” duplicates a view, while “Cycles without a breed cannot contribute to the comparison” adds behavior the view does not show. Split mixed sentences and retain the behavior. Keep the reviewer guide, rollout, recovery boundary, and validation receipts in their own sections.
Done when a reviewer can tell what changed, why, what was actually checked, and what remains unverified without reading intent as proof, and Summary contains no field/type inventory or call-order narration already owned by a view. Continue to Step 5.
5. **Return the candidate.** Emit Markdown in this shape:
```markdown
## Title
<title>
## Body
<body using the repository template or the justified default>
```
If the tree is dirty, append `## Draft basis (not part of PR body)` and distinguish committed scope from staged/unstaged paths excluded from the candidate. Do not silently blend uncommitted work into the title or body. Done when title/body are copyable as a candidate and any dirty-tree note is visibly outside the PR body.
## 踩過的坑
- Diff size does not equal review risk: a tiny permission edit can need a reviewer guide because its blast radius is wide, while an ordinary two-file bugfix usually does not.
- A validation plan is not a validation receipt. Preserve “not run” and “no receipt available” instead of turning either into a checked result.
- Self-Verify is intentionally omitted: PR drafting is expected to be a frequent prose task, so an extra subagent on every use fails the low/medium-frequency gate; contract tests and bounded evals cover the recurring pressure cases instead.From GGGODLIN/gggodlin-cc-harness, MIT.
More from GGGODLIN/gggodlin-cc-harness
- 0.674score
workflow-hardening
GGGODLIN
Use when writing or designing any inline/dynamic Claude Code Workflow script, including short single-pass scripts, Ultracode or multi-agent orchestration…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
research-before-answer
GGGODLIN
Use when answering a factual question about a named repo, package, library, framework, SDK, API, version, release note, deprecation, company, product, market…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
to-spec
GGGODLIN
Turn the current conversation into a spec — no interview, just synthesis of what was already discussed.
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
handoff-impl
GGGODLIN
跨 session 實作委外信道(handoff 單在 ~/.claude/handoffs/*.md,發單 session 驗收、另一 session 實作;信道預設手動搬單,自動接力屬未穩定實驗路徑、僅使用者明確要求實驗才走)。Use when 使用者說「開 handoff 單」「把這個實作交給 GPT /…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
implement
GGGODLIN
Use when a spec or ticket set is ready to build and the user says implement / 開工 / 照 ticket 做 / start building, or the local pipeline reaches its…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
e2e-contract
GGGODLIN
Use when e2e-route 已選派文件/補丁行為確認或既有契約回歸工作,或使用者手動點名 /e2e-contract;包含同題確認案例、重跑已確認案例與改選工具。Do not use for 從自然語言 E2E 任務自行選用(先用 e2e-route)、普通探索固化、單元或純 API…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
check-my-stack
GGGODLIN
Evaluate whether a popular or hyped agent/dev tool is worth adopting or borrowing from, measured against the user's OWN existing stack — never in the abstract.
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
review-implement
GGGODLIN
Use after a spec-backed implementation reaches closeout and before shipping when a post-implementation scope or YAGNI review is needed, or when the user…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
gate-authoring
GGGODLIN
Use when 使用者要「寫 / 改 / 加一個 hook」「設計 gate / detector / tripwire」「動 settings.json hooks 段」——涵蓋全域 ~/.claude/hooks/、任一 repo 專案級 .claude/hooks/、任何 settings.json /…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
agent-authoring
GGGODLIN
建立或修改 subagent 定義檔(~/.claude/agents/*.md 或專案 .claude/agents/*.md)前必讀的流程 skill——frontmatter 欄位語意、tools 欄陷阱、載入時機、上線前 smoke test。觸發:「建 / 寫 / 加一個 agent」「改 agent…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
agent-dispatch
GGGODLIN
Run one repo's ticket batch in a terminal worker inside a target worktree through Herdr — Claude Code by default, or Codex CLI or pi when the user picks that…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
mutation-testing
GGGODLIN
Use when a coding agent just wrote tests and quality needs validation, when suspecting existing tests are green-but-hollow (test theater = passes but doesn't…
SkillAFreshness: A★ 72Claude Code +9
Signals
- Stars
- 72
- Forks
- 5
- Open issues
- 0
- Last commit (this folder)
- Oct 18, 2026 (10 days ago)
- Last release
- Oct 19, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/GGGODLIN/gggodlin-cc-harness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from GGGODLIN
- 0.674score
gate-authoring
GGGODLIN
Use when 使用者要「寫 / 改 / 加一個 hook」「設計 gate / detector / tripwire」「動 settings.json hooks 段」——涵蓋全域 ~/.claude/hooks/、任一 repo 專案級 .claude/hooks/、任何 settings.json /…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
e2e-contract
GGGODLIN
Use when e2e-route 已選派文件/補丁行為確認或既有契約回歸工作,或使用者手動點名 /e2e-contract;包含同題確認案例、重跑已確認案例與改選工具。Do not use for 從自然語言 E2E 任務自行選用(先用 e2e-route)、普通探索固化、單元或純 API…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
check-my-stack
GGGODLIN
Evaluate whether a popular or hyped agent/dev tool is worth adopting or borrowing from, measured against the user's OWN existing stack — never in the abstract.
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
agent-authoring
GGGODLIN
建立或修改 subagent 定義檔(~/.claude/agents/*.md 或專案 .claude/agents/*.md)前必讀的流程 skill——frontmatter 欄位語意、tools 欄陷阱、載入時機、上線前 smoke test。觸發:「建 / 寫 / 加一個 agent」「改 agent…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
agent-dispatch
GGGODLIN
Run one repo's ticket batch in a terminal worker inside a target worktree through Herdr — Claude Code by default, or Codex CLI or pi when the user picks that…
SkillAFreshness: A★ 72Claude Code +9 - 0.674score
handoff-impl
GGGODLIN
跨 session 實作委外信道(handoff 單在 ~/.claude/handoffs/*.md,發單 session 驗收、另一 session 實作;信道預設手動搬單,自動接力屬未穩定實驗路徑、僅使用者明確要求實驗才走)。Use when 使用者說「開 handoff 單」「把這個實作交給 GPT /…
SkillAFreshness: A★ 72Claude Code +9
Cite this page
write-pr-description skill. Agent Mart. https://agentmart.dev/skills/gggodlin-write-pr-description (last updated 2026-10-24)