[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/chart.json","additionalProperties":false,"properties":{"apiVersion":{"description":"The apiVersion field should be v2 for Helm charts that require at least Helm 3. Charts supporting previous Helm versions have an apiVersion set to v1 and are still installable by Helm 3.","enum":["v1","v2"]},"name":{"description":"The name of the chart","type":"string"},"version":{"description":"A SemVer 2 version","type":"string"},"kubeVersion":{"description":"The optional kubeVersion field can define semver constraints on supported Kubernetes versions. Helm will validate the version constraints when installing the chart and fail if the cluster runs an unsupported Kubernetes version.","type":"string"},"description":{"description":"A single-sentence description of this project","type":"string"},"type":{"description":"The type of the chart","default":"application","enum":["application","library"]},"keywords":{"type":"array","description":"A list of keywords about this project","items":{"type":"string"}},"home":{"description":"The URL of this projects home page","type":"string","format":"uri"},"sources":{"type":"array","description":"A list of URLs to source code for this project","items":{"type":"string","format":"uri"}},"dependencies":{"type":"array","description":"In Helm, one chart may depend on any number of other charts. These dependencies can be dynamically linked using the dependencies field in Chart.yaml or brought in to the charts/ directory and managed manually.\nThe charts required by the current chart are defined as a list in the dependencies field.","items":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"description":"The name of the chart","type":"string"},"version":{"description":"The version of the chart","type":"string"},"repository":{"description":"The repository URL or alias","anyOf":[{"type":"string","format":"uri"},{"type":"string","pattern":"^@"}]},"condition":{"description":"A yaml path that resolves to a boolean, used for enabling/disabling charts","type":"string"},"tags":{"description":"Tags can be used to group charts for enabling/disabling together","type":"array","items":{"type":"string"}},"import-values":{"description":"ImportValues holds the mapping of source values to parent key to be imported. Each item can be a string or pair of child/parent sublist items.","type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"required":["parent","child"],"properties":{"parent":{"description":"The destination path in the parent chart's values","type":"string"},"child":{"description":"The source key of the values to be imported","type":"string"}}}]}},"alias":{"description":"Alias to be used for the chart. Useful when you have to add the same chart multiple times","type":"string"}}}},"maintainers":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"description":"The maintainers name","type":"string"},"email":{"description":"The maintainers email","type":"string","format":"email"},"url":{"description":"A URL for the maintainer","type":"string","format":"uri"}}}},"icon":{"description":"A URL to an SVG or PNG image to be used as an icon","type":"string","format":"uri"},"appVersion":{"description":"Note that the appVersion field is not related to the version field. It is a way of specifying the version of the application. For example, the drupal chart may have an appVersion: \"8.2.1\", indicating that the version of Drupal included in the chart (by default) is 8.2.1. This field is informational, and has no impact on chart version calculations. Wrapping the version in quotes is highly recommended. It forces the YAML parser to treat the version number as a string. Leaving it unquoted can lead to parsing issues in some cases. For example, YAML interprets 1.0 as a floating point value, and a git commit SHA like 1234e10 as scientific notation.","type":"string"},"deprecated":{"description":"When managing charts in a Chart Repository, it is sometimes necessary to deprecate a chart. The optional deprecated field in Chart.yaml can be used to mark a chart as deprecated. If the latest version of a chart in the repository is marked as deprecated, then the chart as a whole is considered to be deprecated. The chart name can be later reused by publishing a newer version that is not marked as deprecated.","type":"boolean"},"annotations":{"description":"A list of annotations keyed by name","type":"object","additionalProperties":{"type":"string"},"properties":{"artifacthub.io/changes":{"description":"This annotation is used to provide some details about the changes introduced by a given chart version. Artifact Hub can generate and display a ChangeLog based on the entries in the changes field in all your chart versions.\nThis annotation can be provided using two different formats: using a plain list of strings with the description of the change or using a list of objects with some extra structured information (see example below). Please feel free to use the one that better suits your needs. The UI experience will be slightly different depending on the choice. When using the list of objects option the valid supported kinds are added, changed, deprecated, removed, fixed and security.","type":"string"},"artifacthub.io/containsSecurityUpdates":{"description":"Use this annotation to indicate that this chart version contains security updates. When a package release contains security updates, a special message will be displayed in the Artifact Hub UI as well as in the new release email notification.","enum":["true","false"]},"artifacthub.io/crds":{"description":"By default, Artifact Hub will try to extract the containers images used by Helm charts from the manifests generated from a dry-run install using the default values. If you prefer, you can also provide a list of containers images manually by using this annotation.\nContainers images will be scanned for security vulnerabilities. The security report generated will be available in the package detail view. It is possible to whitelist images so that they are not scanned by setting the whitelisted flag to true.","type":"string"},"artifacthub.io/images":{"description":"This annotation can be used to list the operator's CRDs. They will be visible in the package's detail view as cards.","type":"string"},"artifacthub.io/crdsExamples":{"description":"Use this annotation to provide a list of example CRs for the operator's CRDs. Each of the examples can be opened from the corresponding CRD card in the package's detail view.","type":"string"},"artifacthub.io/license":{"description":"Use this annotation to indicate the chart's license. By default, Artifact Hub tries to read the chart's license from the LICENSE file in the chart, but it's possible to override or provide it with this annotation. It must be a valid SPDX identifier.","type":"string"},"artifacthub.io/links":{"description":"This annotation allows including named links, which will be rendered nicely in Artifact Hub. You can use this annotation to include links not included previously in the Chart.yaml file, or you can use it to name links already present (in the sources section, for example).","type":"string"},"artifacthub.io/maintainers":{"description":"This annotation can be used if you want to display a different name for a given user in Artifact Hub than the one used in the Chart.yaml file. If the email used matches, the name used in the annotations entry will be displayed in Artifact Hub. It's also possible to include maintainers that should only be listed in Artifact Hub by adding additional entries.","type":"string"},"artifacthub.io/operator":{"description":"Use this annotation to indicate that your chart represents an operator. Artifact Hub at the moment also considers your chart to represent an operator if the word operator appears in the chart name.","enum":["true","false"]},"artifacthub.io/operatorCapabilities":{"description":"Use this annotation to indicate the capabilities of the operator your chart provides. It must be one of the following options: Basic Install, Seamless Upgrades, Full Lifecycle, Deep Insights or Auto Pilot. For more information please see the capability level diagram.","enum":["Basic Install","Seamless Upgrades","Full Lifecycle","Deep Insights","Auto Pilot"]},"artifacthub.io/prerelease":{"description":"Use this annotation to indicate that this chart version is a pre-release. This status will be displayed in the UI's package view, as well as in new releases notifications emails.","enum":["true","false"]},"artifacthub.io/recommendations":{"description":"This annotation allows recommending other related packages. Recommended packages will be featured in the package detail view in Artifact Hub.","type":"string"},"artifacthub.io/signKey":{"description":"This annotation can be used to provide some information about the key used to sign a given chart version. This information will be displayed on the Artifact Hub UI, making it easier for users to get the information they need to verify the integrity and origin of your chart. The url field indicates where users can find the public key and it is mandatory when a sign key entry is provided.","type":"string"}}}},"required":["apiVersion","name","version"],"title":"Helm Chart.yaml","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "Helm Chart.yaml". Here are the required top‑level fields: apiVersion, name, version. Return only the valid JSON object.

The apiVersion field should be v2 for Helm charts that require at least Helm 3. Charts supporting previous Helm versions have an apiVersion set to v1 and are still installable by Helm 3.

The name of the chart

A SemVer 2 version

The optional kubeVersion field can define semver constraints on supported Kubernetes versions. Helm will validate the version constraints when installing the chart and fail if the cluster runs an unsupported Kubernetes version.

A single-sentence description of this project

The type of the chart

A list of keywords about this project

The URL of this projects home page

A list of URLs to source code for this project

The name of the chart

The version of the chart

The repository URL or alias

A yaml path that resolves to a boolean, used for enabling/disabling charts

Tags can be used to group charts for enabling/disabling together

ImportValues holds the mapping of source values to parent key to be imported. Each item can be a string or pair of child/parent sublist items.

The destination path in the parent chart's values

The source key of the values to be imported

Alias to be used for the chart. Useful when you have to add the same chart multiple times

The maintainers name

The maintainers email

A URL for the maintainer

A URL to an SVG or PNG image to be used as an icon

Note that the appVersion field is not related to the version field. It is a way of specifying the version of the application. For example, the drupal chart may have an appVersion: "8.2.1", indicating that the version of Drupal included in the chart (by default) is 8.2.1. This field is informational, and has no impact on chart version calculations. Wrapping the version in quotes is highly recommended. It forces the YAML parser to treat the version number as a string. Leaving it unquoted can lead to parsing issues in some cases. For example, YAML interprets 1.0 as a floating point value, and a git commit SHA like 1234e10 as scientific notation.

When managing charts in a Chart Repository, it is sometimes necessary to deprecate a chart. The optional deprecated field in Chart.yaml can be used to mark a chart as deprecated. If the latest version of a chart in the repository is marked as deprecated, then the chart as a whole is considered to be deprecated. The chart name can be later reused by publishing a newer version that is not marked as deprecated.

A list of annotations keyed by name

This annotation is used to provide some details about the changes introduced by a given chart version. Artifact Hub can generate and display a ChangeLog based on the entries in the changes field in all your chart versions.
This annotation can be provided using two different formats: using a plain list of strings with the description of the change or using a list of objects with some extra structured information (see example below). Please feel free to use the one that better suits your needs. The UI experience will be slightly different depending on the choice. When using the list of objects option the valid supported kinds are added, changed, deprecated, removed, fixed and security.

Use this annotation to indicate that this chart version contains security updates. When a package release contains security updates, a special message will be displayed in the Artifact Hub UI as well as in the new release email notification.

By default, Artifact Hub will try to extract the containers images used by Helm charts from the manifests generated from a dry-run install using the default values. If you prefer, you can also provide a list of containers images manually by using this annotation.
Containers images will be scanned for security vulnerabilities. The security report generated will be available in the package detail view. It is possible to whitelist images so that they are not scanned by setting the whitelisted flag to true.

This annotation can be used to list the operator's CRDs. They will be visible in the package's detail view as cards.

Use this annotation to provide a list of example CRs for the operator's CRDs. Each of the examples can be opened from the corresponding CRD card in the package's detail view.

Use this annotation to indicate the chart's license. By default, Artifact Hub tries to read the chart's license from the LICENSE file in the chart, but it's possible to override or provide it with this annotation. It must be a valid SPDX identifier.

This annotation allows including named links, which will be rendered nicely in Artifact Hub. You can use this annotation to include links not included previously in the Chart.yaml file, or you can use it to name links already present (in the sources section, for example).

This annotation can be used if you want to display a different name for a given user in Artifact Hub than the one used in the Chart.yaml file. If the email used matches, the name used in the annotations entry will be displayed in Artifact Hub. It's also possible to include maintainers that should only be listed in Artifact Hub by adding additional entries.

Use this annotation to indicate that your chart represents an operator. Artifact Hub at the moment also considers your chart to represent an operator if the word operator appears in the chart name.

Use this annotation to indicate the capabilities of the operator your chart provides. It must be one of the following options: Basic Install, Seamless Upgrades, Full Lifecycle, Deep Insights or Auto Pilot. For more information please see the capability level diagram.

Basic Install
Seamless Upgrades
Full Lifecycle
Deep Insights
Auto Pilot

Use this annotation to indicate that this chart version is a pre-release. This status will be displayed in the UI's package view, as well as in new releases notifications emails.

This annotation allows recommending other related packages. Recommended packages will be featured in the package detail view in Artifact Hub.

This annotation can be used to provide some information about the key used to sign a given chart version. This information will be displayed on the Artifact Hub UI, making it easier for users to get the information they need to verify the integrity and origin of your chart. The url field indicates where users can find the public key and it is mandatory when a sign key entry is provided.

Helm Chart.yaml

Provide a JSON object that satisfies the schema "Helm Chart.yaml". Here are the required top‑level fields: apiVersion, name, version. 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/cheatsheets.json","$comment":"https://github.com/cheat/cheat","additionalProperties":false,"properties":{"editor":{"$ref":"https://json.schemastore.org/base.json#/definitions/editor","description":"An editor to modify cheatsheets\nhttps://github.com/cheat/cheat#cheatpaths"},"colorize":{"description":"Whether cheatsheets should be colorized\nhttps://github.com/cheat/cheat#cheatpaths","type":"boolean","default":false},"style":{"description":"A color schema applied for cheatsheets\nhttps://github.com/cheat/cheat#cheatpaths","type":"string","enum":["abap","algol","algol_nu","api","arduino","autumn","average","base16-snazzy","borland","bw","catppuccin-frappe","catppuccin-latte","catppuccin-macchiato","catppuccin-mocha","colorful","compat","doom-one","doom-one2","dracula","emacs","friendly","fruity","github","github-dark","gruvbox","gruvbox-light","hr_high_contrast","hrdark","igor","lovelace","manni","modus-operandi","modus-vivendi","monokai","monokailight","murphy","native","nord","onedark","onesenterprise","paraiso-dark","paraiso-light","pastie","perldoc","pygments","rainbow_dash","rose-pine","rose-pine-dawn","rose-pine-moon","rrt","solarized-dark","solarized-dark256","solarized-light","swapoff","tango","trac","vim","vs","vulcan","witchhazel","xcode","xcode-dark"]},"formatter":{"description":"A formatter to format cheatsheets\nhttps://github.com/cheat/cheat#cheatpaths","type":"string","enum":["terminal","terminal256","terminal16m"]},"pager":{"description":"A pager to read long cheatsheets\nhttps://github.com/cheat/cheat#cheatpaths","type":"string","oneOf":[{"enum":["less","more"]},{}]},"cheatpaths":{"description":"Cheatpaths\nhttps://github.com/cheat/cheat#cheatpaths","type":"array","items":{"title":"cheatpath","description":"A cheatpath\nhttps://github.com/cheat/cheat#cheatpaths","type":"object","properties":{"name":{"description":"A cheatpath name\nhttps://github.com/cheat/cheat#cheatpaths","type":"string","minLength":1},"path":{"$ref":"https://json.schemastore.org/base.json#/definitions/path","description":"A cheatpath path\nhttps://github.com/cheat/cheat#cheatpaths"},"tags":{"description":"Cheatpath tags\nhttps://github.com/cheat/cheat#cheatpaths","type":"array","uniqueItems":true,"items":{"type":"string","minLength":1}},"readonly":{"description":"Whether allow creating cheatsheets in a cheatpath\nhttps://github.com/cheat/cheat#cheatpaths","type":"boolean","default":false}},"additionalProperties":false}}},"title":"A cheatsheet config schema","type":"object"}
</schema>

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

An editor to modify cheatsheets
https://github.com/cheat/cheat#cheatpaths

Whether cheatsheets should be colorized
https://github.com/cheat/cheat#cheatpaths

A color schema applied for cheatsheets
https://github.com/cheat/cheat#cheatpaths

abap algol algol_nu api arduino autumn average base16-snazzy borland bw catppuccin-frappe catppuccin-latte catppuccin-macchiato catppuccin-mocha colorful compat doom-one doom-one2 dracula emacs friendly fruity github github-dark gruvbox gruvbox-light hr_high_contrast hrdark igor lovelace manni modus-operandi modus-vivendi monokai monokailight murphy native nord onedark onesenterprise paraiso-dark paraiso-light pastie perldoc pygments rainbow_dash rose-pine rose-pine-dawn rose-pine-moon rrt solarized-dark solarized-dark256 solarized-light swapoff tango trac vim vs vulcan witchhazel xcode xcode-dark

A formatter to format cheatsheets
https://github.com/cheat/cheat#cheatpaths

A pager to read long cheatsheets
https://github.com/cheat/cheat#cheatpaths

Cheatpaths
https://github.com/cheat/cheat#cheatpaths

cheatpath

A cheatpath
https://github.com/cheat/cheat#cheatpaths

A cheatpath name
https://github.com/cheat/cheat#cheatpaths

A cheatpath path
https://github.com/cheat/cheat#cheatpaths

Cheatpath tags
https://github.com/cheat/cheat#cheatpaths

Whether allow creating cheatsheets in a cheatpath
https://github.com/cheat/cheat#cheatpaths

A cheatsheet config schema

