You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full-featured IDE support for SaltStack.sls formula files — the YAML + Jinja2 hybrid format used for Salt states, pillars, top files, reactors, and orchestration. Works in IntelliJ IDEA, PyCharm, and all other JetBrains IDEs based on the IntelliJ Platform.
Codebase reports
Covered / Coverable lines: 6k / 8k
Files above coverage goal: 172
Files below coverage goal: 105
Features
Smart Completion
State functions — suggests module.function entries (e.g. pkg.installed, file.managed, service.running) based on Salt metadata. Filters by prefix as you type.
Arguments — inside a state function block, suggests valid arguments for the specific function along with global state arguments (onlyif, unless, order, listen, etc.). Already-used keys are deprioritized.
Requisites — suggests requisite keywords (require, watch, onchanges, onfail, etc.) including reverse forms (require_in, watch_in, etc.) and _any variants. Completes module names and state IDs inside requisite lists.
Smart Enter — pressing Enter inside a - key: value argument block automatically continues with - at the correct indentation.
Jinja2 import paths — path completion for import_yaml / import_json / import_text tags and {% include %} / {% extends %} template paths.
Validation and Diagnostics
State ID checks — detects empty IDs, reserved prefixes, trailing whitespace, and naming convention violations.
Duplicate state IDs — highlights duplicate top-level state IDs within a single file. Jinja2-templated IDs ({{ id }}) are safely skipped.
Unknown state functions — warns when a module.function key does not match known Salt metadata.
Unknown arguments — warns on unrecognized arguments in a state function call. Global args and requisites are never flagged.
Requisite structure — checks requisite list shape, item format, and resolves referenced state IDs within the file.
Global args — validates onlyif, unless, creates, order, and other global state arguments.
Directives — validates include, extend, and exclude blocks for correct structure and resolvable targets.
Top file validation — checks matcher syntax (glob, grain, pillar, compound, etc.) and validates the environment field structure.
Reactor and Orchestrate — validates reactor event declarations and orchestration step structure.
Duplicate key false positives suppressed — the standard YAML "Duplicated keys" inspection is automatically silenced for keys separated by {% if %}/{% else %} blocks — a valid and common Salt pattern.
Navigation (Ctrl+Click)
Go to state declaration — click on a requisite state ID to jump to its declaration.
Go to included file — click on an include entry to open the target .sls file. Falls back to init.sls when resolving package-style paths (e.g. nginx.config -> nginx/config/init.sls).
salt:// URL navigation — click on salt:// paths to open the referenced file relative to the configured state roots.
Pillar target navigation — click on targets in pillar top files to jump to the corresponding pillar data files.
Jinja2 import navigation — click on import_yaml / import_json / import_text paths to open the imported file.
Jinja2 alias navigation — click on an alias defined via import_yaml ... as config or {% import ... as X %} to jump to the import binding declaration.
Find Usages and Rename refactoring are supported for all reference types above.
Quick Documentation (Ctrl+Q)
Hover or press Ctrl+Q on a state function to see its description, supported arguments, and types.
Documentation is also available for individual function arguments, requisite keywords, and global state arguments.
Top file, pillar, and Saltfile elements have documentation popups as well.
When the Jinja2 Enhanced plugin is active, Jinja2 variables (grains, pillar, opts, etc.) and filters show Salt-specific documentation.
Syntax Highlighting
Full YAML highlighting inside state and pillar files.
Distinct colors for Jinja2 expressions ({{ }}), statements ({% %}), and comments ({# #}).
Customizable via Settings -> Editor -> Color Scheme -> SaltStack.
Editor Helpers
Smart Jinja2 delimiter closing — typing {{, {%, or {# automatically inserts the matching closing delimiter.
Multi-language commenter — Ctrl+/ inserts # comments in YAML regions and {# #} block comments inside Jinja2 regions.
Import snippet inlay hints — import_yaml / import_json statements render the imported data structure as inlay hints directly on the import line.
Spellcheck suppression — spellcheck is automatically disabled inside Jinja2 expressions and statements.
File Role Detection
Automatically classifies each .sls file as State, Pillar, Top, Reactor, or Orchestrate based on filename, directory structure, and configured roots.
Distinct file icons for each role — visible in the project tree and editor tabs.
Saltfile (Salt CLI config) is detected and highlighted separately.
Render mode (yaml, jinja|yaml, py) is detected from the shebang line and applied per file.
Project Configuration
Mark directories as State Root, Pillar Root, Master Root, or Module Dirs via right-click -> Mark Directory As. This drives file role detection, path completion, and reference resolution.
Configure the target Salt version for metadata matching.
Configure a remote metadata URL and cache TTL for up-to-date module and function metadata (falls back to bundled resources when unavailable).
Per-domain feature flags — enable or disable IDE features for individual Salt domains (state, pillar, top, reactor, orchestrate) independently.
All settings are project-scoped — different projects can use different configurations.
Jinja2 Integration
When the Jinja2 Enhanced plugin is installed, the following additional features become available:
Full Jinja2 PSI inside Salt files — syntax checks, variable resolution, filter completion.
SaltStack plugin for JetBrains IDEs with extended Jinja2 support, designed to provide syntax highlighting, validation, navigation, and developer tooling for Salt states, pillars, and templates.