Tool to check the validity of Puppet metadata.json files
Ruby Shell
Clone or download
Latest commit 39d756d Feb 14, 2018


The metadata-json-lint tool validates and lints metadata.json files in Puppet modules against style guidelines from the Puppet Forge module metadata recommendations.


metadata-json-lint is compatible with Ruby versions 2.0.0, 2.1.9, 2.3.1, and 2.4.1.


Puppet 4.9.0 and newer:

via gem command:

gem install metadata-json-lint

via Gemfile:

gem 'metadata-json-lint'

Puppet 4.8.x and older:

via gem command:

gem install metadata-json-lint semantic_puppet

via Gemfile:

gem 'metadata-json-lint'
gem 'semantic_puppet'


Testing with metadata-json-lint

On the command line, run metadata-json-lint with the path of your metadata.json file:

metadata-json-lint /path/to/metadata.json

Testing with metadata-json-lint as a Rake task

If you are already using puppet_spec_helper, the 'validate' task already includes metadata-json-lint.

You can also integrate metadata-json-lint checks into your tests using the Rake task. Add require 'metadata-json-lint/rake_task' to your Rakefile, and then run:

rake metadata_lint

To set options for the Rake task, include them when you define the task:

require 'metadata-json-lint'
task :metadata_lint do
  MetadataJsonLint.parse('metadata.json') do |options|
      options.strict_license = false

Alternatively, set the option after requiring the Rake task:

require 'metadata-json-lint/rake_task'
MetadataJsonLint.options.strict_license = false


  • --[no-]strict-dependencies: Whether to fail if module version dependencies are open-ended. Defaults to false.
  • --[no-]strict-license: Whether to fail on strict license check. Defaults to true.
  • --[no-]fail-on-warnings: Whether to fail on warnings. Defaults to true.


A big thank you to the contributors.