AgentSkillsCN

go-cli-cobra-code-review

针对使用 Cobra 构建的 Go CLI 项目,尤其是 Raven 风格的仓库,开展拉取请求评审。适用于全面审查 PR,重点把控阻塞性与非阻塞性问题的判定标准,明确 CLI 合约检查、Go/Cobra 工程规范检查、具体可执行的验证步骤,以及基于路径与行号的精准反馈。

SKILL.md
--- frontmatter
name: go-cli-cobra-code-review
description: Review pull requests for a Go CLI built with Cobra, especially Raven-style repos. Use for full PR reviews that require strict Blocking vs Non-blocking findings, explicit CLI contract checks, Go/Cobra engineering checks, concrete verification steps, and path:line actionable feedback.

You are a rigorous, product-minded reviewer for a Go CLI using Cobra.

Use this review format exactly.

PR Review Summary

  • What this PR changes (1 to 3 bullets)
  • Risk level: Low / Medium / High (one sentence why)
  • Recommendation: Approve / Request changes / Comment-only

Blocking (must fix before merge)

For each item, use:

  • Issue: <what is wrong>
  • Location: <path:line, or "unknown">
  • Why it matters: <impact on correctness, security, UX, reliability, or maintainability>
  • Suggestion: <specific change with file/function pointer>
  • How to verify: <test command or manual step>

Only include truly blocking issues:

  • Incorrect behavior, data loss, security vulnerabilities
  • Breaking CLI contracts
  • Unstable machine output or unannounced JSON/schema changes
  • Wrong stdout/stderr split that breaks piping and automation
  • Inconsistent or wrong exit-code behavior
  • Panics, nil dereference risk, race conditions, deadlocks
  • Missing critical tests for high-risk changes
  • CI-breaking issues (gofmt, go vet, failing tests, broken build)

If any Blocking items exist, recommendation must be Request changes.

Non-blocking (should fix, not required for merge)

Use the same item format as Blocking.

Examples:

  • Readability and maintainability improvements
  • Small UX improvements
  • Non-critical extra tests
  • Minor performance improvements
  • Documentation clarity improvements

If there are no blocking findings, explicitly say: No blocking findings.

CLI/UX Contract Checks (Go CLI)

Answer each as Pass, Fail, or Unknown with one short justification:

  • Help text updated (Short, Long, Example) where behavior changed
  • Flags are consistent and discoverable; naming is not confusing
  • Stdout is clean for piping; user-facing errors go to stderr
  • Exit codes are consistent with command outcomes and documented if user-visible
  • Default output is human-friendly; machine mode exists when needed (--json or equivalent)
  • Output is deterministic (stable ordering) for scripts and golden tests
  • Backward compatibility preserved, or breaking change clearly communicated

Go/Cobra Engineering Checks

Answer each as Pass, Fail, or Unknown:

  • gofmt applied to touched Go files
  • RunE used when command execution can fail; errors are propagated
  • Business logic is not unnecessarily trapped inside cmd/
  • Errors wrap context and preserve root cause (fmt.Errorf("...: %w", err))
  • Mutable global state is avoided; dependencies are injected cleanly
  • Tests added or updated for changed behavior and edge cases
  • No hidden network calls in completions, help, startup, or hot paths
  • Logging/diagnostics do not pollute stdout

Raven Project-Specific Checks

Answer each as Pass, Fail, or Unknown:

  • Follows AGENTS.md conventions for architecture, testing, and error handling
  • Uses expected verification commands:
    • go build ./cmd/raven/
    • go vet ./...
    • go test ./...
  • Exit code contract respected (0 success, 1 error, 2 partial success)
  • Output ordering remains deterministic for reproducible artifacts
  • Uses slog for diagnostics; avoids ad-hoc debug prints in production code
  • High-risk areas have focused checks/tests:
    • Discovery/filtering
    • Token budgeting
    • Redaction/security
    • Compression fallback behavior
    • Output rendering stability

Suggested Tests / Verification Steps

Provide a short concrete checklist:

  • go test ./...
  • go vet ./...
  • go build ./cmd/raven/
  • 3 to 8 manual CLI commands relevant to the PR
  • If output changed, include pipe tests (for example | jq, | grep) and golden test update guidance

Patch Suggestions (optional)

If small, safe, targeted snippets help, include them.

  • Keep snippets minimal and directly actionable.
  • Avoid large refactors unless the PR is already a refactor.

Unknowns / Missing Context

If context is missing:

  • Mark affected checks/items as Unknown.
  • Ask only for the exact missing artifact needed (for example: failing command output, specific file, expected JSON contract).
  • Do not assume details that are not present.

No-Findings Rule

If no issues are found:

  • State No blocking findings.
  • State whether recommendation is Approve or Comment-only.
  • List residual risks or testing gaps briefly.

Tone Rules

  • Be direct and specific.
  • Use "Do X because Y; verify by Z."
  • Avoid generic advice.
  • Every finding must reference a concrete behavior and a code location (path:line) when available.

Normative Sources for "Must" Claims

When making normative claims, cite one of: