Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when you need to implement or improve Java metrics observability with Micrometer — including meter design, naming/tag conventions, cardinality control, timers/counters/gauges/distribution summaries, percentiles/histograms, Actuator/Prometheus integration, and metrics validation through tests. This should trigger for requests such as Improve metrics; Apply Micrometer; Add metrics observability; Refactor Micrometer instrumentation; Add Micrometer timers counters or gauges to Java services. Par
.claude/skills/jabrena-182-java-observability-metrics-micrometer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-13 | ✓→✓ | = Same ✓ | 9% | 0% |
| case-09 | ✓→✓ | = Same ✓ | 0% | 0% |
| case-10 | ✓→✓ | = Same ✓ | -23% | 0% |
| case-11 | ✓→✓ | = Same ✓ | 10% | 0% |
Implement effective Java metrics instrumentation with Micrometer by defining meaningful service-level metrics, controlling cardinality, selecting the right meter type, and exposing production-ready telemetry for dashboards and alerting.
What is covered in this Skill?
Scope: Application-level metrics design and instrumentation quality for Java services, with emphasis on operationally useful and cost-efficient telemetry.
Metrics instrumentation must be operationally safe, low-cardinality, and validated. Poor tag design or excessive meter creation can degrade observability systems and increase costs.
./mvnw clean verify or mvn clean verify after changesIdentify key service indicators (throughput, latency, error ratio, saturation) and map each to stable metric names, units, and low-cardinality tags.
Apply Counter/Timer/Gauge/DistributionSummary/LongTaskTimer where appropriate, ensuring consistent naming conventions and reusable tags.
Control cardinality, avoid dynamic meter churn, configure histogram/percentile strategy only where needed, and align export settings with the telemetry backend.
Verify metrics in tests and runtime endpoints, confirm expected labels/units, and ensure dashboards/alerts can consume the emitted series.
For detailed guidance, examples, and constraints, see references/182-java-observability-metrics-micrometer.md.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-13 | pass→pass | 12,171 | 9,684 | -20% | 1 | 1 | 0% | 1,953 | 2,137 | +9% | 0 | 0 | — |
case-09 | pass→pass | 15,657 | 11,938 | -24% | 1 | 1 | 0% | 2,741 | 2,742 | +0% | 0 | 0 | — |
case-10 | pass→pass | 8,287 | 2,671 | -68% | 1 | 1 | 0% | 1,202 | 928 | -23% | 0 | 0 | — |
case-11 | pass→pass | 13,128 | 10,604 | -19% | 1 | 1 | 0% | 2,325 | 2,562 | +10% | 0 | 0 | — |
case-01 | fail→pass | 15,756 | 14,068 | -11% | 1 | 1 | 0% | 3,155 | 3,088 | -2% | 0 | 0 | — |
case-02 | pass→pass | 16,076 | 12,678 | -21% | 1 | 1 | 0% | 2,746 | 2,731 | -1% | 0 | 0 | — |
case-03 | pass→pass | 9,348 | 9,022 | -3% | 1 | 1 | 0% | 1,488 | 2,095 | +41% | 0 | 0 | — |
case-04 | pass→pass | 11,153 | 8,183 | -27% | 1 | 1 | 0% | 1,730 | 1,862 | +8% | 0 | 0 | — |
case-12 | pass→pass | 17,686 | 9,670 | -45% | 1 | 1 | 0% | 2,888 | 2,153 | -25% | 0 | 0 | — |
case-05 | pass→pass | 13,977 | 11,560 | -17% | 1 | 1 | 0% | 2,215 | 2,546 | +15% | 0 | 0 | — |
case-06 | pass→pass | 16,530 | 12,188 | -26% | 1 | 1 | 0% | 2,721 | 2,780 | +2% | 0 | 0 | — |
case-07 | pass→pass | 15,553 | 14,460 | -7% | 1 | 1 | 0% | 2,781 | 3,163 | +14% | 0 | 0 | — |
case-08 | pass→pass | 13,201 | 9,452 | -28% | 1 | 1 | 0% | 2,077 | 2,105 | +1% | 0 | 0 | — |
case-14 | pass→pass | 10,803 | 12,070 | +12% | 1 | 1 | 0% | 1,840 | 2,453 | +33% | 0 | 0 | — |
case-15 | pass→pass | 7,242 | 5,147 | -29% | 1 | 1 | 0% | 1,305 | 1,395 | +7% | 0 | 0 | — |
case-16 | pass→pass | 9,483 | 10,956 | +16% | 1 | 1 | 0% | 1,817 | 2,292 | +26% | 0 | 0 | — |
case-17 | pass→pass | 12,000 | 10,926 | -9% | 1 | 1 | 0% | 2,398 | 2,557 | +7% | 0 | 0 | — |
case-18 | pass→pass | 9,741 | 8,181 | -16% | 1 | 1 | 0% | 1,806 | 2,113 | +17% | 0 | 0 | — |
case-19 | pass→pass | 13,405 | 6,608 | -51% | 1 | 1 | 0% | 2,200 | 1,541 | -30% | 0 | 0 | — |
case-20 | pass→pass | 5,073 | 6,552 | +29% | 1 | 1 | 0% | 841 | 1,701 | +102% | 0 | 0 | — |
case-21 | pass→pass | 12,631 | 10,347 | -18% | 1 | 1 | 0% | 2,316 | 2,418 | +4% | 0 | 0 | — |
case-22 | pass→pass | 15,646 | 11,695 | -25% | 1 | 1 | 0% | 2,411 | 2,448 | +2% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.