[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","additionalProperties":{"anyOf":[{"$ref":"https://json.schemastore.org/grunt-task#/definitions/fileFormat"},{"$ref":"https://json.schemastore.org/grunt-task#/definitions/dynamic"},{"type":"object","properties":{"options":{"$ref":"#/definitions/options"}}},{"type":"array","items":{"type":"string"}}]},"definitions":{"options":{"description":"Set the options for grunt-contrib-copy","type":"object","properties":{"force":{"description":"This overrides this task from blocking deletion of folders outside current working dir (CWD). Use with caution.","type":"boolean","default":false},"no-write":{"description":"Will log messages of what would happen if the task was ran but doesn't actually delete the files.","type":"boolean","default":false}}}},"id":"https://json.schemastore.org/grunt-clean-task.json","properties":{"options":{"$ref":"#/definitions/options"}},"title":"JSON schema for the Grunt clean task","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for the Grunt clean task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Set the options for grunt-contrib-copy

This overrides this task from blocking deletion of folders outside current working dir (CWD). Use with caution.

Will log messages of what would happen if the task was ran but doesn't actually delete the files.

JSON schema for the Grunt clean task

Provide a JSON object that satisfies the schema "JSON schema for the Grunt clean task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","additionalProperties":{"allOf":[{"$ref":"https://json.schemastore.org/grunt-task#/additionalProperties"},{"type":"object","properties":{"options":{"$ref":"#/definitions/options"}}}]},"definitions":{"options":{"description":"Set the options for grunt-contrib-copy","type":"object","properties":{"noProcess":{"description":"This option is passed to grunt.file.copy as an advanced way to control which file contents are processed.","type":"string"},"encoding":{"description":"The file encoding to copy files with.","type":"string"},"mode":{"description":"Whether to copy or set the existing file permissions. Set to true to copy the existing file permissions. Or set to the mode, i.e.: 0644, that copied files will be set to.","type":["boolean","number"],"default":false}}}},"id":"https://json.schemastore.org/grunt-copy-task.json","properties":{"options":{"$ref":"#/definitions/options"}},"title":"JSON schema for the Grunt clean task","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for the Grunt clean task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Set the options for grunt-contrib-copy

This option is passed to grunt.file.copy as an advanced way to control which file contents are processed.

The file encoding to copy files with.

Whether to copy or set the existing file permissions. Set to true to copy the existing file permissions. Or set to the mode, i.e.: 0644, that copied files will be set to.

JSON schema for the Grunt clean task


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","additionalProperties":{"allOf":[{"$ref":"https://json.schemastore.org/grunt-task#/additionalProperties"},{"type":"object","properties":{"options":{"$ref":"#/definitions/options"}}}]},"definitions":{"options":{"description":"Set the options for cssmin","type":"object","properties":{"banner":{"description":"Prefix the compressed source with the given banner, with a linebreak in between.","type":["null","string"],"default":null},"keepSpecialComments":{"description":"To keep or remove special comments, exposing the underlying option from 'clean-css'.","type":["number","string"],"enum":["*",1,2],"default":"*"},"report":{"description":"Either report only minification result or report minification and gzip results. This is useful to see exactly how well clean-css is performing but using  'gzip'  will make the task take 5-10x longer to complete.","type":"string","enum":["min","gzip"],"default":"min"}}}},"id":"https://json.schemastore.org/grunt-cssmin-task.json","properties":{"options":{"$ref":"#/definitions/options"}},"title":"JSON schema for the Grunt cssmin task","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for the Grunt cssmin task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Set the options for cssmin

Prefix the compressed source with the given banner, with a linebreak in between.

To keep or remove special comments, exposing the underlying option from 'clean-css'.

Either report only minification result or report minification and gzip results. This is useful to see exactly how well clean-css is performing but using  'gzip'  will make the task take 5-10x longer to complete.

JSON schema for the Grunt cssmin task

Provide a JSON object that satisfies the schema "JSON schema for the Grunt cssmin task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","additionalProperties":{"anyOf":[{"$ref":"https://json.schemastore.org/grunt-task#/definitions/fileFormat"},{"$ref":"https://json.schemastore.org/grunt-task#/definitions/dynamic"},{"type":"object","properties":{"options":{"$ref":"#/definitions/options"}}}]},"definitions":{"options":{"description":"Set the options for JSHint","anyOf":[{"type":"object","additionalProperties":false,"properties":{"jshintrc":{"description":"Either a boolean value or a string containing the file name of the jshintrc file.","type":["boolean","string"],"enum":[true]}}},{"$ref":"https://json.schemastore.org/jshintrc#"}]}},"id":"https://json.schemastore.org/grunt-jshint-task.json","properties":{"options":{"$ref":"#/definitions/options"}},"title":"JSON schema for the Grunt JSHint task","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for the Grunt JSHint task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Set the options for JSHint

Either a boolean value or a string containing the file name of the jshintrc file.

JSON schema for the Grunt JSHint task

Provide a JSON object that satisfies the schema "JSON schema for the Grunt JSHint task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","additionalProperties":{"anyOf":[{"$ref":"#/definitions/fileFormat"},{"$ref":"#/definitions/dynamic"}]},"definitions":{"dynamic":{"type":"object","required":["src"],"properties":{"expand":{"description":"Must be set to true to use properties other than 'src' and 'dest'","type":"boolean","default":false},"cwd":{"description":"All 'src' matches are relative to (but don't include) this path","type":"string"},"dest":{"description":"Destination path prefix.","type":"string"},"ext":{"description":"Replace any existing extension with this value in generated 'dest' paths.","type":"string"},"extDot":{"description":"Used to indicate where the period indicating the extension is located.","enum":["first","last"],"default":"first"},"filter":{"description":"The 'filter' property can help you target files with a greater level of detail","enum":["isFile","isDirectory","isBlockDevice","isCharacterDevice","isSymbolicLink","isFIFO","isSocket"]},"flatten":{"description":"Remove all path parts from generated 'dest' paths","type":"boolean","default":false},"matchBase":{"description":"If set, patterns without slashes will be matched against the basename of the path if it contains slashes. For example, 'a?b' would match the path '/xyz/123/acb', but not '/xyz/acb/123'.","type":"boolean","default":false},"nonull":{"description":"If set to 'true' then the operation will include non-matching patterns. Combined with grunt's '--verbose' flag, this option can help debug file path issues.","type":"boolean","default":false},"rename":{"description":"This function is called for each matched 'src' file, (after extension renaming and flattening). ","type":"string"},"src":{"description":"Pattern(s) to match, relative to the 'cwd'.","type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string"}}}},"fileFormat":{"properties":{"files":{"oneOf":[{"type":"object","additionalProperties":{"type":["array","string"],"uniqueItems":true,"minItems":1,"items":{"type":"string"}}},{"type":"array","items":{"$ref":"#/definitions/dynamic"}}]}}}},"id":"https://json.schemastore.org/grunt-task","properties":{"options":{"type":"object"}},"title":"JSON schema for any Grunt task","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for any Grunt task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Must be set to true to use properties other than 'src' and 'dest'

