Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
elastic avatar

Package Spec

  • 211 installs
  • 15 repo stars
  • Updated August 5, 2026
  • elastic/integration-skills

Elastic package-spec skill for manifest changelog compliance with elastic/package-spec.

About

Elastic package-spec skill for manifest and changelog compliance with upstream elastic/package-spec. Authoritative over legacy patterns in elastic/integrations repo. Covers format_version selection, conditions, variables at package policy template input and data stream levels, routing rules and required manifest flags, changelog schema with semantic version bumps, Handlebars template variable validation, and debugging elastic-package lint or check errors on metadata. Explicitly not for scaffolding, ingest pipelines, ECS mappings, or CEL programs.

  • manifest.yml and changelog.yml compliance with package-spec authority
  • format_version conditions variables and routing rules configuration
  • Semantic version bump and changelog entry type selection
  • Variable scoping across package policy template input data stream levels
  • Debug elastic-package lint and check errors on manifests

Package Spec by the numbers

  • 211 all-time installs (skills.sh)
  • Ranked #510 of 1,879 Documentation skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

package-spec capabilities & compatibility

Capabilities
validate manifest · write changelog · debug package lint · configure routing rules
Works with
elasticsearch
Use cases
documentation · devops
From the docs

What package-spec says it does

Package specification compliance for Elastic integration packages.
SKILL.md
Always follow this skill over patterns observed in other integrations.
SKILL.md
npx skills add https://github.com/elastic/integration-skills --skill package-spec

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs211
repo stars15
Last updatedAugust 5, 2026
Repositoryelastic/integration-skills

Does this integration manifest and changelog meet package-spec requirements?

Ensure Elastic integration manifest.yml and changelog.yml comply with elastic/package-spec format_version, variables, and routing rules.

Who is it for?

Integration developers building or reviewing package metadata and changelog entries.

Skip if: Ingest pipeline design or ECS field mapping tasks.

When should I use this skill?

User builds manifest.yml, changelog.yml, or debugs elastic-package lint on metadata.

What you get

manifest.yml and changelog.yml compliant with format_version variables and lint passing.

Files

SKILL.mdMarkdownGitHub ↗

package-spec

Skill authority

The rules and patterns defined in this skill and its reference files are the authoritative source of truth. When examining existing integrations in the elastic/integrations repository for reference, you may encounter patterns that conflict with what is specified here -- many integrations contain legacy patterns that predate current standards. Always follow this skill over patterns observed in other integrations. If a reference integration uses a deprecated or prohibited pattern, do not copy it.

When to use

Use this skill when tasks include:

  • building or reviewing manifest.yml at root or data stream level
  • adding or validating changelog.yml entries
  • selecting the correct change type and semantic version bump
  • configuring policy templates, inputs, and variable declarations
  • debugging elastic-package lint or elastic-package check errors on manifests or changelogs
  • reviewing variable scoping across package, policy template, input, and data stream levels
  • validating Handlebars template variables against manifest declarations
  • configuring routing rules and their required manifest flags
  • determining which format_version is needed for a package's features

