.agents/skills/integrations-lifecycle/description-authoring.md
Metadata descriptions are public product copy. They appear on Learn, in integration cards, in generated umbrella pages, and in some in-app surfaces. Write them for an operator scanning a catalog, not for a developer reading implementation notes.
The Monitor Anything table does not read a dedicated
catalog_description field. integrations/gen_doc_collector_page.py
extracts the first sentence from the generated ## Overview section
and falls back to meta.monitored_instance.description only when
overview text is unavailable.
For collector-like integrations, that means the first sentence of
overview.data_collection.metrics_description is the catalog
description. Write that sentence first, deliberately, before adding
detail for the full integration page.
That first sentence must:
That first sentence must not:
<tier>, <key>, or
[[ variables.foo ]];Required first-sentence style:
Monitor <thing> ..., Collect <data> from <thing> ...,
Keep an eye on <thing> ....Collect network flow records from <protocol/exporter> ....Enrich network flows with <fields/context> from <source> ....Annotate network flows with <labels> from <source/rules> ....Export Netdata metrics to <destination> ....Discover <targets> from <source> ....Avoid leading with the provider's publication mechanism (AWS publishes ...,
Microsoft publishes ..., Set option ...). Those facts may be useful in
the full page, but the catalog sentence should first tell users what Netdata
does for them.
Use the right metadata field for the job:
| Content | Field |
|---|---|
| What the integration is / what data it provides | First sentence of overview.data_collection.metrics_description |
| How collection works | overview.data_collection.method_description |
| Defaults and auto-detection | overview.default_behavior.auto_detection.description |
| Limits, retention, sizing, and cardinality | overview.default_behavior.limits.description |
| CPU, memory, disk, or network impact | overview.default_behavior.performance_impact.description |
| Metric chart title | metrics.scopes[].metrics[].description; copy the code-defined chart title when one exists |
| Configuration settings | setup.configuration.options.list[].description |
| Example-specific behavior | setup.configuration.examples.list[].description |
| Failure modes and fixes | troubleshooting.problems.list[].description |
Configuration option descriptions are allowed to describe settings. Catalog descriptions are not.
Bad catalog description:
metrics_description: |
Set `protocols.decapsulation_mode` to `srv6` or `vxlan`.
Good catalog description:
metrics_description: |
Enrich network flows with inner source and destination endpoints from VXLAN or SRv6 encapsulated traffic.
Bad catalog description:
metrics_description: |
Empty `asn_database` and `geo_database` values enable auto-detection.
Good catalog description:
metrics_description: |
Enrich network flows with ASN and geographic context from DB-IP Lite MMDB databases.
Bad catalog description:
metrics_description: |
The `journal.tiers.<tier>.duration_of_journal_files` setting controls retention.
Good catalog description:
metrics_description: |
Collect network flow records from NetFlow exporters such as routers, switches, and firewalls.
Before committing metadata.yaml changes:
src/collectors/COLLECTORS.md.