All 'src' matches are relative to (but don't include) this path

Destination path prefix.

Replace any existing extension with this value in generated 'dest' paths.

Used to indicate where the period indicating the extension is located.

The 'filter' property can help you target files with a greater level of detail

isFile isDirectory isBlockDevice isCharacterDevice isSymbolicLink isFIFO isSocket

Remove all path parts from generated 'dest' paths

If set, patterns without slashes will be matched against the basename of the path if it contains slashes. For example, 'a?b' would match the path '/xyz/123/acb', but not '/xyz/acb/123'.

If set to 'true' then the operation will include non-matching patterns. Combined with grunt's '--verbose' flag, this option can help debug file path issues.

This function is called for each matched 'src' file, (after extension renaming and flattening).

Pattern(s) to match, relative to the 'cwd'.

JSON schema for any Grunt task

Provide a JSON object that satisfies the schema "JSON schema for any Grunt task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","additionalProperties":{"$ref":"#/definitions/target"},"definitions":{"target":{"required":["files"],"properties":{"files":{"type":"array","description":"One or more files to watch.","items":{"type":"string"}},"tasks":{"type":"array","description":"One or more tasks to run.","items":{"type":"string"}},"options":{"$ref":"#/definitions/options"}}},"optionsWithEvents":{"oneOf":[{"properties":{"events":{"description":"Specify the type watch event that trigger the specified task.","type":"array","items":{"$ref":"#/definitions/eventType"}}}},{"properties":{"events":{"$ref":"#/definitions/eventType"}}}]},"eventType":{"type":"string","description":"Specify the type watch event that trigger the specified task.","default":"all","enum":["all","changed","added","deleted"]},"options":{"type":"object","description":"One or more files to watch.","allOf":[{"$ref":"#/definitions/optionsWithEvents"}],"properties":{"spawn":{"type":"boolean","description":"Whether to spawn task runs in a child process.","default":true},"interrupt":{"type":"boolean","description":"As files are modified this watch task will spawn tasks in child processes.","default":false},"debounceDelay":{"type":"integer","description":"How long to wait before emitting events in succession for the same filepath and status. For example if your Gruntfile.js file was changed, a 'changed' event will only fire again after the given milliseconds.","default":500},"interval":{"type":"integer","description":"The interval is passed to 'fs.watchFile'. Since 'interval' is only used by 'fs.watchFile' and this watcher also uses 'fs.watch'; it is recommended to ignore this option.","default":100},"reload":{"type":"boolean","description":"By default, if Gruntfile.js is being watched, then changes to it will trigger the watch task to restart, and reload the Gruntfile.js changes. When reload is set to true, changes to any of the watched files will trigger the watch task to restart. This is especially useful if your Gruntfile.js is dependent on other files.","default":false},"forever":{"type":"boolean","description":"This is only a task level option and cannot be configured per target. By default the watch task will duck punch grunt.fatal and grunt.warn to try and prevent them from exiting the watch process. If you don't want grunt.fatal and grunt.warn to be overridden set the forever option to false.","default":true},"atBegin":{"type":"boolean","description":"This option will trigger the run of each specified task at startup of the watcher.","default":false},"livereload":{"type":["boolean","number"],"description":"If enabled a live reload server will be started with the watch task per target. Then after the indicated tasks have run, the live reload server will be triggered with the modified files.","default":false},"cwd":{"type":["string","object"],"description":"Ability to set the current working directory."},"livereloadOnError":{"type":"boolean","description":"Option to prevent the livereload if the executed tasks encountered an error. If set to  false , the livereload will only be triggered if all tasks completed successfully.","default":true}}}},"id":"https://json.schemastore.org/grunt-watch-task.json","properties":{"options":{"$ref":"#/definitions/options"}},"title":"JSON schema for the Grunt Watch task","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for the Grunt Watch task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

One or more files to watch.

One or more tasks to run.

Specify the type watch event that trigger the specified task.

One or more files to watch.

Whether to spawn task runs in a child process.

As files are modified this watch task will spawn tasks in child processes.

How long to wait before emitting events in succession for the same filepath and status. For example if your Gruntfile.js file was changed, a 'changed' event will only fire again after the given milliseconds.

The interval is passed to 'fs.watchFile'. Since 'interval' is only used by 'fs.watchFile' and this watcher also uses 'fs.watch'; it is recommended to ignore this option.

By default, if Gruntfile.js is being watched, then changes to it will trigger the watch task to restart, and reload the Gruntfile.js changes. When reload is set to true, changes to any of the watched files will trigger the watch task to restart. This is especially useful if your Gruntfile.js is dependent on other files.

This is only a task level option and cannot be configured per target. By default the watch task will duck punch grunt.fatal and grunt.warn to try and prevent them from exiting the watch process. If you don't want grunt.fatal and grunt.warn to be overridden set the forever option to false.

This option will trigger the run of each specified task at startup of the watcher.

If enabled a live reload server will be started with the watch task per target. Then after the indicated tasks have run, the live reload server will be triggered with the modified files.

Ability to set the current working directory.

Option to prevent the livereload if the executed tasks encountered an error. If set to  false , the livereload will only be triggered if all tasks completed successfully.

JSON schema for the Grunt Watch task

Provide a JSON object that satisfies the schema "JSON schema for the Grunt Watch task". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","title":"JSON Schema for Hadolint, a Dockerfile linter tool","description":"Dockerfile linter, validate inline bash, written in Haskell","type":"object","additionalProperties":false,"properties":{"disable-ignore-pragma":{"type":"boolean","description":"Disable inline ignore pragmas `# hadolint ignore=DLxxxx`"},"failure-threshold":{"type":"string","description":"A threshold controlling how severe a rule violation must be before the return code indicates failure.","oneOf":[{"const":"error","description":"Never return failure."},{"const":"warning","description":"Return failure if only rules of severity above `warning` are violated"},{"const":"info","description":"Return failure if only rules of severity above `info` are violated"},{"const":"style","description":"Return failure if only rules of severity above `style` are violated"},{"const":"ignore","description":"Return failure if any rule is violated."},{"const":"none","description":"Return failure if any rule is violated."}]},"format":{"type":"string","enum":["tty","json","checkstyle","codeclimate","gitlab_codeclimate","gnu","codacy"],"description":"Output format"},"strict-labels":{"type":"boolean","description":"Strictly adhere to label-schem, don't allow additional labels."},"label-schema":{"type":"object","description":"A label-schema. See https://github.com/hadolint/hadolint#linting-labels for reference.","additionalProperties":true},"no-color":{"type":"boolean","description":"Don't colorize output."},"no-fail":{"type":"boolean","description":"Don't exit with a failure status code when any rule is violated."},"override":{"type":"object","additionalProperties":false,"properties":{"error":{"type":"array","description":"A list of rules to be treated with \"error\" severity","items":{"$ref":"#/properties/ignored/items"}},"warning":{"type":"array","description":"A list of rules to be treated with \"warning\" severity","items":{"$ref":"#/properties/ignored/items"}},"info":{"type":"array","description":"A list of rules to be treated with \"info\" severity","items":{"$ref":"#/properties/ignored/items"}},"style":{"type":"array","description":"A list of rules to be treated with \"style\" severity","items":{"$ref":"#/properties/ignored/items"}}}},"ignored":{"type":"array","description":"A list of rules to be ignored","items":{"type":"string","oneOf":[{"const":"DL3000","description":"Use absolute WORKDIR.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3000"},{"const":"DL3001","description":"For some bash commands it makes no sense running them in a Docker container like ssh, vim, shutdown, service, ps, free, top, kill, mount, ifconfig.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3001"},{"const":"DL3002","description":"Last user should not be root.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3002"},{"const":"DL3003","description":"Use WORKDIR to switch to a directory.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3003"},{"const":"DL3004","description":"Do not use sudo as it leads to unpredictable behavior. Use a tool like gosu to enforce root.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3004"},{"const":"DL3006","description":"Always tag the version of an image explicitly.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3006"},{"const":"DL3007","description":"Using latest is prone to errors if the image will ever update. Pin the version explicitly to a release tag.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3007"},{"const":"DL3008","description":"Pin versions in apt-get install.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3008"},{"const":"DL3009","description":"Delete the apt-get lists after installing something.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3009"},{"const":"DL3010","description":"Use ADD for extracting archives into an image.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3010"},{"const":"DL3011","description":"Valid UNIX ports range from 0 to 65535.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3011"},{"const":"DL3012","description":"Multiple `HEALTHCHECK` instructions.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3012"},{"const":"DL3013","description":"Pin versions in pip.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3013"},{"const":"DL3014","description":"Use the `-y` switch.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3014"},{"const":"DL3015","description":"Avoid additional packages by specifying --no-install-recommends.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3015"},{"const":"DL3016","description":"Pin versions in `npm`.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3016"},{"const":"DL3018","description":"Pin versions in apk add. Instead of `apk add <package>` use `apk add <package>=<version>`.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3018"},{"const":"DL3019","description":"Use the `--no-cache` switch to avoid the need to use `--update` and remove `/var/cache/apk/*` when done installing packages.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3019"},{"const":"DL3020","description":"Use `COPY` instead of `ADD` for files and folders.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3020"},{"const":"DL3021","description":"`COPY` with more than 2 arguments requires the last argument to end with `/`","$comment":"https://github.com/hadolint/hadolint/wiki/DL3021"},{"const":"DL3022","description":"`COPY --from` should reference a previously defined `FROM` alias","$comment":"https://github.com/hadolint/hadolint/wiki/DL3022"},{"const":"DL3023","description":"`COPY --from` cannot reference its own `FROM` alias","$comment":"https://github.com/hadolint/hadolint/wiki/DL3023"},{"const":"DL3024","description":"`FROM` aliases (stage names) must be unique","$comment":"https://github.com/hadolint/hadolint/wiki/DL3024"},{"const":"DL3025","description":"Use arguments JSON notation for CMD and ENTRYPOINT arguments","$comment":"https://github.com/hadolint/hadolint/wiki/DL3025"},{"const":"DL3026","description":"Use only an allowed registry in the FROM image","$comment":"https://github.com/hadolint/hadolint/wiki/DL3026"},{"const":"DL3027","description":"Do not use `apt` as it is meant to be an end-user tool, use `apt-get` or `apt-cache` instead","$comment":"https://github.com/hadolint/hadolint/wiki/DL3027"},{"const":"DL3028","description":"Pin versions in gem install. Instead of `gem install <gem>` use `gem install <gem>:<version>`","$comment":"https://github.com/hadolint/hadolint/wiki/DL3028"},{"const":"DL3029","description":"Do not use --platform flag with FROM.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3029"},{"const":"DL3030","description":"Use the `-y` switch to avoid manual input `yum install -y <package>`","$comment":"https://github.com/hadolint/hadolint/wiki/DL3030"},{"const":"DL3032","description":"`yum clean all` missing after yum command.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3032"},{"const":"DL3033","description":"Specify version with `yum install -y <package>-<version>`","$comment":"https://github.com/hadolint/hadolint/wiki/DL3033"},{"const":"DL3034","description":"Non-interactive switch missing from `zypper` command: `zypper install -y`","$comment":"https://github.com/hadolint/hadolint/wiki/DL3034"},{"const":"DL3035","description":"Do not use `zypper dist-upgrade`.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3035"},{"const":"DL3036","description":"`zypper clean` missing after zypper use.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3036"},{"const":"DL3037","description":"Specify version with `zypper install -y <package>[=]<version>`.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3037"},{"const":"DL3038","description":"Use the `-y` switch to avoid manual input `dnf install -y <package>`","$comment":"https://github.com/hadolint/hadolint/wiki/DL3038"},{"const":"DL3040","description":"`dnf clean all` missing after dnf command.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3040"},{"const":"DL3041","description":"Specify version with `dnf install -y <package>-<version>`","$comment":"https://github.com/hadolint/hadolint/wiki/DL3041"},{"const":"DL3042","description":"Avoid cache directory with `pip install --no-cache-dir <package>`.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3042"},{"const":"DL3043","description":"`ONBUILD`, `FROM` or `MAINTAINER` triggered from within `ONBUILD` instruction.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3043"},{"const":"DL3044","description":"Do not refer to an environment variable within the same `ENV` statement where it is defined.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3044"},{"const":"DL3045","description":"`COPY` to a relative destination without `WORKDIR` set.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3045"},{"const":"DL3046","description":" `useradd` without flag `-l` and high UID will result in excessively large Image.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3046"},{"const":"DL3047","description":"`wget` without flag `--progress` will result in excessively bloated build logs when downloading larger files.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3047"},{"const":"DL3048","description":"Invalid Label Key","$comment":"https://github.com/hadolint/hadolint/wiki/DL3048"},{"const":"DL3049","description":"Label `<label>` is missing.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3049"},{"const":"DL3050","description":"Superfluous label(s) present.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3050"},{"const":"DL3051","description":"Label `<label>` is empty.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3051"},{"const":"DL3052","description":"Label `<label>` is not a valid URL.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3052"},{"const":"DL3053","description":"Label `<label>` is not a valid time format - must conform to RFC3339.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3053"},{"const":"DL3054","description":"Label `<label>` is not a valid SPDX license identifier.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3054"},{"const":"DL3055","description":"Label `<label>` is not a valid git hash.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3055"},{"const":"DL3056","description":"Label `<label>` does not conform to semantic versioning.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3056"},{"const":"DL3057","description":"`HEALTHCHECK` instruction missing.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3057"},{"const":"DL3058","description":"Label `<label>` is not a valid email format - must conform to RFC5322.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3058"},{"const":"DL3059","description":"Multiple consecutive `RUN` instructions. Consider consolidation.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3059"},{"const":"DL3060","description":"`yarn cache clean` missing after `yarn install` was run.","$comment":"https://github.com/hadolint/hadolint/wiki/DL3060"},{"const":"DL4000","description":"MAINTAINER is deprecated.","$comment":"https://github.com/hadolint/hadolint/wiki/DL4000"},{"const":"DL4001","description":"Either use Wget or Curl but not both.","$comment":"https://github.com/hadolint/hadolint/wiki/DL4001"},{"const":"DL4003","description":"Multiple `CMD` instructions found.","$comment":"https://github.com/hadolint/hadolint/wiki/DL4003"},{"const":"DL4004","description":"Multiple `ENTRYPOINT` instructions found.","$comment":"https://github.com/hadolint/hadolint/wiki/DL4004"},{"const":"DL4005","description":"Use `SHELL` to change the default shell.","$comment":"https://github.com/hadolint/hadolint/wiki/DL4005"},{"const":"DL4006","description":"Set the `SHELL` option -o pipefail before `RUN` with a pipe in it","$comment":"https://github.com/hadolint/hadolint/wiki/DL4006"},{"const":"SC1000","description":"`$` is not used specially and should therefore be escaped.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1000"},{"const":"SC1001","description":"This `\\c` will be a regular `'c'`  in this context.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1001"},{"const":"SC1007","description":"Remove space after `=` if trying to assign a value (or for empty string, use `var='' ...`).","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1007"},{"const":"SC1010","description":"Use semicolon or linefeed before `done` (or quote to make it literal).","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1010"},{"const":"SC1018","description":"This is a unicode non-breaking space. Delete it and retype as space.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1018"},{"const":"SC1035","description":"You need a space here","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1035"},{"const":"SC1045","description":"It's not `foo &; bar`, just `foo & bar`.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1045"},{"const":"SC1065","description":"Trying to declare parameters? Don't. Use `()` and refer to params as `$1`, `$2` etc.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1065"},{"const":"SC1066","description":"Don't use $ on the left side of assignments.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1066"},{"const":"SC1068","description":"Don't put spaces around the `=` in assignments.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1068"},{"const":"SC1077","description":"For command expansion, the tick should slant left (\\` vs \u00b4).","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1077"},{"const":"SC1078","description":"Did you forget to close this double-quoted string?","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1078"},{"const":"SC1079","description":"This is actually an end quote, but due to next char, it looks suspect.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1079"},{"const":"SC1081","description":"Scripts are case sensitive. Use `if`, not `If`.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1081"},{"const":"SC1083","description":"This `{/}` is literal. Check expression (missing `;/\\n`?) or quote it.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1083"},{"const":"SC1086","description":"Don't use `$` on the iterator name in for loops.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1086"},{"const":"SC1087","description":"Braces are required when expanding arrays, as in `${array[idx]}`.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1087"},{"const":"SC1095","description":"You need a space or linefeed between the function name and body.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1095"},{"const":"SC1097","description":"Unexpected `==`. For assignment, use `=`. For comparison, use `[ .. ]` or `[[ .. ]]`.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1097"},{"const":"SC1098","description":"Quote/escape special characters when using `eval`, e.g. `eval \"a=(b)\"`.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1098"},{"const":"SC1099","description":"You need a space before the `#`.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC1099"},{"const":"SC2002","description":"Useless cat. Consider `cmd < file | ..` or `cmd file | ..` instead.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2002"},{"const":"SC2015","description":"Note that `A && B || C` is not if-then-else. C may run when A is true.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2015"},{"const":"SC2026","description":"This word is outside of quotes. Did you intend to 'nest '\"'single quotes'\"' instead'?","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2026"},{"const":"SC2028","description":"`echo` won't expand escape sequences. Consider `printf`.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2028"},{"const":"SC2035","description":"Use `./*glob*` or `-- *glob*` so names with dashes won't become options.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2035"},{"const":"SC2039","description":"In POSIX sh, something is undefined.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2039"},{"const":"SC2046","description":"Quote this to prevent word splitting","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2046"},{"const":"SC2086","description":"Double quote to prevent globbing and word splitting.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2086"},{"const":"SC2140","description":"Word is in the form `\"A\"B\"C\"` (B indicated). Did you mean `\"ABC\"` or `\"A\\\"B\\\"C\"`?","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2140"},{"const":"SC2154","description":"var is referenced but not assigned.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2154"},{"const":"SC2155","description":"Declare and assign separately to avoid masking return values.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2155"},{"const":"SC2164","description":"Use `cd ... || exit` in case `cd` fails.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC2164"},{"const":"SC3046","description":"In POSIX sh, 'source' in place of '.' is undefined.","$comment":"https://github.com/koalaman/shellcheck/wiki/SC3046"}]}},"trustedRegistries":{"type":"array","description":"A list of trusted registries. Ex: docker.io","items":{"type":"string"}}}}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON Schema for Hadolint, a Dockerfile linter tool". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