Provide a JSON object that satisfies the schema "A cheatsheet config schema". 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#","$id":"https://json.schemastore.org/chisel-slices.json","$comment":"https://github.com/canonical/chisel/tree/main#slice-definitions","additionalProperties":false,"description":"A slice definition for Ubuntu Chisel tool. For details, see https://github.com/canonical/chisel/tree/main#slice-definitions.","properties":{"package":{"type":"string","description":"The name of the package to use for the slice.","pattern":"^[a-z0-9][a-z0-9+\\-\\.]+$","examples":["libgcc-s1","libunwind-13"]},"archive":{"type":"string","description":"The name of the archive to use for the slice. Archives are defined in the chisel.yaml file.","examples":["ubuntu"]},"essential":{"type":"array","description":"A list of slices that are a dependency for all slices of this package. Each slice item is formatted as '<slice_name>_<slice_part>'.","uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9+\\-\\._]+$"},"examples":["slicename_copyright"]},"slices":{"type":"object","description":"Slice definitions for this package.","patternProperties":{"^[_a-zA-Z][a-zA-Z0-9_-]*$":{"description":"The name of the slice part.","type":"object","additionalProperties":false,"properties":{"essential":{"type":"array","description":"The name of the dependency slice part. The slice part is formatted as '<slice_name>_<slice_part>'.","uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9+\\-\\._]+$"},"examples":["libgcc-s1_libs","ca-certificates_data"]},"mutate":{"type":"string","description":"A Starlark expression to modify the file contents.","examples":["foo = content.read(\"/path/to/temporary/content\")"]},"contents":{"type":"object","description":"Files to include in the slice. Supports glob patterns.","examples":[{"/lib*/ld*.so.*":{}},{"/usr/share/nodejs/cjs-module-lexer/**":{}},{"/path/to/moved/content":{"copy":"/bin/original"}},{"/path/to/link":{"symlink":"/bin/mybin"}},{"/path/to/new/dir":{"make":true}},{"/path/to/file/with/text":{"text":"Some text"}},{"/path/to/mutable/file/with/default/text":{"text":"FIXME","mutable":true}},{"/path/to/temporary/content":{"until":"mutate"}}],"patternProperties":{"^.+$":{"description":"Path description.","type":["object","null"],"additionalProperties":false,"properties":{"make":{"type":"boolean","description":"Make this file or directory if it does not already exist.","default":true},"mode":{"type":"integer","description":"File permissions to use.","examples":["0o755"]},"copy":{"type":"string","description":"Copy this file or directory from this location.","examples":["/path/to/original/file.txt"]},"text":{"type":"string","description":"The contents of the file.","examples":["FIXME"]},"symlink":{"type":"string","description":"Make a symlink to this file or directory.","examples":["/path/to/source/file.txt"]},"mutable":{"type":"boolean","description":"If true, the file is mutable.","default":true},"until":{"$comment":"Valid values: 'mutate' and ''. But most editors will not accept an empty string.","type":"string","description":"Only keep this file until this stage.","examples":["mutate"],"default":"","enum":["","mutate"]},"arch":{"type":"array","description":"Only include this file on specific architectures.","uniqueItems":true,"examples":[["amd64","arm64"]],"items":{"type":"string","examples":["amd64","i386","armhf","arm64","powerpc","ppc64el","s390x","riscv64"]}}}}}}}}}}},"title":"Canonical Chisel Slice Definition","type":"object"}
</schema>

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

A slice definition for Ubuntu Chisel tool. For details, see https://github.com/canonical/chisel/tree/main#slice-definitions.

The name of the package to use for the slice.

The name of the archive to use for the slice. Archives are defined in the chisel.yaml file.

A list of slices that are a dependency for all slices of this package. Each slice item is formatted as '<slice_name>_<slice_part>'.

Slice definitions for this package.

The name of the slice part.

The name of the dependency slice part. The slice part is formatted as '<slice_name>_<slice_part>'.

A Starlark expression to modify the file contents.

Files to include in the slice. Supports glob patterns.

Some text

FIXME

Path description.

Make this file or directory if it does not already exist.

File permissions to use.

Copy this file or directory from this location.

The contents of the file.

Make a symlink to this file or directory.

If true, the file is mutable.

Valid values: 'mutate' and ''. But most editors will not accept an empty string.

Only keep this file until this stage.

Only include this file on specific architectures.

Canonical Chisel Slice Definition

Provide a JSON object that satisfies the schema "Canonical Chisel Slice Definition". 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#","$id":"https://json.schemastore.org/chrome-extension-locales-messages.json","$comment":"https://developer.chrome.com/docs/extensions/mv3/i18n-messages/","additionalProperties":false,"patternProperties":{"^(?!@@)[\\w@]+$":{"properties":{"message":{"description":"The translated message, in the form of a string that can contain placeholders. Use `$_placeholder_name_$` (case insensitive) to refer to a particular placeholder. For example, you can refer to a placeholder named \"our_site\" as `$our_site$`, `$OUR_SITE$`, or `$oUR_sITe$`.\nTo put a dollar sign (`$`) into the string, use `$$`.\nAlthough placeholders such as `$USER$` are the preferred way of referring to substitution strings (strings specified using the substitutions parameter of i18n.getMessage) you can also refer to substitution strings directly within the message.","examples":["What's your name?","Hello, $USER$","Goodbye, $USER$. Come back to $OUR_SITE$ soon!","Amount (in $$)","Params: $1, $2, $3"],"type":"string","title":"message"},"description":{"description":"Optional. A description of the message, intended to give context or details to help the translator make the best possible translation.","examples":["Ask for the user's name","Greet the user","Say goodbye to the user"],"type":"string","title":"description"},"placeholders":{"description":"Optional. Defines one or more substrings to be used within the message.\nEach placeholder has a name, a \"content\" item, and an optional \"example\" item. A placeholder's name is case-insensitive and can contain the same characters as a message name.\n","patternProperties":{"^[\\w@]+$":{"properties":{"content":{"description":"The \"content\" item's value is a string that can refer to substitution strings, which are specified using the i18n.getMessage method's substitutions parameter. The value of a \"content\" item is typically something like \"Example.com\" or \"$1\". If you refer to a substitution string that doesn't exist, you get an empty string. The following table shows how `$_n_` strings correspond to strings specified by the substitutions parameter.","type":"string","title":"content"},"example":{"description":"The \"example\" item (optional, but highly recommended) helps translators by showing how the content appears to the end user. For example, a placeholder for a dollar amount should have an example like `\"$23.45\"`.","type":"string","title":"example"}},"required":["content"],"type":"object"}},"type":"object","title":"placeholders"}},"required":["message"],"type":"object"}},"type":"object"}
</schema>

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

The translated message, in the form of a string that can contain placeholders. Use `$_placeholder_name_$` (case insensitive) to refer to a particular placeholder. For example, you can refer to a placeholder named "our_site" as `$our_site$`, `$OUR_SITE$`, or `$oUR_sITe$`.
To put a dollar sign (`$`) into the string, use `$$`.
Although placeholders such as `$USER$` are the preferred way of referring to substitution strings (strings specified using the substitutions parameter of i18n.getMessage) you can also refer to substitution strings directly within the message.

Goodbye, $USER$. Come back to $OUR_SITE$ soon!

message

Optional. A description of the message, intended to give context or details to help the translator make the best possible translation.

Ask for the user's name
Greet the user
Say goodbye to the user

description

Optional. Defines one or more substrings to be used within the message.
Each placeholder has a name, a "content" item, and an optional "example" item. A placeholder's name is case-insensitive and can contain the same characters as a message name.

The "content" item's value is a string that can refer to substitution strings, which are specified using the i18n.getMessage method's substitutions parameter. The value of a "content" item is typically something like "Example.com" or "$1". If you refer to a substitution string that doesn't exist, you get an empty string. The following table shows how `$_n_` strings correspond to strings specified by the substitutions parameter.

content

The "example" item (optional, but highly recommended) helps translators by showing how the content appears to the end user. For example, a placeholder for a dollar amount should have an example like `"$23.45"`.

example

placeholders

