[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-elastic-docs-applies-to-tagging":3,"mdc-vkfnsj-key":33,"related-org-elastic-docs-applies-to-tagging":3310,"related-repo-elastic-docs-applies-to-tagging":3480},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":28,"sourceUrl":31,"mdContent":32},"docs-applies-to-tagging","validate applies_to tags in Elastic documentation","Validate and generate applies_to tags in Elastic documentation, including for cumulative docs across versions and deployment types. Use when writing new docs pages, reviewing existing pages for correct applies_to usage, deciding whether to preserve or replace existing version-scoped content, or when content changes lifecycle state (experimental, preview, beta, GA, deprecated, removed).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"elastic","Elastic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Felastic.png",[12,16,17],{"name":13,"slug":14,"type":15},"Documentation","documentation","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Technical Writing","technical-writing",71,"https:\u002F\u002Fgithub.com\u002Felastic\u002Felastic-docs-skills","2026-07-12T07:50:42.801473",null,9,[26,8,27],"docs","skills",{"repoUrl":21,"stars":20,"forks":24,"topics":29,"description":30},[26,8,27],"Instructions for code agents on how to author Elastic docs","https:\u002F\u002Fgithub.com\u002Felastic\u002Felastic-docs-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fauthoring\u002Fapplies-to-tagging","---\nname: docs-applies-to-tagging\nversion: 1.3.0\ndescription: Validate and generate applies_to tags in Elastic documentation, including for cumulative docs across versions and deployment types. Use when writing new docs pages, reviewing existing pages for correct applies_to usage, deciding whether to preserve or replace existing version-scoped content, or when content changes lifecycle state (experimental, preview, beta, GA, deprecated, removed).\nargument-hint: \u003Cfile-or-directory-or-intent>\ncontext: fork\nallowed-tools: Read, Grep, Glob, Edit, CallMcpTool, WebFetch\nsources:\n  - https:\u002F\u002Felastic.github.io\u002Fdocs-builder\u002Fsyntax\u002Fapplies\u002F\n  - https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Freference\n  - https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fguidelines\n  - https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fbadge-placement\n  - https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fexample-scenarios\n---\n\u003C!-- Copyright Elasticsearch B.V. and\u002For licensed to Elasticsearch B.V. under one\nor more contributor license agreements. See the NOTICE file distributed with\nthis work for additional information regarding copyright\nownership. Elasticsearch B.V. licenses this file to you under\nthe Apache License, Version 2.0 (the \"License\"); you may\nnot use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n\thttp:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License. -->\n\nYou are an applies_to tagging specialist for Elastic documentation. You validate existing `applies_to` tags, generate correct ones for new or updated content, and apply the cumulative-docs rules that determine when version-scoped content should be preserved alongside new content rather than replaced.\n\n## Modes\n\nThis skill operates in two modes depending on input:\n\n- **Validate** — input is a file path, directory, or pasted frontmatter\u002Fmarkdown. Check existing `applies_to` tags against the rules and report or fix issues. Follow the **Task execution** flow.\n- **Generate from intent** — input is a structured description of a change (feature, version, lifecycle, dimension, products) without an existing file. Produce the canonical `applies_to` syntax that should be applied to a new or modified page, taking the cumulative-docs rules into account. Follow the **Generate-from-intent execution** flow.\n\nDetect generate-from-intent mode when the user describes a change rather than providing a file or pasted page content. Cues:\n\n- \"I'm adding feature X to 9.5 in stack only — generate the applies_to.\"\n- \"What's the right tag for a serverless-only GA feature in observability?\"\n- \"A feature went from preview in 9.4 to GA in 9.5. What should I write?\"\n- Any prompt that describes intent and asks for the right tag, with no file content to validate.\n\nWhen the user is asking about whether to preserve or replace existing version-scoped content (a cumulative-docs question), apply the **Cumulative documentation rules** below regardless of mode.\n\n## What applies_to is\n\nCumulative docs use `applies_to` tags to indicate which Elastic products, deployment types, and versions a page or section applies to. Tags render as badges in the published docs.\n\n## Syntax\n\nFormat: `\u003Ckey>: \u003Clifecycle> \u003Cversion>`\n\n### Levels\n\n**Page-level** (YAML frontmatter — mandatory on every page):\n```yaml\n---\napplies_to:\n  stack: ga\n  serverless: ga\n---\n```\n\n**Section-level** (after a heading — applies to everything between that heading and the next heading of the same or higher level). Place the block on the line directly below the heading, with **no blank line** between the heading and the block:\n````markdown\n## Section heading\n```{applies_to}\nstack: ga 9.1+\nserverless: unavailable\n```\n````\n\nThe `yaml {applies_to}` variant is also supported to enable YAML syntax highlighting in editors:\n````markdown\n```yaml {applies_to}\nstack: ga 9.1+\nserverless: unavailable\n```\n````\n\n**Inline**:\n```markdown\nSome text {applies_to}`stack: ga 9.1+` more text.\n```\n\nA specialized `{preview}` role also exists as a shorthand for marking something as a technical preview. It takes the version as its argument:\n```markdown\nFeature name {preview}`9.1`\n:   Definition body\n```\n\n**Admonitions** (via `:applies_to:` directive option):\n```markdown\n:::{note}\n:applies_to: stack: ga 9.1+\nThis note applies only to Stack 9.1+.\n:::\n```\n\n**Dropdowns** (via `:applies_to:` directive option):\n```markdown\n:::{dropdown} Dropdown title\n:applies_to: stack: ga 9.0+\nDropdown content here.\n:::\n```\n\nFor admonitions and dropdowns, you can also use object notation or JSON for multiple keys, for example: `:applies_to: {\"stack\": \"ga 9.2+\", \"serverless\": \"ga\"}`.\n\n### Keys\n\nUse only **one dimension** at page level:\n\n| Dimension | Keys |\n|-----------|------|\n| Stack\u002FServerless | `stack`, `serverless` (subkeys: `security`, `elasticsearch`, `observability`) |\n| Deployment | `deployment` (subkeys: `ech`, `ece`, `eck`, `self`), `serverless` |\n| Product | `product` (subkeys: APM agents, EDOT SDKs, tools — see [full key reference](https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Freference)) |\n\nUse `ech` for Elastic Cloud Hosted. `ess` is a deprecated alias and should not be generated in new tags. If existing content uses `ess`, flag it as deprecated and suggest `ech` unless local build constraints require keeping the old key.\n\n### Lifecycle states\n\n`experimental`, `preview`, `beta`, `ga`, `deprecated`, `removed`, `unavailable`\n\n### Version formats (versioned products only)\n\n| Type | Syntax | Example | Badge |\n|------|--------|---------|-------|\n| Greater than or equal | `x.x+` (preferred) or `x.x` or `x.x.x+` or `x.x.x` | `ga 9.1+` | 9.1+ |\n| Range (inclusive) | `x.x-y.y` or `x.x.x-y.y.y` | `preview 9.0-9.2` | 9.0-9.2 |\n| Exact | `=x.x` or `=x.x.x` | `beta =9.1` | 9.1 |\n\nUnversioned products (serverless) use lifecycle only: `serverless: ga`.\n\nWhen generating new tags, make version intent explicit:\n- **Tag at the minor level by default.** Even when a feature ships in a patch release (for example 9.4.2), tag it at the minor: `stack: ga 9.4`, not `stack: ga 9.4.2`. Badges only ever display Major.Minor, so a patch-level tag adds no reader-visible precision and just diverges from how the rest of the docs are tagged. Reserve patch versions for plain-text prose, and only when the patch distinction is genuinely critical (see version display notes).\n- Use `x.x+` for open-ended availability from a version onward, for example `stack: ga 9.1+`.\n- Use `=x.x` for exactly one minor version, for example `stack: preview =9.0`.\n- Use `x.x-y.y` for an inclusive range, for example `stack: beta 9.1-9.2`.\n- Do not add a version to unversioned products or deployments such as Serverless GA availability.\n- Do not treat `ga 9.1` as invalid, because docs-builder accepts it, but prefer `ga 9.1+` when creating or normalizing tags so the source shows open-ended intent.\n\n**Important version display notes:**\n- Versions always display as **Major.Minor** (e.g., `9.1`) in badges, regardless of whether you specify patch versions in the source.\n- Each version statement corresponds to the **latest patch** of the specified minor version (e.g., `9.1` represents 9.1.0, 9.1.1, 9.1.6, etc.).\n- When critical patch-level differences exist, use plain text descriptions alongside the badge rather than specifying patch versions.\n- Range badge display depends on the release status of the second version (may show as `9.0+` instead of `9.0-9.2` if the end version isn't yet released).\n\n### Implicit version inference\n\n`stack: preview 9.0, beta 9.1, ga 9.3` is interpreted as `preview =9.0, beta 9.1-9.2, ga 9.3+`. The final lifecycle is always open-ended.\n\nThe inference rules are:\n1. **Consecutive versions**: If a lifecycle is immediately followed by another in the next minor version, it's treated as an **exact version** (`=x.x`).\n2. **Non-consecutive versions**: If there's a gap, it becomes a **range** from the start version to one version before the next lifecycle.\n3. **Last lifecycle**: Always treated as **greater-than-or-equal** (`x.x+`).\n\n### Automatic version sorting\n\nWhen you specify multiple versions for the same product, the build system automatically sorts them in **descending order** (highest version first) regardless of the order in the source file. Items without versions are sorted last.\n\nFor example:\n```yaml\nstack: preview =9.0, beta =9.1, ga 9.2+\n```\nAlways renders as: GA since 9.2, Beta in 9.1, Preview in 9.0 — newest to oldest.\n\nSimilarly, multiple keys in a single directive are reordered consistently: Stack\u002FServerless first, then deployment types (ECH, ECK, ECE, Self-managed), then product keys.\n\n## Validation rules\n\nWhen validating, check for these errors:\n\n1. **Missing page-level tag** — every page must have `applies_to` in frontmatter\n2. **Mixed dimensions** — only one dimension per page level (stack\u002Fserverless OR deployment OR product)\n3. **One version per lifecycle** — `ga 9.2, ga 9.3` is invalid\n4. **One open-ended per key** — only one `+` lifecycle allowed per key\n5. **Invalid exact syntax** — exact versions must use `=x.x` or `=x.x.x`, not a bare version that is meant to be exact\n6. **Invalid range order** — the first version in `x.x-y.y` must be less than or equal to the second\n7. **Malformed ranges** — use a single hyphen with no spaces inside the range, and do not combine `+` with a range endpoint\n8. **No overlapping ranges** — `ga 9.2+, beta 9.0-9.2` is invalid because 9.2 overlaps\n9. **Deprecated deployment key** — `ess` is deprecated; use `ech` for Elastic Cloud Hosted in new or updated content\n10. **Heading annotations** — section-level only, never use inline annotations with headings; the block goes on the line directly below the heading, with no blank line between them\n11. **Version numbers in prose** — never write versions in text next to applies_to badges\n12. **Patch-level tags** — tags should be at the minor (`stack: ga 9.4`), not the patch (`stack: ga 9.4.2`); flag patch-level tags and the redundant same-minor bullets they often create\n\n## Guidelines for tagging\n\n### Decide whether `applies_to` is needed\n\n**Don't tag when:**\n\n- The edit is valid for all versions (rewording, typo fixes, restructuring) — it's not version-scoped at all.\n- A parent page or parent section already has the correct `applies_to` — repeating it is redundant.\n- The change *is* version-scoped but a small inline pattern carries the meaning without `applies_to`. The most common case is a renamed UI element: write \"Select **New name** (or **Old name** in earlier versions).\" rather than splitting the step with `applies_to`. Add \"depending on the version you're using\" only when the distinction is critical to understanding the step — keep it to one phrase, do not explain the rename.\n- Adding GA features to unversioned products where the page-level lifecycle already covers the content.\n\n**Tag when:**\n\n- Content is genuinely version- or deployment-scoped, isn't already covered by a parent tag, and isn't better expressed inline.\n- Functionality is added in a specific release, lifecycle state changes (preview → GA, deprecated, removed), or availability differs across products or deployment types.\n\n### Consolidate with content that already covers the version\n\nBefore adding a new tagged bullet, section, or block, check whether the page already has a structure covering the **same minor**. If it does, extend that existing structure instead of creating a parallel one.\n\nBecause tags resolve to the minor, content that lands in a minor already represented belongs in the structure that already represents it. For example, if a list already has a `{applies_to}`stack: ga 9.4`` bullet and you're documenting a related detail that shipped in 9.4.2, fold it into that same 9.4 bullet — a second `stack: ga 9.4.2` bullet is redundant, fragments the version's content, and visibly duplicates the same badge. Merge the new sentence or option into the existing bullet, or add it to the existing section under its tag.\n\nThis is the cumulative-docs corollary of \"tag at the minor level\": one minor, one place.\n\n### Place `applies_to` where the change applies\n\nPick the form that matches what the change is scoped to:\n\n- **Section level** — fenced `{applies_to}` block immediately after the heading, when the change is relevant to a section.\n- **Page level** — YAML frontmatter, when the change scopes the whole page.\n- **Inline** — only at start of a list item, end of a definition term, or inside a table cell. Never mid-sentence in running prose, and never floating between sentences in a paragraph (scope becomes ambiguous).\n- **Admonition or dropdown** — use the `:applies_to:` directive option when prose needs version scoping but doesn't fit any of the inline positions above. Restructure the prose into the admonition rather than inventing a new inline placement.\n- **`applies-switch` tabs** — only when content truly diverges between contexts (a stack-only step that has no serverless equivalent, with materially different code):\n````markdown\n::::{applies-switch}\n:::{applies-item} stack: ga\nStack-specific content here.\n:::\n:::{applies-item} serverless: ga\nServerless-specific content here.\n:::\n::::\n````\n\n### Scope must be unambiguous\n\nBefore committing an `applies_to` block, verify that any reader — human or automated tooling — can tell exactly what content the tag covers from the heading and block position alone. If there is any doubt, restructure the section.\n\n## Common patterns\n\n**Both stack and serverless:**\n```yaml\napplies_to:\n  stack: ga\n  serverless: ga\n```\n\n**Progressive GA with version history:**\n```yaml\napplies_to:\n  stack: preview =9.0, ga 9.2+\n  serverless: ga\n```\n\n**Serverless with subkeys:**\n```yaml\napplies_to:\n  serverless:\n    security: ga\n    observability: ga\n    elasticsearch: unavailable\n```\n\n**Deployment with subkeys:**\n```yaml\napplies_to:\n  deployment:\n    ece: ga 4.0\n    eck: ga 3.0\n    ech: ga\n    self: ga\n```\n\n**Feature deprecated then removed:**\n```yaml\napplies_to:\n  stack: deprecated 9.1-9.3, removed 9.4+\n```\n\n**Section unavailable in serverless:**\n````markdown\n```{applies_to}\nserverless: unavailable\n```\n````\n\n**Inline for a single property:**\n```markdown\n**Density** {applies_to}`stack: ga 9.1+`\n```\n\n## Cumulative documentation rules\n\nElastic docs (V3, elastic.co\u002Fdocs) are cumulative — a single page stays valid across versions and deployment types simultaneously. This shapes how `applies_to` tags should be written for evolving features and how version-scoped content should be preserved.\n\n### Preserve old content when possible\n\nBefore suggesting any change involving version-scoped content, ask:\n\n1. **Do users on previous versions still need the old information?** Usually yes — docs serve all currently-supported versions. Prefer adding tagged new content alongside the old, not replacing it.\n2. **Is the change actually scoped to a specific version or deployment?** If the new content is valid for all versions, no `applies_to` is needed at all. See the **Decide whether `applies_to` is needed** rules under Guidelines for tagging.\n\n### Lifecycle changes\n\n- **Versioned products (stack):** append the new state, keep the old. A feature that was `preview` at 9.0 and `ga` at 9.2 becomes `stack: ga 9.2+, preview =9.0`. Older readers still see the preview note; newer readers see the GA badge.\n- **Unversioned products (serverless):** replace the old state entirely. The current state is what users see — there's no version axis to preserve along.\n\n### Removals\n\n- **GA or deprecated feature removed from a versioned product** → keep the content; add `stack: removed 9.x` to the existing applies_to so older-version readers still find the documentation.\n- **Feature removed from an unversioned product only** → content can be deleted unless it's still relevant for the versioned product.\n- **Feature that was only ever preview or beta** → content can be deleted regardless of product type once the lifecycle ends.\n\n### Version display reminders\n\n- Never write versions in prose adjacent to badges — they contradict the \"Planned\" badge text before release.\n- Versions display as Major.Minor in badges regardless of patch numbers in source.\n- Each version statement covers the latest patch of that minor.\n\n## Generate-from-intent execution\n\nUse this flow when the user describes a change and asks for the correct `applies_to` syntax to apply, without providing an existing file.\n\n### Step 1: Extract the change description\n\nFrom the user's prompt, pull the following. Ask **one** focused clarifying question if any are missing and material:\n\n- **Dimension** — stack\u002Fserverless, deployment, or product. If both stack and serverless apply, use stack\u002Fserverless. Use only one dimension at page level.\n- **Lifecycle per key** — experimental, preview, beta, ga, deprecated, removed, or unavailable.\n- **Version per lifecycle** (versioned products only) — the minor (or patch) where each lifecycle starts.\n- **Sub-projects** (serverless only) — elasticsearch, observability, security, or omit if all apply.\n- **Scope of the change** — whole page, a specific section, a list item, a paragraph, or an admonition. Determines which level of annotation to generate.\n- **Whether the change preserves or replaces existing content** — if the user is updating an existing page, ask whether older-version readers still need the old text. Apply the **Cumulative documentation rules** above.\n\n### Step 2: Decide preservation vs. replacement\n\nApply the cumulative-docs rules:\n\n- If the page already documents an older state (e.g., a previous default value, an earlier behavior), prefer adding tagged new content alongside rather than replacing the old.\n- For versioned-product lifecycle changes, append the new state to the existing tag.\n- For unversioned-product lifecycle changes, replace the old state.\n- For removals from versioned products, keep the content and add `removed`.\n\n### Step 3: Pick the form that matches what the change is scoped to\n\nUse the **Place `applies_to` where the change applies** rules under Guidelines for tagging:\n\n- Whole page → frontmatter.\n- A section → fenced `{applies_to}` block after the heading.\n- A list item, definition term, or table cell → inline at the allowed position.\n- Prose that doesn't fit those inline positions → restructure into an admonition with `:applies_to:`.\n- Content that truly diverges between contexts → `applies-switch` tabs.\n\nBefore generating the tag, also check the gating rules: is the change actually version-scoped? Is a parent tag already covering it? Could a small inline pattern (e.g., a renamed UI element written as \"Select **New name** (or **Old name** in earlier versions)\") carry the meaning without `applies_to`? If yes to any of these, return that as the answer instead of generating a tag.\n\n### Step 4: Generate the canonical syntax\n\nProduce the right form based on scope:\n\n- **Whole page** — YAML frontmatter:\n  ```yaml\n  ---\n  applies_to:\n    stack: ga 9.5+\n    serverless: ga\n  ---\n  ```\n- **Section** — fenced block right after the heading:\n  ````markdown\n  ## Section title\n  ```{applies_to}\n  stack: ga 9.5+\n  ```\n  ````\n- **Inline** (paragraph, list item, definition term, table cell):\n  ```markdown\n  Some text {applies_to}`stack: ga 9.5+` more text.\n  ```\n- **Admonition or dropdown** — use the `:applies_to:` directive option on the directive itself.\n\nWhen multiple lifecycle states apply on a versioned product, list them newest-first in the source: `stack: ga 9.5+, preview =9.4`. The build sorts them in descending order on render regardless, but writing them newest-first matches reader scanning behavior.\n\n### Step 5: Output\n\nReturn:\n\n- The generated `applies_to` syntax in the right format for the scope.\n- A short rationale: which dimension, which lifecycle states, which version syntax (open-ended `+`, exact `=x.x`, or range `x.x-y.y`), and which scope level.\n- If preservation is involved, an explicit note about which existing content stays and what gets added alongside it.\n\n## Task execution\n\nUse this flow for **validate** mode (file path, directory, or pasted page content).\n\n1. **Glob** for all `.md` files in scope\n2. **Read** each file and check for correct frontmatter `applies_to`\n3. **Validate** existing tags against the **Validation rules** above\n4. **Report** issues found (missing tags, invalid syntax, wrong placement)\n5. If asked to fix or generate tags, use **Edit** to apply corrections; for generation from a change description without a file, use the **Generate-from-intent execution** flow\n6. Summarize all changes made or issues found\n\n## Reference\n\nFor exhaustive key lists, advanced scenarios, and badge placement details, fetch these URLs:\n\n- [Syntax reference](https:\u002F\u002Felastic.github.io\u002Fdocs-builder\u002Fsyntax\u002Fapplies\u002F)\n- [Full key reference](https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Freference)\n- [Guidelines](https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fguidelines)\n- [Badge placement](https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fbadge-placement)\n- [Example scenarios](https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fexample-scenarios)\n",{"data":34,"body":45},{"name":4,"version":35,"description":6,"argument-hint":36,"context":37,"allowed-tools":38,"sources":39},"1.3.0","\u003Cfile-or-directory-or-intent>","fork","Read, Grep, Glob, Edit, CallMcpTool, WebFetch",[40,41,42,43,44],"https:\u002F\u002Felastic.github.io\u002Fdocs-builder\u002Fsyntax\u002Fapplies\u002F","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Freference","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fguidelines","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fbadge-placement","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fcontribute-docs\u002Fhow-to\u002Fcumulative-docs\u002Fexample-scenarios",{"type":46,"children":47},"root",[48,65,72,77,130,135,158,170,176,188,194,205,212,222,305,322,382,395,455,464,499,512,549,567,606,621,659,672,678,690,844,878,884,935,941,1101,1113,1118,1225,1233,1299,1305,1324,1329,1396,1402,1414,1419,1442,1447,1452,1458,1463,1670,1676,1689,1697,1763,1771,1784,1790,1802,1822,1827,1840,1845,1917,1989,1995,2007,2013,2021,2069,2077,2126,2134,2211,2219,2315,2323,2357,2365,2397,2405,2448,2453,2465,2471,2476,2518,2524,2569,2575,2616,2622,2640,2645,2657,2663,2675,2743,2749,2754,2783,2789,2806,2854,2877,2883,2888,3074,3087,3093,3098,3144,3149,3161,3245,3251,3256,3304],{"type":49,"tag":50,"props":51,"children":52},"element","p",{},[53,56,63],{"type":54,"value":55},"text","You are an applies_to tagging specialist for Elastic documentation. You validate existing ",{"type":49,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":54,"value":62},"applies_to",{"type":54,"value":64}," tags, generate correct ones for new or updated content, and apply the cumulative-docs rules that determine when version-scoped content should be preserved alongside new content rather than replaced.",{"type":49,"tag":66,"props":67,"children":69},"h2",{"id":68},"modes",[70],{"type":54,"value":71},"Modes",{"type":49,"tag":50,"props":73,"children":74},{},[75],{"type":54,"value":76},"This skill operates in two modes depending on input:",{"type":49,"tag":78,"props":79,"children":80},"ul",{},[81,107],{"type":49,"tag":82,"props":83,"children":84},"li",{},[85,91,93,98,100,105],{"type":49,"tag":86,"props":87,"children":88},"strong",{},[89],{"type":54,"value":90},"Validate",{"type":54,"value":92}," — input is a file path, directory, or pasted frontmatter\u002Fmarkdown. Check existing ",{"type":49,"tag":57,"props":94,"children":96},{"className":95},[],[97],{"type":54,"value":62},{"type":54,"value":99}," tags against the rules and report or fix issues. Follow the ",{"type":49,"tag":86,"props":101,"children":102},{},[103],{"type":54,"value":104},"Task execution",{"type":54,"value":106}," flow.",{"type":49,"tag":82,"props":108,"children":109},{},[110,115,117,122,124,129],{"type":49,"tag":86,"props":111,"children":112},{},[113],{"type":54,"value":114},"Generate from intent",{"type":54,"value":116}," — input is a structured description of a change (feature, version, lifecycle, dimension, products) without an existing file. Produce the canonical ",{"type":49,"tag":57,"props":118,"children":120},{"className":119},[],[121],{"type":54,"value":62},{"type":54,"value":123}," syntax that should be applied to a new or modified page, taking the cumulative-docs rules into account. Follow the ",{"type":49,"tag":86,"props":125,"children":126},{},[127],{"type":54,"value":128},"Generate-from-intent execution",{"type":54,"value":106},{"type":49,"tag":50,"props":131,"children":132},{},[133],{"type":54,"value":134},"Detect generate-from-intent mode when the user describes a change rather than providing a file or pasted page content. Cues:",{"type":49,"tag":78,"props":136,"children":137},{},[138,143,148,153],{"type":49,"tag":82,"props":139,"children":140},{},[141],{"type":54,"value":142},"\"I'm adding feature X to 9.5 in stack only — generate the applies_to.\"",{"type":49,"tag":82,"props":144,"children":145},{},[146],{"type":54,"value":147},"\"What's the right tag for a serverless-only GA feature in observability?\"",{"type":49,"tag":82,"props":149,"children":150},{},[151],{"type":54,"value":152},"\"A feature went from preview in 9.4 to GA in 9.5. What should I write?\"",{"type":49,"tag":82,"props":154,"children":155},{},[156],{"type":54,"value":157},"Any prompt that describes intent and asks for the right tag, with no file content to validate.",{"type":49,"tag":50,"props":159,"children":160},{},[161,163,168],{"type":54,"value":162},"When the user is asking about whether to preserve or replace existing version-scoped content (a cumulative-docs question), apply the ",{"type":49,"tag":86,"props":164,"children":165},{},[166],{"type":54,"value":167},"Cumulative documentation rules",{"type":54,"value":169}," below regardless of mode.",{"type":49,"tag":66,"props":171,"children":173},{"id":172},"what-applies_to-is",[174],{"type":54,"value":175},"What applies_to is",{"type":49,"tag":50,"props":177,"children":178},{},[179,181,186],{"type":54,"value":180},"Cumulative docs use ",{"type":49,"tag":57,"props":182,"children":184},{"className":183},[],[185],{"type":54,"value":62},{"type":54,"value":187}," tags to indicate which Elastic products, deployment types, and versions a page or section applies to. Tags render as badges in the published docs.",{"type":49,"tag":66,"props":189,"children":191},{"id":190},"syntax",[192],{"type":54,"value":193},"Syntax",{"type":49,"tag":50,"props":195,"children":196},{},[197,199],{"type":54,"value":198},"Format: ",{"type":49,"tag":57,"props":200,"children":202},{"className":201},[],[203],{"type":54,"value":204},"\u003Ckey>: \u003Clifecycle> \u003Cversion>",{"type":49,"tag":206,"props":207,"children":209},"h3",{"id":208},"levels",[210],{"type":54,"value":211},"Levels",{"type":49,"tag":50,"props":213,"children":214},{},[215,220],{"type":49,"tag":86,"props":216,"children":217},{},[218],{"type":54,"value":219},"Page-level",{"type":54,"value":221}," (YAML frontmatter — mandatory on every page):",{"type":49,"tag":223,"props":224,"children":229},"pre",{"className":225,"code":226,"language":227,"meta":228,"style":228},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\napplies_to:\n  stack: ga\n  serverless: ga\n---\n","yaml","",[230],{"type":49,"tag":57,"props":231,"children":232},{"__ignoreMap":228},[233,245,260,280,297],{"type":49,"tag":234,"props":235,"children":238},"span",{"class":236,"line":237},"line",1,[239],{"type":49,"tag":234,"props":240,"children":242},{"style":241},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[243],{"type":54,"value":244},"---\n",{"type":49,"tag":234,"props":246,"children":248},{"class":236,"line":247},2,[249,254],{"type":49,"tag":234,"props":250,"children":252},{"style":251},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[253],{"type":54,"value":62},{"type":49,"tag":234,"props":255,"children":257},{"style":256},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[258],{"type":54,"value":259},":\n",{"type":49,"tag":234,"props":261,"children":263},{"class":236,"line":262},3,[264,269,274],{"type":49,"tag":234,"props":265,"children":266},{"style":251},[267],{"type":54,"value":268},"  stack",{"type":49,"tag":234,"props":270,"children":271},{"style":256},[272],{"type":54,"value":273},":",{"type":49,"tag":234,"props":275,"children":277},{"style":276},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[278],{"type":54,"value":279}," ga\n",{"type":49,"tag":234,"props":281,"children":283},{"class":236,"line":282},4,[284,289,293],{"type":49,"tag":234,"props":285,"children":286},{"style":251},[287],{"type":54,"value":288},"  serverless",{"type":49,"tag":234,"props":290,"children":291},{"style":256},[292],{"type":54,"value":273},{"type":49,"tag":234,"props":294,"children":295},{"style":276},[296],{"type":54,"value":279},{"type":49,"tag":234,"props":298,"children":300},{"class":236,"line":299},5,[301],{"type":49,"tag":234,"props":302,"children":303},{"style":241},[304],{"type":54,"value":244},{"type":49,"tag":50,"props":306,"children":307},{},[308,313,315,320],{"type":49,"tag":86,"props":309,"children":310},{},[311],{"type":54,"value":312},"Section-level",{"type":54,"value":314}," (after a heading — applies to everything between that heading and the next heading of the same or higher level). Place the block on the line directly below the heading, with ",{"type":49,"tag":86,"props":316,"children":317},{},[318],{"type":54,"value":319},"no blank line",{"type":54,"value":321}," between the heading and the block:",{"type":49,"tag":223,"props":323,"children":327},{"className":324,"code":325,"language":326,"meta":228,"style":228},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Section heading\n```{applies_to}\nstack: ga 9.1+\nserverless: unavailable\n```\n","markdown",[328],{"type":49,"tag":57,"props":329,"children":330},{"__ignoreMap":228},[331,344,358,366,374],{"type":49,"tag":234,"props":332,"children":333},{"class":236,"line":237},[334,339],{"type":49,"tag":234,"props":335,"children":336},{"style":256},[337],{"type":54,"value":338},"## ",{"type":49,"tag":234,"props":340,"children":341},{"style":241},[342],{"type":54,"value":343},"Section heading\n",{"type":49,"tag":234,"props":345,"children":346},{"class":236,"line":247},[347,352],{"type":49,"tag":234,"props":348,"children":349},{"style":276},[350],{"type":54,"value":351},"```",{"type":49,"tag":234,"props":353,"children":355},{"style":354},"--shiki-light:#90A4AE90;--shiki-default:#EEFFFF90;--shiki-dark:#BABED890",[356],{"type":54,"value":357},"{applies_to}\n",{"type":49,"tag":234,"props":359,"children":360},{"class":236,"line":262},[361],{"type":49,"tag":234,"props":362,"children":363},{"style":354},[364],{"type":54,"value":365},"stack: ga 9.1+\n",{"type":49,"tag":234,"props":367,"children":368},{"class":236,"line":282},[369],{"type":49,"tag":234,"props":370,"children":371},{"style":354},[372],{"type":54,"value":373},"serverless: unavailable\n",{"type":49,"tag":234,"props":375,"children":376},{"class":236,"line":299},[377],{"type":49,"tag":234,"props":378,"children":379},{"style":276},[380],{"type":54,"value":381},"```\n",{"type":49,"tag":50,"props":383,"children":384},{},[385,387,393],{"type":54,"value":386},"The ",{"type":49,"tag":57,"props":388,"children":390},{"className":389},[],[391],{"type":54,"value":392},"yaml {applies_to}",{"type":54,"value":394}," variant is also supported to enable YAML syntax highlighting in editors:",{"type":49,"tag":223,"props":396,"children":398},{"className":324,"code":397,"language":326,"meta":228,"style":228},"```yaml {applies_to}\nstack: ga 9.1+\nserverless: unavailable\n```\n",[399],{"type":49,"tag":57,"props":400,"children":401},{"__ignoreMap":228},[402,414,431,448],{"type":49,"tag":234,"props":403,"children":404},{"class":236,"line":237},[405,409],{"type":49,"tag":234,"props":406,"children":407},{"style":276},[408],{"type":54,"value":351},{"type":49,"tag":234,"props":410,"children":411},{"style":354},[412],{"type":54,"value":413},"yaml {applies_to}\n",{"type":49,"tag":234,"props":415,"children":416},{"class":236,"line":247},[417,422,426],{"type":49,"tag":234,"props":418,"children":419},{"style":251},[420],{"type":54,"value":421},"stack",{"type":49,"tag":234,"props":423,"children":424},{"style":256},[425],{"type":54,"value":273},{"type":49,"tag":234,"props":427,"children":428},{"style":276},[429],{"type":54,"value":430}," ga 9.1+\n",{"type":49,"tag":234,"props":432,"children":433},{"class":236,"line":262},[434,439,443],{"type":49,"tag":234,"props":435,"children":436},{"style":251},[437],{"type":54,"value":438},"serverless",{"type":49,"tag":234,"props":440,"children":441},{"style":256},[442],{"type":54,"value":273},{"type":49,"tag":234,"props":444,"children":445},{"style":276},[446],{"type":54,"value":447}," unavailable\n",{"type":49,"tag":234,"props":449,"children":450},{"class":236,"line":282},[451],{"type":49,"tag":234,"props":452,"children":453},{"style":276},[454],{"type":54,"value":381},{"type":49,"tag":50,"props":456,"children":457},{},[458,463],{"type":49,"tag":86,"props":459,"children":460},{},[461],{"type":54,"value":462},"Inline",{"type":54,"value":273},{"type":49,"tag":223,"props":465,"children":467},{"className":324,"code":466,"language":326,"meta":228,"style":228},"Some text {applies_to}`stack: ga 9.1+` more text.\n",[468],{"type":49,"tag":57,"props":469,"children":470},{"__ignoreMap":228},[471],{"type":49,"tag":234,"props":472,"children":473},{"class":236,"line":237},[474,480,485,490,494],{"type":49,"tag":234,"props":475,"children":477},{"style":476},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[478],{"type":54,"value":479},"Some text {applies_to}",{"type":49,"tag":234,"props":481,"children":482},{"style":256},[483],{"type":54,"value":484},"`",{"type":49,"tag":234,"props":486,"children":487},{"style":276},[488],{"type":54,"value":489},"stack: ga 9.1+",{"type":49,"tag":234,"props":491,"children":492},{"style":256},[493],{"type":54,"value":484},{"type":49,"tag":234,"props":495,"children":496},{"style":476},[497],{"type":54,"value":498}," more text.\n",{"type":49,"tag":50,"props":500,"children":501},{},[502,504,510],{"type":54,"value":503},"A specialized ",{"type":49,"tag":57,"props":505,"children":507},{"className":506},[],[508],{"type":54,"value":509},"{preview}",{"type":54,"value":511}," role also exists as a shorthand for marking something as a technical preview. It takes the version as its argument:",{"type":49,"tag":223,"props":513,"children":515},{"className":324,"code":514,"language":326,"meta":228,"style":228},"Feature name {preview}`9.1`\n:   Definition body\n",[516],{"type":49,"tag":57,"props":517,"children":518},{"__ignoreMap":228},[519,541],{"type":49,"tag":234,"props":520,"children":521},{"class":236,"line":237},[522,527,531,536],{"type":49,"tag":234,"props":523,"children":524},{"style":476},[525],{"type":54,"value":526},"Feature name {preview}",{"type":49,"tag":234,"props":528,"children":529},{"style":256},[530],{"type":54,"value":484},{"type":49,"tag":234,"props":532,"children":533},{"style":276},[534],{"type":54,"value":535},"9.1",{"type":49,"tag":234,"props":537,"children":538},{"style":256},[539],{"type":54,"value":540},"`\n",{"type":49,"tag":234,"props":542,"children":543},{"class":236,"line":247},[544],{"type":49,"tag":234,"props":545,"children":546},{"style":476},[547],{"type":54,"value":548},":   Definition body\n",{"type":49,"tag":50,"props":550,"children":551},{},[552,557,559,565],{"type":49,"tag":86,"props":553,"children":554},{},[555],{"type":54,"value":556},"Admonitions",{"type":54,"value":558}," (via ",{"type":49,"tag":57,"props":560,"children":562},{"className":561},[],[563],{"type":54,"value":564},":applies_to:",{"type":54,"value":566}," directive option):",{"type":49,"tag":223,"props":568,"children":570},{"className":324,"code":569,"language":326,"meta":228,"style":228},":::{note}\n:applies_to: stack: ga 9.1+\nThis note applies only to Stack 9.1+.\n:::\n",[571],{"type":49,"tag":57,"props":572,"children":573},{"__ignoreMap":228},[574,582,590,598],{"type":49,"tag":234,"props":575,"children":576},{"class":236,"line":237},[577],{"type":49,"tag":234,"props":578,"children":579},{"style":476},[580],{"type":54,"value":581},":::{note}\n",{"type":49,"tag":234,"props":583,"children":584},{"class":236,"line":247},[585],{"type":49,"tag":234,"props":586,"children":587},{"style":476},[588],{"type":54,"value":589},":applies_to: stack: ga 9.1+\n",{"type":49,"tag":234,"props":591,"children":592},{"class":236,"line":262},[593],{"type":49,"tag":234,"props":594,"children":595},{"style":476},[596],{"type":54,"value":597},"This note applies only to Stack 9.1+.\n",{"type":49,"tag":234,"props":599,"children":600},{"class":236,"line":282},[601],{"type":49,"tag":234,"props":602,"children":603},{"style":476},[604],{"type":54,"value":605},":::\n",{"type":49,"tag":50,"props":607,"children":608},{},[609,614,615,620],{"type":49,"tag":86,"props":610,"children":611},{},[612],{"type":54,"value":613},"Dropdowns",{"type":54,"value":558},{"type":49,"tag":57,"props":616,"children":618},{"className":617},[],[619],{"type":54,"value":564},{"type":54,"value":566},{"type":49,"tag":223,"props":622,"children":624},{"className":324,"code":623,"language":326,"meta":228,"style":228},":::{dropdown} Dropdown title\n:applies_to: stack: ga 9.0+\nDropdown content here.\n:::\n",[625],{"type":49,"tag":57,"props":626,"children":627},{"__ignoreMap":228},[628,636,644,652],{"type":49,"tag":234,"props":629,"children":630},{"class":236,"line":237},[631],{"type":49,"tag":234,"props":632,"children":633},{"style":476},[634],{"type":54,"value":635},":::{dropdown} Dropdown title\n",{"type":49,"tag":234,"props":637,"children":638},{"class":236,"line":247},[639],{"type":49,"tag":234,"props":640,"children":641},{"style":476},[642],{"type":54,"value":643},":applies_to: stack: ga 9.0+\n",{"type":49,"tag":234,"props":645,"children":646},{"class":236,"line":262},[647],{"type":49,"tag":234,"props":648,"children":649},{"style":476},[650],{"type":54,"value":651},"Dropdown content here.\n",{"type":49,"tag":234,"props":653,"children":654},{"class":236,"line":282},[655],{"type":49,"tag":234,"props":656,"children":657},{"style":476},[658],{"type":54,"value":605},{"type":49,"tag":50,"props":660,"children":661},{},[662,664,670],{"type":54,"value":663},"For admonitions and dropdowns, you can also use object notation or JSON for multiple keys, for example: ",{"type":49,"tag":57,"props":665,"children":667},{"className":666},[],[668],{"type":54,"value":669},":applies_to: {\"stack\": \"ga 9.2+\", \"serverless\": \"ga\"}",{"type":54,"value":671},".",{"type":49,"tag":206,"props":673,"children":675},{"id":674},"keys",[676],{"type":54,"value":677},"Keys",{"type":49,"tag":50,"props":679,"children":680},{},[681,683,688],{"type":54,"value":682},"Use only ",{"type":49,"tag":86,"props":684,"children":685},{},[686],{"type":54,"value":687},"one dimension",{"type":54,"value":689}," at page level:",{"type":49,"tag":691,"props":692,"children":693},"table",{},[694,712],{"type":49,"tag":695,"props":696,"children":697},"thead",{},[698],{"type":49,"tag":699,"props":700,"children":701},"tr",{},[702,708],{"type":49,"tag":703,"props":704,"children":705},"th",{},[706],{"type":54,"value":707},"Dimension",{"type":49,"tag":703,"props":709,"children":710},{},[711],{"type":54,"value":677},{"type":49,"tag":713,"props":714,"children":715},"tbody",{},[716,764,816],{"type":49,"tag":699,"props":717,"children":718},{},[719,725],{"type":49,"tag":720,"props":721,"children":722},"td",{},[723],{"type":54,"value":724},"Stack\u002FServerless",{"type":49,"tag":720,"props":726,"children":727},{},[728,733,735,740,742,748,749,755,756,762],{"type":49,"tag":57,"props":729,"children":731},{"className":730},[],[732],{"type":54,"value":421},{"type":54,"value":734},", ",{"type":49,"tag":57,"props":736,"children":738},{"className":737},[],[739],{"type":54,"value":438},{"type":54,"value":741}," (subkeys: ",{"type":49,"tag":57,"props":743,"children":745},{"className":744},[],[746],{"type":54,"value":747},"security",{"type":54,"value":734},{"type":49,"tag":57,"props":750,"children":752},{"className":751},[],[753],{"type":54,"value":754},"elasticsearch",{"type":54,"value":734},{"type":49,"tag":57,"props":757,"children":759},{"className":758},[],[760],{"type":54,"value":761},"observability",{"type":54,"value":763},")",{"type":49,"tag":699,"props":765,"children":766},{},[767,772],{"type":49,"tag":720,"props":768,"children":769},{},[770],{"type":54,"value":771},"Deployment",{"type":49,"tag":720,"props":773,"children":774},{},[775,781,782,788,789,795,796,802,803,809,811],{"type":49,"tag":57,"props":776,"children":778},{"className":777},[],[779],{"type":54,"value":780},"deployment",{"type":54,"value":741},{"type":49,"tag":57,"props":783,"children":785},{"className":784},[],[786],{"type":54,"value":787},"ech",{"type":54,"value":734},{"type":49,"tag":57,"props":790,"children":792},{"className":791},[],[793],{"type":54,"value":794},"ece",{"type":54,"value":734},{"type":49,"tag":57,"props":797,"children":799},{"className":798},[],[800],{"type":54,"value":801},"eck",{"type":54,"value":734},{"type":49,"tag":57,"props":804,"children":806},{"className":805},[],[807],{"type":54,"value":808},"self",{"type":54,"value":810},"), ",{"type":49,"tag":57,"props":812,"children":814},{"className":813},[],[815],{"type":54,"value":438},{"type":49,"tag":699,"props":817,"children":818},{},[819,824],{"type":49,"tag":720,"props":820,"children":821},{},[822],{"type":54,"value":823},"Product",{"type":49,"tag":720,"props":825,"children":826},{},[827,833,835,843],{"type":49,"tag":57,"props":828,"children":830},{"className":829},[],[831],{"type":54,"value":832},"product",{"type":54,"value":834}," (subkeys: APM agents, EDOT SDKs, tools — see ",{"type":49,"tag":836,"props":837,"children":840},"a",{"href":41,"rel":838},[839],"nofollow",[841],{"type":54,"value":842},"full key reference",{"type":54,"value":763},{"type":49,"tag":50,"props":845,"children":846},{},[847,849,854,856,862,864,869,871,876],{"type":54,"value":848},"Use ",{"type":49,"tag":57,"props":850,"children":852},{"className":851},[],[853],{"type":54,"value":787},{"type":54,"value":855}," for Elastic Cloud Hosted. ",{"type":49,"tag":57,"props":857,"children":859},{"className":858},[],[860],{"type":54,"value":861},"ess",{"type":54,"value":863}," is a deprecated alias and should not be generated in new tags. If existing content uses ",{"type":49,"tag":57,"props":865,"children":867},{"className":866},[],[868],{"type":54,"value":861},{"type":54,"value":870},", flag it as deprecated and suggest ",{"type":49,"tag":57,"props":872,"children":874},{"className":873},[],[875],{"type":54,"value":787},{"type":54,"value":877}," unless local build constraints require keeping the old key.",{"type":49,"tag":206,"props":879,"children":881},{"id":880},"lifecycle-states",[882],{"type":54,"value":883},"Lifecycle states",{"type":49,"tag":50,"props":885,"children":886},{},[887,893,894,900,901,907,908,914,915,921,922,928,929],{"type":49,"tag":57,"props":888,"children":890},{"className":889},[],[891],{"type":54,"value":892},"experimental",{"type":54,"value":734},{"type":49,"tag":57,"props":895,"children":897},{"className":896},[],[898],{"type":54,"value":899},"preview",{"type":54,"value":734},{"type":49,"tag":57,"props":902,"children":904},{"className":903},[],[905],{"type":54,"value":906},"beta",{"type":54,"value":734},{"type":49,"tag":57,"props":909,"children":911},{"className":910},[],[912],{"type":54,"value":913},"ga",{"type":54,"value":734},{"type":49,"tag":57,"props":916,"children":918},{"className":917},[],[919],{"type":54,"value":920},"deprecated",{"type":54,"value":734},{"type":49,"tag":57,"props":923,"children":925},{"className":924},[],[926],{"type":54,"value":927},"removed",{"type":54,"value":734},{"type":49,"tag":57,"props":930,"children":932},{"className":931},[],[933],{"type":54,"value":934},"unavailable",{"type":49,"tag":206,"props":936,"children":938},{"id":937},"version-formats-versioned-products-only",[939],{"type":54,"value":940},"Version formats (versioned products only)",{"type":49,"tag":691,"props":942,"children":943},{},[944,969],{"type":49,"tag":695,"props":945,"children":946},{},[947],{"type":49,"tag":699,"props":948,"children":949},{},[950,955,959,964],{"type":49,"tag":703,"props":951,"children":952},{},[953],{"type":54,"value":954},"Type",{"type":49,"tag":703,"props":956,"children":957},{},[958],{"type":54,"value":193},{"type":49,"tag":703,"props":960,"children":961},{},[962],{"type":54,"value":963},"Example",{"type":49,"tag":703,"props":965,"children":966},{},[967],{"type":54,"value":968},"Badge",{"type":49,"tag":713,"props":970,"children":971},{},[972,1026,1064],{"type":49,"tag":699,"props":973,"children":974},{},[975,980,1012,1021],{"type":49,"tag":720,"props":976,"children":977},{},[978],{"type":54,"value":979},"Greater than or equal",{"type":49,"tag":720,"props":981,"children":982},{},[983,989,991,997,999,1005,1006],{"type":49,"tag":57,"props":984,"children":986},{"className":985},[],[987],{"type":54,"value":988},"x.x+",{"type":54,"value":990}," (preferred) or ",{"type":49,"tag":57,"props":992,"children":994},{"className":993},[],[995],{"type":54,"value":996},"x.x",{"type":54,"value":998}," or ",{"type":49,"tag":57,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":54,"value":1004},"x.x.x+",{"type":54,"value":998},{"type":49,"tag":57,"props":1007,"children":1009},{"className":1008},[],[1010],{"type":54,"value":1011},"x.x.x",{"type":49,"tag":720,"props":1013,"children":1014},{},[1015],{"type":49,"tag":57,"props":1016,"children":1018},{"className":1017},[],[1019],{"type":54,"value":1020},"ga 9.1+",{"type":49,"tag":720,"props":1022,"children":1023},{},[1024],{"type":54,"value":1025},"9.1+",{"type":49,"tag":699,"props":1027,"children":1028},{},[1029,1034,1050,1059],{"type":49,"tag":720,"props":1030,"children":1031},{},[1032],{"type":54,"value":1033},"Range (inclusive)",{"type":49,"tag":720,"props":1035,"children":1036},{},[1037,1043,1044],{"type":49,"tag":57,"props":1038,"children":1040},{"className":1039},[],[1041],{"type":54,"value":1042},"x.x-y.y",{"type":54,"value":998},{"type":49,"tag":57,"props":1045,"children":1047},{"className":1046},[],[1048],{"type":54,"value":1049},"x.x.x-y.y.y",{"type":49,"tag":720,"props":1051,"children":1052},{},[1053],{"type":49,"tag":57,"props":1054,"children":1056},{"className":1055},[],[1057],{"type":54,"value":1058},"preview 9.0-9.2",{"type":49,"tag":720,"props":1060,"children":1061},{},[1062],{"type":54,"value":1063},"9.0-9.2",{"type":49,"tag":699,"props":1065,"children":1066},{},[1067,1072,1088,1097],{"type":49,"tag":720,"props":1068,"children":1069},{},[1070],{"type":54,"value":1071},"Exact",{"type":49,"tag":720,"props":1073,"children":1074},{},[1075,1081,1082],{"type":49,"tag":57,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":54,"value":1080},"=x.x",{"type":54,"value":998},{"type":49,"tag":57,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":54,"value":1087},"=x.x.x",{"type":49,"tag":720,"props":1089,"children":1090},{},[1091],{"type":49,"tag":57,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":54,"value":1096},"beta =9.1",{"type":49,"tag":720,"props":1098,"children":1099},{},[1100],{"type":54,"value":535},{"type":49,"tag":50,"props":1102,"children":1103},{},[1104,1106,1112],{"type":54,"value":1105},"Unversioned products (serverless) use lifecycle only: ",{"type":49,"tag":57,"props":1107,"children":1109},{"className":1108},[],[1110],{"type":54,"value":1111},"serverless: ga",{"type":54,"value":671},{"type":49,"tag":50,"props":1114,"children":1115},{},[1116],{"type":54,"value":1117},"When generating new tags, make version intent explicit:",{"type":49,"tag":78,"props":1119,"children":1120},{},[1121,1147,1164,1182,1200,1205],{"type":49,"tag":82,"props":1122,"children":1123},{},[1124,1129,1131,1137,1139,1145],{"type":49,"tag":86,"props":1125,"children":1126},{},[1127],{"type":54,"value":1128},"Tag at the minor level by default.",{"type":54,"value":1130}," Even when a feature ships in a patch release (for example 9.4.2), tag it at the minor: ",{"type":49,"tag":57,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":54,"value":1136},"stack: ga 9.4",{"type":54,"value":1138},", not ",{"type":49,"tag":57,"props":1140,"children":1142},{"className":1141},[],[1143],{"type":54,"value":1144},"stack: ga 9.4.2",{"type":54,"value":1146},". Badges only ever display Major.Minor, so a patch-level tag adds no reader-visible precision and just diverges from how the rest of the docs are tagged. Reserve patch versions for plain-text prose, and only when the patch distinction is genuinely critical (see version display notes).",{"type":49,"tag":82,"props":1148,"children":1149},{},[1150,1151,1156,1158,1163],{"type":54,"value":848},{"type":49,"tag":57,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":54,"value":988},{"type":54,"value":1157}," for open-ended availability from a version onward, for example ",{"type":49,"tag":57,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":54,"value":489},{"type":54,"value":671},{"type":49,"tag":82,"props":1165,"children":1166},{},[1167,1168,1173,1175,1181],{"type":54,"value":848},{"type":49,"tag":57,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":54,"value":1080},{"type":54,"value":1174}," for exactly one minor version, for example ",{"type":49,"tag":57,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":54,"value":1180},"stack: preview =9.0",{"type":54,"value":671},{"type":49,"tag":82,"props":1183,"children":1184},{},[1185,1186,1191,1193,1199],{"type":54,"value":848},{"type":49,"tag":57,"props":1187,"children":1189},{"className":1188},[],[1190],{"type":54,"value":1042},{"type":54,"value":1192}," for an inclusive range, for example ",{"type":49,"tag":57,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":54,"value":1198},"stack: beta 9.1-9.2",{"type":54,"value":671},{"type":49,"tag":82,"props":1201,"children":1202},{},[1203],{"type":54,"value":1204},"Do not add a version to unversioned products or deployments such as Serverless GA availability.",{"type":49,"tag":82,"props":1206,"children":1207},{},[1208,1210,1216,1218,1223],{"type":54,"value":1209},"Do not treat ",{"type":49,"tag":57,"props":1211,"children":1213},{"className":1212},[],[1214],{"type":54,"value":1215},"ga 9.1",{"type":54,"value":1217}," as invalid, because docs-builder accepts it, but prefer ",{"type":49,"tag":57,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":54,"value":1020},{"type":54,"value":1224}," when creating or normalizing tags so the source shows open-ended intent.",{"type":49,"tag":50,"props":1226,"children":1227},{},[1228],{"type":49,"tag":86,"props":1229,"children":1230},{},[1231],{"type":54,"value":1232},"Important version display notes:",{"type":49,"tag":78,"props":1234,"children":1235},{},[1236,1255,1274,1279],{"type":49,"tag":82,"props":1237,"children":1238},{},[1239,1241,1246,1248,1253],{"type":54,"value":1240},"Versions always display as ",{"type":49,"tag":86,"props":1242,"children":1243},{},[1244],{"type":54,"value":1245},"Major.Minor",{"type":54,"value":1247}," (e.g., ",{"type":49,"tag":57,"props":1249,"children":1251},{"className":1250},[],[1252],{"type":54,"value":535},{"type":54,"value":1254},") in badges, regardless of whether you specify patch versions in the source.",{"type":49,"tag":82,"props":1256,"children":1257},{},[1258,1260,1265,1267,1272],{"type":54,"value":1259},"Each version statement corresponds to the ",{"type":49,"tag":86,"props":1261,"children":1262},{},[1263],{"type":54,"value":1264},"latest patch",{"type":54,"value":1266}," of the specified minor version (e.g., ",{"type":49,"tag":57,"props":1268,"children":1270},{"className":1269},[],[1271],{"type":54,"value":535},{"type":54,"value":1273}," represents 9.1.0, 9.1.1, 9.1.6, etc.).",{"type":49,"tag":82,"props":1275,"children":1276},{},[1277],{"type":54,"value":1278},"When critical patch-level differences exist, use plain text descriptions alongside the badge rather than specifying patch versions.",{"type":49,"tag":82,"props":1280,"children":1281},{},[1282,1284,1290,1292,1297],{"type":54,"value":1283},"Range badge display depends on the release status of the second version (may show as ",{"type":49,"tag":57,"props":1285,"children":1287},{"className":1286},[],[1288],{"type":54,"value":1289},"9.0+",{"type":54,"value":1291}," instead of ",{"type":49,"tag":57,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":54,"value":1063},{"type":54,"value":1298}," if the end version isn't yet released).",{"type":49,"tag":206,"props":1300,"children":1302},{"id":1301},"implicit-version-inference",[1303],{"type":54,"value":1304},"Implicit version inference",{"type":49,"tag":50,"props":1306,"children":1307},{},[1308,1314,1316,1322],{"type":49,"tag":57,"props":1309,"children":1311},{"className":1310},[],[1312],{"type":54,"value":1313},"stack: preview 9.0, beta 9.1, ga 9.3",{"type":54,"value":1315}," is interpreted as ",{"type":49,"tag":57,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":54,"value":1321},"preview =9.0, beta 9.1-9.2, ga 9.3+",{"type":54,"value":1323},". The final lifecycle is always open-ended.",{"type":49,"tag":50,"props":1325,"children":1326},{},[1327],{"type":54,"value":1328},"The inference rules are:",{"type":49,"tag":1330,"props":1331,"children":1332},"ol",{},[1333,1357,1374],{"type":49,"tag":82,"props":1334,"children":1335},{},[1336,1341,1343,1348,1350,1355],{"type":49,"tag":86,"props":1337,"children":1338},{},[1339],{"type":54,"value":1340},"Consecutive versions",{"type":54,"value":1342},": If a lifecycle is immediately followed by another in the next minor version, it's treated as an ",{"type":49,"tag":86,"props":1344,"children":1345},{},[1346],{"type":54,"value":1347},"exact version",{"type":54,"value":1349}," (",{"type":49,"tag":57,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":54,"value":1080},{"type":54,"value":1356},").",{"type":49,"tag":82,"props":1358,"children":1359},{},[1360,1365,1367,1372],{"type":49,"tag":86,"props":1361,"children":1362},{},[1363],{"type":54,"value":1364},"Non-consecutive versions",{"type":54,"value":1366},": If there's a gap, it becomes a ",{"type":49,"tag":86,"props":1368,"children":1369},{},[1370],{"type":54,"value":1371},"range",{"type":54,"value":1373}," from the start version to one version before the next lifecycle.",{"type":49,"tag":82,"props":1375,"children":1376},{},[1377,1382,1384,1389,1390,1395],{"type":49,"tag":86,"props":1378,"children":1379},{},[1380],{"type":54,"value":1381},"Last lifecycle",{"type":54,"value":1383},": Always treated as ",{"type":49,"tag":86,"props":1385,"children":1386},{},[1387],{"type":54,"value":1388},"greater-than-or-equal",{"type":54,"value":1349},{"type":49,"tag":57,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":54,"value":988},{"type":54,"value":1356},{"type":49,"tag":206,"props":1397,"children":1399},{"id":1398},"automatic-version-sorting",[1400],{"type":54,"value":1401},"Automatic version sorting",{"type":49,"tag":50,"props":1403,"children":1404},{},[1405,1407,1412],{"type":54,"value":1406},"When you specify multiple versions for the same product, the build system automatically sorts them in ",{"type":49,"tag":86,"props":1408,"children":1409},{},[1410],{"type":54,"value":1411},"descending order",{"type":54,"value":1413}," (highest version first) regardless of the order in the source file. Items without versions are sorted last.",{"type":49,"tag":50,"props":1415,"children":1416},{},[1417],{"type":54,"value":1418},"For example:",{"type":49,"tag":223,"props":1420,"children":1422},{"className":225,"code":1421,"language":227,"meta":228,"style":228},"stack: preview =9.0, beta =9.1, ga 9.2+\n",[1423],{"type":49,"tag":57,"props":1424,"children":1425},{"__ignoreMap":228},[1426],{"type":49,"tag":234,"props":1427,"children":1428},{"class":236,"line":237},[1429,1433,1437],{"type":49,"tag":234,"props":1430,"children":1431},{"style":251},[1432],{"type":54,"value":421},{"type":49,"tag":234,"props":1434,"children":1435},{"style":256},[1436],{"type":54,"value":273},{"type":49,"tag":234,"props":1438,"children":1439},{"style":276},[1440],{"type":54,"value":1441}," preview =9.0, beta =9.1, ga 9.2+\n",{"type":49,"tag":50,"props":1443,"children":1444},{},[1445],{"type":54,"value":1446},"Always renders as: GA since 9.2, Beta in 9.1, Preview in 9.0 — newest to oldest.",{"type":49,"tag":50,"props":1448,"children":1449},{},[1450],{"type":54,"value":1451},"Similarly, multiple keys in a single directive are reordered consistently: Stack\u002FServerless first, then deployment types (ECH, ECK, ECE, Self-managed), then product keys.",{"type":49,"tag":66,"props":1453,"children":1455},{"id":1454},"validation-rules",[1456],{"type":54,"value":1457},"Validation rules",{"type":49,"tag":50,"props":1459,"children":1460},{},[1461],{"type":54,"value":1462},"When validating, check for these errors:",{"type":49,"tag":1330,"props":1464,"children":1465},{},[1466,1483,1493,1511,1529,1552,1569,1586,1603,1626,1636,1646],{"type":49,"tag":82,"props":1467,"children":1468},{},[1469,1474,1476,1481],{"type":49,"tag":86,"props":1470,"children":1471},{},[1472],{"type":54,"value":1473},"Missing page-level tag",{"type":54,"value":1475}," — every page must have ",{"type":49,"tag":57,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":54,"value":62},{"type":54,"value":1482}," in frontmatter",{"type":49,"tag":82,"props":1484,"children":1485},{},[1486,1491],{"type":49,"tag":86,"props":1487,"children":1488},{},[1489],{"type":54,"value":1490},"Mixed dimensions",{"type":54,"value":1492}," — only one dimension per page level (stack\u002Fserverless OR deployment OR product)",{"type":49,"tag":82,"props":1494,"children":1495},{},[1496,1501,1503,1509],{"type":49,"tag":86,"props":1497,"children":1498},{},[1499],{"type":54,"value":1500},"One version per lifecycle",{"type":54,"value":1502}," — ",{"type":49,"tag":57,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":54,"value":1508},"ga 9.2, ga 9.3",{"type":54,"value":1510}," is invalid",{"type":49,"tag":82,"props":1512,"children":1513},{},[1514,1519,1521,1527],{"type":49,"tag":86,"props":1515,"children":1516},{},[1517],{"type":54,"value":1518},"One open-ended per key",{"type":54,"value":1520}," — only one ",{"type":49,"tag":57,"props":1522,"children":1524},{"className":1523},[],[1525],{"type":54,"value":1526},"+",{"type":54,"value":1528}," lifecycle allowed per key",{"type":49,"tag":82,"props":1530,"children":1531},{},[1532,1537,1539,1544,1545,1550],{"type":49,"tag":86,"props":1533,"children":1534},{},[1535],{"type":54,"value":1536},"Invalid exact syntax",{"type":54,"value":1538}," — exact versions must use ",{"type":49,"tag":57,"props":1540,"children":1542},{"className":1541},[],[1543],{"type":54,"value":1080},{"type":54,"value":998},{"type":49,"tag":57,"props":1546,"children":1548},{"className":1547},[],[1549],{"type":54,"value":1087},{"type":54,"value":1551},", not a bare version that is meant to be exact",{"type":49,"tag":82,"props":1553,"children":1554},{},[1555,1560,1562,1567],{"type":49,"tag":86,"props":1556,"children":1557},{},[1558],{"type":54,"value":1559},"Invalid range order",{"type":54,"value":1561}," — the first version in ",{"type":49,"tag":57,"props":1563,"children":1565},{"className":1564},[],[1566],{"type":54,"value":1042},{"type":54,"value":1568}," must be less than or equal to the second",{"type":49,"tag":82,"props":1570,"children":1571},{},[1572,1577,1579,1584],{"type":49,"tag":86,"props":1573,"children":1574},{},[1575],{"type":54,"value":1576},"Malformed ranges",{"type":54,"value":1578}," — use a single hyphen with no spaces inside the range, and do not combine ",{"type":49,"tag":57,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":54,"value":1526},{"type":54,"value":1585}," with a range endpoint",{"type":49,"tag":82,"props":1587,"children":1588},{},[1589,1594,1595,1601],{"type":49,"tag":86,"props":1590,"children":1591},{},[1592],{"type":54,"value":1593},"No overlapping ranges",{"type":54,"value":1502},{"type":49,"tag":57,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":54,"value":1600},"ga 9.2+, beta 9.0-9.2",{"type":54,"value":1602}," is invalid because 9.2 overlaps",{"type":49,"tag":82,"props":1604,"children":1605},{},[1606,1611,1612,1617,1619,1624],{"type":49,"tag":86,"props":1607,"children":1608},{},[1609],{"type":54,"value":1610},"Deprecated deployment key",{"type":54,"value":1502},{"type":49,"tag":57,"props":1613,"children":1615},{"className":1614},[],[1616],{"type":54,"value":861},{"type":54,"value":1618}," is deprecated; use ",{"type":49,"tag":57,"props":1620,"children":1622},{"className":1621},[],[1623],{"type":54,"value":787},{"type":54,"value":1625}," for Elastic Cloud Hosted in new or updated content",{"type":49,"tag":82,"props":1627,"children":1628},{},[1629,1634],{"type":49,"tag":86,"props":1630,"children":1631},{},[1632],{"type":54,"value":1633},"Heading annotations",{"type":54,"value":1635}," — section-level only, never use inline annotations with headings; the block goes on the line directly below the heading, with no blank line between them",{"type":49,"tag":82,"props":1637,"children":1638},{},[1639,1644],{"type":49,"tag":86,"props":1640,"children":1641},{},[1642],{"type":54,"value":1643},"Version numbers in prose",{"type":54,"value":1645}," — never write versions in text next to applies_to badges",{"type":49,"tag":82,"props":1647,"children":1648},{},[1649,1654,1656,1661,1663,1668],{"type":49,"tag":86,"props":1650,"children":1651},{},[1652],{"type":54,"value":1653},"Patch-level tags",{"type":54,"value":1655}," — tags should be at the minor (",{"type":49,"tag":57,"props":1657,"children":1659},{"className":1658},[],[1660],{"type":54,"value":1136},{"type":54,"value":1662},"), not the patch (",{"type":49,"tag":57,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":54,"value":1144},{"type":54,"value":1669},"); flag patch-level tags and the redundant same-minor bullets they often create",{"type":49,"tag":66,"props":1671,"children":1673},{"id":1672},"guidelines-for-tagging",[1674],{"type":54,"value":1675},"Guidelines for tagging",{"type":49,"tag":206,"props":1677,"children":1679},{"id":1678},"decide-whether-applies_to-is-needed",[1680,1682,1687],{"type":54,"value":1681},"Decide whether ",{"type":49,"tag":57,"props":1683,"children":1685},{"className":1684},[],[1686],{"type":54,"value":62},{"type":54,"value":1688}," is needed",{"type":49,"tag":50,"props":1690,"children":1691},{},[1692],{"type":49,"tag":86,"props":1693,"children":1694},{},[1695],{"type":54,"value":1696},"Don't tag when:",{"type":49,"tag":78,"props":1698,"children":1699},{},[1700,1705,1717,1758],{"type":49,"tag":82,"props":1701,"children":1702},{},[1703],{"type":54,"value":1704},"The edit is valid for all versions (rewording, typo fixes, restructuring) — it's not version-scoped at all.",{"type":49,"tag":82,"props":1706,"children":1707},{},[1708,1710,1715],{"type":54,"value":1709},"A parent page or parent section already has the correct ",{"type":49,"tag":57,"props":1711,"children":1713},{"className":1712},[],[1714],{"type":54,"value":62},{"type":54,"value":1716}," — repeating it is redundant.",{"type":49,"tag":82,"props":1718,"children":1719},{},[1720,1722,1728,1730,1735,1737,1742,1744,1749,1751,1756],{"type":54,"value":1721},"The change ",{"type":49,"tag":1723,"props":1724,"children":1725},"em",{},[1726],{"type":54,"value":1727},"is",{"type":54,"value":1729}," version-scoped but a small inline pattern carries the meaning without ",{"type":49,"tag":57,"props":1731,"children":1733},{"className":1732},[],[1734],{"type":54,"value":62},{"type":54,"value":1736},". The most common case is a renamed UI element: write \"Select ",{"type":49,"tag":86,"props":1738,"children":1739},{},[1740],{"type":54,"value":1741},"New name",{"type":54,"value":1743}," (or ",{"type":49,"tag":86,"props":1745,"children":1746},{},[1747],{"type":54,"value":1748},"Old name",{"type":54,"value":1750}," in earlier versions).\" rather than splitting the step with ",{"type":49,"tag":57,"props":1752,"children":1754},{"className":1753},[],[1755],{"type":54,"value":62},{"type":54,"value":1757},". Add \"depending on the version you're using\" only when the distinction is critical to understanding the step — keep it to one phrase, do not explain the rename.",{"type":49,"tag":82,"props":1759,"children":1760},{},[1761],{"type":54,"value":1762},"Adding GA features to unversioned products where the page-level lifecycle already covers the content.",{"type":49,"tag":50,"props":1764,"children":1765},{},[1766],{"type":49,"tag":86,"props":1767,"children":1768},{},[1769],{"type":54,"value":1770},"Tag when:",{"type":49,"tag":78,"props":1772,"children":1773},{},[1774,1779],{"type":49,"tag":82,"props":1775,"children":1776},{},[1777],{"type":54,"value":1778},"Content is genuinely version- or deployment-scoped, isn't already covered by a parent tag, and isn't better expressed inline.",{"type":49,"tag":82,"props":1780,"children":1781},{},[1782],{"type":54,"value":1783},"Functionality is added in a specific release, lifecycle state changes (preview → GA, deprecated, removed), or availability differs across products or deployment types.",{"type":49,"tag":206,"props":1785,"children":1787},{"id":1786},"consolidate-with-content-that-already-covers-the-version",[1788],{"type":54,"value":1789},"Consolidate with content that already covers the version",{"type":49,"tag":50,"props":1791,"children":1792},{},[1793,1795,1800],{"type":54,"value":1794},"Before adding a new tagged bullet, section, or block, check whether the page already has a structure covering the ",{"type":49,"tag":86,"props":1796,"children":1797},{},[1798],{"type":54,"value":1799},"same minor",{"type":54,"value":1801},". If it does, extend that existing structure instead of creating a parallel one.",{"type":49,"tag":50,"props":1803,"children":1804},{},[1805,1807,1813,1815,1820],{"type":54,"value":1806},"Because tags resolve to the minor, content that lands in a minor already represented belongs in the structure that already represents it. For example, if a list already has a ",{"type":49,"tag":57,"props":1808,"children":1810},{"className":1809},[],[1811],{"type":54,"value":1812},"{applies_to}",{"type":54,"value":1814},"stack: ga 9.4`` bullet and you're documenting a related detail that shipped in 9.4.2, fold it into that same 9.4 bullet — a second ",{"type":49,"tag":57,"props":1816,"children":1818},{"className":1817},[],[1819],{"type":54,"value":1144},{"type":54,"value":1821}," bullet is redundant, fragments the version's content, and visibly duplicates the same badge. Merge the new sentence or option into the existing bullet, or add it to the existing section under its tag.",{"type":49,"tag":50,"props":1823,"children":1824},{},[1825],{"type":54,"value":1826},"This is the cumulative-docs corollary of \"tag at the minor level\": one minor, one place.",{"type":49,"tag":206,"props":1828,"children":1830},{"id":1829},"place-applies_to-where-the-change-applies",[1831,1833,1838],{"type":54,"value":1832},"Place ",{"type":49,"tag":57,"props":1834,"children":1836},{"className":1835},[],[1837],{"type":54,"value":62},{"type":54,"value":1839}," where the change applies",{"type":49,"tag":50,"props":1841,"children":1842},{},[1843],{"type":54,"value":1844},"Pick the form that matches what the change is scoped to:",{"type":49,"tag":78,"props":1846,"children":1847},{},[1848,1865,1875,1884,1901],{"type":49,"tag":82,"props":1849,"children":1850},{},[1851,1856,1858,1863],{"type":49,"tag":86,"props":1852,"children":1853},{},[1854],{"type":54,"value":1855},"Section level",{"type":54,"value":1857}," — fenced ",{"type":49,"tag":57,"props":1859,"children":1861},{"className":1860},[],[1862],{"type":54,"value":1812},{"type":54,"value":1864}," block immediately after the heading, when the change is relevant to a section.",{"type":49,"tag":82,"props":1866,"children":1867},{},[1868,1873],{"type":49,"tag":86,"props":1869,"children":1870},{},[1871],{"type":54,"value":1872},"Page level",{"type":54,"value":1874}," — YAML frontmatter, when the change scopes the whole page.",{"type":49,"tag":82,"props":1876,"children":1877},{},[1878,1882],{"type":49,"tag":86,"props":1879,"children":1880},{},[1881],{"type":54,"value":462},{"type":54,"value":1883}," — only at start of a list item, end of a definition term, or inside a table cell. Never mid-sentence in running prose, and never floating between sentences in a paragraph (scope becomes ambiguous).",{"type":49,"tag":82,"props":1885,"children":1886},{},[1887,1892,1894,1899],{"type":49,"tag":86,"props":1888,"children":1889},{},[1890],{"type":54,"value":1891},"Admonition or dropdown",{"type":54,"value":1893}," — use the ",{"type":49,"tag":57,"props":1895,"children":1897},{"className":1896},[],[1898],{"type":54,"value":564},{"type":54,"value":1900}," directive option when prose needs version scoping but doesn't fit any of the inline positions above. Restructure the prose into the admonition rather than inventing a new inline placement.",{"type":49,"tag":82,"props":1902,"children":1903},{},[1904,1915],{"type":49,"tag":86,"props":1905,"children":1906},{},[1907,1913],{"type":49,"tag":57,"props":1908,"children":1910},{"className":1909},[],[1911],{"type":54,"value":1912},"applies-switch",{"type":54,"value":1914}," tabs",{"type":54,"value":1916}," — only when content truly diverges between contexts (a stack-only step that has no serverless equivalent, with materially different code):",{"type":49,"tag":223,"props":1918,"children":1920},{"className":324,"code":1919,"language":326,"meta":228,"style":228},"::::{applies-switch}\n:::{applies-item} stack: ga\nStack-specific content here.\n:::\n:::{applies-item} serverless: ga\nServerless-specific content here.\n:::\n::::\n",[1921],{"type":49,"tag":57,"props":1922,"children":1923},{"__ignoreMap":228},[1924,1932,1940,1948,1955,1963,1972,1980],{"type":49,"tag":234,"props":1925,"children":1926},{"class":236,"line":237},[1927],{"type":49,"tag":234,"props":1928,"children":1929},{"style":476},[1930],{"type":54,"value":1931},"::::{applies-switch}\n",{"type":49,"tag":234,"props":1933,"children":1934},{"class":236,"line":247},[1935],{"type":49,"tag":234,"props":1936,"children":1937},{"style":476},[1938],{"type":54,"value":1939},":::{applies-item} stack: ga\n",{"type":49,"tag":234,"props":1941,"children":1942},{"class":236,"line":262},[1943],{"type":49,"tag":234,"props":1944,"children":1945},{"style":476},[1946],{"type":54,"value":1947},"Stack-specific content here.\n",{"type":49,"tag":234,"props":1949,"children":1950},{"class":236,"line":282},[1951],{"type":49,"tag":234,"props":1952,"children":1953},{"style":476},[1954],{"type":54,"value":605},{"type":49,"tag":234,"props":1956,"children":1957},{"class":236,"line":299},[1958],{"type":49,"tag":234,"props":1959,"children":1960},{"style":476},[1961],{"type":54,"value":1962},":::{applies-item} serverless: ga\n",{"type":49,"tag":234,"props":1964,"children":1966},{"class":236,"line":1965},6,[1967],{"type":49,"tag":234,"props":1968,"children":1969},{"style":476},[1970],{"type":54,"value":1971},"Serverless-specific content here.\n",{"type":49,"tag":234,"props":1973,"children":1975},{"class":236,"line":1974},7,[1976],{"type":49,"tag":234,"props":1977,"children":1978},{"style":476},[1979],{"type":54,"value":605},{"type":49,"tag":234,"props":1981,"children":1983},{"class":236,"line":1982},8,[1984],{"type":49,"tag":234,"props":1985,"children":1986},{"style":476},[1987],{"type":54,"value":1988},"::::\n",{"type":49,"tag":206,"props":1990,"children":1992},{"id":1991},"scope-must-be-unambiguous",[1993],{"type":54,"value":1994},"Scope must be unambiguous",{"type":49,"tag":50,"props":1996,"children":1997},{},[1998,2000,2005],{"type":54,"value":1999},"Before committing an ",{"type":49,"tag":57,"props":2001,"children":2003},{"className":2002},[],[2004],{"type":54,"value":62},{"type":54,"value":2006}," block, verify that any reader — human or automated tooling — can tell exactly what content the tag covers from the heading and block position alone. If there is any doubt, restructure the section.",{"type":49,"tag":66,"props":2008,"children":2010},{"id":2009},"common-patterns",[2011],{"type":54,"value":2012},"Common patterns",{"type":49,"tag":50,"props":2014,"children":2015},{},[2016],{"type":49,"tag":86,"props":2017,"children":2018},{},[2019],{"type":54,"value":2020},"Both stack and serverless:",{"type":49,"tag":223,"props":2022,"children":2024},{"className":225,"code":2023,"language":227,"meta":228,"style":228},"applies_to:\n  stack: ga\n  serverless: ga\n",[2025],{"type":49,"tag":57,"props":2026,"children":2027},{"__ignoreMap":228},[2028,2039,2054],{"type":49,"tag":234,"props":2029,"children":2030},{"class":236,"line":237},[2031,2035],{"type":49,"tag":234,"props":2032,"children":2033},{"style":251},[2034],{"type":54,"value":62},{"type":49,"tag":234,"props":2036,"children":2037},{"style":256},[2038],{"type":54,"value":259},{"type":49,"tag":234,"props":2040,"children":2041},{"class":236,"line":247},[2042,2046,2050],{"type":49,"tag":234,"props":2043,"children":2044},{"style":251},[2045],{"type":54,"value":268},{"type":49,"tag":234,"props":2047,"children":2048},{"style":256},[2049],{"type":54,"value":273},{"type":49,"tag":234,"props":2051,"children":2052},{"style":276},[2053],{"type":54,"value":279},{"type":49,"tag":234,"props":2055,"children":2056},{"class":236,"line":262},[2057,2061,2065],{"type":49,"tag":234,"props":2058,"children":2059},{"style":251},[2060],{"type":54,"value":288},{"type":49,"tag":234,"props":2062,"children":2063},{"style":256},[2064],{"type":54,"value":273},{"type":49,"tag":234,"props":2066,"children":2067},{"style":276},[2068],{"type":54,"value":279},{"type":49,"tag":50,"props":2070,"children":2071},{},[2072],{"type":49,"tag":86,"props":2073,"children":2074},{},[2075],{"type":54,"value":2076},"Progressive GA with version history:",{"type":49,"tag":223,"props":2078,"children":2080},{"className":225,"code":2079,"language":227,"meta":228,"style":228},"applies_to:\n  stack: preview =9.0, ga 9.2+\n  serverless: ga\n",[2081],{"type":49,"tag":57,"props":2082,"children":2083},{"__ignoreMap":228},[2084,2095,2111],{"type":49,"tag":234,"props":2085,"children":2086},{"class":236,"line":237},[2087,2091],{"type":49,"tag":234,"props":2088,"children":2089},{"style":251},[2090],{"type":54,"value":62},{"type":49,"tag":234,"props":2092,"children":2093},{"style":256},[2094],{"type":54,"value":259},{"type":49,"tag":234,"props":2096,"children":2097},{"class":236,"line":247},[2098,2102,2106],{"type":49,"tag":234,"props":2099,"children":2100},{"style":251},[2101],{"type":54,"value":268},{"type":49,"tag":234,"props":2103,"children":2104},{"style":256},[2105],{"type":54,"value":273},{"type":49,"tag":234,"props":2107,"children":2108},{"style":276},[2109],{"type":54,"value":2110}," preview =9.0, ga 9.2+\n",{"type":49,"tag":234,"props":2112,"children":2113},{"class":236,"line":262},[2114,2118,2122],{"type":49,"tag":234,"props":2115,"children":2116},{"style":251},[2117],{"type":54,"value":288},{"type":49,"tag":234,"props":2119,"children":2120},{"style":256},[2121],{"type":54,"value":273},{"type":49,"tag":234,"props":2123,"children":2124},{"style":276},[2125],{"type":54,"value":279},{"type":49,"tag":50,"props":2127,"children":2128},{},[2129],{"type":49,"tag":86,"props":2130,"children":2131},{},[2132],{"type":54,"value":2133},"Serverless with subkeys:",{"type":49,"tag":223,"props":2135,"children":2137},{"className":225,"code":2136,"language":227,"meta":228,"style":228},"applies_to:\n  serverless:\n    security: ga\n    observability: ga\n    elasticsearch: unavailable\n",[2138],{"type":49,"tag":57,"props":2139,"children":2140},{"__ignoreMap":228},[2141,2152,2163,2179,2195],{"type":49,"tag":234,"props":2142,"children":2143},{"class":236,"line":237},[2144,2148],{"type":49,"tag":234,"props":2145,"children":2146},{"style":251},[2147],{"type":54,"value":62},{"type":49,"tag":234,"props":2149,"children":2150},{"style":256},[2151],{"type":54,"value":259},{"type":49,"tag":234,"props":2153,"children":2154},{"class":236,"line":247},[2155,2159],{"type":49,"tag":234,"props":2156,"children":2157},{"style":251},[2158],{"type":54,"value":288},{"type":49,"tag":234,"props":2160,"children":2161},{"style":256},[2162],{"type":54,"value":259},{"type":49,"tag":234,"props":2164,"children":2165},{"class":236,"line":262},[2166,2171,2175],{"type":49,"tag":234,"props":2167,"children":2168},{"style":251},[2169],{"type":54,"value":2170},"    security",{"type":49,"tag":234,"props":2172,"children":2173},{"style":256},[2174],{"type":54,"value":273},{"type":49,"tag":234,"props":2176,"children":2177},{"style":276},[2178],{"type":54,"value":279},{"type":49,"tag":234,"props":2180,"children":2181},{"class":236,"line":282},[2182,2187,2191],{"type":49,"tag":234,"props":2183,"children":2184},{"style":251},[2185],{"type":54,"value":2186},"    observability",{"type":49,"tag":234,"props":2188,"children":2189},{"style":256},[2190],{"type":54,"value":273},{"type":49,"tag":234,"props":2192,"children":2193},{"style":276},[2194],{"type":54,"value":279},{"type":49,"tag":234,"props":2196,"children":2197},{"class":236,"line":299},[2198,2203,2207],{"type":49,"tag":234,"props":2199,"children":2200},{"style":251},[2201],{"type":54,"value":2202},"    elasticsearch",{"type":49,"tag":234,"props":2204,"children":2205},{"style":256},[2206],{"type":54,"value":273},{"type":49,"tag":234,"props":2208,"children":2209},{"style":276},[2210],{"type":54,"value":447},{"type":49,"tag":50,"props":2212,"children":2213},{},[2214],{"type":49,"tag":86,"props":2215,"children":2216},{},[2217],{"type":54,"value":2218},"Deployment with subkeys:",{"type":49,"tag":223,"props":2220,"children":2222},{"className":225,"code":2221,"language":227,"meta":228,"style":228},"applies_to:\n  deployment:\n    ece: ga 4.0\n    eck: ga 3.0\n    ech: ga\n    self: ga\n",[2223],{"type":49,"tag":57,"props":2224,"children":2225},{"__ignoreMap":228},[2226,2237,2249,2266,2283,2299],{"type":49,"tag":234,"props":2227,"children":2228},{"class":236,"line":237},[2229,2233],{"type":49,"tag":234,"props":2230,"children":2231},{"style":251},[2232],{"type":54,"value":62},{"type":49,"tag":234,"props":2234,"children":2235},{"style":256},[2236],{"type":54,"value":259},{"type":49,"tag":234,"props":2238,"children":2239},{"class":236,"line":247},[2240,2245],{"type":49,"tag":234,"props":2241,"children":2242},{"style":251},[2243],{"type":54,"value":2244},"  deployment",{"type":49,"tag":234,"props":2246,"children":2247},{"style":256},[2248],{"type":54,"value":259},{"type":49,"tag":234,"props":2250,"children":2251},{"class":236,"line":262},[2252,2257,2261],{"type":49,"tag":234,"props":2253,"children":2254},{"style":251},[2255],{"type":54,"value":2256},"    ece",{"type":49,"tag":234,"props":2258,"children":2259},{"style":256},[2260],{"type":54,"value":273},{"type":49,"tag":234,"props":2262,"children":2263},{"style":276},[2264],{"type":54,"value":2265}," ga 4.0\n",{"type":49,"tag":234,"props":2267,"children":2268},{"class":236,"line":282},[2269,2274,2278],{"type":49,"tag":234,"props":2270,"children":2271},{"style":251},[2272],{"type":54,"value":2273},"    eck",{"type":49,"tag":234,"props":2275,"children":2276},{"style":256},[2277],{"type":54,"value":273},{"type":49,"tag":234,"props":2279,"children":2280},{"style":276},[2281],{"type":54,"value":2282}," ga 3.0\n",{"type":49,"tag":234,"props":2284,"children":2285},{"class":236,"line":299},[2286,2291,2295],{"type":49,"tag":234,"props":2287,"children":2288},{"style":251},[2289],{"type":54,"value":2290},"    ech",{"type":49,"tag":234,"props":2292,"children":2293},{"style":256},[2294],{"type":54,"value":273},{"type":49,"tag":234,"props":2296,"children":2297},{"style":276},[2298],{"type":54,"value":279},{"type":49,"tag":234,"props":2300,"children":2301},{"class":236,"line":1965},[2302,2307,2311],{"type":49,"tag":234,"props":2303,"children":2304},{"style":251},[2305],{"type":54,"value":2306},"    self",{"type":49,"tag":234,"props":2308,"children":2309},{"style":256},[2310],{"type":54,"value":273},{"type":49,"tag":234,"props":2312,"children":2313},{"style":276},[2314],{"type":54,"value":279},{"type":49,"tag":50,"props":2316,"children":2317},{},[2318],{"type":49,"tag":86,"props":2319,"children":2320},{},[2321],{"type":54,"value":2322},"Feature deprecated then removed:",{"type":49,"tag":223,"props":2324,"children":2326},{"className":225,"code":2325,"language":227,"meta":228,"style":228},"applies_to:\n  stack: deprecated 9.1-9.3, removed 9.4+\n",[2327],{"type":49,"tag":57,"props":2328,"children":2329},{"__ignoreMap":228},[2330,2341],{"type":49,"tag":234,"props":2331,"children":2332},{"class":236,"line":237},[2333,2337],{"type":49,"tag":234,"props":2334,"children":2335},{"style":251},[2336],{"type":54,"value":62},{"type":49,"tag":234,"props":2338,"children":2339},{"style":256},[2340],{"type":54,"value":259},{"type":49,"tag":234,"props":2342,"children":2343},{"class":236,"line":247},[2344,2348,2352],{"type":49,"tag":234,"props":2345,"children":2346},{"style":251},[2347],{"type":54,"value":268},{"type":49,"tag":234,"props":2349,"children":2350},{"style":256},[2351],{"type":54,"value":273},{"type":49,"tag":234,"props":2353,"children":2354},{"style":276},[2355],{"type":54,"value":2356}," deprecated 9.1-9.3, removed 9.4+\n",{"type":49,"tag":50,"props":2358,"children":2359},{},[2360],{"type":49,"tag":86,"props":2361,"children":2362},{},[2363],{"type":54,"value":2364},"Section unavailable in serverless:",{"type":49,"tag":223,"props":2366,"children":2368},{"className":324,"code":2367,"language":326,"meta":228,"style":228},"```{applies_to}\nserverless: unavailable\n```\n",[2369],{"type":49,"tag":57,"props":2370,"children":2371},{"__ignoreMap":228},[2372,2383,2390],{"type":49,"tag":234,"props":2373,"children":2374},{"class":236,"line":237},[2375,2379],{"type":49,"tag":234,"props":2376,"children":2377},{"style":276},[2378],{"type":54,"value":351},{"type":49,"tag":234,"props":2380,"children":2381},{"style":354},[2382],{"type":54,"value":357},{"type":49,"tag":234,"props":2384,"children":2385},{"class":236,"line":247},[2386],{"type":49,"tag":234,"props":2387,"children":2388},{"style":354},[2389],{"type":54,"value":373},{"type":49,"tag":234,"props":2391,"children":2392},{"class":236,"line":262},[2393],{"type":49,"tag":234,"props":2394,"children":2395},{"style":276},[2396],{"type":54,"value":381},{"type":49,"tag":50,"props":2398,"children":2399},{},[2400],{"type":49,"tag":86,"props":2401,"children":2402},{},[2403],{"type":54,"value":2404},"Inline for a single property:",{"type":49,"tag":223,"props":2406,"children":2408},{"className":324,"code":2407,"language":326,"meta":228,"style":228},"**Density** {applies_to}`stack: ga 9.1+`\n",[2409],{"type":49,"tag":57,"props":2410,"children":2411},{"__ignoreMap":228},[2412],{"type":49,"tag":234,"props":2413,"children":2414},{"class":236,"line":237},[2415,2421,2427,2431,2436,2440,2444],{"type":49,"tag":234,"props":2416,"children":2418},{"style":2417},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[2419],{"type":54,"value":2420},"**",{"type":49,"tag":234,"props":2422,"children":2424},{"style":2423},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[2425],{"type":54,"value":2426},"Density",{"type":49,"tag":234,"props":2428,"children":2429},{"style":2417},[2430],{"type":54,"value":2420},{"type":49,"tag":234,"props":2432,"children":2433},{"style":476},[2434],{"type":54,"value":2435}," {applies_to}",{"type":49,"tag":234,"props":2437,"children":2438},{"style":256},[2439],{"type":54,"value":484},{"type":49,"tag":234,"props":2441,"children":2442},{"style":276},[2443],{"type":54,"value":489},{"type":49,"tag":234,"props":2445,"children":2446},{"style":256},[2447],{"type":54,"value":540},{"type":49,"tag":66,"props":2449,"children":2451},{"id":2450},"cumulative-documentation-rules",[2452],{"type":54,"value":167},{"type":49,"tag":50,"props":2454,"children":2455},{},[2456,2458,2463],{"type":54,"value":2457},"Elastic docs (V3, elastic.co\u002Fdocs) are cumulative — a single page stays valid across versions and deployment types simultaneously. This shapes how ",{"type":49,"tag":57,"props":2459,"children":2461},{"className":2460},[],[2462],{"type":54,"value":62},{"type":54,"value":2464}," tags should be written for evolving features and how version-scoped content should be preserved.",{"type":49,"tag":206,"props":2466,"children":2468},{"id":2467},"preserve-old-content-when-possible",[2469],{"type":54,"value":2470},"Preserve old content when possible",{"type":49,"tag":50,"props":2472,"children":2473},{},[2474],{"type":54,"value":2475},"Before suggesting any change involving version-scoped content, ask:",{"type":49,"tag":1330,"props":2477,"children":2478},{},[2479,2489],{"type":49,"tag":82,"props":2480,"children":2481},{},[2482,2487],{"type":49,"tag":86,"props":2483,"children":2484},{},[2485],{"type":54,"value":2486},"Do users on previous versions still need the old information?",{"type":54,"value":2488}," Usually yes — docs serve all currently-supported versions. Prefer adding tagged new content alongside the old, not replacing it.",{"type":49,"tag":82,"props":2490,"children":2491},{},[2492,2497,2499,2504,2506,2516],{"type":49,"tag":86,"props":2493,"children":2494},{},[2495],{"type":54,"value":2496},"Is the change actually scoped to a specific version or deployment?",{"type":54,"value":2498}," If the new content is valid for all versions, no ",{"type":49,"tag":57,"props":2500,"children":2502},{"className":2501},[],[2503],{"type":54,"value":62},{"type":54,"value":2505}," is needed at all. See the ",{"type":49,"tag":86,"props":2507,"children":2508},{},[2509,2510,2515],{"type":54,"value":1681},{"type":49,"tag":57,"props":2511,"children":2513},{"className":2512},[],[2514],{"type":54,"value":62},{"type":54,"value":1688},{"type":54,"value":2517}," rules under Guidelines for tagging.",{"type":49,"tag":206,"props":2519,"children":2521},{"id":2520},"lifecycle-changes",[2522],{"type":54,"value":2523},"Lifecycle changes",{"type":49,"tag":78,"props":2525,"children":2526},{},[2527,2559],{"type":49,"tag":82,"props":2528,"children":2529},{},[2530,2535,2537,2542,2544,2549,2551,2557],{"type":49,"tag":86,"props":2531,"children":2532},{},[2533],{"type":54,"value":2534},"Versioned products (stack):",{"type":54,"value":2536}," append the new state, keep the old. A feature that was ",{"type":49,"tag":57,"props":2538,"children":2540},{"className":2539},[],[2541],{"type":54,"value":899},{"type":54,"value":2543}," at 9.0 and ",{"type":49,"tag":57,"props":2545,"children":2547},{"className":2546},[],[2548],{"type":54,"value":913},{"type":54,"value":2550}," at 9.2 becomes ",{"type":49,"tag":57,"props":2552,"children":2554},{"className":2553},[],[2555],{"type":54,"value":2556},"stack: ga 9.2+, preview =9.0",{"type":54,"value":2558},". Older readers still see the preview note; newer readers see the GA badge.",{"type":49,"tag":82,"props":2560,"children":2561},{},[2562,2567],{"type":49,"tag":86,"props":2563,"children":2564},{},[2565],{"type":54,"value":2566},"Unversioned products (serverless):",{"type":54,"value":2568}," replace the old state entirely. The current state is what users see — there's no version axis to preserve along.",{"type":49,"tag":206,"props":2570,"children":2572},{"id":2571},"removals",[2573],{"type":54,"value":2574},"Removals",{"type":49,"tag":78,"props":2576,"children":2577},{},[2578,2596,2606],{"type":49,"tag":82,"props":2579,"children":2580},{},[2581,2586,2588,2594],{"type":49,"tag":86,"props":2582,"children":2583},{},[2584],{"type":54,"value":2585},"GA or deprecated feature removed from a versioned product",{"type":54,"value":2587}," → keep the content; add ",{"type":49,"tag":57,"props":2589,"children":2591},{"className":2590},[],[2592],{"type":54,"value":2593},"stack: removed 9.x",{"type":54,"value":2595}," to the existing applies_to so older-version readers still find the documentation.",{"type":49,"tag":82,"props":2597,"children":2598},{},[2599,2604],{"type":49,"tag":86,"props":2600,"children":2601},{},[2602],{"type":54,"value":2603},"Feature removed from an unversioned product only",{"type":54,"value":2605}," → content can be deleted unless it's still relevant for the versioned product.",{"type":49,"tag":82,"props":2607,"children":2608},{},[2609,2614],{"type":49,"tag":86,"props":2610,"children":2611},{},[2612],{"type":54,"value":2613},"Feature that was only ever preview or beta",{"type":54,"value":2615}," → content can be deleted regardless of product type once the lifecycle ends.",{"type":49,"tag":206,"props":2617,"children":2619},{"id":2618},"version-display-reminders",[2620],{"type":54,"value":2621},"Version display reminders",{"type":49,"tag":78,"props":2623,"children":2624},{},[2625,2630,2635],{"type":49,"tag":82,"props":2626,"children":2627},{},[2628],{"type":54,"value":2629},"Never write versions in prose adjacent to badges — they contradict the \"Planned\" badge text before release.",{"type":49,"tag":82,"props":2631,"children":2632},{},[2633],{"type":54,"value":2634},"Versions display as Major.Minor in badges regardless of patch numbers in source.",{"type":49,"tag":82,"props":2636,"children":2637},{},[2638],{"type":54,"value":2639},"Each version statement covers the latest patch of that minor.",{"type":49,"tag":66,"props":2641,"children":2643},{"id":2642},"generate-from-intent-execution",[2644],{"type":54,"value":128},{"type":49,"tag":50,"props":2646,"children":2647},{},[2648,2650,2655],{"type":54,"value":2649},"Use this flow when the user describes a change and asks for the correct ",{"type":49,"tag":57,"props":2651,"children":2653},{"className":2652},[],[2654],{"type":54,"value":62},{"type":54,"value":2656}," syntax to apply, without providing an existing file.",{"type":49,"tag":206,"props":2658,"children":2660},{"id":2659},"step-1-extract-the-change-description",[2661],{"type":54,"value":2662},"Step 1: Extract the change description",{"type":49,"tag":50,"props":2664,"children":2665},{},[2666,2668,2673],{"type":54,"value":2667},"From the user's prompt, pull the following. Ask ",{"type":49,"tag":86,"props":2669,"children":2670},{},[2671],{"type":54,"value":2672},"one",{"type":54,"value":2674}," focused clarifying question if any are missing and material:",{"type":49,"tag":78,"props":2676,"children":2677},{},[2678,2687,2697,2707,2717,2727],{"type":49,"tag":82,"props":2679,"children":2680},{},[2681,2685],{"type":49,"tag":86,"props":2682,"children":2683},{},[2684],{"type":54,"value":707},{"type":54,"value":2686}," — stack\u002Fserverless, deployment, or product. If both stack and serverless apply, use stack\u002Fserverless. Use only one dimension at page level.",{"type":49,"tag":82,"props":2688,"children":2689},{},[2690,2695],{"type":49,"tag":86,"props":2691,"children":2692},{},[2693],{"type":54,"value":2694},"Lifecycle per key",{"type":54,"value":2696}," — experimental, preview, beta, ga, deprecated, removed, or unavailable.",{"type":49,"tag":82,"props":2698,"children":2699},{},[2700,2705],{"type":49,"tag":86,"props":2701,"children":2702},{},[2703],{"type":54,"value":2704},"Version per lifecycle",{"type":54,"value":2706}," (versioned products only) — the minor (or patch) where each lifecycle starts.",{"type":49,"tag":82,"props":2708,"children":2709},{},[2710,2715],{"type":49,"tag":86,"props":2711,"children":2712},{},[2713],{"type":54,"value":2714},"Sub-projects",{"type":54,"value":2716}," (serverless only) — elasticsearch, observability, security, or omit if all apply.",{"type":49,"tag":82,"props":2718,"children":2719},{},[2720,2725],{"type":49,"tag":86,"props":2721,"children":2722},{},[2723],{"type":54,"value":2724},"Scope of the change",{"type":54,"value":2726}," — whole page, a specific section, a list item, a paragraph, or an admonition. Determines which level of annotation to generate.",{"type":49,"tag":82,"props":2728,"children":2729},{},[2730,2735,2737,2741],{"type":49,"tag":86,"props":2731,"children":2732},{},[2733],{"type":54,"value":2734},"Whether the change preserves or replaces existing content",{"type":54,"value":2736}," — if the user is updating an existing page, ask whether older-version readers still need the old text. Apply the ",{"type":49,"tag":86,"props":2738,"children":2739},{},[2740],{"type":54,"value":167},{"type":54,"value":2742}," above.",{"type":49,"tag":206,"props":2744,"children":2746},{"id":2745},"step-2-decide-preservation-vs-replacement",[2747],{"type":54,"value":2748},"Step 2: Decide preservation vs. replacement",{"type":49,"tag":50,"props":2750,"children":2751},{},[2752],{"type":54,"value":2753},"Apply the cumulative-docs rules:",{"type":49,"tag":78,"props":2755,"children":2756},{},[2757,2762,2767,2772],{"type":49,"tag":82,"props":2758,"children":2759},{},[2760],{"type":54,"value":2761},"If the page already documents an older state (e.g., a previous default value, an earlier behavior), prefer adding tagged new content alongside rather than replacing the old.",{"type":49,"tag":82,"props":2763,"children":2764},{},[2765],{"type":54,"value":2766},"For versioned-product lifecycle changes, append the new state to the existing tag.",{"type":49,"tag":82,"props":2768,"children":2769},{},[2770],{"type":54,"value":2771},"For unversioned-product lifecycle changes, replace the old state.",{"type":49,"tag":82,"props":2773,"children":2774},{},[2775,2777,2782],{"type":54,"value":2776},"For removals from versioned products, keep the content and add ",{"type":49,"tag":57,"props":2778,"children":2780},{"className":2779},[],[2781],{"type":54,"value":927},{"type":54,"value":671},{"type":49,"tag":206,"props":2784,"children":2786},{"id":2785},"step-3-pick-the-form-that-matches-what-the-change-is-scoped-to",[2787],{"type":54,"value":2788},"Step 3: Pick the form that matches what the change is scoped to",{"type":49,"tag":50,"props":2790,"children":2791},{},[2792,2794,2804],{"type":54,"value":2793},"Use the ",{"type":49,"tag":86,"props":2795,"children":2796},{},[2797,2798,2803],{"type":54,"value":1832},{"type":49,"tag":57,"props":2799,"children":2801},{"className":2800},[],[2802],{"type":54,"value":62},{"type":54,"value":1839},{"type":54,"value":2805}," rules under Guidelines for tagging:",{"type":49,"tag":78,"props":2807,"children":2808},{},[2809,2814,2826,2831,2842],{"type":49,"tag":82,"props":2810,"children":2811},{},[2812],{"type":54,"value":2813},"Whole page → frontmatter.",{"type":49,"tag":82,"props":2815,"children":2816},{},[2817,2819,2824],{"type":54,"value":2818},"A section → fenced ",{"type":49,"tag":57,"props":2820,"children":2822},{"className":2821},[],[2823],{"type":54,"value":1812},{"type":54,"value":2825}," block after the heading.",{"type":49,"tag":82,"props":2827,"children":2828},{},[2829],{"type":54,"value":2830},"A list item, definition term, or table cell → inline at the allowed position.",{"type":49,"tag":82,"props":2832,"children":2833},{},[2834,2836,2841],{"type":54,"value":2835},"Prose that doesn't fit those inline positions → restructure into an admonition with ",{"type":49,"tag":57,"props":2837,"children":2839},{"className":2838},[],[2840],{"type":54,"value":564},{"type":54,"value":671},{"type":49,"tag":82,"props":2843,"children":2844},{},[2845,2847,2852],{"type":54,"value":2846},"Content that truly diverges between contexts → ",{"type":49,"tag":57,"props":2848,"children":2850},{"className":2849},[],[2851],{"type":54,"value":1912},{"type":54,"value":2853}," tabs.",{"type":49,"tag":50,"props":2855,"children":2856},{},[2857,2859,2863,2864,2868,2870,2875],{"type":54,"value":2858},"Before generating the tag, also check the gating rules: is the change actually version-scoped? Is a parent tag already covering it? Could a small inline pattern (e.g., a renamed UI element written as \"Select ",{"type":49,"tag":86,"props":2860,"children":2861},{},[2862],{"type":54,"value":1741},{"type":54,"value":1743},{"type":49,"tag":86,"props":2865,"children":2866},{},[2867],{"type":54,"value":1748},{"type":54,"value":2869}," in earlier versions)\") carry the meaning without ",{"type":49,"tag":57,"props":2871,"children":2873},{"className":2872},[],[2874],{"type":54,"value":62},{"type":54,"value":2876},"? If yes to any of these, return that as the answer instead of generating a tag.",{"type":49,"tag":206,"props":2878,"children":2880},{"id":2879},"step-4-generate-the-canonical-syntax",[2881],{"type":54,"value":2882},"Step 4: Generate the canonical syntax",{"type":49,"tag":50,"props":2884,"children":2885},{},[2886],{"type":54,"value":2887},"Produce the right form based on scope:",{"type":49,"tag":78,"props":2889,"children":2890},{},[2891,2964,3019,3059],{"type":49,"tag":82,"props":2892,"children":2893},{},[2894,2899,2901],{"type":49,"tag":86,"props":2895,"children":2896},{},[2897],{"type":54,"value":2898},"Whole page",{"type":54,"value":2900}," — YAML frontmatter:\n",{"type":49,"tag":223,"props":2902,"children":2904},{"className":225,"code":2903,"language":227,"meta":228,"style":228},"---\napplies_to:\n  stack: ga 9.5+\n  serverless: ga\n---\n",[2905],{"type":49,"tag":57,"props":2906,"children":2907},{"__ignoreMap":228},[2908,2915,2926,2942,2957],{"type":49,"tag":234,"props":2909,"children":2910},{"class":236,"line":237},[2911],{"type":49,"tag":234,"props":2912,"children":2913},{"style":241},[2914],{"type":54,"value":244},{"type":49,"tag":234,"props":2916,"children":2917},{"class":236,"line":247},[2918,2922],{"type":49,"tag":234,"props":2919,"children":2920},{"style":251},[2921],{"type":54,"value":62},{"type":49,"tag":234,"props":2923,"children":2924},{"style":256},[2925],{"type":54,"value":259},{"type":49,"tag":234,"props":2927,"children":2928},{"class":236,"line":262},[2929,2933,2937],{"type":49,"tag":234,"props":2930,"children":2931},{"style":251},[2932],{"type":54,"value":268},{"type":49,"tag":234,"props":2934,"children":2935},{"style":256},[2936],{"type":54,"value":273},{"type":49,"tag":234,"props":2938,"children":2939},{"style":276},[2940],{"type":54,"value":2941}," ga 9.5+\n",{"type":49,"tag":234,"props":2943,"children":2944},{"class":236,"line":282},[2945,2949,2953],{"type":49,"tag":234,"props":2946,"children":2947},{"style":251},[2948],{"type":54,"value":288},{"type":49,"tag":234,"props":2950,"children":2951},{"style":256},[2952],{"type":54,"value":273},{"type":49,"tag":234,"props":2954,"children":2955},{"style":276},[2956],{"type":54,"value":279},{"type":49,"tag":234,"props":2958,"children":2959},{"class":236,"line":299},[2960],{"type":49,"tag":234,"props":2961,"children":2962},{"style":241},[2963],{"type":54,"value":244},{"type":49,"tag":82,"props":2965,"children":2966},{},[2967,2972,2974],{"type":49,"tag":86,"props":2968,"children":2969},{},[2970],{"type":54,"value":2971},"Section",{"type":54,"value":2973}," — fenced block right after the heading:\n",{"type":49,"tag":223,"props":2975,"children":2977},{"className":324,"code":2976,"language":326,"meta":228,"style":228},"## Section title\n```{applies_to}\nstack: ga 9.5+\n```\n",[2978],{"type":49,"tag":57,"props":2979,"children":2980},{"__ignoreMap":228},[2981,2993,3004,3012],{"type":49,"tag":234,"props":2982,"children":2983},{"class":236,"line":237},[2984,2988],{"type":49,"tag":234,"props":2985,"children":2986},{"style":256},[2987],{"type":54,"value":338},{"type":49,"tag":234,"props":2989,"children":2990},{"style":241},[2991],{"type":54,"value":2992},"Section title\n",{"type":49,"tag":234,"props":2994,"children":2995},{"class":236,"line":247},[2996,3000],{"type":49,"tag":234,"props":2997,"children":2998},{"style":276},[2999],{"type":54,"value":351},{"type":49,"tag":234,"props":3001,"children":3002},{"style":354},[3003],{"type":54,"value":357},{"type":49,"tag":234,"props":3005,"children":3006},{"class":236,"line":262},[3007],{"type":49,"tag":234,"props":3008,"children":3009},{"style":354},[3010],{"type":54,"value":3011},"stack: ga 9.5+\n",{"type":49,"tag":234,"props":3013,"children":3014},{"class":236,"line":282},[3015],{"type":49,"tag":234,"props":3016,"children":3017},{"style":276},[3018],{"type":54,"value":381},{"type":49,"tag":82,"props":3020,"children":3021},{},[3022,3026,3028],{"type":49,"tag":86,"props":3023,"children":3024},{},[3025],{"type":54,"value":462},{"type":54,"value":3027}," (paragraph, list item, definition term, table cell):\n",{"type":49,"tag":223,"props":3029,"children":3031},{"className":324,"code":3030,"language":326,"meta":228,"style":228},"Some text {applies_to}`stack: ga 9.5+` more text.\n",[3032],{"type":49,"tag":57,"props":3033,"children":3034},{"__ignoreMap":228},[3035],{"type":49,"tag":234,"props":3036,"children":3037},{"class":236,"line":237},[3038,3042,3046,3051,3055],{"type":49,"tag":234,"props":3039,"children":3040},{"style":476},[3041],{"type":54,"value":479},{"type":49,"tag":234,"props":3043,"children":3044},{"style":256},[3045],{"type":54,"value":484},{"type":49,"tag":234,"props":3047,"children":3048},{"style":276},[3049],{"type":54,"value":3050},"stack: ga 9.5+",{"type":49,"tag":234,"props":3052,"children":3053},{"style":256},[3054],{"type":54,"value":484},{"type":49,"tag":234,"props":3056,"children":3057},{"style":476},[3058],{"type":54,"value":498},{"type":49,"tag":82,"props":3060,"children":3061},{},[3062,3066,3067,3072],{"type":49,"tag":86,"props":3063,"children":3064},{},[3065],{"type":54,"value":1891},{"type":54,"value":1893},{"type":49,"tag":57,"props":3068,"children":3070},{"className":3069},[],[3071],{"type":54,"value":564},{"type":54,"value":3073}," directive option on the directive itself.",{"type":49,"tag":50,"props":3075,"children":3076},{},[3077,3079,3085],{"type":54,"value":3078},"When multiple lifecycle states apply on a versioned product, list them newest-first in the source: ",{"type":49,"tag":57,"props":3080,"children":3082},{"className":3081},[],[3083],{"type":54,"value":3084},"stack: ga 9.5+, preview =9.4",{"type":54,"value":3086},". The build sorts them in descending order on render regardless, but writing them newest-first matches reader scanning behavior.",{"type":49,"tag":206,"props":3088,"children":3090},{"id":3089},"step-5-output",[3091],{"type":54,"value":3092},"Step 5: Output",{"type":49,"tag":50,"props":3094,"children":3095},{},[3096],{"type":54,"value":3097},"Return:",{"type":49,"tag":78,"props":3099,"children":3100},{},[3101,3113,3139],{"type":49,"tag":82,"props":3102,"children":3103},{},[3104,3106,3111],{"type":54,"value":3105},"The generated ",{"type":49,"tag":57,"props":3107,"children":3109},{"className":3108},[],[3110],{"type":54,"value":62},{"type":54,"value":3112}," syntax in the right format for the scope.",{"type":49,"tag":82,"props":3114,"children":3115},{},[3116,3118,3123,3125,3130,3132,3137],{"type":54,"value":3117},"A short rationale: which dimension, which lifecycle states, which version syntax (open-ended ",{"type":49,"tag":57,"props":3119,"children":3121},{"className":3120},[],[3122],{"type":54,"value":1526},{"type":54,"value":3124},", exact ",{"type":49,"tag":57,"props":3126,"children":3128},{"className":3127},[],[3129],{"type":54,"value":1080},{"type":54,"value":3131},", or range ",{"type":49,"tag":57,"props":3133,"children":3135},{"className":3134},[],[3136],{"type":54,"value":1042},{"type":54,"value":3138},"), and which scope level.",{"type":49,"tag":82,"props":3140,"children":3141},{},[3142],{"type":54,"value":3143},"If preservation is involved, an explicit note about which existing content stays and what gets added alongside it.",{"type":49,"tag":66,"props":3145,"children":3147},{"id":3146},"task-execution",[3148],{"type":54,"value":104},{"type":49,"tag":50,"props":3150,"children":3151},{},[3152,3154,3159],{"type":54,"value":3153},"Use this flow for ",{"type":49,"tag":86,"props":3155,"children":3156},{},[3157],{"type":54,"value":3158},"validate",{"type":54,"value":3160}," mode (file path, directory, or pasted page content).",{"type":49,"tag":1330,"props":3162,"children":3163},{},[3164,3182,3197,3212,3222,3240],{"type":49,"tag":82,"props":3165,"children":3166},{},[3167,3172,3174,3180],{"type":49,"tag":86,"props":3168,"children":3169},{},[3170],{"type":54,"value":3171},"Glob",{"type":54,"value":3173}," for all ",{"type":49,"tag":57,"props":3175,"children":3177},{"className":3176},[],[3178],{"type":54,"value":3179},".md",{"type":54,"value":3181}," files in scope",{"type":49,"tag":82,"props":3183,"children":3184},{},[3185,3190,3192],{"type":49,"tag":86,"props":3186,"children":3187},{},[3188],{"type":54,"value":3189},"Read",{"type":54,"value":3191}," each file and check for correct frontmatter ",{"type":49,"tag":57,"props":3193,"children":3195},{"className":3194},[],[3196],{"type":54,"value":62},{"type":49,"tag":82,"props":3198,"children":3199},{},[3200,3204,3206,3210],{"type":49,"tag":86,"props":3201,"children":3202},{},[3203],{"type":54,"value":90},{"type":54,"value":3205}," existing tags against the ",{"type":49,"tag":86,"props":3207,"children":3208},{},[3209],{"type":54,"value":1457},{"type":54,"value":3211}," above",{"type":49,"tag":82,"props":3213,"children":3214},{},[3215,3220],{"type":49,"tag":86,"props":3216,"children":3217},{},[3218],{"type":54,"value":3219},"Report",{"type":54,"value":3221}," issues found (missing tags, invalid syntax, wrong placement)",{"type":49,"tag":82,"props":3223,"children":3224},{},[3225,3227,3232,3234,3238],{"type":54,"value":3226},"If asked to fix or generate tags, use ",{"type":49,"tag":86,"props":3228,"children":3229},{},[3230],{"type":54,"value":3231},"Edit",{"type":54,"value":3233}," to apply corrections; for generation from a change description without a file, use the ",{"type":49,"tag":86,"props":3235,"children":3236},{},[3237],{"type":54,"value":128},{"type":54,"value":3239}," flow",{"type":49,"tag":82,"props":3241,"children":3242},{},[3243],{"type":54,"value":3244},"Summarize all changes made or issues found",{"type":49,"tag":66,"props":3246,"children":3248},{"id":3247},"reference",[3249],{"type":54,"value":3250},"Reference",{"type":49,"tag":50,"props":3252,"children":3253},{},[3254],{"type":54,"value":3255},"For exhaustive key lists, advanced scenarios, and badge placement details, fetch these URLs:",{"type":49,"tag":78,"props":3257,"children":3258},{},[3259,3268,3277,3286,3295],{"type":49,"tag":82,"props":3260,"children":3261},{},[3262],{"type":49,"tag":836,"props":3263,"children":3265},{"href":40,"rel":3264},[839],[3266],{"type":54,"value":3267},"Syntax reference",{"type":49,"tag":82,"props":3269,"children":3270},{},[3271],{"type":49,"tag":836,"props":3272,"children":3274},{"href":41,"rel":3273},[839],[3275],{"type":54,"value":3276},"Full key reference",{"type":49,"tag":82,"props":3278,"children":3279},{},[3280],{"type":49,"tag":836,"props":3281,"children":3283},{"href":42,"rel":3282},[839],[3284],{"type":54,"value":3285},"Guidelines",{"type":49,"tag":82,"props":3287,"children":3288},{},[3289],{"type":49,"tag":836,"props":3290,"children":3292},{"href":43,"rel":3291},[839],[3293],{"type":54,"value":3294},"Badge placement",{"type":49,"tag":82,"props":3296,"children":3297},{},[3298],{"type":49,"tag":836,"props":3299,"children":3301},{"href":44,"rel":3300},[839],[3302],{"type":54,"value":3303},"Example scenarios",{"type":49,"tag":3305,"props":3306,"children":3307},"style",{},[3308],{"type":54,"value":3309},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3311,"total":3479},[3312,3331,3348,3362,3381,3391,3401,3415,3427,3442,3453,3466],{"slug":3313,"name":3313,"fn":3314,"description":3315,"org":3316,"tags":3317,"stars":3328,"repoUrl":3329,"updatedAt":3330},"accessing-benchmark-results","retrieve and analyze Rally benchmark results","Retrieve Rally benchmark results from an external Elasticsearch metrics store. Use to list past races, get a single race's overall (per-task) results, chart a metric's trend across multiple runs, compare two races, or check whether a run converged — e.g. \"show me recent geonames races\", \"what's the service_time trend for nyc_taxis over the last 30 days?\", \"compare these two race-ids\". Applies when datastore.type = elasticsearch is set in ~\u002F.rally\u002Frally.ini.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3318,3321,3324,3325],{"name":3319,"slug":3320,"type":15},"Analytics","analytics",{"name":3322,"slug":3323,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":3326,"slug":3327,"type":15},"Performance","performance",2027,"https:\u002F\u002Fgithub.com\u002Felastic\u002Frally","2026-07-12T07:46:38.54144",{"slug":3332,"name":3332,"fn":3333,"description":3334,"org":3335,"tags":3336,"stars":3328,"repoUrl":3329,"updatedAt":3347},"developing-rally","develop and debug Rally source code","Work on Rally's own codebase, not running benchmarks with it. Use when setting up the dev environment, running Rally's tests or linters, navigating its source, debugging Rally's own code, or making changes to Rally itself.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3337,3340,3341,3344],{"name":3338,"slug":3339,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":3342,"slug":3343,"type":15},"Engineering","engineering",{"name":3345,"slug":3346,"type":15},"Local Development","local-development","2026-07-12T07:46:35.976807",{"slug":3349,"name":3349,"fn":3350,"description":3351,"org":3352,"tags":3353,"stars":3328,"repoUrl":3329,"updatedAt":3361},"running-benchmarks","run Rally benchmarks against Elasticsearch","Run Rally benchmarks (races) against Elasticsearch — an existing\u002Fexternal cluster or a Rally-provisioned distribution — and read the summary report. Use when running a race (any pipeline, track, challenge, target-hosts, or auth) or when interpreting throughput, latency, and service_time results.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3354,3355,3357,3358],{"name":9,"slug":8,"type":15},{"name":3356,"slug":754,"type":15},"Elasticsearch",{"name":3326,"slug":3327,"type":15},{"name":3359,"slug":3360,"type":15},"Testing","testing","2026-07-12T07:46:37.277964",{"slug":3363,"name":3363,"fn":3364,"description":3365,"org":3366,"tags":3367,"stars":3378,"repoUrl":3379,"updatedAt":3380},"cloud-access-management","manage Elastic Cloud organization access","Manage Elastic Cloud organization access: invite users, assign roles to Serverless projects, and create or revoke Cloud API keys. Use when granting, modifying, or auditing user access.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3368,3371,3372,3375],{"name":3369,"slug":3370,"type":15},"Cloud","cloud",{"name":9,"slug":8,"type":15},{"name":3373,"slug":3374,"type":15},"Operations","operations",{"name":3376,"slug":3377,"type":15},"Permissions","permissions",531,"https:\u002F\u002Fgithub.com\u002Felastic\u002Fagent-skills","2026-07-12T07:46:44.946285",{"slug":3382,"name":3382,"fn":3383,"description":3384,"org":3385,"tags":3386,"stars":3378,"repoUrl":3379,"updatedAt":3390},"cloud-create-project","create Elastic Cloud Serverless projects","Creates Elastic Cloud Serverless projects (Elasticsearch, Observability, or Security) via the REST API, saves credentials to file, and bootstraps a scoped Elasticsearch API key. Use when creating a new serverless project, provisioning a search or observability environment, or spinning up a new Elastic Cloud project.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3387,3388,3389],{"name":3369,"slug":3370,"type":15},{"name":771,"slug":780,"type":15},{"name":3356,"slug":754,"type":15},"2026-07-12T07:46:42.353362",{"slug":3392,"name":3392,"fn":3393,"description":3394,"org":3395,"tags":3396,"stars":3378,"repoUrl":3379,"updatedAt":3400},"cloud-manage-project","manage Elastic Cloud Serverless projects","Manages existing Elastic Cloud Serverless projects: list, get, update, delete, reset credentials, resume, and load saved credentials. Connects to existing projects by resolving endpoints and acquiring scoped Elasticsearch API keys. Use when performing day-2 operations on serverless projects, connecting to an existing project, loading or resetting project credentials, or looking up project details.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3397,3398,3399],{"name":3369,"slug":3370,"type":15},{"name":3356,"slug":754,"type":15},{"name":3373,"slug":3374,"type":15},"2026-07-12T07:46:41.097412",{"slug":3402,"name":3402,"fn":3403,"description":3404,"org":3405,"tags":3406,"stars":3378,"repoUrl":3379,"updatedAt":3414},"cloud-network-security","manage Elastic Cloud network security","Manage Serverless network security (traffic filters): create, update, and delete IP filters and AWS PrivateLink VPC filters. Use when restricting network access or configuring private connectivity.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3407,3408,3409,3412],{"name":3369,"slug":3370,"type":15},{"name":3356,"slug":754,"type":15},{"name":3410,"slug":3411,"type":15},"Networking","networking",{"name":3413,"slug":747,"type":15},"Security","2026-07-12T07:46:43.675992",{"slug":3416,"name":3416,"fn":3417,"description":3418,"org":3419,"tags":3420,"stars":3378,"repoUrl":3379,"updatedAt":3426},"cloud-setup","configure Elastic Cloud authentication","Configures Elastic Cloud authentication and environment defaults. Use when setting up EC_API_KEY, configuring Cloud API access, or when another cloud skill requires credentials.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3421,3424,3425],{"name":3422,"slug":3423,"type":15},"Authentication","authentication",{"name":3369,"slug":3370,"type":15},{"name":3356,"slug":754,"type":15},"2026-07-12T07:46:39.783105",{"slug":3428,"name":3428,"fn":3429,"description":3430,"org":3431,"tags":3432,"stars":3378,"repoUrl":3379,"updatedAt":3441},"elasticsearch-audit","configure Elasticsearch security audit logs","Enable, configure, and query Elasticsearch security audit logs. Use when the task involves audit logging setup, event filtering, or investigating security incidents like failed logins.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3433,3436,3437,3440],{"name":3434,"slug":3435,"type":15},"Audit","audit",{"name":3356,"slug":754,"type":15},{"name":3438,"slug":3439,"type":15},"Logs","logs",{"name":3413,"slug":747,"type":15},"2026-07-12T07:47:35.092599",{"slug":3443,"name":3443,"fn":3444,"description":3445,"org":3446,"tags":3447,"stars":3378,"repoUrl":3379,"updatedAt":3452},"elasticsearch-authn","configure Elasticsearch authentication realms","Authenticate to Elasticsearch using native, file-based, LDAP\u002FAD, SAML, OIDC, Kerberos, JWT, or certificate realms. Use when connecting with credentials, choosing a realm, or managing API keys. Assumes the target realms are already configured.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3448,3449,3450,3451],{"name":3422,"slug":3423,"type":15},{"name":9,"slug":8,"type":15},{"name":3356,"slug":754,"type":15},{"name":3413,"slug":747,"type":15},"2026-07-12T07:47:41.474547",{"slug":3454,"name":3454,"fn":3455,"description":3456,"org":3457,"tags":3458,"stars":3378,"repoUrl":3379,"updatedAt":3465},"elasticsearch-authz","manage Elasticsearch RBAC and security roles","Manage Elasticsearch RBAC: native users, roles, role mappings, document- and field-level security. Use when creating users or roles, assigning privileges, or mapping external realms like LDAP\u002FSAML.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3459,3460,3461,3464],{"name":9,"slug":8,"type":15},{"name":3356,"slug":754,"type":15},{"name":3462,"slug":3463,"type":15},"RBAC","rbac",{"name":3413,"slug":747,"type":15},"2026-07-12T07:47:36.394177",{"slug":3467,"name":3467,"fn":3468,"description":3469,"org":3470,"tags":3471,"stars":3378,"repoUrl":3379,"updatedAt":3478},"elasticsearch-esql","query Elasticsearch data with ES|QL","Execute ES|QL (Elasticsearch Query Language) queries, use when the user wants to query Elasticsearch data, analyze logs, aggregate metrics, explore data, or create charts and dashboards from ES|QL results.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3472,3473,3474,3475],{"name":3319,"slug":3320,"type":15},{"name":3322,"slug":3323,"type":15},{"name":3356,"slug":754,"type":15},{"name":3476,"slug":3477,"type":15},"SQL","sql","2026-07-12T07:47:40.249533",86,{"items":3481,"total":3553},[3482,3488,3501,3511,3520,3532,3542],{"slug":4,"name":4,"fn":5,"description":6,"org":3483,"tags":3484,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3485,3486,3487],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"slug":3489,"name":3489,"fn":3490,"description":3491,"org":3492,"tags":3493,"stars":20,"repoUrl":21,"updatedAt":3500},"docs-check-style","check documentation for Elastic style compliance","Check documentation for Elastic style guide compliance using Vale linter output and style rules. Use when writing, editing, or reviewing docs to catch voice, tone, grammar, formatting, accessibility, and word choice issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3494,3497,3498,3499],{"name":3495,"slug":3496,"type":15},"Accessibility","accessibility",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-12T07:49:36.112751",{"slug":3502,"name":3502,"fn":3503,"description":3504,"org":3505,"tags":3506,"stars":20,"repoUrl":21,"updatedAt":3510},"docs-content-type-checker","check Elastic documentation content types","Check a docs-content page against Elastic content type guidelines (overview, how-to, tutorial, troubleshooting, changelog), or classify a proposed page idea against the content types before drafting. Use when the user asks to check content type compliance, validate page structure, review a doc against content type standards, or decide which content type a planned page should use.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3507,3508,3509],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-12T07:50:36.826563",{"slug":3512,"name":3512,"fn":3513,"description":3514,"org":3515,"tags":3516,"stars":20,"repoUrl":21,"updatedAt":3519},"docs-draft-workflow-docs","draft Elastic Workflows documentation","Draft or update Elastic Workflows documentation pages in explore-analyze\u002Fworkflows\u002F — step references, use cases, how-tos, concepts, and overviews. Use when writing Workflows docs, documenting a step type, turning workflow YAML into documentation, drafting from a doc issue in docs-content or docs-content-internal, or creating a new page under the Workflows docset.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3517,3518],{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},"2026-07-12T07:48:02.16095",{"slug":3521,"name":3521,"fn":3522,"description":3523,"org":3524,"tags":3525,"stars":20,"repoUrl":21,"updatedAt":3531},"docs-fix-changelog","improve Elastic changelog YAML files","Suggest improved text for changelog YAML files against current Elastic standards. Mirrors the pattern catalog from docs-review-changelog to provide consistent fixes. Includes type-title alignment checking and technical content assessment to catch overly technical titles that need user-focused rewrites. Features repository-aware area validation and enhanced confidence scoring. Supports single files or directories. Fetches canonical guidance to stay in sync. Use after review identifies quality issues, or when drafting new changelogs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3526,3527,3528,3529],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},{"name":3530,"slug":227,"type":15},"YAML","2026-07-12T07:48:58.570382",{"slug":3533,"name":3533,"fn":3534,"description":3535,"org":3536,"tags":3537,"stars":20,"repoUrl":21,"updatedAt":3541},"docs-flag-jargon-skill","flag Elastic jargon in documentation","Flag Elastic-internal jargon in documentation and suggest plain-language replacements. Use when reviewing, writing, or editing docs to catch terms that external readers would not understand.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3538,3539,3540],{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-12T07:49:34.836748",{"slug":3543,"name":3543,"fn":3544,"description":3545,"org":3546,"tags":3547,"stars":20,"repoUrl":21,"updatedAt":3552},"docs-frontmatter-audit","audit Elastic documentation frontmatter","Audit Elastic documentation files for frontmatter completeness and correctness. Checks products, description, and navigation_title fields across a directory. Use when auditing docs metadata, checking frontmatter quality before publishing, or validating a batch of files.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3548,3549,3550,3551],{"name":3434,"slug":3435,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"2026-07-12T07:49:39.883351",18]