platform-development

Guides changes to Terraform modules, E2E test tiers, and CI gating for Helm chart deployments.

3|Updated May 1, 2026
One-click install
npx skills add https://github.com/MaterializeInc/materialize-monitoring --skill platform-development-materializeinc
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: platform-development
Source: https://github.com/MaterializeInc/materialize-monitoring/tree/main/.claude/skills/platform-development
Command: npx skills add https://github.com/MaterializeInc/materialize-monitoring --skill platform-development-materializeinc

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Changing the Terraform module or E2E tests for the Materialize monitoring stack without understanding how the module couples to the Helm chart produces silently-wrong-but-valid configuration that passes terraform validate yet is ignored by the chart. ## Core Features & Use Cases - Module-chart coupling rules: Explains why consumer-side fan-outs (scheduling, storage class, Azure identity labels, Alloy config hash) exist because Helm cannot template subchart values from the parent chart. - Test tier guidance: Details what each tier proves — make terraform-check (no cluster), tier 1 (kind logging round trip), tier 2 (real object storage, Postgres, Thanos) — and how the tiers collide on shared CRD release names. - Gotcha catalog: Documents HCL pitfalls like yamlencode quoting keys, yamldecode promoting dates, count requiring plan-time-known values, and stale pinned refs masking variable validation. - Use Case: When adding a new module variable, use this Skill to add a render assertion in bin/terraform-render-check.sh proving the value lands in a path the chart actually reads. ## Quick Start Use the platform-development skill to add a new input variable to the Terraform module and verify it renders into the chart values.

Frequently Asked Questions about platform-development

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test Terraform module changes without a cloud account?

Run `make terraform-check`, which plans each example, extracts composed Helm values from the plan, and renders the chart against them with no cluster. Most plan-time failures also reproduce by instantiating the module from a scratch directory with dummy required inputs, since validation and count expansion happen before provider calls.

Why does terraform validate pass but my variable is ignored?

A value written to a path no subchart reads is still valid HCL and renders perfectly while being silently ignored. Add an assertion to `bin/terraform-render-check.sh` that confirms the value lands in a path the chart actually reads.

Why does Terraform fail with Invalid count argument?

Terraform expands `count` before it knows values computed in the same apply, such as a generated password from a wrapper-provisioned database. Gate resource existence on a plan-time-known input instead, inferring from the value only when it is null.

Can I iterate on the chart and module without cutting a release?

Yes. Point the downstream wrapper's module `source` at a relative path to your checkout and set `chart_registry` to the local `charts/` directory. The path must stay relative because an absolute path is copied into `.terraform/modules/` without the chart directory beside it.

Why do E2E tier 1 and tier 2 fail when run on the same kind cluster?

Both tiers name their CRDs release `mzmon-crds`, so a tier-2 apply onto a tier-1 cluster fails on the first release it creates. Run `make e2e-tier1-down` first, which uninstalls the main release before the CRDs so finalizers are removed cleanly.