Analyze
Analyze is one button that asks the engine what the graph would rather be wired as. It is rules over the graph, offline — not a model. The extension is air-gapped, so it cannot call an LLM; every suggestion is a fact the graph already holds.
Each finding draws its proposed wire on the canvas — solid green, arrowed, its source lit through the trace — and Apply stages it like any hand edit, then moves to the next.
The rules
- read-resource — a row is reading a local that is really the recipe for a resource’s name (or another attribute). It should read the resource, so Terraform can order the dependency. A matching string is not a dependency.
- output-resource — an output is echoing that same recipe. It should read the resource too.
- wire-literal — a literal equals a value its siblings already read from one place. It should read that source.
- output-local — an output is echoing a local no resource reads. Noted, not auto-applied as a guess.
Only a resource’s name makes it the owner of a value. Ambiguity is silence — Analyze does not invent a winner.
Apply
Each suggestion names the row, what it reads now, what it would read, and why. Apply shows the same one-line diff a drag does, then stages. Cancel leaves the file untouched and you can skip to the next finding.
For agents
The same rules are the MCP tool schematiac_analyze. The agent reads the reasons; each suggestion is exactly one schematiac_propose_edit away (remap for a reference, setExpr for a literal). Nothing is written. See MCP server.
SchematIaC Docs