From otel
Scaffold new OpenTelemetry Collector components (receivers, processors, exporters, connectors, extensions) for use with the OCB (OpenTelemetry Collector Builder). Use when the user wants to create a new OTel Collector component, generate component boilerplate, or scaffold a custom collector component. Targets the latest stable Collector API (go.opentelemetry.io/collector v1.x / v0.14x+).
How this skill is triggered — by the user, by Claude, or both
Slash command
/otel:collector-componentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scaffold new OTel Collector components following the canonical patterns from the
Scaffold new OTel Collector components following the canonical patterns from the opentelemetry-collector-contrib repository.
github.com/org/repo/receiver/myreceiver)go mod tidy to resolve dependenciesEvery component follows this structure:
mycomponent/
metadata.yaml
doc.go
config.go
config_test.go
factory.go
factory_test.go
<component>.go
<component>_test.go
go.mod
go.sum
README.md
internal/metadata/ # generated by mdatagen
testdata/ # test config fixtures
Drives code generation via mdatagen. Generates internal/metadata/ with type constants
and stability levels.
type: mycomponent
status:
class: receiver # receiver | processor | exporter | connector | extension
stability:
# For receiver/processor/exporter: list signal types per stability:
beta: [metrics]
alpha: [traces, logs]
# For connector: use input_to_output format:
# alpha: [traces_to_metrics]
# For extension:
# alpha: [extension]
distributions: [contrib]
codeowners:
active: [githubuser]
tests:
config:
# Key-value pairs matching Config struct fields for lifecycle tests
// Package mycomponent ...
package mycomponent
//go:generate mdatagen metadata.yaml
package mycomponent
import "go.opentelemetry.io/collector/confmap/xconfmap"
var _ xconfmap.Validator = (*Config)(nil)
type Config struct {
Field string `mapstructure:"field"`
}
func (c *Config) Validate() error {
// Return non-nil for invalid config
return nil
}
Use mapstructure tags for all fields. Implement xconfmap.Validator for validation.
Each component type has a different factory signature. Consult the appropriate reference:
consumer in create funcs, does NOT embed consumerprocessorhelper for the common caseexporterhelper for retry/queue/timeout| Receiver | Processor | Exporter | Connector | Extension | |
|---|---|---|---|---|---|
| Next consumer in Create? | Yes | Yes | No | Yes | No |
| Embeds consumer? | No | Yes | Yes | Yes | No |
| NewFactory style | Variadic opts | Variadic opts | Variadic opts | Variadic opts | Positional |
| Helper package | receiverhelper | processorhelper | exporterhelper | none | none |
Use these module paths (adjust version to latest):
go.opentelemetry.io/collector/component v1.x
go.opentelemetry.io/collector/consumer v1.x
go.opentelemetry.io/collector/confmap v1.x
go.opentelemetry.io/collector/pdata v1.x
go.opentelemetry.io/collector/receiver v0.14x # for receivers
go.opentelemetry.io/collector/processor v0.14x # for processors
go.opentelemetry.io/collector/exporter v0.14x # for exporters
go.opentelemetry.io/collector/connector v0.14x # for connectors
go.opentelemetry.io/collector/extension v0.14x # for extensions
Once the component module is ready, add it to builder-config.yaml:
receivers:
- gomod: github.com/org/repo/receiver/myreceiver v0.1.0
# For local development:
replaces:
- github.com/org/repo/receiver/myreceiver => ../receiver/myreceiver
Then build: builder --config=builder-config.yaml
npx claudepluginhub brettbuddin/claude-plugins --plugin otelConfigures and deploys the OpenTelemetry Collector: receivers, exporters, processors, pipelines, sampling, RED metrics, and custom distributions. Use for agent/gateway patterns, Kubernetes (operator, Helm chart, raw manifests), and Dash0 forwarding.
Guides authoring, reviewing, and debugging OpenTelemetry Collector YAML for receivers, processors, exporters, connectors, and extensions — config keys, defaults, validation, signal support, and gotchas.
Configures OTLP exporters to send traces, metrics, and logs to observability backends and collectors. Covers direct export vs collector-mediated export, batching, compression, and retry behavior.