When NOT to use

  • Package scaffolding and directory layout (create-integration)
  • Ingest pipeline design (ingest-pipelines)
  • Field mapping and ECS compliance (ecs-field-mappings)
  • CEL programs (cel-programs)
  • Transform configuration (see review-integration skill's references/transform-guide.md)

Handoff

For package directory layout and required files, see create-integration -> references/package-layout.md. For elastic-package CLI commands and troubleshooting, see elastic-package-cli.

---

format_version

The format_version field in manifest.yml declares which elastic/package-spec version the package conforms to. The current standard for new packages is "3.4.2".

Use the minimum version that supports the features the package actually uses, not the latest available spec version. Bumping without needing new features:

  • forces users to run a newer Kibana than necessary
  • breaks backward compatibility for no reason
  • makes it harder to determine which features the package depends on

Only bump when the package uses a feature introduced in a newer spec version:

FeatureMinimum format_version
Basic package structure1.0.0
Input-level variables2.0.0
elasticsearch.privileges2.3.0
routing_rules.yml support2.9.0
lifecycle field3.0.0
Secret variables (secret: true)3.0.0
elasticsearch.source_mode3.0.3

See references/format-version-features.md for the full feature-to-version table including recent spec additions (3.6.0+), and references/manifest-rules.md for the review procedure.

---

conditions.kibana.version

The current standard constraint is "^8.19.0 || ^9.1.0". This is set in the root manifest.yml only -- data stream manifests must NOT set their own conditions.

When an integration uses features that require a newer agent (e.g., CEL functions introduced in v9.3.0), the constraint must be adjusted accordingly. For systematic version verification of CEL features, see the review-integration skill's version check references.

---

Variable scoping

Fleet variables exist at four levels:

1. Package level -- manifest.yml top-level vars: 2. Policy template level -- manifest.yml under policy_templates[].vars: 3. Input level -- manifest.yml under policy_templates[].inputs[].vars: 4. Data stream level -- data_stream/*/manifest.yml under streams[].vars:

A variable declared in an inner scope must not reuse the name of a variable in an outer scope. This is variable shadowing and is rejected by elastic-package validation.

See references/manifest-rules.md -> Variable shadowing for full rules, examples, and common patterns.

---

Manifest rules (brief)

  • Every Handlebars `{{var}}` must be declared in a manifest -- undeclared variables silently resolve to empty strings. Handlebars helpers ({{#if}}, {{#each}}, {{#unless}}, {{#contains}}) and built-in variables ({{data_stream.type}}, {{data_stream.dataset}}, {{data_stream.namespace}}, {{output}}) are exempt.
  • Routing rules require dynamic flags -- when a data stream uses routing_rules.yml, the data stream manifest must declare elasticsearch.dynamic_dataset: true and elasticsearch.dynamic_namespace: true.
  • Use proper YAML nesting, not dotted keys -- elasticsearch.dynamic_dataset as a literal key name creates a single flat key, not a nested object. Use nested elasticsearch: -> dynamic_dataset: structure.

See references/manifest-rules.md for complete rules, correct/incorrect examples, and the review checklist.

---

Changelog schema

changelog.yml is a version-grouped array; newer versions go on top:

- version: "1.2.0"
  changes:
    - description: Added example parsing for edge-case payloads.
      type: enhancement
      link: https://github.com/elastic/integrations/pull/12345

Each entry requires description, type, and link. Valid types: enhancement, bugfix, breaking-change.

Version bump rules

  • patch (x.y.Z): bug fixes and low-risk fixes
  • minor (x.Y.z): new content -- new data streams, new fields, new features
  • major (X.y.z): breaking changes -- field type changes or removals on existing integrations, ECS mapping conflicts, required config/auth changes that break existing policies, data stream restructuring, default behavior changes that alter collected or normalized data

Adding changelog entries

Edit changelog.yml directly, or use elastic-package changelog add (see elastic-package-cli skill for command flags and --next patch|minor|major usage).

Common changelog pitfalls

  • Adding the entry under the wrong version or not at the top
  • Missing link field -- elastic-package lint validates that the PR/issue number is a positive integer and rejects pull/0; use a real PR number or pull/99999 as a development placeholder and replace before merge
  • Bumping manifest/package version inconsistently with changelog intent

See references/changelog-patterns.md for detailed patterns, breaking-change checklist, and CI examples.

---

Upstream: elastic/package-spec

The elastic/package-spec repository is the upstream authority for package structure, manifest schema, and validation rules. The spec/changelog.yml in that repo documents which features were added in each spec version.

Key points from the package-spec versioning model:

  • Packages must specify format_version in root manifest.yml
  • A package at format_version: x.y.z must be valid against specs in the range [x.y.z, X.0.0) where X = x + 1
  • Patch versions may add stricter validations (e.g., 3.6.0 added pipeline tag and on_failure validation)
  • Minor versions add new feature support
  • Major versions are reserved for significant format changes

See references/format-version-features.md for the curated feature-to-version table.

Reference files

FileContains
references/manifest-rules.mdFull rules for format_version selection, variable shadowing, Handlebars variable declarations, routing rules, YAML structure, and severity-tagged review checklist
references/changelog-patterns.mdChangelog entry patterns, semver rules, breaking-change checklist, CI examples
references/format-version-features.mdFeature-to-version table sourced from elastic/package-spec, including recent spec additions

Related skills

FAQ

Is this skill authoritative over existing integrations?

Yes. Follow this skill over legacy patterns observed in other integrations.

What does it not cover?

Scaffolding, ingest pipelines, ECS mappings, and CEL programs have dedicated skills.

When to bump version?

Select correct change type and semantic version bump per changelog schema rules.

Documentationpipelines

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.