ask-matt
免费Ask which skill or flow fits your situation. A router over the skills in this repo.
中文简介正在准备中。当前显示原文说明。
Reviews a GitHub PR for correctness, security, design, and maintainability. Auto-loads project conventions from rules and AGENTS.md files based on changed file paths. Use when asked to review a PR, check a PR, or give feedback on a pull request.
中文简介正在准备中。当前显示原文说明。
实测评分 未实测
查看安装方法安装前可以查看交给 AI 代理的指令内容。
Review a GitHub pull request for correctness, security, design, and maintainability. Default mode is remote (posts comments to GitHub). Pass mode=local to display findings without posting.
pr — PR number or URL (optional; auto-detected from current branch if omitted)mode — remote (default) or localauto — true or false (default false). When true, skip the operator confirmation gate (Step 4) and proceed directly to posting/displaying. Use COMMENT as the review event (never REQUEST_CHANGES or APPROVE without a human).| Mode | Behaviour |
|---|---|
| remote (default) | Full review → post comments and submit review on GitHub |
| local | Same analysis → display findings in chat only, nothing posted |
Detect from context (current branch, parameter, or URL). Prefer:
gh pr view --json number,url,baseRefName,headRefName
Fall back to asking the user.
gh pr diff NUMBER
gh pr view NUMBER --json title,body,files,additions,deletions,commits,isDraft,headRefOid
Fetch existing review comments to avoid duplicating feedback:
gh api graphql -f query='
query($owner:String!,$repo:String!,$pr:Int!,$cursor:String) {
repository(owner:$owner,name:$repo) {
pullRequest(number:$pr) {
reviewThreads(first:100, after:$cursor) {
pageInfo { hasNextPage endCursor }
nodes {
id
isResolved
isOutdated
path
line
viewerCanResolve
comments(first:30) {
nodes {
id
databaseId
body
author { login }
path
line
originalLine
createdAt
}
}
}
}
}
}
}' -f owner=OWNER -f repo=REPO -F pr=NUMBER
If pageInfo.hasNextPage is true, repeat the query with after: $cursor using the endCursor value and accumulate all reviewThreads before deduplication.
If the PR touches more than ~30 files, prioritise:
| Priority | File type | Action |
|---|---|---|
| Deep | Core logic, security-sensitive, public API surfaces, files with complex diffs | Read surrounding context, review line-by-line |
| Scan | Tests (verify they test the right thing), internal utilities, straightforward refactors | Quick read for obvious issues |
| Skim | Generated files, lockfiles, config/CI, docs, renames/moves | Spot-check only; skip if mechanical |
Use the file list from gh pr view NUMBER --json files to sort by additions + deletions. Start with the highest-churn non-generated files.
If the PR is too large to review meaningfully (100+ files with substantive logic changes), say so. Recommend the author split it, and offer to review a subset they nominate.
This step makes the review aware of project conventions. Extract the list of changed file paths from step 1, then:
Load matching rules. Glob .claude/rules/**/*.md and .cursor/rules/**/*.mdc. For each rule file, check whether any changed file matches its paths: or globs: pattern. Read and collect all matching rules.
Load AGENTS.md files. For each changed file path, walk up the directory tree looking for AGENTS.md files (e.g., a change in apps/journeys-admin/src/components/Foo.tsx should load apps/journeys-admin/AGENTS.md if it exists). Deduplicate — don't load the same file twice.
Merge into review context. Concatenate the loaded rules and AGENTS.md content. These define the project conventions the review must enforce. If no rules or AGENTS.md files matched (e.g., docs-only changes), proceed with generic review — no conventions to enforce.
When triaging findings in step 3, violations of loaded conventions are at minimum a Concern. A violation of a rule marked as a guardrail (e.g., the customizable blocks sync rule) is Critical.
Before looking for problems:
Do not start flagging issues until you understand what the author was trying to achieve and why.
If the PR description is empty or uninformative:
Review changed files (using the priority order from step 1.5 for large PRs). For each potential finding, classify it:
| Category | When to flag | Example |
|---|---|---|
| Critical | Bugs, security holes, data loss, broken logic, missing error handling that will bite in production, guardrail rule violations | Race condition, SQL injection, unchecked null on a critical path, customizable block change missing sync |
| Concern | Design issues, maintainability risks, unclear intent, missing tests for important behaviour, convention violations from loaded rules | Tight coupling, duplicated logic across files, missing i18n wrapping |
| Nit | Style preference, minor naming, formatting — only flag if pervasive pattern | Single inconsistent variable name (skip), systematic naming convention violation across the PR (flag) |
| Skip | Acceptable as-is. Readable, works, follows project conventions — or too subjective to be worth raising | Preferring forEach over for...of, minor comment wording |
Ground rules:
Before posting anything (remote mode) or finalising (local mode), present findings:
## PR Review Triage — PR #123: <title>
**Conventions loaded:** (list the rules/AGENTS.md files that matched, or "none — generic review")
**Critical (must fix):**
- `src/auth.ts:42` — JWT secret read from env without fallback; server crashes on missing var
**Concern (worth discussing):**
- `src/api/handler.ts:15-30` — New retry logic has no backoff; could hammer downstream service
**Nit (minor, pattern-level):**
- Inconsistent error message format across 4 new handlers
**Positive:**
- Clean separation of validation logic into its own module
**Skipped:** 3 minor style items — not worth comment noise.
If auto=false (default): Wait for user confirmation before proceeding.
The user may reclassify findings, drop items, or add context.
If auto=true: Log the triage for auditability (include it in the PR
summary comment later), then proceed immediately — do not wait for
confirmation.
After confirmation, resolve OWNER, REPO, and the latest commit SHA:
gh repo view --json owner,name --jq '"\(.owner.login) \(.name)"'
COMMIT_SHA=$(gh pr view NUMBER --json headRefOid --jq '.headRefOid')
Choose the review event based on confirmed findings:
| Findings | Event |
|---|---|
| Any Critical items | REQUEST_CHANGES — only if user confirms |
| Only Concern / Nit | COMMENT |
| Nothing to flag | APPROVE — only if user confirms |
Default to COMMENT when unsure. Never auto-approve or auto-request-changes without user confirmation. For draft PRs, always use COMMENT regardless of findings.
If auto=true: Always use COMMENT regardless of findings. The operator
reviews the PR after the autonomous cycle completes — they decide whether to
request changes or approve.
Submit a single review with inline comments using --input -:
jq -n \
--arg event "COMMENT" \
--arg body "$(cat <<'BODY'
## Review summary
**Critical:** 2 items flagged (see inline)
**Concerns:** 1 item flagged (see inline)
**Overall:** Good direction, a few items to address before merge.
BODY
)" \
--arg sha "$COMMIT_SHA" \
'{
event: $event,
body: $body,
commit_id: $sha,
comments: [
{path: "src/auth.ts", line: 42, side: "RIGHT",
body: "**Critical:** JWT secret has no fallback — server will crash on missing env var. Consider a startup check or default."},
{path: "src/db.ts", line: 91, side: "RIGHT", start_line: 88, start_side: "RIGHT",
body: "**Critical:** Raw SQL interpolation → SQL injection risk."}
]
}' \
| gh api repos/OWNER/REPO/pulls/NUMBER/reviews --method POST --input -
For multi-line comments, include both start_line/start_side and line/side. Use the category prefix (Critical, Concern, Nit) in each comment body.
After posting, confirm to the user what was posted and provide the PR URL.
Present the full review in chat using the same format as the triage in step 4, but with full comment bodies for each finding. Nothing is posted to GitHub.
End with:
Local review complete. Say "post it" to submit this review to GitHub (I'll confirm the event type first), or adjust findings.
If the user says "post it":
gh pr diff and gh pr view work across forks transparently. The headRefOid from gh pr view is the correct commit for inline comments regardless of fork origin.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Ask which skill or flow fits your situation. A router over the skills in this repo.
中文简介正在准备中。当前显示原文说明。
Build applications where agents are first-class citizens. Use this skill when designing autonomous agents, creating MCP tools, implementing self-modifying systems, or building apps where features are outcomes achieved by agents operating in a loop.
中文简介正在准备中。当前显示原文说明。
Run comprehensive agent-native architecture review with scored principles
中文简介正在准备中。当前显示原文说明。
Explore requirements and approaches through collaborative dialogue before writing a right-sized requirements document and planning implementation. Use for feature ideas, problem framing, when the user says 'let's brainstorm', or when they want to think through options before deciding what to build. Also use when a user describes a vague or ambitious feature request, asks 'what should we build', 'help me think through X', presents a problem with multiple valid solutions, or seems unsure about scope or direction — even if they don't explicitly ask to brainstorm.
中文简介正在准备中。当前显示原文说明。
Clean up local branches whose remote tracking branch is gone. Use when the user says "clean up branches", "delete gone branches", "prune local branches", "clean gone", or wants to remove stale local branches that no longer exist on the remote. Also handles removing associated worktrees for branches that have them.
中文简介正在准备中。当前显示原文说明。
Structured code review using tiered persona agents, confidence-gated findings, and a merge/dedup pipeline. Use when reviewing code changes before creating a PR.
中文简介正在准备中。当前显示原文说明。