Skip to main content

mz-feature-flags

Trigger: adding or changing a feature flag, dyncfg, or system parameter default, reviewing a PR that adds one, LaunchDarkly flag setup, or bin/lint-test-flags failures in Materialize.

Source facts

Repository
MaterializeInc/materialize
Last source activity
October 29, 2026 at 12:23
Detected SKILL.md language
English
Stars
6,392
Forks
517

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
mz-feature-flags
description
Trigger: adding or changing a feature flag, dyncfg, or system parameter default, reviewing a PR that adds one, LaunchDarkly flag setup, or bin/lint-test-flags failures in Materialize.
# Feature flags Choosing whether a new feature flag defaults on or off in production is a product decision that needs context an agent rarely has. When adding a flag, ask a human which default to use. When reviewing a PR, do not question the default it chose. However, in tests, a new flag should usually be on, so that sqllogictest and testdrive exercise the new code path. If its production default is off, turn it on for CI in `misc/python/materialize/mzcompose/__init__.py` (`get_minimal_system_parameters` if tests fail with it off, otherwise `get_variable_system_parameters`), which `bin/sqllogictest` and mzcompose's `Materialized` service pass to environmentd as system parameter defaults. Rust integration tests use `TestHarness::with_system_parameter_default`. A value listed there overrides the compiled-in default in CI, so changing a default means changing both. `bin/lint-test-flags` fails unless every new dyncfg is registered for parallel workload and mzcompose (see the mz-debug-ci skill). Any change to a system parameter or dyncfg, including its default or description, needs `bin/gen-system-parameter-catalog` and the regenerated `src/sql/system-parameters.json` in the same commit. A compiled-in default is not evidence of the production value: check whether `test/launchdarkly-flag-consistency/mzcompose.py` lists the flag in `INTENTIONAL_LD_OVERRIDES` or `KNOWN_CROSS_ENV_DIVERGENCES`. A session variable takes a system default only if `SESSION_SYSTEM_VARS` in `src/sql/src/session/vars.rs` lists it. Otherwise `--system-parameter-default` for it only logs a warning at startup. Observed: the LaunchDarkly MCP `create-flag` tool creates boolean flags that serve true in every environment, including production. A human must set each environment's off variation and fallthrough to false.
View on GitHub