JSON Schema for Hadolint, a Dockerfile linter tool

Dockerfile linter, validate inline bash, written in Haskell

Disable inline ignore pragmas `# hadolint ignore=DLxxxx`

A threshold controlling how severe a rule violation must be before the return code indicates failure.

Never return failure.

Return failure if only rules of severity above `warning` are violated

Return failure if only rules of severity above `info` are violated

Return failure if only rules of severity above `style` are violated

Return failure if any rule is violated.

Return failure if any rule is violated.

tty json checkstyle codeclimate gitlab_codeclimate gnu codacy

Output format

Strictly adhere to label-schem, don't allow additional labels.

A label-schema. See https://github.com/hadolint/hadolint#linting-labels for reference.

Don't colorize output.

Don't exit with a failure status code when any rule is violated.

A list of rules to be treated with "error" severity

A list of rules to be treated with "warning" severity

A list of rules to be treated with "info" severity

A list of rules to be treated with "style" severity

A list of rules to be ignored

Use absolute WORKDIR.

For some bash commands it makes no sense running them in a Docker container like ssh, vim, shutdown, service, ps, free, top, kill, mount, ifconfig.

Last user should not be root.

Use WORKDIR to switch to a directory.

Do not use sudo as it leads to unpredictable behavior. Use a tool like gosu to enforce root.