Provide a JSON object that satisfies the schema "chrome-extension-locales-messages". 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#","$id":"https://json.schemastore.org/chrome-manifest.json","additionalProperties":true,"definitions":{"action_v2":{"type":"object","properties":{"default_title":{"type":"string","description":"Tooltip for the main toolbar icon."},"default_popup":{"$ref":"#/definitions/uri","description":"The popup appears when the user clicks the icon."},"default_icon":{"anyOf":[{"type":"string","description":"FIXME: String form is deprecated."},{"type":"object","description":"Icon for the main toolbar.","properties":{"19":{"$ref":"#/definitions/icon"},"38":{"$ref":"#/definitions/icon"}}}]}},"dependencies":{"name":{"not":{"required":["name"]}},"icons":{"not":{"required":["icons"]}},"popup":{"not":{"required":["popup"]}}}},"action_v3":{"type":"object","properties":{"default_title":{"type":"string","description":"Tooltip for the main toolbar icon."},"default_popup":{"$ref":"#/definitions/uri","description":"The popup appears when the user clicks the icon."},"default_icon":{"type":"object","properties":{"16":{"$ref":"#/definitions/icon"},"24":{"$ref":"#/definitions/icon"},"32":{"$ref":"#/definitions/icon"}}}},"dependencies":{"name":{"not":{"required":["name"]}},"icons":{"not":{"required":["icons"]}},"popup":{"not":{"required":["popup"]}}}},"command":{"type":"object","if":{"$comment":"Global shortcuts change the acceptable pattern for the suggested_key.","properties":{"global":{"const":true}},"required":["global"]},"then":{"additionalProperties":false,"properties":{"description":{"type":"string"},"global":{"type":"boolean","description":"Whether this command should work while Chrome does not have focus. Keyboard shortcut suggestions for global commands are limited to Ctrl+Shift+[0..9]"},"suggested_key":{"type":"object","additionalProperties":false,"patternProperties":{"^(default|mac|windows|linux|chromeos)$":{"type":"string","pattern":"^(Ctrl|Command|MacCtrl)\\+Shift\\+[0-9]"}}}}},"else":{"additionalProperties":false,"properties":{"description":{"type":"string"},"global":{"type":"boolean","description":"Whether this command should work while Chrome does not have focus. Keyboard shortcut suggestions for global commands are limited to Ctrl+Shift+[0..9]"},"suggested_key":{"type":"object","additionalProperties":false,"patternProperties":{"^(default|mac|windows|linux|chromeos)$":{"type":"string","pattern":"^(Ctrl|Command|MacCtrl|Alt|Option)\\+(Shift\\+)?[A-Z]"}}}}}},"content_security_policy":{"type":"string","description":"This introduces some fairly strict policies that will make extensions more secure by default, and provides you with the ability to create and enforce rules governing the types of content that can be loaded and executed by your extensions and applications.","format":"content-security-policy","default":"script-src 'self'; object-src 'self'"},"glob_pattern":{"type":"string","format":"glob-pattern"},"icon":{"$ref":"#/definitions/uri"},"match_pattern":{"type":"string","format":"match-pattern","pattern":"^((\\*|http|https|file|ftp|chrome-extension):\\/\\/(\\*|\\*\\.[^\\/\\*]+|[^\\/\\*]+)?(\\/.*))|urn:(\\*|.*)|<all_urls>$"},"mime_type":{"type":"string","format":"mime-type","pattern":"^(?:application|audio|image|message|model|multipart|text|video)\\/[-+.\\w]+$"},"page":{"$ref":"#/definitions/uri"},"permissions":{"type":"array","uniqueItems":true,"items":{"anyOf":[{"type":"string","enum":["accessibilityFeatures.modify","accessibilityFeatures.read","activeTab","alarms","audio","background","bookmarks","browsingData","certificateProvider","clipboardRead","clipboardWrite","contentSettings","contextMenus","cookies","debugger","declarativeContent","declarativeNetRequest","declarativeNetRequestWithHostAccess","declarativeNetRequestFeedback","dns","desktopCapture","documentScan","downloads","downloads.open","downloads.ui","enterprise.deviceAttributes","enterprise.hardwarePlatform","enterprise.networkingAttributes","enterprise.platformKeys","favicon","fileBrowserHandler","fileSystemProvider","fontSettings","gcm","geolocation","history","identity","identity.email","idle","loginState","management","nativeMessaging","notifications","offscreen","pageCapture","platformKeys","power","printerProvider","printing","printingMetrics","privacy","processes","proxy","readingList","runtime","scripting","search","sessions","sidePanel","storage","system.cpu","system.display","system.memory","system.storage","tabCapture","tabGroups","tabs","topSites","tts","ttsEngine","unlimitedStorage","vpnProvider","wallpaper","webAuthenticationProxy","webNavigation","webRequest","webRequestBlocking"]},{"type":"string"}]}},"scripts":{"type":"array","minItems":1,"uniqueItems":true,"items":{"$ref":"#/definitions/uri"}},"uri":{"type":"string"},"version_string":{"type":"string","pattern":"^(?:\\d{1,5}\\.){0,3}\\d{1,5}$"},"web_resource":{"type":"object","required":["resources"],"properties":{"resources":{"type":"array","description":"An array of resources to be exposed. Resources are specified as strings and may contain * for wildcard matches. For example, \"/images/*\" exposes everything in the extension's /images directory recursively while \"*.png\" exposes all PNG files.","items":{"$ref":"#/definitions/glob_pattern"}},"matches":{"type":"array","description":"A list of URL match patterns specifying which pages can access the resources. Only the origin is used to match URLs; subdomains patterns (*.google.com) and paths are ignored.","items":{"$ref":"#/definitions/match_pattern"}},"extension_ids":{"type":"array","description":"A list of extension IDs, specifying which extensions can access the resources.","items":{"type":"string"}},"use_dynamic_url":{"type":"boolean","description":"If true, only allow resources to be accessible through dynamic ID. The dynamic ID is generated per session. It's regenerated on browser restart or extension reload."}}}},"dependencies":{"content_scripts":{"not":{"required":["script_badge"]}},"script_badge":{"not":{"required":["content_scripts"]}}},"else":{"properties":{"background":{"type":"object","description":"The background page is an HTML page that runs in the extension process. It exists for the lifetime of your extension, and only one instance of it at a time is active.","properties":{"persistent":{"type":"boolean","description":"When false, makes the background page an event page (loaded only when needed).","default":true},"page":{"$ref":"#/definitions/page","description":"Specify the HTML of the background page.","default":"background.html"},"scripts":{"$ref":"#/definitions/scripts","description":"A background page will be generated by the extension system that includes each of the files listed in the scripts property.","default":["background.js"]}},"dependencies":{"page":{"not":{"required":["scripts"]}},"scripts":{"not":{"required":["page"]}}}},"browser_action":{"$ref":"#/definitions/action_v2","description":"Use browser actions to put icons in the main Google Chrome toolbar, to the right of the address bar. In addition to its icon, a browser action can also have a tooltip, a badge, and a popup."},"page_action":{"$ref":"#/definitions/action_v2","description":"Use the chrome.pageAction API to put icons inside the address bar. Page actions represent actions that can be taken on the current page, but that aren't applicable to all pages."},"content_security_policy":{"$ref":"#/definitions/content_security_policy"},"web_accessible_resources":{"type":"array","description":"An array of strings specifying the paths (relative to the package root) of packaged resources that are expected to be usable in the context of a web page.","minItems":1,"uniqueItems":true,"items":{"$ref":"#/definitions/uri"}}},"dependencies":{"page_action":{"not":{"required":["browser_action"]}},"browser_action":{"not":{"required":["page_action"]}}}},"if":{"properties":{"manifest_version":{"const":3}}},"properties":{"manifest_version":{"type":"number","description":"One integer specifying the version of the manifest file format your package requires.","enum":[2,3]},"name":{"type":"string","description":"The name of the extension","maxLength":45},"version":{"$ref":"#/definitions/version_string","description":"One to four dot-separated integers identifying the version of this extension."},"default_locale":{"type":"string","description":"Specifies the subdirectory of _locales that contains the default strings for this extension.","default":"en"},"description":{"type":"string","description":"A plain text description of the extension","maxLength":132},"icons":{"type":"object","description":"One or more icons that represent the extension, app, or theme. Recommended format: PNG; also BMP, GIF, ICO, JPEG.","minProperties":1,"properties":{"16":{"$ref":"#/definitions/icon","description":"Used as the favicon for an extension's pages and infobar."},"48":{"$ref":"#/definitions/icon","description":"Used on the extension management page (chrome://extensions)."},"128":{"$ref":"#/definitions/icon","description":"Used during installation and in the Chrome Web Store."},"256":{"$ref":"#/definitions/icon","description":"Used during installation and in the Chrome Web Store."}}},"chrome_url_overrides":{"type":"object","description":"Override pages are a way to substitute an HTML file from your extension for a page that Google Chrome normally provides.","additionalProperties":false,"maxProperties":1,"properties":{"bookmarks":{"$ref":"#/definitions/page","description":"The page that appears when the user chooses the Bookmark Manager menu item from the Chrome menu or, on Mac, the Bookmark Manager item from the Bookmarks menu. You can also get to this page by entering the URL chrome://bookmarks.","default":"bookmarks.html"},"history":{"$ref":"#/definitions/page","description":"The page that appears when the user chooses the History menu item from the Chrome menu or, on Mac, the Show Full History item from the History menu. You can also get to this page by entering the URL chrome://history.","default":"history.html"},"newtab":{"$ref":"#/definitions/page","description":"The page that appears when the user creates a new tab or window. You can also get to this page by entering the URL chrome://newtab.","default":"newtab.html"}}},"commands":{"type":"object","description":"Use the commands API to add keyboard shortcuts that trigger actions in your extension, for example, an action to open the browser action or send a command to the extension.","patternProperties":{".*":{"$ref":"#/definitions/command"},"^_execute_browser_action$":{"$ref":"#/definitions/command"},"^_execute_page_action$":{"$ref":"#/definitions/command"}}},"content_scripts":{"type":"array","description":"Content scripts are JavaScript files that run in the context of web pages.","minItems":1,"uniqueItems":true,"items":{"type":"object","required":["matches"],"additionalProperties":false,"properties":{"matches":{"type":"array","description":"Specifies which pages this content script will be injected into.","minItems":1,"uniqueItems":true,"items":{"$ref":"#/definitions/match_pattern"}},"exclude_matches":{"type":"array","description":"Excludes pages that this content script would otherwise be injected into.","uniqueItems":true,"items":{"$ref":"#/definitions/match_pattern"}},"css":{"type":"array","description":"The list of CSS files to be injected into matching pages. These are injected in the order they appear in this array, before any DOM is constructed or displayed for the page.","uniqueItems":true,"items":{"$ref":"#/definitions/uri"}},"js":{"$ref":"#/definitions/scripts","description":"The list of JavaScript files to be injected into matching pages. These are injected in the order they appear in this array."},"world":{"type":"string","description":"The JavaScript world for a script to execute within.","enum":["ISOLATED","MAIN"],"default":"ISOLATED"},"run_at":{"type":"string","description":"Controls when the files in js are injected.","enum":["document_start","document_end","document_idle"],"default":"document_idle"},"all_frames":{"type":"boolean","description":"Controls whether the content script runs in all frames of the matching page, or only the top frame.","default":false},"include_globs":{"type":"array","description":"Applied after matches to include only those URLs that also match this glob. Intended to emulate the @include Greasemonkey keyword.","uniqueItems":true,"items":{"$ref":"#/definitions/glob_pattern"}},"exclude_globs":{"type":"array","description":"Applied after matches to exclude URLs that match this glob. Intended to emulate the @exclude Greasemonkey keyword.","uniqueItems":true,"items":{"$ref":"#/definitions/glob_pattern"}},"match_about_blank":{"type":"boolean","description":"Whether to insert the content script on about:blank and about:srcdoc.","default":false}}}},"devtools_page":{"$ref":"#/definitions/page","description":"A DevTools extension adds functionality to the Chrome DevTools. It can add new UI panels and sidebars, interact with the inspected page, get information about network requests, and more."},"externally_connectable":{"description":"Declares which extensions, apps, and web pages can connect to your extension via runtime.connect and runtime.sendMessage.","type":"object","additionalProperties":false,"properties":{"ids":{"type":"array","items":{"type":"string","description":"The IDs of extensions or apps that are allowed to connect. If left empty or unspecified, no extensions or apps can connect."}},"matches":{"type":"array","items":{"type":"string","description":"The URL patterns for web pages that are allowed to connect. This does not affect content scripts. If left empty or unspecified, no web pages can connect."}},"accepts_tls_channel_id":{"type":"boolean","default":false,"description":"Indicates that the extension would like to make use of the TLS channel ID of the web page connecting to it. The web page must also opt to send the TLS channel ID to the extension via setting includeTlsChannelId to true in runtime.connect's connectInfo or runtime.sendMessage's options."}}},"file_browser_handlers":{"type":"array","description":"You can use this API to enable users to upload files to your website.","minItems":1,"items":{"type":"object","required":["id","default_title","file_filters"],"additionalProperties":false,"properties":{"id":{"type":"string","description":"Used by event handling code to differentiate between multiple file handlers"},"default_title":{"type":"string","description":"What the button will display."},"file_filters":{"type":"array","description":"Filetypes to match.","minItems":1,"items":{"type":"string"}}}}},"homepage_url":{"$ref":"#/definitions/uri","description":"The URL of the homepage for this extension."},"incognito":{"type":"string","description":"Specify how this extension will behave if allowed to run in incognito mode.","enum":["spanning","split","not_allowed"],"default":"spanning"},"input_components":{"type":"array","description":"Allows your extension to handle keystrokes, set the composition, and manage the candidate window.","items":{"type":"object","required":["name","type","id","description","language","layouts"],"additionalProperties":false,"properties":{"name":{"type":"string"},"type":{"type":"string"},"id":{"type":"string"},"description":{"type":"string"},"language":{"type":"string"},"layouts":{"type":"array"}}}},"key":{"type":"string","description":"This value can be used to control the unique ID of an extension, app, or theme when it is loaded during development."},"minimum_chrome_version":{"$ref":"#/definitions/version_string","description":"The version of Chrome that your extension, app, or theme requires, if any."},"nacl_modules":{"type":"array","description":"One or more mappings from MIME types to the Native Client module that handles each type.","minItems":1,"uniqueItems":true,"items":{"type":"object","required":["path","mime_type"],"additionalProperties":false,"properties":{"path":{"$ref":"#/definitions/uri","description":"The location of a Native Client manifest (a .nmf file) within the extension directory."},"mime_type":{"$ref":"#/definitions/mime_type","description":"The MIME type for which the Native Client module will be registered as content handler."}}}},"oauth2":{"type":"object","description":"Use the Chrome Identity API to authenticate users: the getAuthToken for users logged into their Google Account and the launchWebAuthFlow for users logged into a non-Google account.","required":["client_id","scopes"],"additionalProperties":false,"properties":{"client_id":{"type":"string","description":"You need to register your app in the Google APIs Console to get the client ID."},"scopes":{"type":"array","minItems":1,"items":{"type":"string"}}}},"offline_enabled":{"type":"boolean","description":"Whether the app or extension is expected to work offline. When Chrome detects that it is offline, apps with this field set to true will be highlighted on the New Tab page."},"omnibox":{"type":"object","description":"The omnibox API allows you to register a keyword with Google Chrome's address bar, which is also known as the omnibox.","required":["keyword"],"additionalProperties":false,"properties":{"keyword":{"type":"string","description":"The keyword that will trigger your extension."}}},"optional_permissions":{"$ref":"#/definitions/permissions","description":"Use the chrome.permissions API to request declared optional permissions at run time rather than install time, so users understand why the permissions are needed and grant only those that are necessary."},"options_page":{"$ref":"#/definitions/page","description":"To allow users to customize the behavior of your extension, you may wish to provide an options page. If you do, a link to it will be provided from the extensions management page at chrome://extensions. Clicking the Options link opens a new tab pointing at your options page.","default":"options.html"},"options_ui":{"type":"object","description":"To allow users to customize the behavior of your extension, you may wish to provide an options page. If you do, an Options link will be shown on the extensions management page at chrome://extensions which opens a dialogue containing your options page.","required":["page"],"properties":{"page":{"type":"string","description":"The path to your options page, relative to your extension's root."},"chrome_style":{"type":"boolean","default":true,"description":"If true, a Chrome user agent stylesheet will be applied to your options page. The default value is false, but we recommend you enable it for a consistent UI with Chrome."},"open_in_tab":{"type":"boolean","default":false,"description":"If true, your extension's options page will be opened in a new tab rather than embedded in chrome://extensions. The default is false, and we recommend that you don't change it. This is only useful to delay the inevitable deprecation of the old options UI! It will be removed soon, so try not to use it. It will break."}}},"permissions":{"$ref":"#/definitions/permissions","description":"Permissions help to limit damage if your extension or app is compromised by malware. Some permissions are also displayed to users before installation, as detailed in Permission Warnings."},"requirements":{"type":"object","description":"Technologies required by the app or extension. Hosting sites such as the Chrome Web Store may use this list to dissuade users from installing apps or extensions that will not work on their computer.","additionalProperties":false,"properties":{"plugins":{"type":"object","description":"Indicates if an app or extension requires NPAPI to run. This requirement is enabled by default when the manifest includes the 'plugins' field.","required":["npapi"],"additionalProperties":false,"properties":{"npapi":{"type":"boolean","default":true}}},"3D":{"type":"object","description":"The '3D' requirement denotes GPU hardware acceleration.","required":["features"],"additionalProperties":false,"properties":{"features":{"type":"array","description":"List of the 3D-related features your app requires.","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["webgl"]}}}}}},"sandbox":{"type":"object","description":"Defines an collection of app or extension pages that are to be served in a sandboxed unique origin, and optionally a Content Security Policy to use with them.","required":["pages"],"additionalProperties":false,"properties":{"pages":{"type":"array","minItems":1,"uniqueItems":true,"items":{"$ref":"#/definitions/page"}},"content_security_policy":{"$ref":"#/definitions/content_security_policy","default":"sandbox allow-scripts allow-forms"}}},"short_name":{"type":"string","description":"The short name is typically used where there is insufficient space to display the full name.","maxLength":12},"update_url":{"$ref":"#/definitions/uri","description":"If you publish using the Chrome Developer Dashboard, ignore this field. If you host your own extension or app: URL to an update manifest XML file."},"tts_engine":{"type":"object","description":"Register itself as a speech engine.","required":["voices"],"additionalProperties":false,"properties":{"voices":{"type":"array","description":"Voices the extension can synthesize.","minItems":1,"uniqueItems":true,"items":{"type":"object","required":["voice_name","event_types"],"additionalProperties":false,"properties":{"voice_name":{"type":"string","description":"Identifies the name of the voice and the engine used."},"lang":{"type":"string","description":"Almost always, a voice can synthesize speech in just a single language. When an engine supports more than one language, it can easily register a separate voice for each language."},"gender":{"type":"string","description":"If your voice corresponds to a male or female voice, you can use this parameter to help clients choose the most appropriate voice for their application."},"event_types":{"type":"array","description":"Events sent to update the client on the progress of speech synthesis.","minItems":1,"uniqueItems":true,"items":{"type":"string","description":"","enum":["start","word","sentence","marker","end","error"]}}}}}}},"version_name":{"type":"string","description":"In addition to the version field, which is used for update purposes, version_name can be set to a descriptive version string and will be used for display purposes if present."},"chrome_settings_overrides":{},"content_pack":{},"current_locale":{},"import":{},"platforms":{},"signature":{},"spellcheck":{},"storage":{},"system_indicator":{}},"required":["manifest_version","name","version"],"then":{"$comment":"browser_action and page_action are no longer present in v3","properties":{"background":{"type":"object","description":"The background page is an HTML page that runs in the extension process. It exists for the lifetime of your extension, and only one instance of it at a time is active.","properties":{"service_worker":{"type":"string","description":"The service worker js file."},"type":{"type":"string","enum":["module"]}},"dependencies":{"page":{"not":{"required":["scripts"]}},"scripts":{"not":{"required":["page"]}}}},"host_permissions":{"$ref":"#/definitions/permissions"},"action":{"$ref":"#/definitions/action_v3","description":"Used to control the toolbar button for your extension in Chrome's UI."},"content_security_policy":{"type":"object","properties":{"extension_pages":{"$ref":"#/definitions/content_security_policy","description":"This policy covers pages in your extension, including html files and service workers."},"sandbox":{"$ref":"#/definitions/content_security_policy","description":"This policy covers any sandboxed extension pages that your extension uses."}}},"web_accessible_resources":{"type":"array","description":"An array of objects that declare resource access rules. Each object maps an array of extension resources to an array of URLs and/or extension IDs that can access those resources.","minItems":1,"uniqueItems":true,"items":{"$ref":"#/definitions/web_resource"}}},"dependencies":{"browser_action":{"not":{"required":["browser_action"]}},"page_action":{"not":{"required":["page_action"]}}}},"title":"JSON schema for Google Chrome extension manifest files","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for Google Chrome extension manifest files". Here are the required top‑level fields: manifest_version, name, version. Return only the valid JSON object.

