Install any skill in seconds. Free to start, no credit card required.
Get Started Free →camunda/analytics-exporter
Use when adding support for a new event or metric in the analytics exporter at zeebe/exporters/analytics-exporter/ — creating handlers, adding AnalyticsAttributes, registering in the HandlerRegistry, and writing tests. Also use when modifying existing handlers or attributes.
Passed 22 of 24 test cases with the skill, and 10 of 24 without it.
and 18 more in the full report
13 fixed10 passed either way2 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
Before committing our changes for a new analytics exporter handler, what exact Maven command should be executed to apply required license header formatting and code style checks?
| Checked | Without skill | With skill |
|---|---|---|
| Specifies running ./mvnw license:format spotless:apply -T1C for formatting. | Missed | Passed |
The instructions your model reads when the skill loads.
Reference for extending the analytics exporter with a new event handler. The exporter ships process-level OTel telemetry to the Camunda Analytics backend; downstream dashboards and alerts depend on stable attribute key strings and event names across versions. Getting registration or backwards compatibility wrong silently drops data or breaks analytics.
Iron rule — NEVER expose PII. Variable values, usernames, email addresses, user IDs, or any other personally identifiable data must never be emitted. Only process metadata (process IDs, definition keys, instance keys, element IDs, tenant IDs, timestamps) is acceptable. When in doubt, leave it out.
zeebe/exporters/analytics-exporter/src/main/java/io/camunda/exporter/analytics/
AnalyticsExporter.java ← entry point; configure() wires up the HandlerRegistry
AnalyticsHandler.java ← @FunctionalInterface — implement this
HandlerRegistry.java ← routes (ValueType, Intent) → handler
AnalyticsAttributes.java ← all OTel attribute keys and event/metric name constants
OtelSdkManager.java ← logEvent() / incrementMetric() / emitHeartbeat()
handler/ ← one class per event type
Determine the ValueType, Intent, and RecordValue type from the Zeebe protocol:
zeebe/protocol/src/main/java/io/camunda/zeebe/protocol/record/value/
zeebe/protocol/src/main/java/io/camunda/zeebe/protocol/record/intent/
Check HandlerRegistry in AnalyticsExporter.configure() to confirm there is no existing
handler for that (ValueType, Intent) pair — the registry throws IllegalStateException on
duplicate registration.
One handler per
(ValueType, Intent). If the same intent covers multiple element types (likePROCESS_INSTANCE / ELEMENT_ACTIVATED), add filtering logic inside the handler (seeAdHocSubProcessHandlerfor an example).
test cases passed, vs 10 / 24 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.