Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install open-metadata-openmetadata-skills-code-reviewgit clone https://github.com/open-metadata/OpenMetadata.gitcp OpenMetadata/SKILL.MD ~/.claude/skills/open-metadata-openmetadata-skills-code-review/SKILL.md---
name: code-review
description: Use to review code changes with a two-stage process - first checking spec/requirements compliance, then code quality. Works on staged changes, branches, or PRs.
user-invocable: true
argument-hint: "[branch name, PR number, or file paths]"
---
# Code Review for OpenMetadata
Two-stage review process: requirements compliance first, then code quality.
## When to Use
- Before creating a PR
- Reviewing someone else's PR
- Self-checking your own changes before requesting review
## Usage
```
/code-review # Review uncommitted changes
/code-review feature-branch # Review branch diff against main
/code-review #1234 # Review GitHub PR
/code-review path/to/file.java # Review specific files
```
## Stage 1: Spec Compliance Review
Verify the changes do what they're supposed to do — no more, no less.
### Steps
1. **Understand the goal.** Read the PR description, issue, or ask the user what the change is supposed to accomplish.
2. **Read all changed files.** Use `git diff` to see the full scope:
```bash
git diff main...HEAD # Branch diff
git diff --staged # Staged changes
gh pr diff <number> # PR diff
```
3. **Check completeness against requirements:**
- Does every stated requirement have a corresponding code change?
- Are there missing pieces? (e.g., backend change without migration, API change without UI update)
4. **Check for scope creep:**
- Are there changes unrelated to the stated goal?
- Was code "improved" that didn't need to change?
5. **Check the cross-layer contract:**
- Schema change (`openmetadata-spec/`) + model regeneration (`make generate`)
- Backend API change + frontend API client update
- New entity field + database migration (`bootstrap/sql/`)
- New connection config + `yarn parse-schema` for UI forms
### Report Format (Stage 1)
```
## Spec Compliance: [PASS / FAIL / PARTIAL]
### Requirements Met
- [x] Requirement A — implemented in file.java:42
- [ ] Requirement B — MISSING: no migration for new field
### Scope Issues
- file.java:100-120 — unrelated refactor, consider separate PR
### Cross-Layer Gaps
- Schema updated but `make generate` not run (models out of sync)
```
**If Stage 1 fails, stop here.** Fix compliance issues before reviewing quality.
## Stage 2: Code Quality Review
Now review the implementation quality.
### Checklist
**Architecture:**
- [ ] Follows existing patterns in the module (check similar implementations)
- [ ] No new dependencies that duplicate existing functionality
- [ ] Connector-specific logic stays in connector-specific files (not in shared `builders.py`)
**Java:**
- [ ] No wildcard imports (`import java.util.*`)
- [ ] No unnecessary comments on obvious code
- [ ] `mvn spotless:apply` has been run
- [ ] Integration tests for new API endpoints (in `openmetadata-integration-tests/`)
- [ ] Proper error handling with meaningful messages
**Python:**
- [ ] pytest style (plain `assert`, no `unittest.TestCase`)
- [ ] Type hints on public functions
- [ ] `make py_format && make py_format_check` passes
- [ ] Pydantic 2.x patterns (not v1 compatibility layer)
**TypeScript/React:**
- [ ] No `any` types — use proper types or `unknown` with type guards
- [ ] No MUI imports — use `openmetadata-ui-core-components`
- [ ] Tailwind classes use `tw:` prefix
- [ ] Strings use i18n (`t('label.xxx')`) not string literals
- [ ] CSS custom properties for colors/spacing, no hardcoded values
- [ ] Loading states and error handling with `showErrorToast`/`showSuccessToast`
**Testing (use `/test-enforcement` for full analysis):**
- [ ] 90% line coverage on changed Java classes
- [ ] Integration tests for new/changed API endpoints
- [ ] Jest tests for new/changed React components
- [ ] Playwright E2E tests for new user-facing features
- [ ] Tests verify behavior, not implementation
**Security:**
- [ ] No hardcoded secrets or credentials
- [ ] User input validated at system boundaries
- [ ] No SQL injection vectors (parameterized queries)
- [ ] No XSS vectors in frontend (proper escaping)
### Report Format (Stage 2)
```
## Code Quality: [GOOD / NEEDS WORK / SIGNIFICANT ISSUES]
### Issues (must fix)
- file.java:42 — wildcard import, use specific imports
- Component.tsx:15 — `any` type, use `EntityReference` from generated types
### Suggestions (nice to have)
- connector.py:80 — could use `yield from` instead of loop
### Positive Notes
- Good test coverage for the new endpoint
- Follows existing pagination pattern correctly
```
## Reviewing GitHub PRs
When reviewing a GitHub PR by number:
```bash
# Get PR details
gh pr view <number>
# Get the diff
gh pr diff <number>
# Get review comments
gh api repos/{owner}/{repo}/pulls/<number>/comments
# Check CI status
gh pr checks <number>
```
After review, optionally post findings:
```bash
gh pr review <number> --comment --body "Review findings..."
```