Generate PR Description
!accelerator config context --skill describe-pr --fail-safe
PRs directory: !accelerator config path prs --fail-safe
Tmp directory: !accelerator config path tmp --fail-safe
IMPORTANT: Wherever {prs directory} or {tmp directory} appears in
the instructions below, substitute the actual resolved path shown above.
PR description template:
!accelerator config template pr-description --fail-safe
You are tasked with generating a comprehensive pull request description
following the repository's standard template.
Steps to follow:
Step 1: Use the PR description template
- The template is shown above under "PR description template"
- Read the template carefully to understand all sections and requirements
Step 2: Identify the PR to describe
- Check if the current branch has an associated PR:
gh pr view --json url,number,title,state 2>/dev/null
- If no PR exists for the current branch, or if on main/master, list open PRs:
gh pr list --limit 10 --json number,title,headRefName,author
- Ask the user which PR they want to describe
Step 3: Check for existing description
- Check if
{prs directory}/{number}-description.md already exists
- If it exists, read it and inform the user you'll be updating it
- Consider what has changed since the last description was written
Step 4: Gather comprehensive PR information
- Get the full PR diff:
gh pr diff {number}
- If you get an error about no default remote repository, instruct the user to
run
gh repo set-default and select the appropriate repository
- Get commit history:
gh pr view {number} --json commits
- Review the base branch:
gh pr view {number} --json baseRefName
- Get PR metadata:
gh pr view {number} --json url,title,number,state
Step 5: Analyze the changes thoroughly
(ultrathink about the code changes, their architectural implications, and
potential impacts)
- Read through the entire diff carefully
- For context, read any files that are referenced but not shown in the diff
- Understand the purpose and impact of each change
- Identify user-facing changes vs internal implementation details
- Look for breaking changes or migration requirements
Step 6: Handle verification requirements
- Look for any checklist items in the "How to verify it" section of the template
- For each verification step:
- If it's a command you can run (like
make check test, npm test, etc.),
run it
- If it passes, mark the checkbox as checked:
- [x]
- If it fails, keep it unchecked and note what failed:
- [ ] with
explanation
- If it requires manual testing (UI interactions, external services), leave
unchecked and note for user
- Document any verification steps you couldn't complete
Step 7: Generate the description
- Fill out each section from the template thoroughly:
- Answer each question/section based on your analysis
- Be specific about problems solved and changes made
- Focus on user impact where relevant
- Include technical details in appropriate sections
- Write a concise changelog entry
- Ensure all checklist items are addressed (checked or explained)
Step 8: Populate frontmatter and save the description
Use the unified pr-description template as the source of the
frontmatter block:
!accelerator config template pr-description --fail-safe
Before writing the artifact file, capture metadata and substitute
the unified base fields into the template's frontmatter block:
Invoke accelerator corpus metadata derive
to obtain Current Date/Time (UTC):, Current Revision:, and
Repository Name:. Also capture PR-specific extras via
gh pr view <number> --json url,number,title,mergeCommit to
fill pr_url:, pr_number:, title:, and (when the PR is
merged) merge_commit:.
Substitute every field below with the indicated value:
type: ← pr-description
id: ← the PR number as a quoted YAML string (e.g. "42")
title: ← the PR title from gh pr view
date: ← the Current Date/Time (UTC): value
author: ← the author resolved per the standard chain
(config → VCS user → prompt)
producer: ← describe-pr
status: ← complete
pr_url: ← the URL from gh pr view
pr_number: ← the PR number as a bare integer
merge_commit: ← the merge commit SHA. Fill when the PR is
merged; otherwise omit the key entirely.
revision: ← the Current Revision: value
repository: ← the Repository Name: value
last_updated: ← the same Current Date/Time (UTC): value
last_updated_by: ← the same value resolved for author
schema_version: ← 1 (bare integer)
Optional linkage/foreign-ref keys are omit-by-default:
the template shows each as ""/[], but write a key into the
artifact only when it has a value, and omit it entirely
otherwise (do not carry the empty placeholder through).
parent: ← the work item this PR implements, as a typed-linkage
ref ("work-item:NNNN"). Fill when the PR has an owning work
item; otherwise omit the key.
relates_to: ← list of typed-linkage refs to related artifacts
(["work-item:NNNN", ...]). Fill when relationships are explicit;
otherwise omit the key.
work_item_id: ← the linked work item's full ID (quoted). Fill
when the PR is linked to a work item; otherwise omit the key.
Write the completed description with the substituted frontmatter
block to {prs directory}/{number}-description.md.
- Show the user the generated description (without frontmatter — they'll
see what gets posted to GitHub).
- On re-run (when
{prs directory}/{number}-description.md already
exists), regenerate the unified frontmatter rather than only updating
date:. Creation-time fields are immutable on re-run: date:,
author:, id:, pr_number:, and pr_url: are preserved verbatim
from the existing on-disk file. last_updated: is refreshed to the
new Current Date/Time (UTC): value; last_updated_by: is
rewritten to the current author per the standard resolution chain;
merge_commit: is filled if the PR is now merged. Step 3 already
handles reading the prior description for context.
Step 9: Update the PR
- The
{prs directory}/{number}-description.md file contains YAML frontmatter
that should not appear on GitHub. Before posting, strip the frontmatter
block from the start of the file:
- Read the file content
- The frontmatter block starts with
--- on line 1 and ends at the
next --- line (which closes the YAML block). Only match the
opening frontmatter block — do not match --- lines that appear
later in the body (e.g., markdown horizontal rules).
- Ensure the tmp directory exists:
mkdir -p {tmp directory}
- Write everything after the closing
--- line to
{tmp directory}/pr-body-{number}.md
- Post the body via the helper binary, which resolves the base
(upstream) repository for cross-fork safety and PATCHes via the
GitHub REST API in-process:
accelerator collaboration pr update-body {number} --body-file {tmp directory}/pr-body-{number}.md
If the command exits non-zero, surface its stderr verbatim to the
user. Exit codes:
- Exit 2 → usage/refusal — e.g. missing
--body-file, no
origin remote configured
- Exit 1 → any other failure — base-repo resolution failure,
body-file read failure, GitHub REST API failure
stderr always names which stage failed.
- Clean up
{tmp directory}/pr-body-{number}.md
- Confirm the update was successful
- If any verification steps remain unchecked, remind the user to complete
them before merging
Important notes:
- This command works across different repositories - always read the local
template
- Be thorough but concise - descriptions should be scannable
- Focus on the "why" as much as the "what"
- Include any breaking changes or migration notes prominently
- If the PR touches multiple components, organize the description accordingly
- Always attempt to run verification commands when possible
- Clearly communicate which verification steps need manual testing
!accelerator config instructions describe-pr --fail-safe
1---2name: describe-pr3description: Generate a comprehensive pull request description following the repository's standard template. Use when the user wants to create or update a PR description.4---56# Generate PR Description78!`accelerator config context --skill describe-pr --fail-safe`910**PRs directory**: !`accelerator config path prs --fail-safe`11**Tmp directory**: !`accelerator config path tmp --fail-safe`1213**IMPORTANT**: Wherever `{prs directory}` or `{tmp directory}` appears in14the instructions below, substitute the actual resolved path shown above.1516**PR description template**:1718!`accelerator config template pr-description --fail-safe`1920You are tasked with generating a comprehensive pull request description21following the repository's standard template.2223## Steps to follow:2425### Step 1: Use the PR description template2627- The template is shown above under "PR description template"28- Read the template carefully to understand all sections and requirements2930### Step 2: Identify the PR to describe3132- Check if the current branch has an associated PR:33 `gh pr view --json url,number,title,state 2>/dev/null`34- If no PR exists for the current branch, or if on main/master, list open PRs:35 `gh pr list --limit 10 --json number,title,headRefName,author`36- Ask the user which PR they want to describe3738### Step 3: Check for existing description3940- Check if `{prs directory}/{number}-description.md` already exists41- If it exists, read it and inform the user you'll be updating it42- Consider what has changed since the last description was written4344### Step 4: Gather comprehensive PR information4546- Get the full PR diff: `gh pr diff {number}`47- If you get an error about no default remote repository, instruct the user to48 run `gh repo set-default` and select the appropriate repository49- Get commit history: `gh pr view {number} --json commits`50- Review the base branch: `gh pr view {number} --json baseRefName`51- Get PR metadata: `gh pr view {number} --json url,title,number,state`5253### Step 5: Analyze the changes thoroughly5455(ultrathink about the code changes, their architectural implications, and56potential impacts)5758- Read through the entire diff carefully59- For context, read any files that are referenced but not shown in the diff60- Understand the purpose and impact of each change61- Identify user-facing changes vs internal implementation details62- Look for breaking changes or migration requirements6364### Step 6: Handle verification requirements6566- Look for any checklist items in the "How to verify it" section of the template67- For each verification step:68 - If it's a command you can run (like `make check test`, `npm test`, etc.),69 run it70 - If it passes, mark the checkbox as checked: `- [x]`71 - If it fails, keep it unchecked and note what failed: `- [ ]` with72 explanation73 - If it requires manual testing (UI interactions, external services), leave74 unchecked and note for user75- Document any verification steps you couldn't complete7677### Step 7: Generate the description7879- Fill out each section from the template thoroughly:80 - Answer each question/section based on your analysis81 - Be specific about problems solved and changes made82 - Focus on user impact where relevant83 - Include technical details in appropriate sections84 - Write a concise changelog entry85- Ensure all checklist items are addressed (checked or explained)8687### Step 8: Populate frontmatter and save the description8889 Use the unified pr-description template as the source of the90 frontmatter block:9192 !`accelerator config template pr-description --fail-safe`9394 Before writing the artifact file, capture metadata and substitute95 the unified base fields into the template's frontmatter block:9697 1. Invoke `accelerator corpus metadata derive`98 to obtain `Current Date/Time (UTC):`, `Current Revision:`, and99 `Repository Name:`. Also capture PR-specific extras via100 `gh pr view <number> --json url,number,title,mergeCommit` to101 fill `pr_url:`, `pr_number:`, `title:`, and (when the PR is102 merged) `merge_commit:`.103 2. **Substitute** every field below with the indicated value:104 - `type:` ← `pr-description`105 - `id:` ← the PR number as a quoted YAML string (e.g. `"42"`)106 - `title:` ← the PR title from `gh pr view`107 - `date:` ← the `Current Date/Time (UTC):` value108 - `author:` ← the author resolved per the standard chain109 (config → VCS user → prompt)110 - `producer:` ← `describe-pr`111 - `status:` ← `complete`112 - `pr_url:` ← the URL from `gh pr view`113 - `pr_number:` ← the PR number as a bare integer114 - `merge_commit:` ← the merge commit SHA. Fill when the PR is115 merged; otherwise omit the key entirely.116 - `revision:` ← the `Current Revision:` value117 - `repository:` ← the `Repository Name:` value118 - `last_updated:` ← the same `Current Date/Time (UTC):` value119 - `last_updated_by:` ← the same value resolved for `author`120 - `schema_version:` ← `1` (bare integer)121122 Optional linkage/foreign-ref keys are omit-by-default:123 the template shows each as `""`/`[]`, but write a key into the124 artifact **only** when it has a value, and omit it entirely125 otherwise (do not carry the empty placeholder through).126127 - `parent:` ← the work item this PR implements, as a typed-linkage128 ref (`"work-item:NNNN"`). Fill when the PR has an owning work129 item; otherwise omit the key.130 - `relates_to:` ← list of typed-linkage refs to related artifacts131 (`["work-item:NNNN", ...]`). Fill when relationships are explicit;132 otherwise omit the key.133 - `work_item_id:` ← the linked work item's full ID (quoted). Fill134 when the PR is linked to a work item; otherwise omit the key.135 3. Write the completed description with the substituted frontmatter136 block to `{prs directory}/{number}-description.md`.137138- Show the user the generated description (without frontmatter — they'll139 see what gets posted to GitHub).140- On re-run (when `{prs directory}/{number}-description.md` already141 exists), regenerate the unified frontmatter rather than only updating142 `date:`. Creation-time fields are immutable on re-run: `date:`,143 `author:`, `id:`, `pr_number:`, and `pr_url:` are preserved verbatim144 from the existing on-disk file. `last_updated:` is refreshed to the145 new `Current Date/Time (UTC):` value; `last_updated_by:` is146 rewritten to the current author per the standard resolution chain;147 `merge_commit:` is filled if the PR is now merged. Step 3 already148 handles reading the prior description for context.149150### Step 9: Update the PR151152- The `{prs directory}/{number}-description.md` file contains YAML frontmatter153 that should not appear on GitHub. Before posting, strip the frontmatter154 block from the start of the file:155 1. Read the file content156 2. The frontmatter block starts with `---` on line 1 and ends at the157 next `---` line (which closes the YAML block). Only match the158 opening frontmatter block — do not match `---` lines that appear159 later in the body (e.g., markdown horizontal rules).160 3. Ensure the tmp directory exists: `mkdir -p {tmp directory}`161 4. Write everything after the closing `---` line to162 `{tmp directory}/pr-body-{number}.md`163 5. Post the body via the helper binary, which resolves the base164 (upstream) repository for cross-fork safety and PATCHes via the165 GitHub REST API in-process:166 ```bash167 accelerator collaboration pr update-body {number} --body-file {tmp directory}/pr-body-{number}.md168 ```169 If the command exits non-zero, surface its stderr verbatim to the170 user. Exit codes:171 - **Exit 2** → usage/refusal — e.g. missing `--body-file`, no172 `origin` remote configured173 - **Exit 1** → any other failure — base-repo resolution failure,174 body-file read failure, GitHub REST API failure175 stderr always names which stage failed.176 6. Clean up `{tmp directory}/pr-body-{number}.md`177- Confirm the update was successful178- If any verification steps remain unchecked, remind the user to complete179 them before merging180181## Important notes:182183- This command works across different repositories - always read the local184 template185- Be thorough but concise - descriptions should be scannable186- Focus on the "why" as much as the "what"187- Include any breaking changes or migration notes prominently188- If the PR touches multiple components, organize the description accordingly189- Always attempt to run verification commands when possible190- Clearly communicate which verification steps need manual testing191192!`accelerator config instructions describe-pr --fail-safe`