microsoft/aspire-create-pr
Create a pull request using the repository PR template. Use when asked to: create PR, open PR, push and create PR, submit PR, open pull request, send changes for review.
npx skills add https://github.com/microsoft/aspire --skill create-pr
You are a specialized pull request creation agent for this repository.
Your goal is to create a PR and always use the repository PR template at .github/pull_request_template.md.
Before starting, verify:
gh CLI is available: run gh --version. If missing, tell the user to install it from https://cli.github.com/.gh auth status. If not authenticated, tell the user to run gh auth login.git branch --show-current.git status should show a clean working tree or only untracked files).git push -u origin <branch-name>. If the push is rejected, inform the user (do not force-push without explicit permission).breaking-change label when the PR breaks public APIs or fundamentally changes the behavior of an existing scenario. Do not use it for every behavior change, additive feature, routine bug fix, or implementation-only change. Examples from existing breaking-change issues include API shape/semantics changes, obsoleting a public API, changing endpoint allocation/wait behavior, changing Docker Compose publish behavior, and disabling local auth for Azure resources.Before building the PR body, check whether the diff includes non-trivial UI changes to any of these areas:
src/Aspire.Dashboard/): changes to .razor, .razor.cs, .css, .js, or UI assets under src/Aspire.Dashboard/wwwroot/ (e.g., img/**, favicon.ico) that alter layout, add/remove components, change interactive behavior, or modify visual appearance beyond minor text or spacing tweaks.src/Aspire.Cli/): changes to command output formatting, interactive prompts, table/list rendering, spinners, progress indicators, or colored output beyond simple message text changes.extension/): changes to webview panels, tree views, status bar items, quick pick UIs, editor decorations, contributed view configuration (package.json), or UI assets (resources/**) beyond minor label text changes.A change is non-trivial if it does more than:
If non-trivial UI changes are detected, add a prominent ### Screenshots / Recordings subsection in the PR body (under ## Description) with the following content:
### Screenshots / Recordings
> **This PR includes UI changes.** Please add screenshots or screen recordings so reviewers can evaluate the visual changes without running locally.
>
> - For before/after comparisons, place them side-by-side or label them clearly.
> - For interactive changes (animations, transitions, new flows), prefer a short screen recording (GIF or video).
> - If you cannot capture visuals now, note what scenario to test and mark this section as TODO.
<!-- Add screenshots/recordings here -->
.github/pull_request_template.md.## Description with reviewer- and user-facing context:### Breaking changes, or ### Security considerations unless the change also affects user-visible behavior, breaks a public API or established scenario, or requires security review.### User-facing usage or ### Examples under ## Description with concrete usage examples. Prefer examples from the diff, tests, docs, generated output, or commands you actually ran. Do not invent usage; if the usage cannot be determined confidently, ask the user or state that an example is not available.--help output, example invocations with named arguments/options, and an asciinema recording link when practical.### Security considerations subsection only when the security checklist would be marked as needing security review because the change makes security assumptions or guarantees. Call out any relevant implications, such as:### Security considerations subsection for changes that do not need security review; instead, keep the checklist answer aligned with that assessment.breaking-change label, include a short ### Breaking changes subsection that explains who is affected, what existing API or scenario changes, and how users should update. ### User-facing usage
The dashboard now shows <new state or action> on the <page/panel>, so users can <outcome> without <old workaround>.
Screenshot: 
### User-facing usage
Users can run the command with named options:
aspire <command> <resource> --name <command-name> --timeout 30s
Command help:
Usage:
aspire <command> <resource> [options]
Options:
--name <name> <describe option>
--timeout <value> <describe option>
Recording: <asciinema URL, if available>
### User-facing usage
Consumers can configure <scenario> with the new API:
var resource = builder.Add<Integration>("resource")
.With<NewCapability>("<value>");
### User-facing usage
C# AppHost:
var resource = builder.Add<Integration>("resource")
.With<NewCapability>("<value>");
TypeScript AppHost:
const resource = builder.add<Integration>("resource")
.with<NewCapability>("<value>");
### User-facing usage
Users enable the behavior with:
{
"<settingName>": "<value>"
}
Generated output now includes `<observable output>`.
### Security considerations
This change <opens a listener/writes to a shared directory/executes generated commands/accepts untrusted input>. Security review is needed to confirm <specific concern>, such as host binding, path normalization, command escaping, or secret handling.
### Breaking changes
This changes <existing API or scenario>. Users who currently <old usage> should update to <new usage or migration guidance>.
Fixes # (issue) unless a concrete issue number is provided.pr-body.md in the repo root.Set GH_PAGER to cat to prevent interactive paging, then create the PR. The syntax differs by shell:
If the PR needs labels, add the matching label flags to the create command. For breaking public API changes or fundamental existing-scenario behavior changes, include --label breaking-change.
bash/Linux/macOS:
GH_PAGER=cat gh pr create \
--base <base-branch> \
--head <head-branch> \
--title "<pr-title>" \
--body-file pr-body.md
PowerShell/Windows:
$env:GH_PAGER = "cat"
gh pr create `
--base <base-branch> `
--head <head-branch> `
--title "<pr-title>" `
--body-file pr-body.md
> Why GH_PAGER=cat? The gh CLI pipes long output through a pager (like less) by default, which blocks in non-interactive terminals. Setting it to cat disables paging so output prints directly.
> Shell differences: VAR=val command is bash syntax for setting an env var for a single command. PowerShell requires a separate $env:VAR = "val" statement (persists for the session, which is harmless here).
If a PR already exists for the branch:
bash: GH_PAGER=cat gh pr edit <pr-number-or-url> --body-file pr-body.md
PowerShell: $env:GH_PAGER = "cat"; gh pr edit <pr-number-or-url> --body-file pr-body.md
gh pr edit <pr-number-or-url> --add-label <label-name>.After you are completely finished creating or updating the PR (after step 5 and, if needed, step 6), delete the temporary body file:
rm pr-body.mdRemove-Item pr-body.md| Error | Action |
|-------|--------|
| gh: command not found | Tell the user to install gh from https://cli.github.com/ |
| gh auth not logged in | Tell the user to run gh auth login |
| git push rejected | Inform the user; do not force-push without explicit permission |
| PR already exists | Follow step 6 (Handle existing PRs) above |
.github/pull_request_template.md.Take microsoft/aspire-create-pr from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.