Tooltip for the main toolbar icon.

The popup appears when the user clicks the icon.

FIXME: String form is deprecated.

Icon for the main toolbar.

Tooltip for the main toolbar icon.

Global shortcuts change the acceptable pattern for the suggested_key.

Whether this command should work while Chrome does not have focus. Keyboard shortcut suggestions for global commands are limited to Ctrl+Shift+[0..9]

This introduces some fairly strict policies that will make extensions more secure by default, and provides you with the ability to create and enforce rules governing the types of content that can be loaded and executed by your extensions and applications.

accessibilityFeatures.modify accessibilityFeatures.read activeTab alarms audio background bookmarks browsingData certificateProvider clipboardRead clipboardWrite contentSettings contextMenus cookies debugger declarativeContent declarativeNetRequest declarativeNetRequestWithHostAccess declarativeNetRequestFeedback dns desktopCapture documentScan downloads downloads.open downloads.ui enterprise.deviceAttributes enterprise.hardwarePlatform enterprise.networkingAttributes enterprise.platformKeys favicon fileBrowserHandler fileSystemProvider fontSettings gcm geolocation history identity identity.email idle loginState management nativeMessaging notifications offscreen pageCapture platformKeys power printerProvider printing printingMetrics privacy processes proxy readingList runtime scripting search sessions sidePanel storage system.cpu system.display system.memory system.storage tabCapture tabGroups tabs topSites tts ttsEngine unlimitedStorage vpnProvider wallpaper webAuthenticationProxy webNavigation webRequest webRequestBlocking

