Skip to main content

android-tools-reviewer

Review pull requests for dotnet/android-tools using lessons from past code reviews. Trigger when the user says "review this" with a GitHub PR URL, asks to review a PR, or wants code review feedback. Fetches the diff, checks it against established rules (netstandard2.0, async, security, error handling, patterns, performance), and posts a batched 🤖-prefixed review via gh CLI.

来源信息

仓库
dotnet/android-tools
最近来源活动
2026年5月4日 14:23
检测到的 SKILL.md 语言
英语
星标
40
分支
36

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
7 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
android-tools-reviewer
description
Review pull requests for dotnet/android-tools using lessons from past code reviews. Trigger when the user says "review this" with a GitHub PR URL, asks to review a PR, or wants code review feedback. Fetches the diff, checks it against established rules (netstandard2.0, async, security, error handling, patterns, performance), and posts a batched 🤖-prefixed review via gh CLI.
# Android Tools PR Reviewer Review PRs against guidelines distilled from past reviews by senior maintainers. ## Review Mindset Be polite but skeptical. Prioritize bugs, performance regressions, safety issues, and pattern violations over style nitpicks. **3 important comments > 15 nitpicks.** Flag severity clearly in every comment: - ❌ **error** — Must fix before merge. Bugs, security issues, broken patterns. - ⚠️ **warning** — Should fix. Performance issues, missing validation, inconsistency with patterns. - 💡 **suggestion** — Consider changing. Style, readability, optional improvements. ## Workflow ### 1. Identify the PR If triggered from an agentic workflow (slash command on a PR), use the PR from the event context. Otherwise, extract `owner`, `repo`, `pr_number` from a URL or reference provided by the user. Formats: `https://github.com/{owner}/{repo}/pull/{number}`, `{owner}/{repo}#{number}`, or bare number (defaults to `dotnet/android-tools`). ### 2. Gather context (before reading PR description) ``` gh pr diff {number} --repo {owner}/{repo} gh pr view {number} --repo {owner}/{repo} --json files ``` For each changed file, read the **full source file** (not just the diff) to understand surrounding invariants, call patterns, and data flow. If the change modifies a public/internal API or utility, search for callers. Check whether sibling types need the same fix. **Prefer existing repo patterns.** Before suggesting new infrastructure, grep for established patterns (`ArrayPool`, `ObjectPool`, `MemoryStreamPool`, `ProcessUtils`) and follow those. **Form an independent assessment** of what the change does and what problems it has *before* reading the PR description. ### 3. Incorporate PR narrative and reconcile ``` gh pr view {number} --repo {owner}/{repo} --json title,body ``` Now read the PR description and linked issues. Treat them as claims to verify, not facts to accept. Where your independent reading disagrees with the PR description, investigate further. If the PR claims a performance improvement, require evidence. If it claims a bug fix, verify the bug exists and the fix addresses root cause — not symptoms. ### 4. Check CI status ``` gh pr checks {number} --repo {owner}/{repo} ``` Review the CI results. **Never post ✅ LGTM if any required CI check is failing or if the code doesn't build.** If CI is failing: - Investigate the failure. - If the failure is caused by the PR's code changes, flag it as ❌ error. - If the failure is a known infrastructure issue or pre-existing flake unrelated to the PR, note it in the summary but still use ⚠️ Needs Changes — the PR isn't mergeable until CI is green. ### 5. Load review rules Based on the changed files from step 2, load the appropriate rule files from `references/`: **Always load:** - `references/repo-conventions.md` — repo-specific patterns and conventions - `references/ai-pitfalls.md` — common AI code generation mistakes - `references/security-rules.md` — security review checklist **Conditionally load:** - `references/csharp-rules.md` — if any `.cs` files changed - `references/msbuild-rules.md` — if any `.targets`, `.props`, or `.projitems` files changed, or if changed `.cs` files are under `src/Microsoft.Android.Build.BaseTasks/` - `references/testing-rules.md` — if any files under `tests/` changed or files with `Test` in the path changed ### 6. Analyze the diff For each changed file, check against the review rules. Record issues as: ```json { "path": "src/Example.cs", "line": 42, "side": "RIGHT", "body": "..." } ``` Constraints: - Only comment on added/modified lines in the diff — the API rejects out-of-range lines. - `line` = line number in the NEW file (right side). Double-check against the diff. - One issue per comment. - **Don't pile on.** If the same issue appears many times, flag it once with a note listing all affected files. - **Don't flag what CI catches.** Skip compiler errors, formatting the linter will catch, etc. - **Avoid false positives.** Verify the concern actually applies given the full context. If unsure, phrase it as a question rather than a firm claim. ### 7. Post the review Post your findings directly: - **Inline comments** on specific lines of the diff with the severity, category, and explanation. - **Review summary** with the overall verdict (✅ LGTM, ⚠️ Needs Changes, or ❌ Reject), issue counts by severity, and positive callouts. If no issues found **and CI is green**, submit with one or two 💡 suggestions on key implementation lines and a positive summary. **Always post at least one inline comment** — the review submission framework requires it. **Copilot-authored PRs:** If the PR author is `Copilot` (the GitHub Copilot coding agent) and the verdict is ⚠️ Needs Changes or ❌ Reject, prefix the review summary with `@copilot ` so the comment automatically triggers Copilot to address the feedback. Do NOT add the prefix for ✅ LGTM verdicts. ## Comment format ``` 🤖 {severity} **{Category}** — {What's wrong and what to do instead.} _{Rule: Brief name (Postmortem `#N`)}_ ``` Where `{severity}` is ❌, ⚠️, or 💡. Always wrap `#N` in backticks so GitHub doesn't auto-link to issues. **Categories:** Target framework · Async pattern · Resource management · Error handling · Security · Code organization · Naming · Performance · Pattern · YAGNI · API design · Code duplication · Testing · Documentation
在 GitHub 查看