Skip to content

Validation and editor support

Terminal window
slipway validate # every .slipway/*.yaml under the working directory
slipway validate .slipway/api.yaml # one file
slipway validate --json # machine-readable

Validation runs locally and needs no server connection. It checks the JSON Schema and the semantic rules below. Run it in a pre-commit hook or as the first job in CI.

The schema is published at https://slipway.systems/schema/pipeline-v1.json. Add a modeline at the top of the file for the YAML language server (VS Code, Neovim, JetBrains):

# yaml-language-server: $schema=https://slipway.systems/schema/pipeline-v1.json

Or map it in VS Code settings:

{
"yaml.schemas": {
"https://slipway.systems/schema/pipeline-v1.json": [".slipway/*.yaml", "slipway.yaml"]
}
}
  • Strict. Unknown keys are errors. Values are type-checked.
  • Expressions are type-checked against the contexts available at that scope. For example steps.* is not available in a job’s if. See Contexts.
  • Secrets are restricted. secrets.* may be used in env, with and services.env, never in name, run or if.
  • runs_on labels must match a pool the project can use. This is enforced at run time and warned about at validate time.
  • Limits. Max 500 jobs after matrix expansion per run, 100 steps per job, 20 services per job.
  • Timeouts are durations like 30m or 2h; the maximum job timeout is plan-limited (Free 60m, Team 6h, Business 24h).
  • Graph. Job names are unique; needs must resolve; cycles are rejected.