agentleFS
ElasticKnown publisherelastic/elastic-docs-skills/skills/project/docs-kibana-settings/SKILL.md

docs-kibana-settings

Skill72 starsChanged 5 months agoApache-2.0View on GitHub

Document Kibana kibana.yml settings and Advanced Settings (uiSettings) in docs-builder {settings} YAML. Use when adding, changing, deprecating, or removing a kibana.yml key, uiSettings.register, uiSettings.registerGlobal, advanced-settings-space.yml, advanced-settings-global.yml, or a docs/reference/configuration-reference YAML file.

The file

Show its rules and text

We split this skill into the rules it gives an agent

15 rules. About 0 are common, 5 are distinctive, and 10 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 10

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Document every user-facing kibana.yml setting and Advanced Settings (uiSettings) entry in {settings} YAML.

    line 37
  2. Very specific:

    If the PR adds both a config-schema field and a uiSettings registration, document both.

    line 53
  3. Very specific:

    Do not document a kibana.yml key in the Advanced Settings YAML.

    line 57
  4. Distinctive:

    If a matching group already exists, add the entry there.

    line 79
  5. Very specific:

    Add docs/reference/configuration-reference/<area>-settings.md with {settings} pointing at the new YAML.

    line 85
  6. Very specific:

    Add the page under docs/reference/toc.yml → configuration-reference.md.

    line 86
  7. Distinctive:

    Do not add YAML for internal flags, test-only config, or a rename that a documented deprecation already covers.

    line 91
  8. Distinctive:

    Do not copy defaults, types, or availability from the issue body or PR title.

    line 95
  9. Very specific:

    If origin is your fork:

    line 105
  10. Very specific:

    If origin is elastic/kibana:

    line 111
  11. Distinctive:

    Read the docs-builder settings page, then fill Kibana-only values from source:

    line 132
  12. Very specific:

    If Elastic Cloud Hosted should list the setting, include the YAML from docs/reference/cloud/elastic-cloud-kibana-settings.md with …

    line 136
  13. Very specific:

    kibana.yml serverless: use offeringBasedSchema or schema.contextRef('serverless').

    line 138
  14. Distinctive:

    If users need instructions beyond the reference entry:

    line 153
  15. Very specific:

    Search published docs with the elastic-docs MCP (search_docs or find_related_docs).

    line 155

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Elasticsearch B.V. licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

Kibana settings docs

Work in the Kibana clone. Paths below are relative to elastic/kibana.

Document every user-facing kibana.yml setting and Advanced Settings (uiSettings) entry in {settings} YAML. Do not write the reference as freeform Markdown.

Schema, applies_to, description style, the default field, gated notes, and lifecycle history live in docs-builder: automated settings and settings-with-applies-example.yml.

This YAML does not follow the usual docs-applies-to-tagging lifecycle-symmetry rule. Read the settings page, not that skill.

Implementation tutorials stay in docs/extend/tutorials/configuring-your-plugin.md and docs/extend/tutorials/ui-settings.md. This skill covers the docs YAML only.

Classify

User changes it inCode signalDocs YAML
kibana.yml or Cloud Edit user settingsPlugin config schema, configPath in kibana.jsoncdocs/reference/configuration-reference/<area>-settings.yml
Stack Management → Advanced Settings → Space SettingsuiSettings.register() (default scope: 'namespace')docs/reference/advanced-settings-space.yml
Advanced Settings → Global SettingsuiSettings.registerGlobal() or scope: 'global'docs/reference/advanced-settings-global.yml

If the PR adds both a config-schema field and a uiSettings registration, document both. They are different settings.

A setting can exist in both places only when kibana.yml uses uiSettings.overrides to lock an Advanced Settings key. Document the uiSettings key in the Advanced Settings YAML. Document uiSettings.overrides itself in general settings YAML if that key changed.

Do not document a kibana.yml key in the Advanced Settings YAML. Do not document a uiSettings key in configuration-reference YAML.

Workflow

Task progress:
- [ ] 1. Classify kibana.yml vs space vs global
- [ ] 2. Grep docs/reference and {settings} includes for the collection
- [ ] 3. Read the registration for key, type, default, category, and availability. Use the merge base if this branch removes the setting
- [ ] 4. Copy the nearest valid sibling
- [ ] 5. Tag applies_to from the docs-builder settings page
- [ ] 6. Check kibana.yml ech against the Cloud user-settings allowlist
- [ ] 7. Preview the Supported on line
- [ ] 8. If users need instructions, open a docs-content issue or PR

Find the YAML file

git grep -n -- '<prefix-or-key>' HEAD -- docs/reference

If a matching group already exists, add the entry there. Match the surrounding entries.

Resolve configPath from the plugin kibana.jsonc. ["xpack", "spaces"] plus schema field maxSpaces is xpack.spaces.maxSpaces.

