Git审查
- 作者仓库星标 0
- 作者更新于 实时读取
- 作者仓库 clawdbot
- 领域
- AI 智能
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 88 / 100 · 社区维护
- 作者 / 版本 / 许可
- @yimmy23 · 未声明 license
- Token 消耗评级
- 较高消耗
- 接入复杂程度
- 需手动接入
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- Windows · Docker
- 底层运行要求
- Docker
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- Shell 执行
- 网络行为
- 允许外网请求
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: openclaw-pr-maintainer
description: Use immediately for any pasted OpenClaw GitHub issue or PR URL/number, and for OpenClaw issue/PR…
category: AI 智能
runtime: Docker
---
# openclaw-pr-maintainer 输出预览
## PART A: 任务判断
- 适用问题:提示词、Agent 工作流、模型评估或自动化推理。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“Start issue and PR triage with gitcrawl / Claim specific review targets / Surface opener identity”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于提示词、Agent 工作流、模型评估或自动化推理,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“Start issue and PR triage with gitcrawl / Claim specific review targets / Surface opener identity”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、执行终端命令、会按任务需要访问外部网络、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件、执行终端命令;会按任务需要访问外部网络;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文出现了 `/landpr` 这类斜杠命令;如果你的 Agent 支持命令触发,优先用命令开场,再补充目标和边界。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件、执行终端命令。
先用一个小任务确认它会围绕“Start issue and PR triage with gitcrawl / Claim specific review targets / Surface opener identity”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: openclaw-pr-maintainer
description: Use immediately for any pasted OpenClaw GitHub issue or PR URL/number, and for OpenClaw issue/PR…
category: AI 智能
source: yimmy23/clawdbot
---
# openclaw-pr-maintainer
## 什么时候使用
- 用于审阅代码、文档或方案并给出可执行反馈 适合处理AI Agent、提示词、模型评估与自动化推理,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执行、可检查、可继续迭代的步骤;通常不需要…
- 面向提示词、Agent 工作流、模型评估或自动化推理,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「Start issue and PR triage with gitcrawl / Claim specific review targets / Surface opener identity」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件、执行终端命令;会按任务需要访问外部网络;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "openclaw-pr-maintainer" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> Start issue and PR triage with gitcrawl / Claim specific review targets / Surface opener identity
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> Docker | 读取文件、写入/修改文件、执行终端命令 | 会按任务需要访问外部网络
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} OpenClaw PR Maintainer
Use this skill for maintainer-facing GitHub workflow, not for ordinary code changes.
Start issue and PR triage with gitcrawl
- Use
$gitcrawlfirst anytime you inspect OpenClaw issues or PRs. - Check local
gitcrawldata first for related threads, duplicate attempts, and already-landed fixes. - Use
gitcrawlfor candidate discovery and clustering; usegh,gh api, and the current checkout to verify live state before commenting, labeling, closing, or landing. - If
gitcrawlis missing, stale, lacks the target thread, or has no embeddings for neighbor/search commands, fall back to the GitHub search workflow below. - Do not run expensive/update commands such as
gitcrawl sync --include-comments, future enrichment commands, or broad reclustering unless the user asked to update the local store or stale data is blocking the decision.
Common read-only path:
gitcrawl threads openclaw/openclaw --numbers <issue-or-pr-number> --include-closed --json
gitcrawl neighbors openclaw/openclaw --number <issue-or-pr-number> --limit 12 --json
gitcrawl search openclaw/openclaw --query "<scope or title keywords>" --mode hybrid --json
gitcrawl cluster-detail openclaw/openclaw --id <cluster-id> --member-limit 20 --body-chars 280 --json
Claim specific review targets
When a maintainer asks Codex to review, triage, fix, or land a specific OpenClaw issue/PR, check assignment before deep work.
- Identify the requesting maintainer's GitHub login. In this environment, default Peter to
steipete; if another maintainer is clearly the requester, use that maintainer's bare login. - Read current assignees with live
gh issue view/gh pr view;gitcrawlis not enough for assignment state. - If unassigned, assign the requester before deep review. This is allowed for specific requested targets; do not auto-assign broad discovery candidates or shortlists.
- If assigned to someone else, say so clearly before analysis and include assignment age:
- fresh: assigned within 6h; treat as actively owned unless user explicitly asks to continue or reassign
- stale: assigned 6h+ ago; treat as ownership hint, not a hard block; continue only with that caveat
- If assigned to requester plus others, mention co-assignees and continue.
- If assignment event time is unavailable, say
assigned, time unknown; treat as assigned, not stale. - Never remove or replace assignees unless explicitly asked.
Assignment time proof:
gh api "repos/openclaw/openclaw/issues/<number>/timeline" --paginate \
-H "Accept: application/vnd.github+json" \
--jq '[.[] | select(.event=="assigned") | {assignee:.assignee.login, assigner:.assigner.login, actor:.actor.login, created_at}]'
Use the newest assigned event for each current assignee. Issue timeline events expose created_at; GitHub GraphQL AssignedEvent.createdAt is also valid when REST pagination is awkward.
Claim command for issues or PRs:
gh api -X POST "repos/openclaw/openclaw/issues/<number>/assignees" -f 'assignees[]=<login>' >/dev/null
Surface opener identity
- For every reviewed, triaged, closed, or landed issue/PR, show the opener's human name when available, GitHub login, and account age.
- Get the login from
gh issue view/gh pr view(author.login), then fetch profile metadata once withgh api users/<login> --jq '{login,name,created_at,type}'. - Report opener identity as one compact line:
By: Jane Doe (@jane, acct 2021-04-03) | OpenClaw: 4 PRs, 2 issues, 11 commits/12mo | GitHub: 9 repos, 86 commits, 9 PRs, 3 issues, 12 reviews - Always show recent activity in two lanes: OpenClaw-local PRs, issues, and commits in the last 12 months; and general public GitHub activity over the same window. For linked issue-fixing PRs, include both the PR author and issue opener when they differ.
- Prefer the bundled helper for activity lookups:
.agents/skills/openclaw-pr-maintainer/scripts/github-activity.sh <login> [other-login...]
.agents/skills/openclaw-pr-maintainer/scripts/github-activity.sh --global <login>
- The helper reports repo-local activity first and can fetch public GitHub contribution totals for the same window with
--global; run the global form by default for review/triage identity summaries. - If the global contribution graph reports zero or looks inconsistent with visible public activity, sanity-check with
gh api users/<login>,gh api 'users/<login>/events/public?per_page=100', and recent public repo commits before calling the account inactive. - The helper is intentionally cache-friendly for gitcrawl-backed
gh: it rounds repo-local windows to the UTC day, rounds global contribution windows to the UTC hour, and counts PRs/issues from one paginated issues response before fetching commits separately. Prefer reusing the helper instead of hand-rolling severalgh apiloops. - If the contribution graph is misleading or zero but public events/repos show activity, keep it one line, for example:
By: pickaxe (@ProspectOre, acct 2019-08-24) | OpenClaw: 5 PRs, 0 issues, 5 commits/12mo | GitHub: 5 repos, 29 recent events, 100 public own-repo commits; graph=0 - If
nameis empty, use the login only. If profile lookup is rate-limited or unavailable, sayaccount age unknownrather than omitting the opener. - Use identity and activity as triage signal, not proof by itself: new, low-activity, or bot-like accounts can raise review caution, but code, repro, and CI evidence still decide.
Suppress top-maintainer items in issue triage
When asked for issue triage, hot issues, pressing bugs, Discord-correlated issues, or "what is still open", do not surface issues or PRs authored by top maintainers by default. Prefer external/user-reported hot issues and external PRs, not maintainer-owned work queues.
Suppress by default when the opener/author is one of:
@vincentkoc@Takhoffman@gumadeiras@obviyus@shakkernerd@mbelinky@joshavant@ngutman@vignesh07@huntharo
Also suppress lower-priority maintainer-owned noise from the broader keep/top-maintainer group unless it is directly relevant:
@thewilloftheshadow@onutc/@osolmaz@jacobtomlinson@tyler6204@velvet-shark@jalehman@frankekn@ImLukeF@mcaxtr
Exceptions:
- Show maintainer-authored items when the requester explicitly asks for maintainer PRs/issues, PR landing candidates, release-blocking maintainer work, or a specific PR/issue number.
- Show a maintainer-authored item when it is the canonical fix for an external hot issue, but frame it as the fix path rather than as a user-facing issue candidate.
- Do not close, label, or deprioritize solely because an item is maintainer-authored; this section only controls what appears in triage shortlists.
Apply close and triage labels correctly
- If an issue or PR matches an auto-close reason, apply the label and let
.github/workflows/auto-response.ymlhandle the comment/close/lock flow. - Do not manually close plus manually comment for these reasons.
- If an issue/PR is already fixed on current
mainor solved by a new release, comment with proof plus the canonical commit/PR/release, then close it. r:*labels can be used on both issues and PRs.- Current reasons:
r: skillr: supportr: no-ci-prr: too-many-prsr: testflightr: third-party-extensionr: moltbookr: spaminvaliddirtyfor PRs only
Select small high-confidence triage candidates
When asked for X issues or PRs to triage, X means qualified candidates, not sampled threads.
Issue triage is review/prove/patch-local by default:
- Review the issue body, comments, related threads, current code, and adjacent tests.
- Fix only issues that are easy, high-confidence, and narrowly owned by the implicated path.
- Add focused regression proof when practical.
- Stop with the dirty diff, touched files, and test/gate output for maintainer review.
- After maintainer approval to ship, make one commit per accepted fix, with release-note context in the PR body or commit message when user-facing.
- Pull/rebase, push, then comment and close only the issues that were fixed or explicitly triaged closed.
Do not batch unrelated issue fixes into one commit. Do not publish, comment, close, or label during the review/prove phase.
Missing CHANGELOG.md is not a PR review finding or merge blocker. If landing/fixing a user-visible change, make sure the PR body or commit message captures the release-note context; never ask or block solely on it.
Only list candidates that pass all gates:
- small owner/surface, with a likely narrow fix and focused regression test
- symptom is reproducible or provable with logs, failing test, live command, dependency contract, or current-main behavior
- root cause is traceable to code with file/line and the proposed fix touches that path
- no strong smell that a broader refactor, ownership rethink, migration, or product decision is the better fix
- dependency-backed behavior checked against upstream docs/source/types; live or web proof used when local proof is insufficient
Loop:
- Use
gitcrawl/ghto gather candidate clusters. - Read issue/PR body, comments, current code, adjacent tests, and dependency contracts.
- Try focused repro or proof.
- Reject unclear, stale, speculative, broad-refactor, or owner-ambiguous items.
- Continue until
Xqualified candidates or the bounded search is exhausted.
Output only qualifying candidates, with: ref, surface, proof, cause, fix sketch, why small, expected test/gate. If none qualify, say so; do not pad.
Structure PR review output
- Start every PR review with 1-3 plain sentences explaining what the change does and why it matters. Put this before
Findings. - Then list findings first. If none, say
No blocking findingsorNo findings. - Show size near the top as
LOC: +<additions>/-<deletions> (<changedFiles> files), using live PR stats or local diff stats. - Always answer: bug/behavior being fixed, PR/issue URL and affected surface, provenance for regressions when traceable, and best-fix verdict.
- For bug/regression fixes, include a compact
Provenance:line after cause/root-cause when a bounded history pass can identify it. Usegit log -S/-G,git blame, linked PRs/issues, and tests. - Provenance must separate roles when they differ: blamed code author username, blamed PR author username, blamed PR merger/committer username, automerge trigger when known, current PR author username, PR number, and date. Do not collapse them into one "introduced by" actor.
- If the blamed PR was merged by
clawsweeper[bot]or another automation, identify the human trigger when practical. Check live PR timeline/comments first; if rate-limited, use gitcrawl/cache or public PR HTML. Look for maintainer command comments such as@clawsweeper automerge,/landpr, labels/events that armed automerge, and ClawSweeper status comments. Reportautomerge triggered by @login; if not found, say trigger unknown rather than naming the bot as the human decision-maker. - For any confirmed bug, run
git blameon the implicated line(s) after identifying the root cause. Report who broke it as the blamed PR merger/committer, and also name the blamed code author. Include the PR number. If no PR is traceable, use the blamed commit as the provenance: commit SHA, date, and author username. Do not guess a merger or frame missing PR metadata as a separate finding. - Phrase provenance as
introduced by,made visible by, orcarried forward by, with confidence (clear,likely,unknown). If unclear, say what evidence is missing instead of guessing. For features, docs, and refactors, useProvenance: N/Aor omit it when no broken behavior is being fixed. - Keep summaries compact, but include enough proof that the verdict is auditable without rereading the PR.
LOC proof:
gh pr view <number> --json additions,deletions,changedFiles \
--jq '"LOC: +\(.additions)/-\(.deletions) (\(.changedFiles) files)"'
Read beyond the diff
- Review the surrounding code path, not just changed lines. Open the caller, callee, data contracts, adjacent tests, and owner module.
- For large-codebase PRs, sample enough related files to understand the runtime boundary before deciding. Default to more code reading when the change touches agents, gateway, plugins, auth, sessions, process, config, or provider/runtime seams.
- Compare the PR against current
origin/mainbehavior. Check whether recent main already changed the same surface. - Dependency-backed behavior: MUST read upstream docs/source/types before judging API use, defaults, output shapes, errors, timeouts, memory behavior, or compatibility. Do not assume dependency contracts from memory or PR text.
- Judge solution quality, not only correctness. Ask whether the PR is the clean owner-boundary fix or a wart/workaround that should be replaced by a small refactor, moved seam, contract change, or deletion of duplicate logic.
- Mention the main files read when the verdict depends on code-path evidence.
Enforce the bug-fix evidence bar
- Never merge a bug-fix PR based only on issue text, PR text, or AI rationale.
- Whenever feasible, use Crabbox (
$crabbox) for end-to-end verification before commenting that a bug is unreproducible, closing an issue, or opening/landing a fix PR. Prefer a real packaged/Docker/live lane that exercises the reported user flow over unit-only proof. - Before landing, require:
- symptom evidence such as a repro, logs, or a failing test
- a verified root cause in code with file/line
- blame-backed provenance for regressions when traceable, including blamed PR merger and automerge trigger when known, or commit SHA/date when no PR is traceable
- a fix that touches the implicated code path
- a regression test when feasible, or explicit manual verification plus a reason no test was added
- If the claim is unsubstantiated or likely wrong, request evidence or changes instead of merging.
- If the linked issue appears outdated or incorrect, correct triage first. Do not merge a speculative fix.
- If Crabbox/E2E proof is blocked, say exactly why and use the closest available local, Docker, mocked, or targeted proof. Do not present unit tests as real behavior proof.
Close low-signal manual PRs carefully
- Do not close for red CI alone. Require a clear low-signal category plus stale or failed validation.
- Good manual-close categories:
- blank or mostly untouched PR template with no concrete OpenClaw problem/fix
- random docs-only churn such as root README translations, generic wording tweaks, or community-plugin discoverability docs that should go through ClawHub
- test-only coverage without a linked bug, owner request, or behavior change
- refactor-only cleanup, variable renames, formatting, or generated/baseline churn without maintainer request
- third-party channel/provider/tool/skill/plugin work that belongs on ClawHub instead of core
- risky ops/infra drive-bys such as new external CI services, release workflows, host upgrade scripts, Docker base migrations, or apt retry/fix-missing tweaks without owner request and green validation
- dirty branches where a narrow stated change includes unrelated docs/generated/runtime/extension files
- repeated bot-review spam or copied bot output without author-owned fixes
- Keep or escalate plausible focused bug fixes, green PRs, active maintainer discussions, assigned work, recent author follow-up, and unique reproduction details.
- For third-party capabilities, prefer the
r: third-party-extensionauto-response label when it applies; it points contributors to publish on ClawHub.
Handle GitHub text safely
- For issue comments and PR comments, use literal multiline strings or
-F - <<'EOF'for real newlines. Never embed\n. - Do not use
gh issue/pr comment -b "..."when the body contains backticks or shell characters. Prefer a single-quoted heredoc. - Do not wrap issue or PR refs like
#24643in backticks when you want auto-linking. - PR landing comments should include clickable full commit links for landed and source SHAs when present.
Search broadly before deciding
- Prefer
gitcrawlfirst. Then use targeted GitHub keyword search to verify gaps, live status, comments, and candidates not present in the local store. - Use
--repo openclaw/openclawwith--match title,bodyfirst when usinggh search. - Add
--match commentswhen triaging follow-up discussion or closed-as-duplicate chains. - Do not stop at the first 500 results when the task requires a full search.
Examples:
gh search prs --repo openclaw/openclaw --match title,body --limit 50 -- "auto-update"
gh search issues --repo openclaw/openclaw --match title,body --limit 50 -- "auto-update"
gh search issues --repo openclaw/openclaw --match title,body --limit 50 \
--json number,title,state,url,updatedAt -- "auto update" \
--jq '.[] | "\(.number) | \(.state) | \(.title) | \(.url)"'
Follow PR review and landing hygiene
- Never mention release-note bookkeeping in review-only output. It is landing or release-generation mechanics, not a correctness finding.
- If bot review conversations exist on your PR, address them and resolve them yourself once fixed.
- Leave a review conversation unresolved only when reviewer or maintainer judgment is still needed.
- Before landing any PR with non-trivial code changes, run
$autoreviewuntil no accepted/actionable findings remain, unless equivalent manual review already covered it, the change is trivial/docs-only, or the user opts out. - When landing or merging any PR, follow the global
/landprprocess. - Use
scripts/committer "<msg>" <file...>for scoped commits instead of manualgit addandgit commit. - Keep commit messages concise and action-oriented.
- Group related changes; avoid bundling unrelated refactors.
- Use
.github/pull_request_template.mdfor PR submissions and.github/ISSUE_TEMPLATE/for issues. - Do not commit PR-only artifacts such as screenshots under
.github/pr-assets; attach them to the PR/comment or use an external artifact store instead.
Extra safety
- If a close or reopen action would affect more than 5 PRs, ask for explicit confirmation with the exact count and target query first.
syncmeans: if the tree is dirty, commit all changes with a sensible Conventional Commit message, thengit pull --rebase, thengit push. Stop if rebase conflicts cannot be resolved safely.
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核