You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: plugins/trogonstack-datadog/skills/datadog-design-dashboard/SKILL.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ Before designing, understand what you are building observability for. The metric
29
29
30
30
**If the user points you to a codebase**: Read it. Look at the entry points, the API routes, the database models, the queue consumers, the external service calls. Understanding the code gives you the context to choose metrics that actually matter — not just generic RED/USE signals.
31
31
32
-
**If the user describes the business**: Use that context to tailor the Customer-Facing section. An e-commerce service cares about checkout success rates. A messaging service cares about delivery latency. A payment service cares about transaction completion. Generic "request rate" and "error rate" are a starting point, but the real value comes from metrics that map to business outcomes.
32
+
**If the user describes the business**: Use that context to tailor the Business (`B`) section. An e-commerce service cares about checkout success rates. A messaging service cares about delivery latency. A payment service cares about transaction completion. Generic "request rate" and "error rate" are a starting point, but the real value comes from metrics that map to customer-visible outcomes.
33
33
34
34
**Skip domain discovery if**: You already have deep context about the service from prior conversations or the user has provided detailed specifications.
35
35
@@ -81,11 +81,11 @@ Using your domain understanding and the chosen framework, design the group struc
**Key principles** (not rigid rules — use judgment):
84
-
-**Prefix every widget title** with its layer and priority: `I0:` (most critical infra), `P0:` (most critical platform), `D0:` (most critical domain). See [widgets.md](references/widgets.md) for the full prefix system.
85
-
- Start with a **Customer-Facing** group (5-8 metrics) so someone with zero service knowledge can tell if customers are affected within 5 seconds. Tailor the metrics to the domain.
84
+
-**Prefix every widget title** with its layer and priority: `I0:` (most critical infra), `P0:` (most critical platform), `D0:` (most critical domain), `B0:` (most critical business). See [widgets.md](references/widgets.md) for the full prefix system.
85
+
- Start with a **Business** group (5-8`B`-prefixed metrics) so someone with zero service knowledge can tell if customers are affected within 5 seconds. Tailor the metrics to the domain.
86
86
- Timeseries widgets should have **alert threshold markers** (red lines) with thresholds close to normal traffic. If a metric doesn't warrant an alert, question whether it belongs — but context-providing metrics can earn their place.
87
87
- Set **Y-axis max** explicitly near the threshold — don't let auto-scaling compress the normal range.
88
-
- Order groups macro-to-micro: customer-facing → overview → domain-specific → infrastructure.
88
+
- Order groups macro-to-micro: business → overview → domain-specific → infrastructure.
89
89
90
90
### 4. Write the output
91
91
@@ -130,12 +130,12 @@ pup metrics list --filter="trace.http.request.*"
130
130
-[ ] Dashboard reflects the actual product and business — metrics tailored to the domain
131
131
-[ ] Dashboard title is concise (no environment, region, or version)
132
132
-[ ] Template variables defined for env, service, and relevant scopes (default `*`)
133
-
-[ ]**Customer-Facing group** with 5-8 metrics tailored to the service's business impact
134
-
-[ ] Groups ordered macro-to-micro (customer-facing → overview → details)
133
+
-[ ]**Business group** with 5-8 `B`-prefixed metrics tailored to the service's customer-visible outcomes
134
+
-[ ] Groups ordered macro-to-micro (business → overview → details)
135
135
-[ ]**Timeseries widgets have alert threshold markers** (red lines) where the metric is alertable
136
136
-[ ]**Thresholds close to normal traffic** — no excessive whitespace
137
137
-[ ]**Zero-knowledge readability** — someone with no service knowledge can spot problems via red indicators
138
-
-[ ]**Widget titles prefixed** with layer and priority (`I0:`, `P1:`, `D0:`, etc.)
138
+
-[ ]**Widget titles prefixed** with layer and priority (`I0:`, `P1:`, `D0:`, `B0:`, etc.)
139
139
-[ ] Widget titles use sentence case, don't repeat group name
140
140
-[ ] Every metric earns its place — if it spikes, someone can act on it
Copy file name to clipboardExpand all lines: plugins/trogonstack-datadog/skills/datadog-design-dashboard/references/layouts.md
+17-17Lines changed: 17 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,9 +29,9 @@ Template variables make one dashboard serve many contexts. Define them before la
29
29
30
30
| Approach | Strengths | Weaknesses |
31
31
|----------|-----------|------------|
32
-
|**Per-service**| Focused, fast to scan during incidents. Each team owns their dashboard. Customer-Facing section is specific and actionable. Ops reviews can go service-by-service. | More dashboards to maintain. Cross-service correlation requires switching dashboards. |
33
-
|**Consolidated**| Single pane of glass for multiple services. Good for seeing cross-service dependencies. Fewer dashboards to maintain. | Can become overwhelming (100+ metrics). Customer-Facing section becomes diluted. Slower to load and harder to scan during incidents. |
34
-
|**Hybrid**| Per-service dashboards for depth + one top-level dashboard with only the Customer-Facing section from each service. Best of both worlds. | Requires maintaining both levels. Customer-Facing metrics duplicated across dashboards. |
32
+
|**Per-service**| Focused, fast to scan during incidents. Each team owns their dashboard. Business section is specific and actionable. Ops reviews can go service-by-service. | More dashboards to maintain. Cross-service correlation requires switching dashboards. |
33
+
|**Consolidated**| Single pane of glass for multiple services. Good for seeing cross-service dependencies. Fewer dashboards to maintain. | Can become overwhelming (100+ metrics). Business section becomes diluted. Slower to load and harder to scan during incidents. |
34
+
|**Hybrid**| Per-service dashboards for depth + one top-level dashboard with only the Business section from each service. Best of both worlds. | Requires maintaining both levels. Business metrics duplicated across dashboards. |
35
35
36
36
---
37
37
@@ -41,7 +41,7 @@ Organize widgets into collapsible groups. Groups are the primary navigation mech
41
41
42
42
**Recommended groups** (in order):
43
43
44
-
1.**Customer-Facing** — 5-8 metrics that answer "are customers affected?" within 5 seconds. Should be the first group. The specific metrics depend on the product. Design so someone with zero service knowledge can spot problems via red indicators.
44
+
1.**Business** — 5-8`B`-prefixed metrics that answer "are customers affected?" within 5 seconds. Should be the first group. The specific metrics depend on the product. Design so someone with zero service knowledge can spot problems via red indicators.
45
45
2.**Overview** — Service checks, key health indicators, monitor summaries.
46
46
3.**Domain-specific groups** — Organized by the chosen framework (e.g., Rate / Errors / Duration for RED), adapted to the service's actual architecture and concerns.
47
47
@@ -66,12 +66,12 @@ The most common dashboard type. Monitors a single service's request-level health
@@ -249,21 +250,20 @@ The number after the layer letter indicates priority within that layer. `0` is t
249
250
### Examples
250
251
251
252
```text
252
-
Group: "Customer-Facing"
253
-
D0: Checkout success rate
254
-
D0: Order throughput
255
-
I0: Load balancer 5xx
256
-
P0: API p99 latency
257
-
I1: Database connection pool
258
-
P1: gRPC client errors
253
+
Group: "Business"
254
+
B0: Checkout success rate
255
+
B0: Order throughput
256
+
B1: API p99 latency
257
+
B1: Customer-visible error rate
258
+
B2: Failed payment rate
259
259
260
260
Group: "Rate"
261
261
P0: Requests per second
262
262
P1: By endpoint
263
263
264
264
Group: "Errors"
265
265
P0: Error rate over time
266
-
D1: Failed payment rate
266
+
D1: Order saga failures
267
267
P2: Top errors by endpoint
268
268
269
269
Group: "Infrastructure"
@@ -279,7 +279,8 @@ When assigning prefixes, use the domain discovery context:
279
279
280
280
-**I (Infrastructure)**: Would this metric exist even if your code didn't? Load balancer, database engine, OS resources, network — things the ops team manages.
281
281
-**P (Platform)**: Is this about how your code runs? Connection pools your code configures, gRPC channels your code opens, cache hit rates for caches your code uses — the technical platform layer.
282
-
-**D (Domain)**: Does this metric map to a business outcome? Checkout completions, delivery SLA, payment success — things a product manager would understand.
282
+
-**D (Domain)**: Is this technical health of a domain process? Saga step failures, aggregate timeouts, domain event processing lag — tech stuff that a domain engineer cares about.
283
+
-**B (Business)**: Is this a business outcome? Payment success rate, checkout completion, on-time delivery — business stuff that a product manager or customer cares about.
283
284
284
285
The priority number comes from the ops review order: what do you look at first when paged at 3am? That's `0`.
285
286
@@ -291,7 +292,7 @@ The priority number comes from the ops review order: what do you look at first w
0 commit comments