Always tag the version of an image explicitly.

Using latest is prone to errors if the image will ever update. Pin the version explicitly to a release tag.

Pin versions in apt-get install.

Delete the apt-get lists after installing something.

Use ADD for extracting archives into an image.

Valid UNIX ports range from 0 to 65535.

Multiple `HEALTHCHECK` instructions.

Pin versions in pip.

Use the `-y` switch.

Avoid additional packages by specifying --no-install-recommends.

Pin versions in `npm`.

Pin versions in apk add. Instead of `apk add <package>` use `apk add <package>=<version>`.

Use the `--no-cache` switch to avoid the need to use `--update` and remove `/var/cache/apk/*` when done installing packages.

Use `COPY` instead of `ADD` for files and folders.

`COPY` with more than 2 arguments requires the last argument to end with `/`

`COPY --from` should reference a previously defined `FROM` alias

`COPY --from` cannot reference its own `FROM` alias

`FROM` aliases (stage names) must be unique

Use arguments JSON notation for CMD and ENTRYPOINT arguments

Use only an allowed registry in the FROM image

Do not use `apt` as it is meant to be an end-user tool, use `apt-get` or `apt-cache` instead

Pin versions in gem install. Instead of `gem install <gem>` use `gem install <gem>:<version>`

Do not use --platform flag with FROM.

Use the `-y` switch to avoid manual input `yum install -y <package>`

`yum clean all` missing after yum command.

Specify version with `yum install -y <package>-<version>`

Non-interactive switch missing from `zypper` command: `zypper install -y`

Do not use `zypper dist-upgrade`.

`zypper clean` missing after zypper use.

Specify version with `zypper install -y <package>[=]<version>`.

Use the `-y` switch to avoid manual input `dnf install -y <package>`

`dnf clean all` missing after dnf command.

Specify version with `dnf install -y <package>-<version>`

Avoid cache directory with `pip install --no-cache-dir <package>`.

`ONBUILD`, `FROM` or `MAINTAINER` triggered from within `ONBUILD` instruction.

Do not refer to an environment variable within the same `ENV` statement where it is defined.

`COPY` to a relative destination without `WORKDIR` set.

`useradd` without flag `-l` and high UID will result in excessively large Image.

`wget` without flag `--progress` will result in excessively bloated build logs when downloading larger files.

Invalid Label Key

Label `<label>` is missing.

Superfluous label(s) present.

Label `<label>` is empty.

Label `<label>` is not a valid URL.

Label `<label>` is not a valid time format - must conform to RFC3339.

Label `<label>` is not a valid SPDX license identifier.

Label `<label>` is not a valid git hash.

Label `<label>` does not conform to semantic versioning.

`HEALTHCHECK` instruction missing.

Label `<label>` is not a valid email format - must conform to RFC5322.

Multiple consecutive `RUN` instructions. Consider consolidation.

`yarn cache clean` missing after `yarn install` was run.

MAINTAINER is deprecated.

Either use Wget or Curl but not both.

Multiple `CMD` instructions found.

Multiple `ENTRYPOINT` instructions found.

Use `SHELL` to change the default shell.

Set the `SHELL` option -o pipefail before `RUN` with a pipe in it

`$` is not used specially and should therefore be escaped.

This `\c` will be a regular `'c'`  in this context.

Remove space after `=` if trying to assign a value (or for empty string, use `var='' ...`).

Use semicolon or linefeed before `done` (or quote to make it literal).

This is a unicode non-breaking space. Delete it and retype as space.

