{"id":"243430af-52d2-463e-8e7a-1c875986d751","shortId":"Tnb892","kind":"skill","title":"pr-description-writer","tagline":" AI Agent Skills built for GTM, Technical Marketing, and growth automation.","description":"# PR Description Writer\n\nRead the current branch diff and write a complete GitHub pull request description. Create or update the PR with one command.\n\n## Writing Style\n\nApply to all generated PR descriptions:\n\n- Active voice. \"Adds X\" not \"X has been added.\"\n- Present tense for summary (\"Adds caching layer\"), past tense for context (\"The old approach caused N requests per render\")\n- Short sentences, one idea per bullet\n- No em dashes — use a comma or period instead\n- No filler: \"this PR\", \"this commit\", \"as per the discussion\"\n- Specifics beat generalities: \"reduces p95 latency from 800ms to 90ms\" beats \"improves performance\"\n\n---\n\n## Step 1: Check Setup\n\nConfirm `gh` is authenticated:\n\n```bash\ngh auth status\n```\n\nIf not authenticated: `gh auth login` and follow the prompts.\n\nConfirm the current directory is a git repo with an active branch:\n\n```bash\ngit branch --show-current\n```\n\nIf detached HEAD or no branch, stop and ask the user which branch they want to describe.\n\n---\n\n## Step 2: Gather Diff Context\n\nRun all three commands to build context:\n\n**File summary (what changed):**\n```bash\ngit diff main...HEAD --stat\n```\n\n**Commit messages (why it changed):**\n```bash\ngit log main...HEAD --oneline\n```\n\n**Full diff (how it changed):**\n\nUse `origin/main` first (always up to date), fall back to local `main`, then `master`:\n```bash\nif git rev-parse origin/main &>/dev/null 2>&1; then\n  BASE=origin/main\nelif git rev-parse main &>/dev/null 2>&1; then\n  BASE=main\nelse\n  BASE=master\nfi\ngit diff $BASE...HEAD\n```\n\nIf the diff is very large (over 500 lines), read the `--stat` summary and the commit messages only. Also read the first 200 lines of the diff to understand the primary changes without processing the entire output.\n\nAlso check for an existing PR and read its current title/body:\n```bash\ngh pr view --json title,body,baseRefName 2>/dev/null\n```\n\n---\n\n## Step 3: Read the Format Guide\n\nRead `references/pr-format-guide.md` in full before writing anything. Internalize:\n- Required sections and their order\n- How to write each section\n- What to include vs omit\n- The testing section format\n\n---\n\n## Step 4: Generate the Description\n\nWrite the PR description using the format from `references/pr-format-guide.md`.\n\nRules:\n- Every bullet in the Changes section must trace to something in the diff\n- Do not invent testing steps that are not implied by the code changes\n- If a section has no relevant content, omit it entirely (do not write \"N/A\" or leave it empty)\n- Screenshots section: only include if there are UI changes visible in the diff\n- If commit messages explain the \"why\", use that context in the Summary\n\n**QA checkpoint:** Before presenting, verify:\n- [ ] Summary is 1-2 sentences, active voice, no filler\n- [ ] Every change bullet is specific and traces to the diff\n- [ ] No invented metrics or outcomes\n- [ ] Testing steps are actionable (someone could follow them)\n- [ ] No em dashes in any line\n\n---\n\n## Step 5: Create or Update the PR\n\nPresent the description to the user and ask: \"Ready to create the PR, update the existing one, or output only?\"\n\n**Create a new PR:**\n\nPass the body via stdin to handle backticks, quotes, and newlines safely:\n```bash\ngh pr create --title \"TITLE_HERE\" --body-file - << 'EOF'\nBODY_HERE\nEOF\n```\n\nSuggest a title based on the commit messages and diff summary. The title should be imperative mood, under 72 characters: \"Add Redis caching for user session lookups\" not \"Added caching\".\n\n**Update an existing PR:**\n```bash\ngh pr edit --body-file - << 'EOF'\nBODY_HERE\nEOF\n```\n\n**Output only:** Present the title and body in a code block for manual copy-paste.\n\nAfter creating or updating, confirm: \"PR description updated. View it at: [URL]\"","tags":["description","writer","opendirectory","varnan-tech","agent-skills","gtm","hermes-agent","openclaw-skills","skills","technical-seo"],"capabilities":["skill","source-varnan-tech","skill-pr-description-writer","topic-agent-skills","topic-gtm","topic-hermes-agent","topic-openclaw-skills","topic-skills","topic-technical-seo"],"categories":["opendirectory"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Varnan-Tech/opendirectory/pr-description-writer","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Varnan-Tech/opendirectory","source_repo":"https://github.com/Varnan-Tech/opendirectory","install_from":"skills.sh"}},"qualityScore":"0.511","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 123 github stars · SKILL.md body (3,705 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T00:55:51.512Z","embedding":null,"createdAt":"2026-04-18T22:18:35.340Z","updatedAt":"2026-05-02T00:55:51.512Z","lastSeenAt":"2026-05-02T00:55:51.512Z","tsv":"'-2':439 '/dev/null':230,242,313 '1':115,232,244,438 '2':172,231,243,312 '200':278 '3':315 '4':348 '5':475 '500':263 '72':549 '800ms':108 '90ms':110 'action':463 'activ':48,146,441 'ad':56,559 'add':50,61,551 'agent':6 'ai':5 'also':274,293 'alway':212 'anyth':326 'appli':42 'approach':70 'ask':162,488 'auth':124,130 'authent':121,128 'autom':15 'back':217 'backtick':512 'base':234,246,249,254,534 'baserefnam':311 'bash':122,148,187,198,223,304,517,565 'beat':102,111 'block':586 'bodi':310,507,525,528,570,573,582 'body-fil':524,569 'branch':22,147,150,159,166 'build':181 'built':8 'bullet':81,363,447 'cach':62,553,560 'caus':71 'chang':186,197,208,287,366,387,414,446 'charact':550 'check':116,294 'checkpoint':432 'code':386,585 'comma':87 'command':39,179 'commit':96,193,271,420,537 'complet':27 'confirm':118,136,596 'content':394 'context':67,175,182,427 'copi':590 'copy-past':589 'could':465 'creat':32,476,491,501,520,593 'current':21,138,153,302 'dash':84,470 'date':215 'describ':170 'descript':3,17,31,47,351,355,483,598 'detach':155 'diff':23,174,189,205,253,258,282,374,418,454,540 'directori':139 'discuss':100 'edit':568 'elif':236 'els':248 'em':83,469 'empti':405 'entir':291,397 'eof':527,530,572,575 'everi':362,445 'exist':297,496,563 'explain':422 'fall':216 'fi':251 'file':183,526,571 'filler':92,444 'first':211,277 'follow':133,466 'format':318,346,358 'full':204,323 'gather':173 'general':103 'generat':45,349 'gh':119,123,129,305,518,566 'git':142,149,188,199,225,237,252 'github':28 'growth':14 'gtm':10 'guid':319 'handl':511 'head':156,191,202,255 'idea':79 'imper':546 'impli':383 'improv':112 'includ':340,409 'instead':90 'intern':327 'invent':377,456 'json':308 'larg':261 'latenc':106 'layer':63 'leav':403 'line':264,279,473 'local':219 'log':200 'login':131 'lookup':557 'main':190,201,220,241,247 'manual':588 'market':12 'master':222,250 'messag':194,272,421,538 'metric':457 'mood':547 'must':368 'n':72 'n/a':401 'new':503 'newlin':515 'old':69 'omit':342,395 'one':38,78,497 'onelin':203 'order':332 'origin/main':210,229,235 'outcom':459 'output':292,499,576 'p95':105 'pars':228,240 'pass':505 'past':64,591 'per':74,80,98 'perform':113 'period':89 'pr':2,16,36,46,94,298,306,354,480,493,504,519,564,567,597 'pr-description-writ':1 'present':57,434,481,578 'primari':286 'process':289 'prompt':135 'pull':29 'qa':431 'quot':513 'read':19,265,275,300,316,320 'readi':489 'redi':552 'reduc':104 'references/pr-format-guide.md':321,360 'relev':393 'render':75 'repo':143 'request':30,73 'requir':328 'rev':227,239 'rev-pars':226,238 'rule':361 'run':176 'safe':516 'screenshot':406 'section':329,337,345,367,390,407 'sentenc':77,440 'session':556 'setup':117 'short':76 'show':152 'show-curr':151 'skill':7 'skill-pr-description-writer' 'someon':464 'someth':371 'source-varnan-tech' 'specif':101,449 'stat':192,267 'status':125 'stdin':509 'step':114,171,314,347,379,461,474 'stop':160 'style':41 'suggest':531 'summari':60,184,268,430,436,541 'technic':11 'tens':58,65 'test':344,378,460 'three':178 'titl':309,521,522,533,543,580 'title/body':303 'topic-agent-skills' 'topic-gtm' 'topic-hermes-agent' 'topic-openclaw-skills' 'topic-skills' 'topic-technical-seo' 'trace':369,451 'ui':413 'understand':284 'updat':34,478,494,561,595,599 'url':603 'use':85,209,356,425 'user':164,486,555 'verifi':435 'via':508 'view':307,600 'visibl':415 'voic':49,442 'vs':341 'want':168 'without':288 'write':25,40,325,335,352,400 'writer':4,18 'x':51,53","prices":[{"id":"d2ae08ca-374a-4ae0-aa74-f75fcbc52185","listingId":"243430af-52d2-463e-8e7a-1c875986d751","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Varnan-Tech","category":"opendirectory","install_from":"skills.sh"},"createdAt":"2026-04-18T22:18:35.340Z"}],"sources":[{"listingId":"243430af-52d2-463e-8e7a-1c875986d751","source":"github","sourceId":"Varnan-Tech/opendirectory/pr-description-writer","sourceUrl":"https://github.com/Varnan-Tech/opendirectory/tree/main/skills/pr-description-writer","isPrimary":false,"firstSeenAt":"2026-04-18T22:18:35.340Z","lastSeenAt":"2026-05-02T00:55:51.512Z"}],"details":{"listingId":"243430af-52d2-463e-8e7a-1c875986d751","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Varnan-Tech","slug":"pr-description-writer","github":{"repo":"Varnan-Tech/opendirectory","stars":123,"topics":["agent-skills","gtm","hermes-agent","openclaw-skills","skills","technical-seo"],"license":null,"html_url":"https://github.com/Varnan-Tech/opendirectory","pushed_at":"2026-04-30T18:54:05Z","description":" AI Agent Skills built for GTM, Technical Marketing, and growth automation.","skill_md_sha":"7ce70392e2b0c5c85ad791c2380d106d3606d275","skill_md_path":"skills/pr-description-writer/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Varnan-Tech/opendirectory/tree/main/skills/pr-description-writer"},"layout":"multi","source":"github","category":"opendirectory","frontmatter":{"name":"pr-description-writer","description":"","compatibility":"[claude-code, gemini-cli, github-copilot]"},"skills_sh_url":"https://skills.sh/Varnan-Tech/opendirectory/pr-description-writer"},"updatedAt":"2026-05-02T00:55:51.512Z"}}