Most edits stay in an existing YAML file. The host .md file already includes it with {settings}. Create a new YAML plus host Markdown only when no file documents that prefix:

  • Add docs/reference/configuration-reference/<area>-settings.md with {settings} pointing at the new YAML.
  • Add the page under docs/reference/toc.yml → configuration-reference.md.
  • Reporting settings already split across several YAML files included from reporting-settings.md. Add to the matching include, not a new page.

Do not invent an Advanced Settings group name. Place the entry in the group that matches category in code. If category is omitted, the setting lands in General in the UI. If the UI adds a new category, add a matching group with an id. Keep order close to the UI.

Do not add YAML for internal flags, test-only config, or a rename that a documented deprecation already covers.

Verify against source

Do not copy defaults, types, or availability from the issue body or PR title.

If this branch adds or changes the setting, read the implementation on this branch. If this branch removes the setting, grep the PR merge base. HEAD no longer has the registration. Keep the existing YAML entry and follow the docs-builder settings page for removed. If the setting is not part of this branch, read Elastic main. If origin is your fork, fetch upstream/main. If origin is elastic/kibana, fetch origin/main.

git grep -n -- '<setting.key>' HEAD -- '*.ts' '*.tsx'

For a removal, recover the registration from the merge base against the same main ref you fetched above.

If origin is your fork:

git grep -n -- '<setting.key>' "$(git merge-base HEAD upstream/main)" -- '*.ts' '*.tsx'

If origin is elastic/kibana:

git grep -n -- '<setting.key>' "$(git merge-base HEAD origin/main)" -- '*.ts' '*.tsx'
Claimkibana.yml sourceAdvanced Settings source
KeyconfigPath + schema field pathObject key in register / registerGlobal
Defaultschema.*({ defaultValue })value or getValue
TypeSchema typeschema plus optional type
Optionsschema.oneOf / literalsoptions / optionLabels
AvailabilityofferingBasedSchema, schema.contextRef('serverless'), Cloud supportServerless allowlists and technicalPreview / experimental / deprecation
UI category / groupn/acategory array. YAML group title.

The setting value must match the runtime key at HEAD, or the merge-base key when this branch removes the setting. Quote keys that contain a colon, for example "dateFormat:tz". The name i18n string is the UI label. It is not the YAML setting key.

Copy the nearest sibling. Change only what this setting needs. Include datatype and default when the source defines them. Copy the datatype term the surrounding file already uses. Include id when the generated slug would collide or stay unreadable.

applies_to lookups

Read the docs-builder settings page, then fill Kibana-only values from source:

  • kibana.yml ech: grep the Elastic Cloud Hosted user-settings allowlist in a local elastic/cloud clone, under scala-services/adminconsole/src/main/resources/settings/kibana/. Write ech: ga if the key is listed. Write ech: unavailable if it is not. Do not use node scripts/check_kibana_settings.js for this. That CLI only lists Kibana config keys. It does not read the Cloud allowlist. Do not infer support from the published Cloud settings page. That page is generated from this YAML.
  • Advanced Settings ech: those keys are not on the Cloud user-settings allowlist. Follow the docs-builder deployment keys. The allowlist grep is for kibana.yml only.
  • If Elastic Cloud Hosted should list the setting, include the YAML from docs/reference/cloud/elastic-cloud-kibana-settings.md with :deployment: ech. That filter shows a setting only when the entry has ech: ga.
  • Advanced Settings serverless: start at src/platform/packages/shared/serverless/settings/common/index.ts. If the ID is there, write serverless: ga. If it is not, grep observability_project, security_project, search_project, and vectordb_project in that folder. Ignore workplace_ai_project. Follow each allowlist's imports to resolve the constant to the runtime key, including IDs exported from packages other than kbn-management/settings/setting_ids. Map observability_project to observability, security_project to security, search_project to elasticsearch, and vectordb_project to vectordb. If the ID is only on some of those four lists, nest those keys. If it is on none, write serverless: unavailable.
  • kibana.yml serverless: use offeringBasedSchema or schema.contextRef('serverless'). Write a scalar serverless: ga or serverless: unavailable.

Preview

docs-builder
docs-builder serve

On a Kibana PR: https://docs-v3-preview.elastic.dev/elastic/kibana/pull/<n>/reference/kibana/<page>/

YAML that parses is not proof that badges render. Inspect the setting's <dd> for dd > p.settings-supported-on.

How-to follow-up

If users need instructions beyond the reference entry:

  1. Search published docs with the elastic-docs MCP (search_docs or find_related_docs).
  2. Open an elastic/docs-content issue, or an accompanying PR on the page that already covers that workflow.

Skip this when the reference entry is enough.

Verification

  • YAML file matches kibana.yml vs space vs global
  • setting matches the runtime key at HEAD, or at the merge base when this branch removes the setting
  • Description, default, applies_to, and lifecycle follow the docs-builder settings page
  • kibana.yml ech matches the Cloud user-settings allowlist in elastic/cloud
  • Advanced Settings serverless matches common/index.ts or the nested project allowlists, following each file's imports
  • No UI label, test ID, or component name used as the YAML setting key

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.