You need a space here

It's not `foo &; bar`, just `foo & bar`.

Trying to declare parameters? Don't. Use `()` and refer to params as `$1`, `$2` etc.

Don't use $ on the left side of assignments.

Don't put spaces around the `=` in assignments.

For command expansion, the tick should slant left (\` vs ´).

Did you forget to close this double-quoted string?

This is actually an end quote, but due to next char, it looks suspect.

Scripts are case sensitive. Use `if`, not `If`.

This `{/}` is literal. Check expression (missing `;/\n`?) or quote it.

Don't use `$` on the iterator name in for loops.

Braces are required when expanding arrays, as in `${array[idx]}`.

You need a space or linefeed between the function name and body.

Unexpected `==`. For assignment, use `=`. For comparison, use `[ .. ]` or `[[ .. ]]`.

Quote/escape special characters when using `eval`, e.g. `eval "a=(b)"`.

You need a space before the `#`.

Useless cat. Consider `cmd < file | ..` or `cmd file | ..` instead.

Note that `A && B || C` is not if-then-else. C may run when A is true.

This word is outside of quotes. Did you intend to 'nest '"'single quotes'"' instead'?

`echo` won't expand escape sequences. Consider `printf`.

Use `./*glob*` or `-- *glob*` so names with dashes won't become options.

In POSIX sh, something is undefined.

Quote this to prevent word splitting

Double quote to prevent globbing and word splitting.

Word is in the form `"A"B"C"` (B indicated). Did you mean `"ABC"` or `"A\"B\"C"`?

var is referenced but not assigned.

Declare and assign separately to avoid masking return values.

Use `cd ... || exit` in case `cd` fails.

In POSIX sh, 'source' in place of '.' is undefined.

A list of trusted registries. Ex: docker.io

Provide a JSON object that satisfies the schema "JSON Schema for Hadolint, a Dockerfile linter tool". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

JSON Schema for Hadolint, a Dockerfile linter tool


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/hammerkit.json","$comment":"https://no0dles.gitbook.io","additionalProperties":false,"definitions":{"buildFileEnvs":{"title":"environment variables","description":"Environment values for the current build task\nhttps://no0dles.gitbook.io/hammerkit/build-file/environment-variables","type":"object","additionalProperties":{"description":"environment variable","type":"string"}},"buildFileTasks":{"title":"tasks","description":"Task for the current build file\nhttps://no0dles.gitbook.io/hammerkit/task","type":"object","additionalProperties":{"$ref":"#/definitions/task"}},"buildFileServices":{"title":"services","description":"Services for the current build file\nhttps://no0dles.gitbook.io/hammerkit/service","type":"object","additionalProperties":{"$ref":"#/definitions/service"}},"buildFileIncludes":{"title":"includes","description":"Includes to other build files\nhttps://no0dles.gitbook.io/hammerkit/build-file/includes","type":"object","additionalProperties":{"$ref":"https://json.schemastore.org/base.json#/definitions/path"}},"buildFileReferences":{"title":"references","description":"References to other build files\nhttps://no0dles.gitbook.io/hammerkit/build-file/references","type":"object","additionalProperties":{"$ref":"https://json.schemastore.org/base.json#/definitions/path"}},"task":{"title":"task","description":"Task for the current build file\nhttps://no0dles.gitbook.io/hammerkit/task","anyOf":[{"$ref":"#/definitions/containerTask"},{"$ref":"#/definitions/localTask"}]},"localTask":{"title":"local task","description":"Task that gets executed in the local shell in the current directory","type":"object","additionalProperties":false,"required":["cmds"],"properties":{"description":{"$ref":"#/definitions/taskCommand"},"labels":{"$ref":"#/definitions/taskLabels"},"extend":{"$ref":"#/definitions/taskExtend"},"cache":{"$ref":"#/definitions/taskCache"},"continuous":{"$ref":"#/definitions/taskContinuous"},"envs":{"$ref":"#/definitions/taskEnvs"},"needs":{"$ref":"#/definitions/taskNeeds"},"deps":{"$ref":"#/definitions/taskDeps"},"src":{"$ref":"#/definitions/taskSrc"},"generates":{"$ref":"#/definitions/taskGenerates"},"cmds":{"description":"Commands for the current task","type":"array","items":{"$ref":"#/definitions/taskCommand"}}}},"containerTask":{"title":"container task","description":"Container task for the current build file\nhttps://no0dles.gitbook.io/hammerkit/task/container","type":"object","required":["image","cmds"],"additionalProperties":false,"properties":{"description":{"$ref":"#/definitions/taskCommand"},"extend":{"$ref":"#/definitions/taskExtend"},"labels":{"$ref":"#/definitions/taskLabels"},"cache":{"$ref":"#/definitions/taskCache"},"continuous":{"$ref":"#/definitions/taskContinuous"},"envs":{"$ref":"#/definitions/taskEnvs"},"needs":{"$ref":"#/definitions/taskNeeds"},"deps":{"$ref":"#/definitions/taskDeps"},"src":{"$ref":"#/definitions/taskSrc"},"generates":{"$ref":"#/definitions/taskGenerates"},"cmds":{"description":"Commands for the current task","type":"array","items":{"$ref":"#/definitions/taskCommand"}},"shell":{"title":"task shell","description":"Define which shell is used to execute the commands","type":"string"},"image":{"title":"task image","description":"Container image for the current task to run commands in","type":"string"},"ports":{"description":"A list of ports that get exposed on the host from the container <localPort>:<targetPort>","type":"array","uniqueItems":true,"items":{"description":"<localPort>:<targetPort>","type":"string","pattern":"\\d+:\\d+"}},"mounts":{"description":"File paths that get mounted into the container\nhttps://no0dles.gitbook.io/hammerkit/task/container#adding-mounts","type":"array","uniqueItems":true,"items":{"type":"string","pattern":"\\d+:\\d+"}}}},"taskCommand":{"anyOf":[{"title":"command","description":"Command to be executed for the current task","type":"string"},{"title":"task command with path extension","description":"Command to be executed in sub directory for the current task","type":"object","additionalProperties":false,"required":["cmd"],"properties":{"cmd":{"title":"command","description":"Command to be executed for the task","type":"string"},"path":{"$ref":"https://json.schemastore.org/base.json#/definitions/path","title":"command path","description":"Path below build file path"}}}]},"taskDescription":{"description":"Description for the current task","type":"string"},"taskExtend":{"description":"Extension task as a base template\nhttps://no0dles.gitbook.io/hammerkit/task/extending","type":"string"},"taskCache":{"description":"compare type for detecting changes in source files\nhttps://no0dles.gitbook.io/hammerkit/task/caching","type":"string","enum":["checksum","modify-date","none"]},"taskContinuous":{"description":"The task runs continuous and does not end without cancellation\nhttps://no0dles.gitbook.io/hammerkit/task/watching#continuous-tasks","type":"boolean"},"taskLabels":{"title":"label options","description":"A map of label values for the current task\nhttps://no0dles.gitbook.io/hammerkit/labels","type":"object","additionalProperties":{"description":"label value","type":"string"}},"taskEnvs":{"title":"task environment variables","description":"Environment values for the current build file\nhttps://no0dles.gitbook.io/hammerkit/build-file/environment-variables","type":"object","additionalProperties":{"description":"environment value","type":"string"}},"taskNeeds":{"description":"Service needs that need to get ready before the current task\nhttps://no0dles.gitbook.io/hammerkit/task/needs","type":"array","uniqueItems":true,"items":{"type":"string"}},"taskDeps":{"description":"Task dependencies that get executed before the current task\nhttps://no0dles.gitbook.io/hammerkit/task/dependencies","type":"array","uniqueItems":true,"items":{"type":"string"}},"taskSrc":{"description":"Source files and folders for the current task\nhttps://no0dles.gitbook.io/hammerkit/task#source","type":"array","uniqueItems":true,"items":{"$ref":"https://json.schemastore.org/base.json#/definitions/path"}},"taskGenerates":{"description":"Generated files and folders for the current task\n\nhttps://no0dles.gitbook.io/hammerkit/task#generate","type":"array","uniqueItems":true,"items":{"$ref":"https://json.schemastore.org/base.json#/definitions/path"}},"service":{"title":"service","description":"A daemon in the background","anyOf":[{"$ref":"#/definitions/containerService"},{"$ref":"#/definitions/kubernetesService"}]},"kubernetesService":{"title":"kubernetes service","description":"Kubernetes service for the current build file\nhttps://no0dles.gitbook.io/hammerkit/service/kubernetes","type":"object","required":["context","selector","ports"],"additionalProperties":false,"properties":{"kubeconfig":{"description":"Kube config for the current service\nhttps://no0dles.gitbook.io/hammerkit/service/kubernetes#config","type":"string"},"context":{"description":"Kubernetes context for the current service\nhttps://no0dles.gitbook.io/hammerkit/service/kubernetes#config","type":"string"},"ports":{"description":"A list of ports that get exposed on the host from the service <localPort>:<targetPort>","type":"array","uniqueItems":true,"items":{"description":"<localPort>:<targetPort>","type":"string","pattern":"\\d+:\\d+"}},"selector":{"title":"service selector","description":"Selector to specify which resource gets forwarded to\nhttps://no0dles.gitbook.io/hammerkit/service/kubernetes","type":"object","required":["type","name"],"additionalProperties":false,"properties":{"type":{"description":"resource type for the current service","type":"string","enum":["deployment","service","pod"]},"name":{"description":"resource name for the kubernetes resource","type":"string"}}}}},"containerService":{"title":"container service","description":"Container service for the current build file\nhttps://no0dles.gitbook.io/hammerkit/service/kubernetes","type":"object","required":["image"],"additionalProperties":false,"properties":{"labels":{"title":"label options","description":"A map of label values for the current service\nhttps://no0dles.gitbook.io/hammerkit/labels","type":"object","additionalProperties":{"type":"string"}},"envs":{"title":"service environment variables","description":"Environment values for the current service\nhttps://no0dles.gitbook.io/hammerkit/build-file/environment-variables","type":"object","additionalProperties":{"description":"environment value","type":"string"}},"healthcheck":{"title":"service healthcheck","description":"Check to detect if the service is started and ready\nhttps://no0dles.gitbook.io/hammerkit/service/container#healthcheck","type":"object","required":["cmd"],"additionalProperties":false,"properties":{"cmd":{"description":"task to check if the service is healthy","type":"string"}}},"image":{"description":"Container image for the current service to run commands in","type":"string"},"ports":{"description":"A list of ports that get exposed on the host from the container <localPort>:<targetPort>\nhttps://no0dles.gitbook.io/hammerkit/service/container#mounts","type":"array","uniqueItems":true,"items":{"description":"<localPort>:<targetPort>","type":"string","pattern":"\\d+:\\d+"}},"volumes":{"description":"A list of volumes that get attached to the container <name>:<containerPath>\nhttps://no0dles.gitbook.io/hammerkit/service/container#mounts","type":"array","uniqueItems":true,"items":{"description":"<name>:<containerPath>","type":"string","pattern":"\\d+:\\d+"}},"mounts":{"description":"File paths that get mounted into the container <localPath>:<containerPath>\nhttps://no0dles.gitbook.io/hammerkit/service/container#mounts","type":"array","uniqueItems":true,"items":{"type":"string","description":"<localPath>:<containerPath>","pattern":"\\d+:\\d+"}}}}},"description":"Build tool with support for containerization\nhttps://no0dles.gitbook.io/hammerkit/build-file","properties":{"envs":{"$ref":"#/definitions/buildFileEnvs"},"tasks":{"$ref":"#/definitions/buildFileTasks"},"services":{"$ref":"#/definitions/buildFileServices"},"includes":{"$ref":"#/definitions/buildFileIncludes"},"references":{"$ref":"#/definitions/buildFileReferences"}},"title":"JSON Schema for hammerkit's build file","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON Schema for hammerkit's build file". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

environment variables

Environment values for the current build task
https://no0dles.gitbook.io/hammerkit/build-file/environment-variables

environment variable

tasks

Task for the current build file
https://no0dles.gitbook.io/hammerkit/task

services

Services for the current build file
https://no0dles.gitbook.io/hammerkit/service

includes

Includes to other build files
https://no0dles.gitbook.io/hammerkit/build-file/includes

references

References to other build files
https://no0dles.gitbook.io/hammerkit/build-file/references

task

local task

Task that gets executed in the local shell in the current directory

Commands for the current task

container task

Container task for the current build file
https://no0dles.gitbook.io/hammerkit/task/container

Commands for the current task

task shell

Define which shell is used to execute the commands

task image

Container image for the current task to run commands in

<localPort>:<targetPort>

File paths that get mounted into the container
https://no0dles.gitbook.io/hammerkit/task/container#adding-mounts

command

Command to be executed for the current task

task command with path extension

Command to be executed in sub directory for the current task

command

Command to be executed for the task

command path

Path below build file path

Description for the current task

Extension task as a base template
https://no0dles.gitbook.io/hammerkit/task/extending

compare type for detecting changes in source files
https://no0dles.gitbook.io/hammerkit/task/caching

The task runs continuous and does not end without cancellation
https://no0dles.gitbook.io/hammerkit/task/watching#continuous-tasks

label options

A map of label values for the current task
https://no0dles.gitbook.io/hammerkit/labels

label value

task environment variables

Environment values for the current build file
https://no0dles.gitbook.io/hammerkit/build-file/environment-variables

environment value

Service needs that need to get ready before the current task
https://no0dles.gitbook.io/hammerkit/task/needs

Task dependencies that get executed before the current task
https://no0dles.gitbook.io/hammerkit/task/dependencies

Source files and folders for the current task
https://no0dles.gitbook.io/hammerkit/task#source

Generated files and folders for the current task

https://no0dles.gitbook.io/hammerkit/task#generate

service

A daemon in the background

kubernetes service

Kubernetes service for the current build file
https://no0dles.gitbook.io/hammerkit/service/kubernetes

Kube config for the current service
https://no0dles.gitbook.io/hammerkit/service/kubernetes#config

Kubernetes context for the current service
https://no0dles.gitbook.io/hammerkit/service/kubernetes#config

A list of ports that get exposed on the host from the service <localPort>:<targetPort>

<localPort>:<targetPort>

service selector

Selector to specify which resource gets forwarded to
https://no0dles.gitbook.io/hammerkit/service/kubernetes

resource type for the current service

resource name for the kubernetes resource

container service

Container service for the current build file
https://no0dles.gitbook.io/hammerkit/service/kubernetes

label options

A map of label values for the current service
https://no0dles.gitbook.io/hammerkit/labels

service environment variables

Environment values for the current service
https://no0dles.gitbook.io/hammerkit/build-file/environment-variables

environment value

service healthcheck

Check to detect if the service is started and ready
https://no0dles.gitbook.io/hammerkit/service/container#healthcheck

task to check if the service is healthy

Container image for the current service to run commands in

A list of ports that get exposed on the host from the container <localPort>:<targetPort>
https://no0dles.gitbook.io/hammerkit/service/container#mounts

<localPort>:<targetPort>

A list of volumes that get attached to the container <name>:<containerPath>
https://no0dles.gitbook.io/hammerkit/service/container#mounts

<name>:<containerPath>

File paths that get mounted into the container <localPath>:<containerPath>
https://no0dles.gitbook.io/hammerkit/service/container#mounts

<localPath>:<containerPath>

Build tool with support for containerization
https://no0dles.gitbook.io/hammerkit/build-file

JSON Schema for hammerkit's build file

Provide a JSON object that satisfies the schema "JSON Schema for hammerkit's build file". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$id":"har.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["log"],"properties":{"log":{"$ref":"log.json#"}}}
</schema>

