Lint an integration package's docs source, filter template noise, propose fixes, then verify the rendered output.
Phase 1 — Lint the source
-
Check prerequisites: run both checks before continuing:
vale --version— if not found, tell the user to install it by following the Elastic vale linter guide.elastic-package version— if not found, tell the user to install it by following the elastic-package install guide.
Stop and report any missing tools before proceeding.
-
Locate the package root: find the nearest ancestor directory (including cwd) that contains both
manifest.ymland_dev/build/docs/README.md. If not found, ask the user for the path before continuing. -
Run vale on the source:
vale _dev/build/docs/README.md --output JSON
If additional *.md files exist under _dev/build/docs/, include them too.
-
Detect template-comment ranges: pre-scan the source file with a non-greedy DOTALL match for
\{\{\s*/\*.*?\*/\s*\}\}. For each match, record(start_line, end_line)by counting newlines before the match start and end. -
Filter findings: suppress any vale finding whose
Linefalls within any(start_line, end_line)range. Those lines are stripped byelastic-package buildand their findings are false positives. Report only findings outside those ranges, grouped by file, with: Line, Match, Severity, Check, and Message. -
Draft proposals for each reported finding:
Action.Name == "replace"→ mechanical substitution usingAction.Params[0].Action.Name == "remove"→ delete theMatchspan.- No action params (for example
Elastic.Semicolons,Elastic.DontUse,Elastic.Ellipses) → draft a prose rewrite of the sentence using context.
-
Confirm before editing: present all proposals together and ask the user which to apply (all / subset / none). Apply only confirmed edits via the Edit tool. Never edit files under
packages/*/docs/— only_dev/build/docs/sources.
If Phase 1 finds no actionable issues, skip the confirmation step and proceed to Phase 2.
Phase 2 — Build and re-lint the rendered output
-
Build the package from the package root:
elastic-package build -
Run vale on the rendered README:
vale packages/<pkg>/docs/README.md --output JSONExtend to other
docs/**/*.mdif present. No template-comment filtering is needed — comments are stripped by the build. -
Report and propose fixes exactly as in Phase 1 steps 6–7. If a Phase 2 finding maps to a source line, edit
_dev/build/docs/only. -
Re-run
elastic-package buildafter any source edits so the user can confirm the rendered output is clean.
Review checklist
Before reporting the task complete, verify:
-
valeandelastic-packagewere both confirmed available (or the user was sent to the relevant install guide). - Every finding inside a
{{/* */}}block was suppressed in Phase 1. - No edits were written to any path under
packages/*/docs/. - Every edit was confirmed by the user — nothing was silently auto-applied.
-
elastic-package buildcompleted without error. -
vale packages/<pkg>/docs/README.md(Phase 2) reported no findings.