An array of resources to be exposed. Resources are specified as strings and may contain * for wildcard matches. For example, "/images/*" exposes everything in the extension's /images directory recursively while "*.png" exposes all PNG files.

A list of URL match patterns specifying which pages can access the resources. Only the origin is used to match URLs; subdomains patterns (*.google.com) and paths are ignored.

A list of extension IDs, specifying which extensions can access the resources.

If true, only allow resources to be accessible through dynamic ID. The dynamic ID is generated per session. It's regenerated on browser restart or extension reload.

The background page is an HTML page that runs in the extension process. It exists for the lifetime of your extension, and only one instance of it at a time is active.

When false, makes the background page an event page (loaded only when needed).

Specify the HTML of the background page.

A background page will be generated by the extension system that includes each of the files listed in the scripts property.

Use browser actions to put icons in the main Google Chrome toolbar, to the right of the address bar. In addition to its icon, a browser action can also have a tooltip, a badge, and a popup.

Use the chrome.pageAction API to put icons inside the address bar. Page actions represent actions that can be taken on the current page, but that aren't applicable to all pages.

An array of strings specifying the paths (relative to the package root) of packaged resources that are expected to be usable in the context of a web page.

One integer specifying the version of the manifest file format your package requires.

The name of the extension

One to four dot-separated integers identifying the version of this extension.

Specifies the subdirectory of _locales that contains the default strings for this extension.

A plain text description of the extension

One or more icons that represent the extension, app, or theme. Recommended format: PNG; also BMP, GIF, ICO, JPEG.

Used as the favicon for an extension's pages and infobar.

