- YAML validation based on JSON schemas, including kubernetes
- 4743 Installs
This extension is allowed to:
- Read & Write Files
- Launch Subprocesses
- Send Network Requests
Yaml Extension provides deeper integration with YAML (YAML Ain't Markup Language), including linting yaml documents and validating against known JSON schemas, including Kubernetes resources.
Yaml Extension requires some additional tools to be installed on your Mac:
- Node.js 8.2.0 and NPM 5.2.0 or newer
- Node.js is used to run redhat-developer/yaml-language-server
- NPM is used to install the server during extension installation
To install the current stable version of Node, click the "Recommended for Most Users" button to begin the download. When that completes, double-click the .pkg installer to begin installation.
Yaml Extension requires these Nova permissions:
networkYaml Extension uses a network connection:
- to associate YAML files with json schemas
- to download individual json schemas to validate against
- to download the language server when you first install or subsequently update the extension.
processYaml Extension runs these subprocess:
- to determine if Node.js is installed
- to install the language server with NPM
- to run the language server which provides most of the features
filesystemYaml Extension needs to read and write files:
- to read in YAML files so they can be validated
- to write back to files when applying completions
- to install the language server in extension storage (
This information is based on my experience setting up the language server (which I didn't write). If you find it is doing something not described above please fill out an Issue, I want this information to be as correct and informative as possible.
Yaml Extension runs any time you open a local project with YAML files in it, automatically lints all open files, then reports errors and warnings in Nova's Issues sidebar and the editor gutter:
This extension works by associating YAML files with JSON schemas based on well-known names
and open-source schemas that are available online.
.github/workflows/**.yml have known schemas which we can validate those files against.
To see all available schemas, visit www.schemastore.org/json/.
YAML tags let you programatically control the parsing of values in YAML files during parsing. For example, a tag could be used to unpack a secret:
passwordKey: !secret database.password
Yaml Extension needs to know about these tags so it can help with suggestions and error messages. You can define these globally or per-project inside of Nova.
Note: global and per-project custom tags are not merged. If you have global tags you will need to duplicate them if you want per-project tags.
Each line of the configuration should be a separate tag you want to add. It can optionally have a type too, which Yaml Extension will check the value of.
The type can be either
for more information, look here.
Global custom tags
To set global custom-tags, go to Extensions → Extension Library.... Then navigate to YAML and then to the Preferences tab.
Per-project custom tags
To set per-project, navigate to your project settings by clicking your project name in the top left. Then go to YAML in the side bar and configure Custom tags there.
Example custom tags
!secret scalar !automobile mapping !peopleList sequence
Under the hood
Yaml Extension runs the redhat-developer/yaml-language-server Language Server which
pulls down associations from
and filters out the ones that aren't
When you open a YAML file, it sees if it is associated with a schema and if it is, it downloads the schema to do hover/validation/completions.
To support Kubernetes resources, your files must be named in a certain way. Kubernetes files must be named or end with one of these suffixes:
deployment, deploy, configmap, cm, namespace, ns, persistentvolumeclaim, pvc, pod, po, secret, service, svc, serviceaccount, sa, daemonset, ds, cronjob, cj, job, ingress, ing
These are based on the singular names from
- My test examples
Hopefully a future version of this extension will parse out the
kindvalues and validate files dynamically based on them, but this currently isn't possible.
- Select the Extensions → Extension Library... menu item
- Search for
- Click the Install Button
If believe something isn't working, you can try reloading the yaml server. Select the Editor → YAML → Reload Yaml Server menu item
If things seem really wrong, check the extension console to find out more information.
Select the Extensions → Show Extension Console menu item, then pick the
You should see a first log message of
Activating... which is the first thing the extension does.
If you don't see
Activated!, there might have been issues with the NPM install.
Try resetting the install lock by selecting the Editor → YAML → Reset Yaml Install Lock,
this is most likely with multiple Nova windows open, so try again with a single workspace.
If you see any other errors in that log that aren't like
Error: Invalid parameter: registrations,
or the stack trace below that, please fill out an Issue.
- Indentation on completions can be incorrect
Error: Invalid parameter: registrationsin the extension console
- This causes a node.js unhandled promise rejection which is forced to "warn" rather than crash the server
This repo does not provide the YAML syntax highlighting in Nova, those are provided by Panic.
- Fix extension preferences, they weren't initially synchronised between Nova and the YAML server.
- Upgraded yaml-language-server to
0.19.2, it was
0.18.0. See the Changelog
- Downgrade the
npm-shrinkwrap.jsonback to v1 for better compatibility.
- New configuration options, you can configure how Yaml Extension works in the extension's "Preferences" tab.
- Toggle formatting
- Toggle validation
- Toggle hover tooltips
- Toggle completions
- Custom tags support
- For more see "Custom tags" in the readme
- Upgraded an internal package which means less unneeded networking on startup (nova-extension-utils/CHANGELOG)