Code Review
Azure/Azurite
Review Azurite pull requests with service-aware checks for Blob, Queue, and Table behavior, API compatibility, tests, and release notes.
Create a pull request using the repository PR template. An agent skill from microsoft/aspire.
$ npx skills add microsoft/aspire --skill create-pr -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microsoft/aspire create-pr --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/microsoft/aspire.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-pr .claude/skills/create-pr && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "create-pr" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/create-pr into .claude/skills/create-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pr", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/microsoft/aspire/tree/main/.agents/skills/create-prType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add microsoft/aspire --skill create-pr -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microsoft/aspire create-pr --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/aspire.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/create-pr .agents/skills/create-pr && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-pr" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/create-pr into .agents/skills/create-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pr", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/aspire --skill create-pr -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microsoft/aspire create-pr --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/aspire.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/create-pr .cursor/skills/create-pr && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-pr" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/create-pr into .cursor/skills/create-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pr", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/microsoft/aspire.git --path .agents/skills/create-pr--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add microsoft/aspire --skill create-pr -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microsoft/aspire create-pr --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/aspire.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/create-pr .gemini/skills/create-pr && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-pr" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/create-pr into .gemini/skills/create-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pr", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install microsoft/aspire create-prInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add microsoft/aspire --skill create-pr -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microsoft/aspire.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/create-pr .github/skills/create-pr && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-pr" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/create-pr into .github/skills/create-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pr", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microsoft/aspire --skill create-pr -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microsoft/aspire create-pr --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microsoft/aspire.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/create-pr .opencode/skills/create-pr && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-pr" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/create-pr into .opencode/skills/create-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-pr", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-prCreate a pull request using the repository PR template. An agent skill from microsoft/aspire.
Create PR is an agent skill from microsoft/aspire, published by the product's own GitHub organization. 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.
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Pull requests. It works with Microsoft Azure. The repository describes itself as: Aspire is the tool for code-first, extensible, observable dev and deploy. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 809a672. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghgitFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
cli.github.comgithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create PR loads about 4k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 1,943 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from microsoft/aspire at commit 809a672, republished under its MIT licence (© microsoft). 1,943 words, ~4,034 tokens.
.claude/skills/create-pr/SKILL.md (or your agent's skills folder).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 -->For non-trivial UI changes, upload screenshots or recordings as GitHub user attachments. Do not commit them to the source branch unless explicitly requested.
Before uploading, inspect every artifact for secrets, credentials, tokens, customer or confidential data, private URLs, and unintended personal information. Redact or regenerate any artifact that contains sensitive data, and do not upload it until the inspection passes. Treat uploads as permanent public data because this public repository exposes attachments to everyone and the attachment API has no deletion endpoint.
Check attachment support for the command that will write the PR: gh pr create --help for a new PR or gh pr edit --help for an existing PR. Use --attach only when that command advertises it. Prepare local Markdown references for step 5 to insert at the intended location in pr-body.md. Use a table for before/after images when appropriate:
| Before | After |
| --- | --- |
|  |  |Place an image-style reference to a video on its own line in its own paragraph so GitHub CLI rewrites it to a bare asset URL that renders as a player:
Prepare one flag per referenced file and append the flags to the final gh pr create command in step 6 or gh pr edit command in step 7. GitHub CLI rewrites the local references to uploaded URLs; without references, it appends the attachments to the end of the body. For images, text after # is the alt text when the body does not already provide it. Videos do not support alt text and must omit the # suffix:
--attach './before.png#Before' --attach './after.png#After' --attach './demo.mp4'If the relevant command does not advertise --attach, do not upload the artifacts or call GitHub's undocumented attachment endpoint. Tell the user that their installed GitHub CLI version does not support attachment uploads for that command and ask them to upgrade it. Include the detected version from gh --version and link to the official upgrade instructions at https://github.com/cli/cli#installation.
After the upgrade, run gh --version and check the relevant command help again. Retry the upload only when --attach is advertised. If the user does not upgrade, continue without uploading and retain the TODO in the Screenshots / Recordings section so the missing visual evidence is explicit.
.github/pull_request_template.md.gh --attach is available, replace the <!-- Add screenshots/recordings here --> placeholder with the prepared local Markdown references before running the create or edit command. Do not leave the placeholder in the final body after a successful upload.## 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:
```bash
aspire <command> <resource> --name <command-name> --timeout 30s
```
Command help:
```text
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:
```csharp
var resource = builder.Add<Integration>("resource")
.With<NewCapability>("<value>");
```### User-facing usage
C# AppHost:
```csharp
var resource = builder.Add<Integration>("resource")
.With<NewCapability>("<value>");
```
TypeScript AppHost:
```typescript
const resource = builder.add<Integration>("resource")
.with<NewCapability>("<value>");
```### User-facing usage
Users enable the behavior with:
```json
{
"<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 \
--attach './before.png#Before' \
--attach './after.png#After'PowerShell/Windows:
$env:GH_PAGER = "cat"
gh pr create `
--base <base-branch> `
--head <head-branch> `
--title "<pr-title>" `
--body-file pr-body.md `
--attach './before.png#Before' `
--attach './after.png#After'Omit the --attach lines when step 4 did not prepare visual artifacts. Attach videos without a # suffix.
Why
GH_PAGER=cat? TheghCLI pipes long output through a pager (likeless) by default, which blocks in non-interactive terminals. Setting it tocatdisables paging so output prints directly.
Shell differences:
VAR=val commandis 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:
Do not create another.
If requested (or if the body is still mostly unfilled template text), update it:
bash: GH_PAGER=cat gh pr edit <pr-number-or-url> --body-file pr-body.md --attach './before.png#Before' --attach './demo.mp4'
PowerShell: $env:GH_PAGER = "cat"; gh pr edit <pr-number-or-url> --body-file pr-body.md --attach './before.png#Before' --attach './demo.mp4'
Omit the --attach flags when step 4 did not prepare visual artifacts. Attach videos without a # suffix.
If a label needs to be applied to an existing PR, use gh pr edit <pr-number-or-url> --add-label <label-name>.
Return the existing PR URL.
After you are completely finished creating or updating the PR (after step 6 and, if needed, step 7), 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 7 (Handle existing PRs) above |
.github/pull_request_template.md.© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/create-pr of microsoft/aspire.
Open the folder on GitHubat commit 809a672
Create PR next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create PR this skillmicrosoft/aspire | 6.3k | — | ~4k | Automated safety check: Pass | MIT | |
| Code ReviewAzure/Azurite | 2.3k | — | ~734 | Automated safety check: Pass | MIT | |
| Azurite Pull Request ReviewAzure/AgentBaker | 157 | — | ~3.9k | Automated safety check: Pass | MIT | |
| Review AreasAzure/azqr | 794 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Code SimplifierAzure/azqr | 794 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Code ReviewAzure/sap-automation | 145 | — | ~7k | Automated safety check: Pass | MIT |
Azure/Azurite
Review Azurite pull requests with service-aware checks for Blob, Queue, and Table behavior, API compatibility, tests, and release notes.
Azure/AgentBaker
Reviews Azurite pull requests with checks for Blob, Queue and Table API compatibility, auth paths, persistence, tests and changelog, ending in a fixed comment format.
Azure/azqr
In-depth code review that fans out parallel subagents across review areas — CRITICAL after non-trivial development.
Azure/azqr
Analyzes recently modified code and creates pull requests with simplifications that improve clarity, consistency, and maintainability while preserving functionality
Azure/sap-automation
Review pull requests in the SAP Deployment Automation Framework.
kubernetes-sigs/cloud-provider-azure
Diagnose and unblock failed Dependabot pull requests in cloud-provider-azure by closing Kubernetes minor-version dependency bumps, classifying CI failures, syncing Go modules, retesting quota-flaked…
microsoft/aspire
A skill your agent uses when asked to trigger or inspect Aspire internal Azure DevOps builds, source-index runs, or release validation on dnceng/internal; push to the internal mirror; download build…
microsoft/aspire
Backports a merged PR to a release branch by triggering the /backport bot, waiting for the bot-created PR, and filling in the shiproom template (Customer Impact, Testing, Risk, Regression?).
microsoft/aspire
Bumps the Aspire repository product version in eng/Versions.props using previous version-bump commits as guidance.
microsoft/aspire
Guide for diagnosing GitHub Actions test failures, extracting failed tests from runs, and creating or updating failing-test issues.
microsoft/aspire
Guide for writing tests for the Aspire Dashboard. An agent skill from microsoft/aspire.
microsoft/aspire
Guide for writing Aspire deployment end-to-end tests. An agent skill from microsoft/aspire.
Works with
Categories
Create a pull request using the repository PR template. An agent skill from microsoft/aspire. Create PR is an agent skill from microsoft/aspire, published by the product's own GitHub organization. Create a pull request using the repository PR template.
Create PR fits situations like: asked to: create PR; push and create PR; open pull request; send changes for review.
Run `npx skills add microsoft/aspire --skill create-pr -a claude-code`. Or copy the skill folder (.agents/skills/create-pr in microsoft/aspire) into .claude/skills/create-pr in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microsoft/aspire --skill create-pr -a codex`. Or copy the skill folder (.agents/skills/create-pr in microsoft/aspire) into .agents/skills/create-pr in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/aspire --skill create-pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-pr, .gemini/skills/create-pr, .github/skills/create-pr and .opencode/skills/create-pr in your project.
Going by SKILL.md and its folder, Create PR needs the command-line tools its instructions call (gh and git). Our summary lists: Docker.
SKILL.md names 2 domains. As links in the text: cli.github.com and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Create PR is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Create PR: Code Review (Azure/Azurite, 2.3k stars), Azurite Pull Request Review (Azure/AgentBaker, 157 stars), Review Areas (Azure/azqr, 794 stars) and Code Simplifier (Azure/azqr, 794 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
microsoft (a GitHub organization, an official publisher) maintains it in microsoft/aspire, which has 6,348 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 7, 2026.
Source: microsoft/aspire on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.