{
  "schemaVersion": "1.0",
  "item": {
    "slug": "repo-pr-triage",
    "name": "Repo PR Triage",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/patrob/repo-pr-triage",
    "canonicalUrl": "https://clawhub.ai/patrob/repo-pr-triage",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/repo-pr-triage",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=repo-pr-triage",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/onboard.py",
      "scripts/test_onboard.py",
      "scripts/test_report.py",
      "scripts/test_scan.py",
      "scripts/scan.py"
    ],
    "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/repo-pr-triage"
    },
    "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/repo-pr-triage",
    "agentPageUrl": "https://openagent3.xyz/skills/repo-pr-triage/agent",
    "manifestUrl": "https://openagent3.xyz/skills/repo-pr-triage/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/repo-pr-triage/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": "PR Triage",
        "body": "Score and prioritize GitHub PRs against a project's vision document. Three-step workflow: onboard, scan, report."
      },
      {
        "title": "Quick Start",
        "body": "# 1. Onboard: gather repo context, interview the owner\npython3 scripts/onboard.py https://github.com/owner/repo --output-dir ./triage-config\n\n# 2. Scan: score open PRs against the vision\npython3 scripts/scan.py https://github.com/owner/repo ./triage-config/vision.md --output scores.json\n\n# 3. Report: generate markdown triage reports\npython3 scripts/report.py scores.json --output-dir ./triage-reports"
      },
      {
        "title": "Step 1: Onboard (one-time per repo)",
        "body": "Run scripts/onboard.py with a GitHub repo URL. It fetches the README, CONTRIBUTING.md, recent releases, and repo metadata via gh CLI, then outputs an interview prompt.\n\nUse the interview prompt to ask the repo owner these questions:\n\nIdentity & Mission:\n\nIn one sentence, what is this project and who is it for?\nWhat problem does it solve that alternatives do not?\nWhat are your 3-5 non-negotiable principles?\n\nPriorities:\n4. Rank contribution areas by importance: security, bugs, features, performance, docs, tests, refactoring\n5. What types of PRs would you auto-reject?\n6. What types of PRs would you fast-track?\n\nRed/Green Flags:\n7. What patterns signal low-quality contributions?\n8. What makes you excited to review a PR?\n9. Specific areas where you want help?\n\nContext:\n10. Growth mode, maintenance mode, or transitioning?\n11. Upcoming milestones affecting prioritization?\n12. How do you handle breaking changes?\n\nAfter the interview, generate two files in the output directory:\n\nvision.md - Project mission, identity, priorities, alignment signals\nrubric.md - Scoring rubric customized from references/rubric-template.md"
      },
      {
        "title": "Step 2: Scan (run per triage session)",
        "body": "Run scripts/scan.py with the repo URL and vision doc path. It:\n\nFetches open PRs via gh pr list (title, body, labels, stats, author, date)\nApplies rule-based scoring: base 50, with positive/negative modifiers\nDetects potential duplicates via title similarity\nOutputs JSON with scores, reasoning, and distribution\n\nThe scan uses heuristic scoring (keyword matching, diff size, test mentions). For deeper analysis, read the JSON output and apply additional LLM reasoning to ambiguous PRs (scores 40-60).\n\nOptions:\n\n--count N - Number of PRs to fetch (default: 100)\n--output file.json - Save to file instead of stdout"
      },
      {
        "title": "Step 3: Report (run after scan)",
        "body": "Run scripts/report.py with the scan JSON. It generates four markdown files:\n\nprioritize.md - PRs scoring 80+ (fast-track for review)\nreview.md - PRs scoring 50-79 (standard queue)\nclose.md - PRs scoring below 50 (likely close or request changes)\nsummary.md - Distribution, top 3, patterns, duplicates, active authors"
      },
      {
        "title": "Scoring Overview",
        "body": "Base score: 50. Key modifiers:\n\nSignalPointsSecurity fix+20Bug fix with tests+10Core functionality improvement+10Performance (measured)+8Small focused diff+5Has tests+5Spam/promotion-30Unwanted dependency-25Large diff, no tests-15No description-5\n\nFull rubric: references/rubric-template.md\nExample vision doc: references/example-vision.md"
      },
      {
        "title": "Recurring Triage via Cron",
        "body": "Set up a cron job to scan weekly:\n\ndescription: Weekly PR triage for owner/repo\nschedule: \"0 9 * * MON\"\nmodel: anthropic/claude-sonnet-4-20250514\nchannel: telegram\n\nCron prompt: \"Run pr-triage scan on https://github.com/owner/repo using ./triage-config/vision.md, generate reports, and send the summary.\""
      },
      {
        "title": "Requirements",
        "body": "gh CLI installed and authenticated (gh auth login)\nPython 3.10+\nNo additional Python packages needed (stdlib only)"
      }
    ],
    "body": "PR Triage\n\nScore and prioritize GitHub PRs against a project's vision document. Three-step workflow: onboard, scan, report.\n\nQuick Start\n# 1. Onboard: gather repo context, interview the owner\npython3 scripts/onboard.py https://github.com/owner/repo --output-dir ./triage-config\n\n# 2. Scan: score open PRs against the vision\npython3 scripts/scan.py https://github.com/owner/repo ./triage-config/vision.md --output scores.json\n\n# 3. Report: generate markdown triage reports\npython3 scripts/report.py scores.json --output-dir ./triage-reports\n\nWorkflow\nStep 1: Onboard (one-time per repo)\n\nRun scripts/onboard.py with a GitHub repo URL. It fetches the README, CONTRIBUTING.md, recent releases, and repo metadata via gh CLI, then outputs an interview prompt.\n\nUse the interview prompt to ask the repo owner these questions:\n\nIdentity & Mission:\n\nIn one sentence, what is this project and who is it for?\nWhat problem does it solve that alternatives do not?\nWhat are your 3-5 non-negotiable principles?\n\nPriorities: 4. Rank contribution areas by importance: security, bugs, features, performance, docs, tests, refactoring 5. What types of PRs would you auto-reject? 6. What types of PRs would you fast-track?\n\nRed/Green Flags: 7. What patterns signal low-quality contributions? 8. What makes you excited to review a PR? 9. Specific areas where you want help?\n\nContext: 10. Growth mode, maintenance mode, or transitioning? 11. Upcoming milestones affecting prioritization? 12. How do you handle breaking changes?\n\nAfter the interview, generate two files in the output directory:\n\nvision.md - Project mission, identity, priorities, alignment signals\nrubric.md - Scoring rubric customized from references/rubric-template.md\nStep 2: Scan (run per triage session)\n\nRun scripts/scan.py with the repo URL and vision doc path. It:\n\nFetches open PRs via gh pr list (title, body, labels, stats, author, date)\nApplies rule-based scoring: base 50, with positive/negative modifiers\nDetects potential duplicates via title similarity\nOutputs JSON with scores, reasoning, and distribution\n\nThe scan uses heuristic scoring (keyword matching, diff size, test mentions). For deeper analysis, read the JSON output and apply additional LLM reasoning to ambiguous PRs (scores 40-60).\n\nOptions:\n\n--count N - Number of PRs to fetch (default: 100)\n--output file.json - Save to file instead of stdout\nStep 3: Report (run after scan)\n\nRun scripts/report.py with the scan JSON. It generates four markdown files:\n\nprioritize.md - PRs scoring 80+ (fast-track for review)\nreview.md - PRs scoring 50-79 (standard queue)\nclose.md - PRs scoring below 50 (likely close or request changes)\nsummary.md - Distribution, top 3, patterns, duplicates, active authors\nScoring Overview\n\nBase score: 50. Key modifiers:\n\nSignal\tPoints\nSecurity fix\t+20\nBug fix with tests\t+10\nCore functionality improvement\t+10\nPerformance (measured)\t+8\nSmall focused diff\t+5\nHas tests\t+5\nSpam/promotion\t-30\nUnwanted dependency\t-25\nLarge diff, no tests\t-15\nNo description\t-5\n\nFull rubric: references/rubric-template.md Example vision doc: references/example-vision.md\n\nRecurring Triage via Cron\n\nSet up a cron job to scan weekly:\n\ndescription: Weekly PR triage for owner/repo\nschedule: \"0 9 * * MON\"\nmodel: anthropic/claude-sonnet-4-20250514\nchannel: telegram\n\n\nCron prompt: \"Run pr-triage scan on https://github.com/owner/repo using ./triage-config/vision.md, generate reports, and send the summary.\"\n\nRequirements\ngh CLI installed and authenticated (gh auth login)\nPython 3.10+\nNo additional Python packages needed (stdlib only)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/patrob/repo-pr-triage",
    "publisherUrl": "https://clawhub.ai/patrob/repo-pr-triage",
    "owner": "patrob",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/repo-pr-triage",
    "downloadUrl": "https://openagent3.xyz/downloads/repo-pr-triage",
    "agentUrl": "https://openagent3.xyz/skills/repo-pr-triage/agent",
    "manifestUrl": "https://openagent3.xyz/skills/repo-pr-triage/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/repo-pr-triage/agent.md"
  }
}