review-verification-protocol
Mandatory verification steps for all code reviews to reduce false positives. Load this skill before reporting ANY code review findings.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/anderskev/review-verification-protocolReview Verification Protocol
This protocol MUST be followed before reporting any code review finding. Skipping these steps leads to false positives that waste developer time and erode trust in reviews.
Pre-Report Verification Checklist
Before flagging ANY issue, verify:
- I read the actual code - Not just the diff context, but the full function/impl block
- I searched for usages - Before claiming "unused", searched all references
- I checked surrounding code - The issue may be handled elsewhere (trait impls, error propagation)
- I verified syntax against current docs - Rust edition, crate versions, and API changes
- I distinguished "wrong" from "different style" - Both approaches may be valid
- I considered intentional design - Checked comments, CLAUDE.md, architectural context
Verification by Issue Type
"Unused Variable/Function"
Before flagging, you MUST:
- Search for ALL references in the codebase (grep/find)
- Check if it's
puband used by other crates in the workspace - Check if it's used via derive macros, trait implementations, or conditional compilation (
#[cfg]) - Verify it's not a trait method required by the trait definition
Common false positives:
- Trait implementations where the method is defined by the trait
#[cfg(test)]items only used in test builds- Derive-generated code that uses struct fields
- Types used via
From/Intoconversions
"Missing Error Handling"
Before flagging, you MUST:
- Check if the error is handled at a higher level (caller propagates with
?) - Check if the crate has a top-level error type that wraps this error
- Verify the
unwrap()isn't in test code or after a safety-ensuring check
Common false positives:
unwrap()in tests and examples (expected pattern)expect("reason")after validation (e.g.,regex::Regex::newon a literal)- Error propagation via
?(the caller handles it) let _ = tx.send(...)— intentional when receiver may have dropped
"Unnecessary Clone"
Before flagging, you MUST:
- Confirm the clone is actually avoidable (borrow checker may require it)
- Check if the value needs to be moved into a closure/thread/task
- Verify the type isn't
Copy(clone on Copy types is a no-op) - Check if the clone is in a hot path (test/setup code cloning is fine)
Common false positives:
Arc::clone(&arc)— this is the recommended explicit clone for Arc- Clone before
tokio::spawn— required for'staticbound - Clone in test setup — clarity over performance
"Potential Race Condition"
Before flagging, you MUST:
- Verify the data is actually shared across threads/tasks
- Check if
Mutex,RwLock, or atomic operations protect the access - Confirm the type doesn't already guarantee thread safety (e.g.,
Arc<Mutex<T>>) - Check if the "race" is actually benign (e.g., logging, metrics)
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-anderskev-review-verification-protocol": {
"enabled": true,
"auto_update": true
}
}
}Related Skills
explanation-docs
Explanation documentation patterns for understanding-oriented content - conceptual guides that explain why things work the way they do
tutorial-docs
Tutorial patterns for documentation - learning-oriented guides that teach through guided doing
pytest-code-review
Reviews pytest test code for async patterns, fixtures, parametrize, and mocking. Use when reviewing test_*.py files, checking async test functions, fixture usage, or mock patterns.
reference-docs
Reference documentation patterns for API and symbol documentation. Use when writing reference docs, API docs, parameter tables, or technical specifications. Triggers on reference docs, API reference, function reference, parameters table, symbol documentation.
serde-code-review
Reviews serde serialization code for derive patterns, enum representations, custom implementations, and common serialization bugs. Use when reviewing Rust code that uses serde, serde_json, toml, or any serde-based serialization format. Covers attribute macros, field renaming, and format-specific pitfalls.