[User] Provide a JSON object that satisfies the schema "har". Here are the required top‑level fields: log. Return only the valid JSON object.

Provide a JSON object that satisfies the schema "har". Here are the required top‑level fields: log. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/hatch.json","additionalProperties":false,"definitions":{"Platform":{"enum":["linux","windows","macos"]},"Format":{"title":"Format","description":"Options for static analysis and formatting","x-taplo":{"links":{"key":"https://hatch.pypa.io/dev/config/static-analysis/"}},"type":"object","properties":{"config-path":{"title":"Config-Path","description":"Path to default configuration","x-taplo":{"links":{"key":"https://hatch.pypa.io/dev/config/static-analysis/#persistent-config"}},"type":"string"}}},"Metadata":{"title":"Metadata","description":"Metadata for the project","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/metadata/#metadata-options"}},"type":"object","properties":{"allow-direct-references":{"title":"Allow-Direct-References","description":"Whether to allow direct references","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/metadata/#allowing-direct-references"}},"type":"boolean"},"allow-ambiguous-features":{"title":"Allow-Ambiguous-Features","description":"Whether to allow ambiguous features","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/metadata/#allowing-ambiguous-features"}},"type":"boolean"}}},"Override":{"title":"Override","description":"TODO"},"Overrides":{"title":"Overrides","description":"Overrides depending on things like platform, matrix variables, or environment variables","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/advanced/#option-overrides"}},"type":"object","patternProperties":{"env|matrix|name":{"type":"object","additionalProperties":{"$ref":"#/definitions/Override"}}},"properties":{"platform":{"type":"object","propertyNames":{"$ref":"#/definitions/Platform"},"additionalProperties":{"$ref":"#/definitions/Override"}}}},"Env":{"title":"Env","type":"object","properties":{"template":{"title":"Template","description":"Template environment to inherit from. Set to own name to make self referential (disable inheritance from \u201cdefault\u201d)","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#inheritance"}},"type":"string","default":"default"},"detached":{"title":"Detached","description":"Make the environment self-referential and skip project install","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#detached-environments"}},"type":"boolean","default":false},"dependencies":{"title":"Dependencies","description":"List of dependencies to install in the environment","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#dependencies"}},"type":"array","items":{"type":"string"}},"extra-dependencies":{"title":"Extra dependencies","description":"List of extra dependencies to install in the environment in addition to the template environment\u2019s dependencies","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#dependencies"}},"type":"array","items":{"type":"string"}},"features":{"title":"Features (extras)","description":"List of optional dependency groups (extras) to install","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#features"}},"type":"array","items":{"type":"string"}},"dev-mode":{"title":"Dev mode","description":"Whether to install the project in development mode","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#dev-mode"}},"type":"boolean","default":true},"skip-install":{"title":"Skip install","description":"Whether to skip installing the project","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#skip-install"}},"type":"boolean","default":false},"env-vars":{"title":"Environment variables","description":"Environment variables to set","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#defined"}},"type":"object","additionalProperties":{"type":"string"}},"env-include":{"title":"Environment variable include","description":"Glob patterns of environment variables to include","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#filters"}},"type":"array","items":{"type":"string"}},"env-exclude":{"title":"Environment variable exclude","description":"Glob patterns of environment variables to exclude","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#filters"}},"type":"array","items":{"type":"string"}},"scripts":{"title":"Scripts","description":"Dictionary of scripts to run","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#scripts"}},"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"pre-install-commands":{"title":"Pre-install commands","description":"List of commands to run before installing the project","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#pre-install"}},"type":"array","items":{"type":"string"}},"post-install-commands":{"title":"Post-install commands","description":"List of commands to run after installing the project","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#post-install"}},"type":"array","items":{"type":"string"}},"python":{"title":"Python version","description":"Python version to use or an absolute path to a python interpreter","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#python-version"}},"type":"string"},"platforms":{"title":"Platforms","description":"List of platforms to build for","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#supported-platforms"}},"type":"array","items":{"$ref":"#/definitions/Platform"}},"description":{"title":"Description","description":"Description of the environment for the `env show` command","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#description"}},"type":"string"},"type":{"title":"Type","description":"Type of environment. Without plugins, the only supported type is \"virtual\"","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/#type"}},"type":"string","default":"virtual"},"matrix":{"title":"Matrix","description":"Matrix of environments","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/advanced/#matrix"}},"type":"array","items":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"matrix-name-format":{"title":"Matrix name format","description":"Format string for matrix names, supporting {variable} and {value} placeholders","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/advanced/#name-formatting"}},"type":"string","default":"{value}"},"overrides":{"$ref":"#/definitions/Overrides"},"requires":{"title":"Requires","description":"Required environment plugins","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/plugins/environment/reference/#installation"}},"type":"array","items":{"type":"string"}}}},"Envs":{"title":"Envs","description":"Dictionary of environments","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/environment/overview/"}},"type":"object","additionalProperties":{"$ref":"#/definitions/Env"}},"CollectorEnv":{"title":"CollectorEnv","description":"Environment collector plugin configuration","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/plugins/environment-collector/"}},"type":"object","properties":{"collectors":{"title":"Collectors","description":"Custom environment collectors","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/plugins/environment-collector/custom/"}},"type":"object","additionalProperties":{"type":"object"}},"requires":{"title":"Requires","description":"Required environment collectors for automatic management","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/plugins/environment-collector/reference/#installation"}},"type":"array","items":{"type":"string"}}}},"Target":{"title":"Target","type":"object","properties":{"dependencies":{"title":"Dependencies","description":"Additional dependencies to install in the environment","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#dependencies"}},"type":"array","items":{"type":"string"}},"require-runtime-dependencies":{"title":"Require runtime dependencies","description":"Whether to install the project\u2019s runtime dependencies","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#dependencies"}},"type":"boolean","default":false},"require-runtime-features":{"title":"Required runtime features","description":"A list of the project\u2019s runtime features to install","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#dependencies"}},"type":"array","items":{"type":"string"}},"versions":{"title":"Versions","description":"List of versions to build","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#versions"}},"type":"array","items":{"type":"string"}}}},"CustomTargets":{"title":"CustomTargets","description":"Build targets","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#build-targets"}},"type":"object","additionalProperties":{"$ref":"#/definitions/Target"}},"Hook":{"title":"Build hook","type":"object","properties":{"dependencies":{"title":"Dependencies","description":"Additional dependencies installed in the build environment","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#dependencies_1"}},"type":"array","items":{"type":"string"}},"require-runtime-dependencies":{"title":"Require runtime dependencies","description":"Whether to install the project\u2019s runtime dependencies","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#dependencies_1"}},"type":"boolean","default":false},"require-runtime-features":{"title":"Required runtime features","description":"A list of the project\u2019s runtime features to install","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#dependencies_1"}},"type":"array","items":{"type":"string"}},"enable-by-default":{"title":"Conditional execution","description":"Whether to enable current hook (disable to control activation using environment variables)","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#conditional-execution"}},"type":"boolean","default":true}}},"Hooks":{"title":"Hooks","description":"Build hooks","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#build-hooks"}},"type":"object","additionalProperties":{"$ref":"#/definitions/Hook"}},"Build":{"title":"Build","description":"Build configuration","type":"object","anyOf":[{"properties":{"dev-mode-dirs":false}},{"properties":{"dev-mode-exact":false}}],"properties":{"ignore-vcs":{"title":"Ignore VCS in file selection","description":"Whether to ignore VCS .*ignore files and include those files by default","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#vcs"}},"type":"boolean","default":false},"include":{"title":"Include files","description":"List of glob patterns to include files","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#patterns"}},"type":"array","items":{"type":"string"}},"exclude":{"title":"Exclude files","description":"List of glob patterns to exclude files","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#patterns"}},"type":"array","items":{"type":"string"}},"artifacts":{"title":"Artifact files","description":"List of glob patterns to include VCS-ignored files","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#artifacts"}},"type":"array","items":{"type":"string"}},"only-packages":{"title":"Excluding files outside packages","description":"Whether to only include non-artifact files in packages","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#excluding-files-outside-packages"}},"type":"boolean","default":false},"sources":{"title":"Sources","description":"Rewrite relative paths","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#rewriting-paths"}},"anyOf":[{"type":"object","additionalProperties":{"type":"string"}},{"type":"array","items":{"type":"string"}}]},"skip-excluded-dirs":{"title":"Skip excluded dirs","description":"Whether to skip excluded directories (for performance reasons)","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#performance"}},"type":"boolean","default":false},"reproducible":{"title":"Reproducible","description":"Whether to make the build reproducible","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#reproducible-builds"}},"type":"boolean","default":true},"directory":{"title":"Output directory","description":"Directory to write build artifacts to","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#output-directory"}},"type":"string","default":"dist"},"dev-mode-dirs":{"title":"Dev mode directories","description":"List of directories to add to PYTHONPATH in development mode","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#dev-mode"}},"type":"array","items":{"type":"string"}},"dev-mode-exact":{"title":"Exact dev mode","description":"Whether to use an exact dev mode that doesn\u2019t add whole directories to PYTHONPATH","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/config/build/#dev-mode"}},"type":"boolean"},"targets":{"$ref":"#/definitions/CustomTargets"},"hooks":{"$ref":"#/definitions/Hooks"}}},"Version":{"title":"Version","description":"Version configuration","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/version/#configuration"}},"type":"object","properties":{"path":{"title":"Path","description":"A relative path to a file containing the project version","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/version/#configuration"}},"type":"string"},"pattern":{"title":"Pattern","description":"A regex pattern to extract the version","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/version/#configuration"}},"type":"string"},"source":{"title":"Source","description":"A source to use for retrieving and updating the version.","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/version/#configuration"}},"type":"string"}}},"PublishIndex":{"title":"PublishIndex","description":"Publishing index configuration","type":"object","properties":{"disable":{"title":"Confirmation","description":"Ask for confirmation when publishing to index","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/publish/#confirmation"}},"type":"boolean","default":false},"repos":{"title":"Repositories","description":"Define named repositories to publish to","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/publish/#repository"}},"type":"object","properties":{"main":false,"test":false},"additionalProperties":{"type":"object","properties":{"url":{"type":"string"}}}}}},"Publish":{"title":"Publish","description":"Publish configuration","x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/publish/"}},"type":"object","properties":{"index":{"$ref":"#/definitions/PublishIndex"}}}},"oneOf":[{"properties":{"version":false}},{"required":["version"],"properties":{"version":{"x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/version/"}},"type":"object","required":["path"],"properties":{"path":{"type":"string"},"pattern":{"type":"string"}}}}},{"required":["version"],"properties":{"version":{"x-taplo":{"links":{"key":"https://hatch.pypa.io/latest/version/"}},"type":"object","required":["source"],"properties":{"source":{"type":"string"}}}}}],"properties":{"metadata":{"$ref":"#/definitions/Metadata"},"env":{"$ref":"#/definitions/CollectorEnv"},"envs":{"$ref":"#/definitions/Envs"},"build":{"$ref":"#/definitions/Build"},"version":{"$ref":"#/definitions/Version"},"publish":{"$ref":"#/definitions/Publish"}},"title":"Hatch","type":"object","x-taplo-info":{"authors":["flying-sheep (https://github.com/flying-sheep)","Chaojie (https://github.com/ischaojie)"],"pattern":["^(.*(/|\\\\)hatch\\.toml|hatch\\.toml)$"]}}
</schema>

