ask-matt
FreeAsk which skill or flow fits your situation. A router over the skills in this repo.
The English summary is being prepared. Showing the original description.
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.
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
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.No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Ask which skill or flow fits your situation. A router over the skills in this repo.
The English summary is being prepared. Showing the original description.
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.
The English summary is being prepared. Showing the original description.
Run comprehensive agent-native architecture review with scored principles
The English summary is being prepared. Showing the original description.
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.
The English summary is being prepared. Showing the original description.
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.
The English summary is being prepared. Showing the original description.
Structured code review using tiered persona agents, confidence-gated findings, and a merge/dedup pipeline. Use when reviewing code changes before creating a PR.
The English summary is being prepared. Showing the original description.