pr-review
Comprehensive PR review for oc (OpenShift CLI). Runs build, tests, and linting, then applies Go style improvements and provides detailed code review feedback.
When & Why to Use This Skill
This Claude skill automates the pull request review process for the OpenShift CLI (oc) repository. It streamlines development workflows by performing comprehensive build verification, dependency checks, and automated testing. By enforcing Effective Go principles and project-specific conventions, it ensures high code quality, maintains kubectl compatibility, and provides actionable feedback on performance, security, and documentation.
Use Cases
- Automated PR Validation: Automatically execute build, test, and linting suites to verify code stability and prevent regressions before human intervention.
- Go Style Enforcement: Ensure all code contributions adhere to Effective Go standards, proper naming conventions, and idiomatic patterns automatically.
- Compatibility & Breaking Change Detection: Identify potential API breaks or CLI flag changes to maintain backwards compatibility with OpenShift and upstream kubectl.
- Resource Leak & Concurrency Analysis: Scan for complex Go-specific issues such as goroutine leaks, missing context handling, and improper synchronization in new changes.
| name | PR Review |
|---|---|
| description | "Comprehensive PR review for oc (OpenShift CLI). Runs build, tests, and linting, then applies Go style improvements and provides detailed code review feedback." |
PR Review
Perform a comprehensive review of pull requests for the oc repository, which is a CLI tool based on kubectl that provides kubectl commands plus OpenShift-specific functionality.
When to Apply
Use this skill when:
- Reviewing a pull request
- User asks to review code changes
- User requests
/pr-reviewor similar commands
Review Process
Follow these steps in order:
1. Dependencies Verification
Ensure Go dependencies are consistent by running:
go mod tidy -diff- This command ensures that
go.modandgo.sumare consistent and match the source code in the module.
- This command ensures that
2. Build Verification
Run the build to ensure code compiles:
make oc
- If build fails, report errors and stop the review
- If build succeeds, proceed to testing
- Note: Use
make ocinstead ofmake buildto avoid building for all architectures (faster)
3. Code Verification
Run verification checks to catch style and potential issues:
make verify
This runs multiple verification targets including:
verify-gofmt- Go formatting checksverify-golint- Linting checksverify-govet- Go vet checksverify-cli-conventions- CLI-specific conventionsverify-generated-completions- Generated code verificationReport any verification errors or warnings
Note any patterns that need addressing
4. Test Execution
Run the test suite to verify functionality:
make test
- Report any test failures with details
- If critical tests fail, flag for immediate attention
- Proceed even if some tests fail (document them)
- Known Issue: Test failure in
github.com/openshift/oc/pkg/cli(kubeconfig error) can be ignored
5. Code Review & Go Style Application
After running the above checks, review the changed code and apply Go best practices. Start by:
- Load changes against the base branch by using
git diff. The base branch ismainby default, but it can be overwritten by[base-git-branch]argument when this skill is invoked usingpr-reviewcommand directly. - Understand the scope of the changes.
Then proceed to review. Follow these steps:
Effective Go Principles: Apply the Effective Go skill automatically
- Use
gofmtfor formatting - Follow Go naming conventions (MixedCaps/mixedCaps, no underscores)
- Ensure proper error handling (no ignored errors)
- Check for idiomatic Go patterns
- Use
oc-Specific Considerations:
- Ensure kubectl compatibility is maintained
- Verify OpenShift-specific commands follow existing patterns
- Check that CLI output follows consistent formatting
- Validate flag definitions match kubectl conventions where applicable
Breaking Changes:
- Ensure that the command line API is backwards-compatible
- Check for CLI flag removals or renames
- Check for changes in command line arguments
- Ensure that the command line API is backwards-compatible
Code Quality:
- Look for potential race conditions
- Check for resource leaks (unclosed files, connections, goroutine leaks)
- Goroutine leak patterns to watch:
- Goroutines without context cancellation handling
- Missing
selectwithctx.Done()case - Unbounded channel operations without timeouts
go func()without proper lifecycle management- Use
errgrouporsync.WaitGroupfor coordinated goroutines
- Goroutine leak patterns to watch:
- Verify proper context propagation
- Ensure appropriate logging levels
Documentation:
- All exported functions/types should have doc comments
- CLI command help text should be clear and complete
- Complex logic should have explanatory comments
6. Apply Fixes
Based on the review:
- Fix any linting issues automatically where safe
- Apply
gofmtandgoimportsformatting - Suggest or implement idiomatic Go improvements
- Document any issues that require manual review
7. Summary
Provide a structured summary:
- ✅ Build status
- ✅ Test results (pass/fail counts)
- ✅ Linting status
- 📝 Code quality observations
- 🔧 Changes applied (if any)
- ⚠️ Issues requiring attention
Key Checks for oc
Since oc is built on kubectl:
- Verify upstream kubectl compatibility
- Check for proper use of kubectl libraries
- Ensure OpenShift-specific features are clearly separated
- Validate that CLI behavior matches kubectl conventions