[User] Provide a JSON object that satisfies the schema "Hatch". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Format

Options for static analysis and formatting

Config-Path

Path to default configuration

Metadata

Metadata for the project

Allow-Direct-References

Whether to allow direct references

Allow-Ambiguous-Features

Whether to allow ambiguous features

Override

TODO

Overrides

Overrides depending on things like platform, matrix variables, or environment variables

Env

Template

Template environment to inherit from. Set to own name to make self referential (disable inheritance from “default”)

Detached

Make the environment self-referential and skip project install

Dependencies

List of dependencies to install in the environment

Extra dependencies

List of extra dependencies to install in the environment in addition to the template environment’s dependencies

Features (extras)

List of optional dependency groups (extras) to install

Dev mode

Whether to install the project in development mode

Skip install

Whether to skip installing the project

Environment variables

Environment variables to set

Environment variable include

Glob patterns of environment variables to include

Environment variable exclude

Glob patterns of environment variables to exclude

Scripts

Dictionary of scripts to run

Pre-install commands

List of commands to run before installing the project

Post-install commands

List of commands to run after installing the project

Python version

Python version to use or an absolute path to a python interpreter

Platforms

List of platforms to build for

Description

Description of the environment for the `env show` command

Type

Type of environment. Without plugins, the only supported type is "virtual"

