Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
The English summary is being prepared. Showing the original description.
Use when working with Grafana — dashboards, Loki LogQL queries, alerting rules, monitoring panels — even when the user just says 'build me a dashboard' or 'query the logs' without naming Grafana.
The English summary is being prepared. Showing the original description.
Review the instructions the agent will receive before you install.
Use this skill when:
dashboards/, provisioning) and existing datasources (Loki, Prometheus) before adding panels.Check if the project has a dedicated Grafana module or Docker config. Typical structure:
{grafana-location}/
├── .docker/
│ ├── grafana/
│ │ ├── dashboards/ ← Dashboard JSON files (provisioned)
│ │ ├── provisioning/
│ │ │ ├── datasources/ ← Loki, Prometheus data sources
│ │ │ └── dashboards/ ← Dashboard provisioning config
│ │ └── alerting/ ← Alert rules, contact points, notification policies
│ └── loki/
│ └── loki-config.yml ← Loki server configuration
├── App/
│ ├── Logging/ ← Loki timestamp processors
│ └── Console/Commands/ ← GrafanaPushDashboardsCommand
├── Docs/
│ └── Loki.md ← Loki documentation
└── Routes/console.php
config/grafana.phpconfig/logging.php (Loki channels)itspire/monolog-loki via Monolog handlerDashboards are stored as JSON in .docker/grafana/dashboards/ and auto-provisioned.
Use GrafanaPushDashboardsCommand to push dashboards to remote Grafana instances.
labelTypes, traceID, traceID (field) → add to excludeByName in the organize transformation.imported_at,
name the column "Imported", not "Uploaded".| Element | Convention | Example |
|---|---|---|
| Dashboard title | Descriptive, Title Case | "Import Overview (Loki)" |
| Panel title | Short, descriptive | "Import Results by Status" |
| Variable names | lowercase, underscore | $fqdn, $environment |
# Filter by service and status
{service="import_result"} |= "DONE" | json | status = "DONE"
# Count by label
sum by (status) (count_over_time({service="import_result"} | json [$__interval]))
# Filter by customer FQDN
{service="import_result", fqdn=~"$fqdn"} | json
| Label | Purpose | Notes |
|---|---|---|
import_result | Final import states (DONE, FAILED) | Use for result dashboards |
import_snapshot | Cron-based status snapshots | Use for timeline dashboards |
service=import | Legacy static label | Do NOT query — use specific labels above |
json parser for structured log entriesline_format for human-readable output in explore view$__interval for rate/count queries (auto-adjusts to time range).docker/grafana/alerting/
├── alert-rules.yml ← Alert conditions and thresholds
├── contact-points.yml ← Notification targets (Slack, email)
└── notification-policies.yml ← Routing rules (which alerts → which contacts)
for duration to avoid flapping (e.g., for: 5m)The project uses structured logging via Monolog → Loki:
LokiTimestampProcessor — Adds precise timestamps to log entriesLokiTimestampChannelTap — Configures Loki channels with timestamp processingImportEventLogger serviceWhen adding new log entries for Grafana visualization:
config/logging.php)logging-monitoring — full monitoring stack overviewdashboard-design — visualization selection, layout, KPI strategiestraefik — HTTPS for Grafana embedding in the appconfig/grafana.php, config/logging.php (if applicable)No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
The English summary is being prepared. Showing the original description.
Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.
The English summary is being prepared. Showing the original description.
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
The English summary is being prepared. Showing the original description.
Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.
The English summary is being prepared. Showing the original description.
Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.
The English summary is being prepared. Showing the original description.
Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.
The English summary is being prepared. Showing the original description.