用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/jleechanorg/claude-commands --skill code-review命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Token-efficient second opinion slash command /advice. Extracts decision point + artifact (≤150 lines), then fans out in parallel: (1) Opus subagent reviewer with fallback chain codex→agy→cursor, (2) /research on the decision topic, (3) /secondo multi-model opinion. Use instead of advisor() which ships the full conversation uncached.
Use this skill when working in repositories managed by Agent Orchestrator or when the user asks how to use `ao` properly. Covers the default AO workflow: bootstrap with `ao start`, dispatch work with `ao spawn`, inspect progress with `ao status` or `ao session ls`, steer sessions with `ao send`, and recover or clean up sessions safely. Includes strict parameter fidelity, pre-spawn cap cleanup, quota-wall fallback, and post-spawn verification.
Generate a full agento PR status report — draft readiness, canonical /green, zero-touch rate, inline display, and Slack summary.
基于 SOC 职业分类
正在显示 SKILL.md
| name | code-review |
| description | Guidelines for performing thorough code reviews with security and quality focus |
Use this skill when reviewing code changes, pull requests, or auditing existing code.
When providing review feedback, structure it as:
## Summary
[1-2 sentence overall assessment]
## Critical Issues (Must Fix)
- Issue 1: [description + suggested fix]
- Issue 2: ...
## Suggestions (Nice to Have)
- Suggestion 1: [description]
## Questions
- [Any clarifying questions about intent]
# Bad: SQL injection risk
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# Good: Parameterized query
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
// Bad: XSS risk
element.innerHTML = userInput;
// Good: Safe text content
element.textContent = userInput;
When asked to "review PR #N" and the PR has prior review comments, the head SHA in your context is stale the moment you start reading. PRs are typically green-lit only after several fix-up commits land — and the new head may have introduced new findings, re-introduced old ones, or even fixed them silently. Re-derive state from the live remote every time:
# 1. Get current head and the FULL commit list
gh pr view N --repo OWNER/REPO --json headRefName,headRefOid,commits,statusCheckRollup
# 2. Read the diff against origin/main (NOT against the previously-reviewed head)
gh pr diff N --repo OWNER/REPO
# 3. Pull every review-thread state (resolved/outdated/inline path:line)
gh api -H "Accept: application/vnd.github+json" graphql -f query='
query {
repository(owner:"OWNER", name:"REPO") {
pullRequest(number: N) {
reviewThreads(last: 50) {
nodes { isResolved isOutdated
comments(first:1) { nodes { author { login } path line body createdAt } } }
}
comments(last: 30) { nodes { author { login } createdAt body } }
}
}
}
'
Pitfall A — Bugbot's resolved=True is not ground truth. Bugbot's review-threads API exposes an isResolved flag that auto-flips to true when Bugbot re-runs against a new head without finding a new finding to attach. That does NOT mean the underlying issue was fixed — it can mean "Bugbot didn't have anything new to say". Re-derive the operational behavior from the source at every review. If a prior Hermes review said "this loop early-returns and skips command #2", grep for the early-return on the new head — don't trust the green thread.
Pitfall B — "moved the bug down the stack" regression. A common fix pattern is to replace a return Ok(true) short-circuit with a more thorough check (e.g. health-verify after success). The fix can accidentally preserve the structural bug — the early-return path now fires one layer deeper, where the new check returns false and the same short-circuit kicks in. Detection heuristic: for every Bugbot/P1 finding marked resolved=True, grep the new head for the exact line the prior review flagged and confirm the operational behavior is genuinely different. If the only change is "the early-return is now wrapped in if !health_check { return Ok(false) }", the bug is unchanged.
Pitfall C — Findings posted in the same minute as the prior review. If Bugbot posted new inline findings at T-15s and the prior Hermes review went up at T+10s, the review didn't see them. Always check timestamps of issue-level comments vs. review-thread createdAt before crediting "all known findings addressed". A common pattern is a multi-bot re-review storm at T-2min..T+1min against a freshly-pushed head; the prior human-visible review can lag the bot batch.
CodeRabbit "Review limit reached" auto-comment is noise. The body is a generic fair-use policy template (<!-- rate limited by coderabbit.ai -->), not a finding. Skip it in the review-status table; only surface reviews with substantive bodies.
Don't recommend gh pr merge from inline review. Per ~/.claude/CLAUDE.md "Merge safety", merging a PR requires MERGE APPROVED in the most recent live user message. Code-review verdicts (✅ approve, LGTM) are NEVER merge authorization. Always end with "Pending — needs your PR review + merge to apply".
Don't post a duplicate review when one already exists. Check the PR's issue-level comments for prior Hermes Review — posts. If a prior review exists at an older head, either: (a) post a delta review explicitly scoped to "what changed since OLDHEAD", or (b) ask the user "do you want me to repeat the full review against the new head, or just diff against the prior one?" before posting.
Don't count unit-only evidence as production-grade. Per the env-preferences rule, claims backed only by mocked unit tests are insufficient for production paths that use real external services (LLM, network, docker). Always ask "is there an integration test, or a local-run command, that exercises the real callcall?" before accepting "tests pass" as proof.
Don't fabricate Bugbot's finding body. When Bugbot posts a <!-- BUGBOT_REVIEW --> placeholder without inline diffs (e.g. dark-factory PR #248 cursor[bot] review at 01:10:51Z), the body is unreadable via GitHub API. Say so explicitly and recommend fetching via the Cursor IDE link in the placeholder — never paraphrase what Bugbot "probably meant".
Don't write a substring test for a multi-token contract — assert the full contract (added 2026-07-13, your-project.com PR #8381 CodeRabbit 1st review). When a production probe / diagnostic / config string is a concatenation of N items (e.g. the 7-dep precompute probe fastembed, numpy, google.cloud.storage, jsonschema, pydantic, cachetools, flask), the test that pins the contract MUST assert ALL N items are present — not just the first 6, not a substring of the first item, not a regex on the bare prefix. The verified bug case: my v1 tests for tests/test_precompute_deps_self_hosted.py::TestDeployShProbeNoMvpSiteAgentPrompts asserted only that the substring "fastembed+numpy+google-cloud-storage+jsonschema+pydantic+cachetools" (6 deps) was present in the deploy.sh variable. They passed when the v2 fix introduced the new value via copy-paste (forgetting flask). CodeRabbit caught the real bug — deploy.sh was missing flask even though 's now installed it. The test gap let the copy-paste bug ship.
_EMBED_PROBE_EMBED_PROBE='...6 deps...'_EMBED_PROBEaction.ymlinstall-depsassertIn("a+b+c", contract), write for item in [a, b, c]: assertIn(item, contract). The loop pattern costs 3 lines vs 1 but catches the missing-prefix bug class.EXPECTED_DEPS = ("fastembed", "numpy", "google.cloud.storage", "jsonschema", "pydantic", "cachetools", "flask")). Loop over it. When a future dep is added, the test file changes in one obvious place — not three.Anti-pattern (the one that shipped): assertIn("fastembed+numpy+google-cloud-storage+jsonschema+pydantic+cachetools", probe_value) — passes whether the contract is the 6-dep version OR the 7-dep version. The assertion only proves "the 6-dep prefix is present," which is true for both. This is the same family as the same-name test dismissal anti-pattern — substring matches that survive contract changes are silently-permissive assertions.
Companion: ~/.hermes/skills/qa-test-failure-dismissal-anti-pattern/SKILL.md for the same-name dismissal rules (don't blanket-allow a test that survived a contract change without inspecting the new contract).