Matrix

Matrix of environments

Matrix name format

Format string for matrix names, supporting {variable} and {value} placeholders

Requires

Required environment plugins

Envs

Dictionary of environments

CollectorEnv

Environment collector plugin configuration

Collectors

Custom environment collectors

Requires

Required environment collectors for automatic management

Target

Dependencies

Additional dependencies to install in the environment

Require runtime dependencies

Whether to install the project’s runtime dependencies

Required runtime features

A list of the project’s runtime features to install

Versions

List of versions to build

CustomTargets

Build targets

Build hook

Dependencies

Additional dependencies installed in the build environment

Require runtime dependencies

Required runtime features

Conditional execution

Whether to enable current hook (disable to control activation using environment variables)

Hooks

Build hooks

Build

Build configuration

Ignore VCS in file selection

Whether to ignore VCS .*ignore files and include those files by default

Include files

List of glob patterns to include files

Exclude files

List of glob patterns to exclude files

Artifact files

List of glob patterns to include VCS-ignored files

Excluding files outside packages

Whether to only include non-artifact files in packages

Sources

Rewrite relative paths

Skip excluded dirs

Whether to skip excluded directories (for performance reasons)

Reproducible

Whether to make the build reproducible

Output directory

Directory to write build artifacts to

Dev mode directories

List of directories to add to PYTHONPATH in development mode

Exact dev mode

Whether to use an exact dev mode that doesn’t add whole directories to PYTHONPATH

Version

Version configuration

Path

A relative path to a file containing the project version

Pattern

A regex pattern to extract the version

Source

A source to use for retrieving and updating the version.

PublishIndex

Publishing index configuration

Confirmation

Ask for confirmation when publishing to index

Repositories

Define named repositories to publish to

Publish

Publish configuration

Hatch

Provide a JSON object that satisfies the schema "Hatch". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.