code-review
Use to review code changes with a two-stage process - first checking spec/requirements…
Set up, verify, or repair a local OpenMetadata development environment on macOS or Linux. Installs the toolchain (Java 21, Maven, Node 22, Yarn 1.x, Python 3.10+, ANTLR 4.9.2, Docker), creates the Python venv, generates models, installs UI dependencies and pre-commit hooks. Use
$ npx -y skills add open-metadata/OpenMetadata --skill dev-setup --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/dev-setupContext preview
The summary Claude sees to decide when to auto-load this skill.
Set up, verify, or repair a local OpenMetadata development environment on macOS or Linux. Installs the toolchain (Java 21, Maven, Node 22, Yarn 1.x, Python 3.10+, ANTLR 4.9.2, Docker), creates the Python venv, generates models, installs UI dependencies and pre-commit hooks. Use
name: dev-setup description: Set up, verify, or repair a local OpenMetadata development environment on macOS or Linux. Installs the toolchain (Java 21, Maven, Node 22, Yarn 1.x, Python 3.10+, ANTLR 4.9.2, Docker), creates the Python venv, generates models, installs UI dependencies and pre-commit hooks. Use for a fresh clone, a new worktree, onboarding, or when a build fails with a missing/wrong tool. user-invocable: true argument-hint: "[--check] [--slim] [--with-build] [--with-docker] [-y]" allowed-tools: - Bash - Read - Glob - Grep
Bring a checkout from "just cloned" to "can build the backend, the UI, and the ingestion framework" with one call.
`class file has wrong version`, `Unsupported engine … node`, `ModuleNotFoundError: metadata.generated`
./scripts/dev_setup.sh # or: make dev_setup
Everything is idempotent — re-running skips what is already correct. Useful flags (pass through the Makefile as `make dev_setup ARGS="--slim -y"`):
| Flag | Effect | |---|---| | `--check` | Diagnose only, change nothing. Returns nonzero when issues are found. **Always start here** on an existing checkout. | | `--slim` | Install `ingestion[dev]` instead of `[all-dev-env]`. Minutes instead of tens of minutes; omits most connector deps. Right choice unless the work touches a specific connector. | | `-y` | Non-interactive (assumes yes for Homebrew/nvm/Docker prompts). | | `--with-build` | Also runs `mvn clean install -DskipTests -T 1C`. | | `--with-docker` | Also starts `docker/development/docker-compose.yml`. | | `--skip-tools` | Verify system packages instead of installing them (no sudo/brew writes). | | `--skip-python` / `--skip-ui` / `--skip-generate` / `--skip-precommit` | Skip that phase. | | `--python <bin>` | Force the interpreter the venv is built from. |
./scripts/dev_setup.sh --check
Read the warnings. They name the exact missing piece; do not install anything the check reports as already present.
downloads every connector's dependencies.
The script writes `.dev-env.local.sh` (gitignored) at the repo root:
source .dev-env.local.sh
It exports `JAVA_HOME`, puts `~/.local/bin` (the ANTLR CLI) and the right Node on `PATH`, and activates the venv. Tell the user to source it in each new shell, or add it to their shell rc.
Do not claim success without output. Minimum bar:
source .dev-env.local.sh make prerequisites # all ✓ python -c "import metadata.generated.schema.entity.data.table" # models generated mvn -q -pl openmetadata-spec install -DskipTests # backend toolchain cd openmetadata-ui/src/main/resources/ui && yarn tsc --noEmit --version # UI deps
1. Detects platform → `brew` / `apt` / `dnf` / `yum` / `pacman` / `zypper`. 2. Installs the build toolchain plus the headers the ingestion wheels compile against (libffi, openssl, sasl/gssapi, krb5, libpq, librdkafka, unixodbc, libxml2/xslt). 3. Ensures Java 21, Maven ≥ 3.6, Node 22, Yarn 1.x, Python ≥ 3.10, ANTLR 4.9.2, Docker. 4. Creates `env/`, then runs the CLAUDE.md bootstrap sequence: `make install_dev_env` → `make generate` → `make yarn_install_cache` → `make install_test precommit_install` → `make prerequisites`. 5. Writes `.dev-env.local.sh` and, when mise is active, a gitignored `.mise.local.toml` so mise's shell hook does not restore incompatible global Java/Node versions.
This usually means Maven is running on a newer JDK even though Java 21 is installed. Run the setup again and source `.dev-env.local.sh`; the generated environment places `$JAVA_HOME/bin` first on `PATH`. When mise is installed, setup also writes `.mise.local.toml`, preventing mise's prompt hook from immediately restoring a newer global JDK.
**`make prerequisites` fails on macOS with "declare -A is not supported"** `scripts/check_prerequisites.sh` needs bash ≥ 4; macOS ships 3.2. `brew install bash` (the setup script does this and then runs the check through the brew bash).
**`java: command not found` after installing on macOS** Homebrew's `openjdk@21` is keg-only — never symlinked onto `PATH`. Use `export JAVA_HOME="$(brew --prefix openjdk@21)/libexec/openjdk.jdk/Contents/Home"` and put `$JAVA_HOME/bin` first. `.dev-env.local.sh` already does this.
**`antlr4: command not found`, or generated parsers are rejected at runtime** The ANTLR CLI must be exactly **4.9.2** — it has to match the pinned `antlr4-python3-runtime` and the JS runtime. A distro `antlr4` of any other version produces parsers those runtimes reject. Fix: `make install_antlr_cli ANTLR_INSTALL_DIR="$HOME/.local/bin"` (checksum-pinned, no sudo).
**`make generate` fails or silently produces nothing** It must run inside the venv (`source env/bin/activate`) and only from the **repo root** — it is a root-only target and does not exist under `ingestion/`. It wipes and rebuilds `ingestion/src/metadata/generated`, so a partial run leaves an unimportable tree; re-run it rather than hand-patching.
**Node is not version 22** Some distro releases provide Node 18/20 while rolling installations may already h
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…
Run `mvn spotless:apply` to fix Java checkstyle / formatting failures and verify the result.…