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.
In this repository26 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- create-skillSkill
- docs-applies-to-taggingSkill
- docs-content-type-checkerSkill
- docs-draft-feature-docsSkill
- docs-frontmatter-descriptionSkill
- docs-page-opening-optimizerSkill
- docs-redirectsSkill
- docs-syntax-helpSkill
- docs-fix-changelogSkill
- docs-kibana-release-notesSkill
- docs-review-changelogSkill
- docs-serverless-changelogSkill
- docs-draft-workflow-docsSkill
- docs-lens-chart-pageSkill
- docs-lens-chart-settingsSkill
- docs-check-contradictionsSkill
- docs-check-kibana-oasSkill
- docs-check-styleSkill
- docs-flag-jargon-skillSkill
- docs-frontmatter-auditSkill
- docs-review-prSkill
- docs-skill-reviewSkill
- docs-validate-code-samplesSkill
- docs-file-issueSkill
- docs-stack-releaseSkill
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
- Very specific: line 37
Document every user-facing kibana.yml setting and Advanced Settings (uiSettings) entry in {settings} YAML.
- Very specific: line 53
If the PR adds both a config-schema field and a uiSettings registration, document both.
- Very specific: line 57
Do not document a kibana.yml key in the Advanced Settings YAML.
- Distinctive: line 79
If a matching group already exists, add the entry there.
- Very specific: line 85
Add docs/reference/configuration-reference/<area>-settings.md with {settings} pointing at the new YAML.
- Very specific: line 86
Add the page under docs/reference/toc.yml → configuration-reference.md.
- Distinctive: line 91
Do not add YAML for internal flags, test-only config, or a rename that a documented deprecation already covers.
- Distinctive: line 95
Do not copy defaults, types, or availability from the issue body or PR title.
- Very specific: line 105
If origin is your fork:
- Very specific: line 111
If origin is elastic/kibana:
- Distinctive: line 132
Read the docs-builder settings page, then fill Kibana-only values from source:
- Very specific: line 136
If Elastic Cloud Hosted should list the setting, include the YAML from docs/reference/cloud/elastic-cloud-kibana-settings.md with …
- Very specific: line 138
kibana.ymlserverless: use offeringBasedSchema or schema.contextRef('serverless'). - Distinctive: line 153
If users need instructions beyond the reference entry:
- Very specific: line 155
Search published docs with the elastic-docs MCP (search_docs or find_related_docs).
≈ “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.
Files
<!-- 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 in | Code signal | Docs YAML |
kibana.yml or Cloud Edit user settings | Plugin config schema, configPath in kibana.jsonc | docs/reference/configuration-reference/<area>-settings.yml |
| Stack Management → Advanced Settings → Space Settings | uiSettings.register() (default scope: 'namespace') | docs/reference/advanced-settings-space.yml |
| Advanced Settings → Global Settings | uiSettings.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 PRFind the YAML file
git grep -n -- '<prefix-or-key>' HEAD -- docs/referenceIf 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.mdwith{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'| Claim | kibana.yml source | Advanced Settings source |
| Key | configPath + schema field path | Object key in register / registerGlobal |
| Default | schema.*({ defaultValue }) | value or getValue |
| Type | Schema type | schema plus optional type |
| Options | schema.oneOf / literals | options / optionLabels |
| Availability | offeringBasedSchema, schema.contextRef('serverless'), Cloud support | Serverless allowlists and technicalPreview / experimental / deprecation |
| UI category / group | n/a | category 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.ymlech: grep the Elastic Cloud Hosted user-settings allowlist in a localelastic/cloudclone, underscala-services/adminconsole/src/main/resources/settings/kibana/. Writeech: gaif the key is listed. Writeech: unavailableif it is not. Do not usenode scripts/check_kibana_settings.jsfor 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 forkibana.ymlonly. - If Elastic Cloud Hosted should list the setting, include the YAML from
docs/reference/cloud/elastic-cloud-kibana-settings.mdwith:deployment: ech. That filter shows a setting only when the entry hasech: ga. - Advanced Settings
serverless: start atsrc/platform/packages/shared/serverless/settings/common/index.ts. If the ID is there, writeserverless: ga. If it is not, grepobservability_project,security_project,search_project, andvectordb_projectin that folder. Ignoreworkplace_ai_project. Follow each allowlist's imports to resolve the constant to the runtime key, including IDs exported from packages other thankbn-management/settings/setting_ids. Mapobservability_projecttoobservability,security_projecttosecurity,search_projecttoelasticsearch, andvectordb_projecttovectordb. If the ID is only on some of those four lists, nest those keys. If it is on none, writeserverless: unavailable. kibana.ymlserverless: useofferingBasedSchemaorschema.contextRef('serverless'). Write a scalarserverless: gaorserverless: unavailable.
Preview
docs-builder
docs-builder serveOn 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:
- Search published docs with the
elastic-docsMCP (search_docsorfind_related_docs). - Open an
elastic/docs-contentissue, 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
settingmatches 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
echmatches the Cloud user-settings allowlist inelastic/cloud - Advanced Settings
serverlessmatchescommon/index.tsor the nested project allowlists, following each file's imports - No UI label, test ID, or component name used as the YAML
settingkey
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
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.

