code-review
Use to review code changes with a two-stage process - first checking spec/requirements…
Run the exact ESLint + Prettier + organize-imports sequence that CI's `UI Checkstyle` workflow runs — on just the files the PR changed — and fail the task if any file ends up with a diff. Invoke after authoring or modifying any `.ts`, `.tsx`, `.js`, `.jsx`, or `.json` file under
$ npx -y skills add open-metadata/OpenMetadata --skill ui-checkstyle --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ui-checkstyleContext preview
The summary Claude sees to decide when to auto-load this skill.
Run the exact ESLint + Prettier + organize-imports sequence that CI's `UI Checkstyle` workflow runs — on just the files the PR changed — and fail the task if any file ends up with a diff. Invoke after authoring or modifying any `.ts`, `.tsx`, `.js`, `.jsx`, or `.json` file under
name: ui-checkstyle description: Run the exact ESLint + Prettier + organize-imports sequence that CI's `UI Checkstyle` workflow runs — on just the files the PR changed — and fail the task if any file ends up with a diff. Invoke after authoring or modifying any `.ts`, `.tsx`, `.js`, `.jsx`, or `.json` file under `openmetadata-ui/src/main/resources/ui/src/`, `.../playwright/`, or `openmetadata-ui-core-components/src/main/resources/ui/src/`, or when CI reports a "UI Checkstyle" failure on the PR. user-invocable: true argument-hint: "[--src] [--playwright] [--core-components] [--all] [--check]" allowed-tools: - Bash - Read - Grep - Glob
The `UI Checkstyle` GitHub workflow (`.github/workflows/ui-checkstyle.yml`) runs a **single `checkstyle` job** (after `check-changes` + `authorize` gates) whose steps gate **six** checks, each on only the files the PR changed:
1. ESLint + Prettier + organize-imports on **src** (`openmetadata-ui/src/main/resources/ui/src/...`) 2. **Licence header** check 3. **i18n sync** (`yarn i18n` produces no diff) 4. **app-docs** (`yarn generate:app-docs` produces no diff) 5. ESLint + Prettier + organize-imports on **playwright** (`.../ui/playwright/...`) 6. ESLint + Prettier on **core-components** (`openmetadata-ui-core-components/src/main/resources/ui/src/...`)
Any failing step fails the required **`ui-checkstyle`** status check. Each lint step reformats the changed files and fails if the reformat produces a diff — i.e. the committed tree must already be formatted. This skill runs the same sequence locally so CI never has to ask.
> Note: there is **one** `checkstyle` job with the steps above, not three > separate `lint-src`/`lint-playwright`/`lint-core-components` jobs — those names > are the internal step ids, and the workflow also gates licence/i18n/app-docs.
eslint", "fix the UI format", "apply UI format", or similar.
check and the modified files).
`.json` under the three UI trees — before opening a PR or pushing a commit that touches UI.
files are still dirty, without writing. Useful before push.
If invoked with no flag, auto-detect the affected areas from `git diff --name-only origin/main...HEAD` and run only those.
For each area you are running against:
# from the repo root
git diff --name-only origin/main...HEAD -- \
'openmetadata-ui/src/main/resources/ui/src/**/*.{ts,tsx,js,jsx,json}' \
| sed 's|openmetadata-ui/src/main/resources/ui/||' > /tmp/src_files.txt
git diff --name-only origin/main...HEAD -- \
'openmetadata-ui/src/main/resources/ui/playwright/**/*.{ts,tsx,js,jsx}' \
| sed 's|openmetadata-ui/src/main/resources/ui/||' > /tmp/pw_files.txt
git diff --name-only origin/main...HEAD -- \
'openmetadata-ui-core-components/**/*.{ts,tsx,js,jsx,json}' \
| sed 's|openmetadata-ui-core-components/src/main/resources/ui/||' \
> /tmp/core_files.txtSkip any list that is empty — that area has no changes so the CI check for it wouldn't run anyway.
From the corresponding working directory:
cd openmetadata-ui/src/main/resources/ui # or .../openmetadata-ui-core-components/src/main/resources/ui
# 1) imports first — organize-imports-cli only exists for the ui module
cat /tmp/src_files.txt | xargs ./node_modules/.bin/organize-imports-cli
# 2) eslint --fix (same flags CI uses)
NODE_OPTIONS='--max-old-space-size=8192' cat /tmp/src_files.txt \
| xargs ./node_modules/.bin/eslint --no-error-on-unmatched-pattern --fix
# 3) prettier --write — this MUST run after organize-imports because
# organize-imports uses 4-space indentation / drops trailing commas,
# and prettier then puts them back to the repo's 2-space + trailing-comma
# style. Running them in the other order leaves a dirty diff.
cat /tmp/src_files.txt \
| xargs ./node_modules/.bin/prettier \
--config './.prettierrc.yaml' --ignore-path './.prettierignore' \
--writeFor playwright, use the same three commands on `/tmp/pw_files.txt`. For core-components, the organize-imports step is skipped (no CLI there) — just eslint + prettier.
cd <repo root> git status --short # should list only .ts/.tsx/.js/.jsx/.json files git diff --stat
If `git status --short` is empty, the tree is already clean — tell the user and stop.
Do not fold the reformat into an unrelated commit. If the user asked you to commit, follow their preference (fold into the in-progress commit, or make a separate one). Otherwise, when you are confident the change is a purely mechanical formatting reformat, you may commit it on its own as a `Fix UI checkstyle` commit — this matches the repo's existing history for bot-triggered formatting-only commits. If you are unsure whether the diff is purely mechanical, do NOT auto-commit: surface the changed-file list and let the user decide.
`git status --short` is empty. Revert any writes before exiting so the user's working tree isn't touched.
surface them — they need a real code change, not a format pass. Warnings (e.g. `playwright/no-wait-for-selector`) don't fail CI and can be left.
The Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and agents.
Repo: open-metadata/OpenMetadata
Use to review code changes with a two-stage process - first checking spec/requirements…
Deep reliability audit for OpenMetadata connectors — runs 7 investigation prompts (metadata,…
Build a new OpenMetadata connector from scratch — scaffold JSON Schema, Python boilerplate,…
Review an OpenMetadata connector against golden standards. Runs multi-agent analysis covering…
Load all OpenMetadata connector development standards into context. Use before building or…
Set up, verify, or repair a local OpenMetadata development environment on macOS or Linux.…