Used on the extension management page (chrome://extensions).

Used during installation and in the Chrome Web Store.

Override pages are a way to substitute an HTML file from your extension for a page that Google Chrome normally provides.

The page that appears when the user chooses the Bookmark Manager menu item from the Chrome menu or, on Mac, the Bookmark Manager item from the Bookmarks menu. You can also get to this page by entering the URL chrome://bookmarks.

The page that appears when the user chooses the History menu item from the Chrome menu or, on Mac, the Show Full History item from the History menu. You can also get to this page by entering the URL chrome://history.

The page that appears when the user creates a new tab or window. You can also get to this page by entering the URL chrome://newtab.

Use the commands API to add keyboard shortcuts that trigger actions in your extension, for example, an action to open the browser action or send a command to the extension.

Content scripts are JavaScript files that run in the context of web pages.

Specifies which pages this content script will be injected into.

Excludes pages that this content script would otherwise be injected into.

The list of CSS files to be injected into matching pages. These are injected in the order they appear in this array, before any DOM is constructed or displayed for the page.

The list of JavaScript files to be injected into matching pages. These are injected in the order they appear in this array.

The JavaScript world for a script to execute within.

Controls when the files in js are injected.

Controls whether the content script runs in all frames of the matching page, or only the top frame.

Applied after matches to include only those URLs that also match this glob. Intended to emulate the @include Greasemonkey keyword.

Applied after matches to exclude URLs that match this glob. Intended to emulate the @exclude Greasemonkey keyword.

Whether to insert the content script on about:blank and about:srcdoc.

A DevTools extension adds functionality to the Chrome DevTools. It can add new UI panels and sidebars, interact with the inspected page, get information about network requests, and more.

Declares which extensions, apps, and web pages can connect to your extension via runtime.connect and runtime.sendMessage.

The IDs of extensions or apps that are allowed to connect. If left empty or unspecified, no extensions or apps can connect.

The URL patterns for web pages that are allowed to connect. This does not affect content scripts. If left empty or unspecified, no web pages can connect.

Indicates that the extension would like to make use of the TLS channel ID of the web page connecting to it. The web page must also opt to send the TLS channel ID to the extension via setting includeTlsChannelId to true in runtime.connect's connectInfo or runtime.sendMessage's options.

You can use this API to enable users to upload files to your website.

Used by event handling code to differentiate between multiple file handlers

What the button will display.

Filetypes to match.

The URL of the homepage for this extension.

Specify how this extension will behave if allowed to run in incognito mode.

Allows your extension to handle keystrokes, set the composition, and manage the candidate window.

name type id description language layouts

This value can be used to control the unique ID of an extension, app, or theme when it is loaded during development.

The version of Chrome that your extension, app, or theme requires, if any.

One or more mappings from MIME types to the Native Client module that handles each type.

The location of a Native Client manifest (a .nmf file) within the extension directory.

The MIME type for which the Native Client module will be registered as content handler.

Use the Chrome Identity API to authenticate users: the getAuthToken for users logged into their Google Account and the launchWebAuthFlow for users logged into a non-Google account.

You need to register your app in the Google APIs Console to get the client ID.

Whether the app or extension is expected to work offline. When Chrome detects that it is offline, apps with this field set to true will be highlighted on the New Tab page.

The omnibox API allows you to register a keyword with Google Chrome's address bar, which is also known as the omnibox.

The keyword that will trigger your extension.

Use the chrome.permissions API to request declared optional permissions at run time rather than install time, so users understand why the permissions are needed and grant only those that are necessary.

To allow users to customize the behavior of your extension, you may wish to provide an options page. If you do, a link to it will be provided from the extensions management page at chrome://extensions. Clicking the Options link opens a new tab pointing at your options page.

To allow users to customize the behavior of your extension, you may wish to provide an options page. If you do, an Options link will be shown on the extensions management page at chrome://extensions which opens a dialogue containing your options page.

The path to your options page, relative to your extension's root.

If true, a Chrome user agent stylesheet will be applied to your options page. The default value is false, but we recommend you enable it for a consistent UI with Chrome.

If true, your extension's options page will be opened in a new tab rather than embedded in chrome://extensions. The default is false, and we recommend that you don't change it. This is only useful to delay the inevitable deprecation of the old options UI! It will be removed soon, so try not to use it. It will break.

Permissions help to limit damage if your extension or app is compromised by malware. Some permissions are also displayed to users before installation, as detailed in Permission Warnings.

Technologies required by the app or extension. Hosting sites such as the Chrome Web Store may use this list to dissuade users from installing apps or extensions that will not work on their computer.

Indicates if an app or extension requires NPAPI to run. This requirement is enabled by default when the manifest includes the 'plugins' field.

The '3D' requirement denotes GPU hardware acceleration.

List of the 3D-related features your app requires.

Defines an collection of app or extension pages that are to be served in a sandboxed unique origin, and optionally a Content Security Policy to use with them.

The short name is typically used where there is insufficient space to display the full name.

If you publish using the Chrome Developer Dashboard, ignore this field. If you host your own extension or app: URL to an update manifest XML file.

Register itself as a speech engine.

Voices the extension can synthesize.

Identifies the name of the voice and the engine used.

Almost always, a voice can synthesize speech in just a single language. When an engine supports more than one language, it can easily register a separate voice for each language.

If your voice corresponds to a male or female voice, you can use this parameter to help clients choose the most appropriate voice for their application.

Events sent to update the client on the progress of speech synthesis.

In addition to the version field, which is used for update purposes, version_name can be set to a descriptive version string and will be used for display purposes if present.

browser_action and page_action are no longer present in v3

The service worker js file.

Used to control the toolbar button for your extension in Chrome's UI.

This policy covers pages in your extension, including html files and service workers.

This policy covers any sandboxed extension pages that your extension uses.

An array of objects that declare resource access rules. Each object maps an array of extension resources to an array of URLs and/or extension IDs that can access those resources.

JSON schema for Google Chrome extension manifest files

Provide a JSON object that satisfies the schema "JSON schema for Google Chrome extension manifest files". Here are the required top‑level fields: manifest_version, name, version. Return only the valid JSON object.

JSON schema for Google Chrome extension manifest files


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","id":"ChromiaModel","description":"Chromia Model","additionalProperties":false,"properties":{"definitions":{"type":["object","array"],"description":"Any additional properties you want to reference elsewhere"},"blockchains":{"type":"object","description":"Configuration properties for a blockchain","additionalProperties":{"$ref":"#/$defs/blockchain"},"propertyNames":{"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_]{0,63}$","description":"(Cannot contain hyphens)"}},"test":{"type":"object","description":"Configuration for unit tests","additionalProperties":false,"properties":{"modules":{"$ref":"#/$defs/testModules"},"moduleArgs":{"$ref":"#/$defs/moduleArgs"},"failOnError":{"type":"boolean","description":"Indicates whether to fail the build on the first test error"}}},"database":{"type":"object","description":"Database options","additionalProperties":false,"required":["schema"],"properties":{"host":{"type":"string","description":"Database hostname (default: localhost)"},"database":{"type":"string","description":"Database name (default: postchain)"},"username":{"type":"string","description":"Database username (default: postchain)"},"password":{"type":"string","description":"Database password (default: postchain)"},"schema":{"type":"string","description":"Database schema"},"driver":{"type":"string","description":"Database driver"},"logSqlErrors":{"type":"boolean","description":"Log any SQL errors to the console"}}},"libs":{"type":"object","description":"Library definitions","additionalProperties":{"$ref":"#/$defs/library"}},"compile":{"type":"object","description":"Compilation options","additionalProperties":false,"properties":{"rellVersion":{"type":"string","description":"Version of Rell to use. Must follow semantic versioning format: MAJOR.MINOR.PATCH.","pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"},"source":{"type":"string","description":"Path to the source root directory"},"target":{"type":"string","description":"Path to the compilation target folder"},"deprecatedError":{"type":"boolean","default":false,"description":"Fail build if deprecated features are used"},"quiet":{"type":"boolean","default":true,"description":"Hide intermediary compilation output"},"strictGtvConversion":{"type":"boolean","default":true,"description":"Use strict GTV conversion to disallow transformation of GTV types when parsing operation arguments. It is recommended to leave this set to true (default)."}}},"deployments":{"type":"object","description":"Deployment targets","additionalProperties":{"$ref":"#/$defs/deployment"}},"docs":{"type":"object","description":"Documentation options","additionalProperties":false,"required":["title"],"properties":{"title":{"type":"string","description":"Title for the generated documentation site"},"customStyleSheets":{"type":"array","items":{"type":"string"},"description":"Additional CSS stylesheets to include"},"customAssets":{"type":"array","items":{"type":"string"},"description":"Additional image assets to include"},"additionalContent":{"type":"array","items":{"type":"string"},"description":"Additional Markdown documentation files to include"},"additionalModules":{"type":"array","items":{"type":"string"},"description":"Additional modules to include"},"footerMessage":{"type":"string","description":"Message shown in the footer"},"sourceLink":{"type":"object","description":"Link to a web site for browsing the source code","additionalProperties":false,"required":["remoteUrl"],"properties":{"remoteUrl":{"type":"string","description":"The URL of the source code hosting service that can be accessed by documentation readers"},"remoteLineSuffix":{"type":"string","description":"The suffix used to append the source code line number to the URL","default":"\"#L\""}}}}}},"$defs":{"blockchain":{"type":"object","description":"Name of blockchain (cannot contain hyphens '-')","additionalProperties":false,"properties":{"module":{"type":"string","default":"main","description":"Entrypoint module for the blockchain (Name of module cannot contain hyphens '-')","pattern":"[A-Za-z_][A-Za-z_0-9]*"},"type":{"type":"string","enum":["blockchain","library"],"description":"Indicates whether this blockchain is marked as a library"},"moduleArgs":{"$ref":"#/$defs/moduleArgs"},"test":{"$ref":"#/$defs/blockchainTest"},"config":{"$ref":"#/$defs/blockchainConfig"},"webStatic":{"type":"string","description":"Directory for static web content"},"webCacheTtlSeconds":{"type":"integer","minimum":1,"description":"Static web content cache TTL in seconds","default":3600}}},"testModules":{"type":"array","items":{"type":"string"},"description":"Test root modules"},"blockchainTest":{"type":"object","description":"Blockchain test properties","additionalProperties":false,"properties":{"modules":{"$ref":"#/$defs/testModules"},"moduleArgs":{"$ref":"#/$defs/moduleArgs"}}},"moduleArgs":{"type":"object","description":"Module arguments","additionalProperties":{"type":"object"}},"blockchainConfig":{"type":"object","description":"Additional blockchain configuration properties","additionalProperties":true,"properties":{"icmf":{"$ref":"#/$defs/icmf"},"gtx":{"$ref":"#/$defs/gtx"},"revolt":{"$ref":"#/$defs/revolt"},"blockstrategy":{"$ref":"#/$defs/blockstrategy"},"sync":{"type":"string","description":"Synchronization Infrastructure (Do not change)"},"sync_ext":{"type":"array","items":{"type":"string"},"description":"Synchronization Insfrastructure extension (ex when using ICMF)"},"configurationfactory":{"type":"string","description":"Configuration factory implementation"},"txqueuecapacity":{"type":"number","default":2500,"description":"Maximum size of the transaction queue"},"historic_brid":{"type":"string","pattern":"^(x\"[0-9A-Fa-f]{64}\")$"},"dependencies":{"type":"object"},"config_consensus_strategy":{"type":"string","default":"HEADER_HASH","description":"Configuration consensus strategy"},"query_cache_ttl_seconds":{"type":"number","default":0,"description":"How long a query response can be cached, in seconds. 0 means no caching."},"max_block_future_time":{"type":"number","default":10000,"description":"How long time in the future a block timestamp can be, compared to current time, in milliseconds. -1 means disabled check."},"add_primary_key_to_header":{"type":"boolean","default":true,"description":"If enabled primary node will add its public key to the block header. Please note that this value is **not** validated and can only be trusted for features that incentivize nodes to add their own key."},"features":{"type":"object","description":"Blockchain features"}}},"library":{"type":"object","description":"Library definition","oneOf":[{"description":"Default library with registry URL","properties":{"registry":{"type":"string","description":"Registry URL (HTTPS, HTTP, or SSH)"},"path":{"type":"string","description":"Path to the library module in the repo"},"tagOrBranch":{"type":"string","description":"Optionally specifies the git tag or branch of the library"},"insecure":{"type":"boolean","default":false,"description":"If true, will not verify the RID"},"rid":{"type":"string","pattern":"^x\"[a-fA-F0-9]+\"$","description":"Hash of the library"}},"required":["registry","path"],"additionalProperties":false},{"description":"Library from library-chain","properties":{"registry":{"type":"string","description":"Registry where the library is deployed"},"version":{"type":"string","description":"Version of the library to download"},"path":{"type":"string","description":"Path to the library module in the repo"},"brid":{"type":["string"],"pattern":"^(x\"[0-9A-Fa-f]{64}\")|([0-9A-Fa-f]{64})$","description":"Blockchain RID for library-chain"}},"required":["version"],"additionalProperties":false}]},"deployment":{"type":"object","required":["url"],"description":"Deployment target","additionalProperties":false,"properties":{"brid":{"type":["string","null"],"pattern":"^(x\"[0-9A-Fa-f]{64}\")|([0-9A-Fa-f]{64})$","description":"Blockchain RID for the target network's management chain"},"container":{"type":["string","null"],"description":"Container ID"},"url":{"type":["string","array"],"items":{"type":"string"},"description":"URL(s) to nodes in the system cluster or network"},"chains":{"type":"object","additionalProperties":{"type":"string","pattern":"^(x\"[0-9A-Fa-f]{64}\")|([0-9A-Fa-f]{64})$","description":"Blockchain RID for the deployed chain"},"description":"Map of deployed blockchains with their Blockchain RIDs on this network"}}},"icmf":{"type":"object","properties":{"receiver":{"type":"object","properties":{"local":{"type":"array","items":{"type":"object","required":["topic"],"properties":{"topic":{"type":"string","pattern":"^[GL]_","description":"Topic for the message to receive"},"brid":{"type":["string","null"],"pattern":"^(x\"[0-9A-Fa-f]{64}\")$","description":"Blockchain RID for sender blockchain"}}}}}}}},"gtx":{"type":"object","description":"GTX configuration overrides","additionalProperties":false,"properties":{"max_transaction_size":{"type":"integer","default":26214400,"description":"Maximum size of transactions in bytes"},"modules":{"type":"array","items":{"type":"string"},"description":"Additional GTX Modules"},"allowoverrides":{"type":"boolean","default":false,"description":"Allow operations and queries with the same name to be overridden by another GTX module."}}},"revolt":{"type":"object","description":"Revolt configuration","properties":{"timeout":{"type":"integer","default":10000,"description":"The default revolt timeout in milliseconds"},"exponential_delay_initial":{"type":"integer","default":1000,"description":"The initial delay of the revolt timeout in milliseconds"},"exponential_delay_power_base":{"type":"string","default":"1.2","description":"Base of the exponential increase for the revolt timeout per round"},"exponential_delay_max":{"type":"integer","default":600000,"description":"Maximum possible revolt timeout in milliseconds"},"fast_revolt_status_timeout":{"type":"integer","default":2000,"description":"Timeout in milliseconds since the last received status message before considering a node disconnected and revolting immediately. -1 to disable this functionality"},"revolt_when_should_build_block":{"type":"boolean","default":true,"description":"Start counting the revolt timeout only after considering it possible to build a block"}}},"blockstrategy":{"type":"object","description":"Block building strategy configuration","additionalProperties":false,"properties":{"name":{"type":"string","description":"Block strategy, name of the class implementing net.postchain.core.block.BlockBuildingStrategy"},"maxblocksize":{"type":"integer","default":27262976,"description":"Maximum size of a block in bytes"},"maxblocktransactions":{"type":"integer","default":100,"description":"Maximum transactions per block"},"mininterblockinterval":{"type":"integer","default":1000,"description":"Smallest time interval between blocks in milliseconds"},"maxblocktime":{"type":"integer","default":30000,"description":"Maximum time to wait before starting to build a block in milliseconds. Will be an empty block if transaction queue is empty."},"maxtxdelay":{"type":"integer","default":1000,"description":"Maximum time to wait before starting to build a block after the first transaction is received, in milliseconds"},"minbackofftime":{"type":"integer","default":20,"description":"Minimum back-off time before retrying a failed block, in milliseconds"},"maxbackofftime":{"type":"integer","default":2000,"description":"Maximum back-off time before retrying a failed block, in milliseconds"},"maxspecialendtransactionsize":{"type":"integer","default":1024,"description":"Maximum size of a special end transaction, in bytes"},"preemptiveblockbuilding":{"type":"boolean","default":true,"description":"Enable preemptive block building"}}}}}
</schema>

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

Chromia Model

Any additional properties you want to reference elsewhere

Configuration properties for a blockchain

(Cannot contain hyphens)

Configuration for unit tests

Indicates whether to fail the build on the first test error

Database options

Database hostname (default: localhost)

Database name (default: postchain)

Database username (default: postchain)

Database password (default: postchain)

Database schema

Database driver

Log any SQL errors to the console

Library definitions

Compilation options

Version of Rell to use. Must follow semantic versioning format: MAJOR.MINOR.PATCH.

Path to the source root directory

Path to the compilation target folder

Fail build if deprecated features are used

Hide intermediary compilation output

Use strict GTV conversion to disallow transformation of GTV types when parsing operation arguments. It is recommended to leave this set to true (default).

Deployment targets

Documentation options

Title for the generated documentation site

Additional CSS stylesheets to include

Additional image assets to include

Additional Markdown documentation files to include

Additional modules to include

Message shown in the footer

Link to a web site for browsing the source code

The URL of the source code hosting service that can be accessed by documentation readers

The suffix used to append the source code line number to the URL

Name of blockchain (cannot contain hyphens '-')

Entrypoint module for the blockchain (Name of module cannot contain hyphens '-')

Indicates whether this blockchain is marked as a library

Directory for static web content

Static web content cache TTL in seconds

Test root modules

Blockchain test properties

Module arguments

Additional blockchain configuration properties

Synchronization Infrastructure (Do not change)

Synchronization Insfrastructure extension (ex when using ICMF)

Configuration factory implementation

Maximum size of the transaction queue

Configuration consensus strategy

How long a query response can be cached, in seconds. 0 means no caching.

How long time in the future a block timestamp can be, compared to current time, in milliseconds. -1 means disabled check.

If enabled primary node will add its public key to the block header. Please note that this value is **not** validated and can only be trusted for features that incentivize nodes to add their own key.

Blockchain features

Library definition

Default library with registry URL

Registry URL (HTTPS, HTTP, or SSH)

Path to the library module in the repo

Optionally specifies the git tag or branch of the library

If true, will not verify the RID

Hash of the library

Library from library-chain

Registry where the library is deployed

Version of the library to download

Path to the library module in the repo

Blockchain RID for library-chain

Deployment target

Blockchain RID for the target network's management chain

Container ID

URL(s) to nodes in the system cluster or network

Blockchain RID for the deployed chain

Map of deployed blockchains with their Blockchain RIDs on this network

Topic for the message to receive

Blockchain RID for sender blockchain

GTX configuration overrides

Maximum size of transactions in bytes

Additional GTX Modules

Allow operations and queries with the same name to be overridden by another GTX module.

Revolt configuration

The default revolt timeout in milliseconds

The initial delay of the revolt timeout in milliseconds

Base of the exponential increase for the revolt timeout per round

Maximum possible revolt timeout in milliseconds

Timeout in milliseconds since the last received status message before considering a node disconnected and revolting immediately. -1 to disable this functionality

Start counting the revolt timeout only after considering it possible to build a block

Block building strategy configuration

Block strategy, name of the class implementing net.postchain.core.block.BlockBuildingStrategy

Maximum size of a block in bytes

Maximum transactions per block

Smallest time interval between blocks in milliseconds

Maximum time to wait before starting to build a block in milliseconds. Will be an empty block if transaction queue is empty.

Maximum time to wait before starting to build a block after the first transaction is received, in milliseconds

Minimum back-off time before retrying a failed block, in milliseconds

Maximum back-off time before retrying a failed block, in milliseconds

Maximum size of a special end transaction, in bytes

Enable preemptive block building

Provide a JSON object that satisfies the schema "chromia-model-schema". 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":"https://json-schema.org/draft/2020-12/schema","$id":"https://gitlab.com/chromaway/core-tools/rell-toolbox/-/raw/dev/seeder/src/main/resources/chromia-seeder-config-schema.json","title":"Chromia Seeder Configuration Schema","type":"object","properties":{"modules":{"type":"array","items":{"type":"string","pattern":"^.*\\.yml$","format":"uri-reference"}},"default_entity_handler":{"type":"string","enum":["generate","error"]}},"required":["modules"],"additionalProperties":false}
</schema>

[User] Provide a JSON object that satisfies the schema "Chromia Seeder Configuration Schema". Here are the required top‑level fields: modules. Return only the valid JSON object.

Chromia Seeder Configuration Schema

Provide a JSON object that satisfies the schema "Chromia Seeder Configuration Schema". Here are the required top‑level fields: modules. Return only the valid JSON object.


[User] Provide a JSON object that satisfies the schema "Chromia Seeder Module Schema". Here are the required top‑level fields: module. Return only the valid JSON object.

Chromia Seeder Module Schema

The module name

The number of records to generate

Provide a JSON object that satisfies the schema "Chromia Seeder Module Schema". Here are the required top‑level fields: module. Return only the valid JSON object.