{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pr-review",
    "name": "pr-review",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Glucksberg/pr-review",
    "canonicalUrl": "https://clawhub.ai/Glucksberg/pr-review",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/pr-review",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pr-review",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "plugins/pre-review/CHANGELOG.md",
      "plugins/pre-review/CLAUDE.md",
      "plugins/pre-review/README.md",
      "plugins/pre-review/commands/CLAUDE.md",
      "plugins/pre-review/commands/code-audit.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/pr-review"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/pr-review",
    "agentPageUrl": "https://openagent3.xyz/skills/pr-review/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pr-review/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pr-review/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Pre-Review",
        "body": "Find and fix issues before publishing your PR — not after.\n\nSingle-pass review using one capable model. No orchestration overhead, no agent swarm. Fast, cheap, thorough."
      },
      {
        "title": "When to use",
        "body": "Reviewing code changes before publishing a PR\nAuditing existing code for bugs, security, or quality issues\nFinding and fixing issues in specific files or directories"
      },
      {
        "title": "When NOT to use",
        "body": "Running a coding agent to write new code → use coding-agent\nChecking GitHub CI status → use github\nManaging forks or rebasing branches → use fork-manager"
      },
      {
        "title": "Usage",
        "body": "/pr-review                    # Review changes on current branch vs main/master\n/pr-review src/api/ src/auth/ # Audit specific directories\n/pr-review **/*.ts            # Audit files matching a pattern\n/pr-review --audit            # Audit entire codebase with smart prioritization\n\nTwo modes:\n\nModeTriggerScopeFix thresholdDiffNo args, on branch with changesChanged files only>= 70AuditPaths, patterns, or --auditSpecified files or full codebase>= 80"
      },
      {
        "title": "Step 1: Detect Mode and Scope",
        "body": "No arguments provided:\n\ngit diff main...HEAD --name-only 2>/dev/null || git diff master...HEAD --name-only\n\nIf changes exist → Diff mode\nIf no changes → inform user, stop\n\nPaths/patterns provided or --audit:\n\nResolve to actual files (exclude node_modules, dist, build, vendor, .git, coverage)\nIf > 50 files, ask user to narrow scope or confirm\nAudit mode"
      },
      {
        "title": "Step 2: Gather Context",
        "body": "Read project guidelines (quick scan, don't overthink):\n\n# Check for project conventions\ncat CLAUDE.md .claude/settings.json CONTRIBUTING.md 2>/dev/null | head -100\ncat .eslintrc* .prettierrc* biome.json tsconfig.json 2>/dev/null | head -50\ncat package.json 2>/dev/null | head -20  # tech stack\n\nGet the diff or file contents:\n\n# Diff mode\ngit diff main...HEAD  # or master\n\n# Audit mode\ncat <files>  # read target files"
      },
      {
        "title": "Step 3: Review (Single Pass)",
        "body": "Analyze all code in one pass. Cover these areas in priority order:\n\n1. Correctness (highest priority)\n\nLogic errors, edge cases, null/undefined handling\nOff-by-one, pagination boundaries, numeric precision\nAsync/await mistakes, race conditions, resource leaks\nData consistency, idempotency\n\n2. Security\n\nInjection vulnerabilities (SQL, XSS, command, path traversal)\nAuth/authz gaps, IDOR risks, exposed secrets\nUnvalidated input reaching sensitive operations\nLogging sensitive data, insecure defaults\n\n3. Reliability\n\nError handling gaps, silent failures, swallowed exceptions\nMissing timeouts, retries without backoff\nUnbounded operations on user-controlled data\n\n4. Performance\n\nN+1 queries, unnecessary loops, memory bloat\nMissing pagination, inefficient algorithms\nBlocking operations in async context\n\n5. Quality (lowest priority — skip if trivial)\n\nMissing tests for new functionality\nDead code, duplicated logic\nStale comments, unclear naming\nStyle issues only if they violate project guidelines"
      },
      {
        "title": "Step 4: Score and Classify",
        "body": "For each issue found, assign:\n\nScoreMeaningAction90-100Critical bug or vulnerabilityMust fix70-89Real issue, will cause problemsShould fix50-69Code smell, needs human judgmentReport only< 50Minor, likely false positiveDiscard\n\nDiscard thresholds:\n\nDiff mode: discard below 50\nAudit mode: discard below 40\n\nClassify each issue:\n\nblocker — security, data corruption, crash risk\nimportant — likely bug, perf regression, missing validation\nminor — edge case, maintainability, style"
      },
      {
        "title": "Step 5: Auto-Fix",
        "body": "Apply fixes directly for issues meeting the threshold:\n\nDiff mode: fix issues scoring >= 70\nAudit mode: fix issues scoring >= 80\n\nFor each fix: read file → apply edit → verify surrounding code preserved.\n\nNever auto-fix:\n\nIssues requiring architectural changes\nAmbiguous fixes with multiple valid approaches\nIssues in test files (report only)\n\nAfter fixing, if any files were modified:\n\ngit diff --stat  # show what changed"
      },
      {
        "title": "Step 6: Report",
        "body": "Format:\n\n## Pre-Review Complete\n\n**Risk:** Low / Medium / High\n**Verdict:** ✅ Clean | ⚠️ Issues found | 🔴 Blockers\n\n### 🔴 Blockers (must fix)\n1. **file:line** — Description\n   - Impact: what goes wrong\n   - Fix: applied ✅ | manual required (reason)\n\n### ⚠️ Important (should fix)\n1. **file:line** — Description (score: XX)\n   - Fix: applied ✅ | suggestion\n\n### 💡 Minor\n1. **file:line** — Description\n\n### Tests to Add\n- description of test\n\n### Files Modified: N\n- path/to/file.ts\n\nIf zero issues found: ## Pre-Review Complete — ✅ Clean. No issues found."
      },
      {
        "title": "Guidelines",
        "body": "DO:\n\nFix issues directly, not just report them\nMatch existing code patterns and style\nBe specific: file, line, concrete fix\nPrioritize impact over thoroughness\n\nDON'T:\n\nFix pre-existing issues in diff mode — only what changed\nBikeshed on style unless it violates project guidelines\nReport what a linter or type checker would catch (assume CI handles these)\nMake architectural changes or large refactors\nSpend tokens on obvious non-issues"
      },
      {
        "title": "False Positives to Avoid",
        "body": "Pre-existing code not touched by the current change (diff mode)\nIntentional patterns that look unusual but are correct\nIssues a type checker or linter would flag\nStyle opinions not grounded in project guidelines\nGeneral nitpicks a senior engineer would skip"
      }
    ],
    "body": "Pre-Review\n\nFind and fix issues before publishing your PR — not after.\n\nSingle-pass review using one capable model. No orchestration overhead, no agent swarm. Fast, cheap, thorough.\n\nWhen to use\nReviewing code changes before publishing a PR\nAuditing existing code for bugs, security, or quality issues\nFinding and fixing issues in specific files or directories\nWhen NOT to use\nRunning a coding agent to write new code → use coding-agent\nChecking GitHub CI status → use github\nManaging forks or rebasing branches → use fork-manager\nUsage\n/pr-review                    # Review changes on current branch vs main/master\n/pr-review src/api/ src/auth/ # Audit specific directories\n/pr-review **/*.ts            # Audit files matching a pattern\n/pr-review --audit            # Audit entire codebase with smart prioritization\n\n\nTwo modes:\n\nMode\tTrigger\tScope\tFix threshold\nDiff\tNo args, on branch with changes\tChanged files only\t>= 70\nAudit\tPaths, patterns, or --audit\tSpecified files or full codebase\t>= 80\nInstructions\nStep 1: Detect Mode and Scope\n\nNo arguments provided:\n\ngit diff main...HEAD --name-only 2>/dev/null || git diff master...HEAD --name-only\n\nIf changes exist → Diff mode\nIf no changes → inform user, stop\n\nPaths/patterns provided or --audit:\n\nResolve to actual files (exclude node_modules, dist, build, vendor, .git, coverage)\nIf > 50 files, ask user to narrow scope or confirm\nAudit mode\nStep 2: Gather Context\n\nRead project guidelines (quick scan, don't overthink):\n\n# Check for project conventions\ncat CLAUDE.md .claude/settings.json CONTRIBUTING.md 2>/dev/null | head -100\ncat .eslintrc* .prettierrc* biome.json tsconfig.json 2>/dev/null | head -50\ncat package.json 2>/dev/null | head -20  # tech stack\n\n\nGet the diff or file contents:\n\n# Diff mode\ngit diff main...HEAD  # or master\n\n# Audit mode\ncat <files>  # read target files\n\nStep 3: Review (Single Pass)\n\nAnalyze all code in one pass. Cover these areas in priority order:\n\n1. Correctness (highest priority)\n\nLogic errors, edge cases, null/undefined handling\nOff-by-one, pagination boundaries, numeric precision\nAsync/await mistakes, race conditions, resource leaks\nData consistency, idempotency\n\n2. Security\n\nInjection vulnerabilities (SQL, XSS, command, path traversal)\nAuth/authz gaps, IDOR risks, exposed secrets\nUnvalidated input reaching sensitive operations\nLogging sensitive data, insecure defaults\n\n3. Reliability\n\nError handling gaps, silent failures, swallowed exceptions\nMissing timeouts, retries without backoff\nUnbounded operations on user-controlled data\n\n4. Performance\n\nN+1 queries, unnecessary loops, memory bloat\nMissing pagination, inefficient algorithms\nBlocking operations in async context\n\n5. Quality (lowest priority — skip if trivial)\n\nMissing tests for new functionality\nDead code, duplicated logic\nStale comments, unclear naming\nStyle issues only if they violate project guidelines\nStep 4: Score and Classify\n\nFor each issue found, assign:\n\nScore\tMeaning\tAction\n90-100\tCritical bug or vulnerability\tMust fix\n70-89\tReal issue, will cause problems\tShould fix\n50-69\tCode smell, needs human judgment\tReport only\n< 50\tMinor, likely false positive\tDiscard\n\nDiscard thresholds:\n\nDiff mode: discard below 50\nAudit mode: discard below 40\n\nClassify each issue:\n\nblocker — security, data corruption, crash risk\nimportant — likely bug, perf regression, missing validation\nminor — edge case, maintainability, style\nStep 5: Auto-Fix\n\nApply fixes directly for issues meeting the threshold:\n\nDiff mode: fix issues scoring >= 70\nAudit mode: fix issues scoring >= 80\n\nFor each fix: read file → apply edit → verify surrounding code preserved.\n\nNever auto-fix:\n\nIssues requiring architectural changes\nAmbiguous fixes with multiple valid approaches\nIssues in test files (report only)\n\nAfter fixing, if any files were modified:\n\ngit diff --stat  # show what changed\n\nStep 6: Report\n\nFormat:\n\n## Pre-Review Complete\n\n**Risk:** Low / Medium / High\n**Verdict:** ✅ Clean | ⚠️ Issues found | 🔴 Blockers\n\n### 🔴 Blockers (must fix)\n1. **file:line** — Description\n   - Impact: what goes wrong\n   - Fix: applied ✅ | manual required (reason)\n\n### ⚠️ Important (should fix)\n1. **file:line** — Description (score: XX)\n   - Fix: applied ✅ | suggestion\n\n### 💡 Minor\n1. **file:line** — Description\n\n### Tests to Add\n- description of test\n\n### Files Modified: N\n- path/to/file.ts\n\n\nIf zero issues found: ## Pre-Review Complete — ✅ Clean. No issues found.\n\nGuidelines\n\nDO:\n\nFix issues directly, not just report them\nMatch existing code patterns and style\nBe specific: file, line, concrete fix\nPrioritize impact over thoroughness\n\nDON'T:\n\nFix pre-existing issues in diff mode — only what changed\nBikeshed on style unless it violates project guidelines\nReport what a linter or type checker would catch (assume CI handles these)\nMake architectural changes or large refactors\nSpend tokens on obvious non-issues\nFalse Positives to Avoid\nPre-existing code not touched by the current change (diff mode)\nIntentional patterns that look unusual but are correct\nIssues a type checker or linter would flag\nStyle opinions not grounded in project guidelines\nGeneral nitpicks a senior engineer would skip"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Glucksberg/pr-review",
    "publisherUrl": "https://clawhub.ai/Glucksberg/pr-review",
    "owner": "Glucksberg",
    "version": "2.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pr-review",
    "downloadUrl": "https://openagent3.xyz/downloads/pr-review",
    "agentUrl": "https://openagent3.xyz/skills/pr-review/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pr-review/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pr-review/agent.md"
  }
}