{"id":"54b2930b-1218-4a90-aafc-8758743f3663","shortId":"dDdqwH","kind":"skill","title":"grafana-dashboards","tagline":"Create and manage production-ready Grafana dashboards for comprehensive system observability.","description":"# Grafana Dashboards\n\nCreate and manage production-ready Grafana dashboards for comprehensive system observability.\n\n## Do not use this skill when\n\n- The task is unrelated to grafana dashboards\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources/implementation-playbook.md`.\n\n## Purpose\n\nDesign effective Grafana dashboards for monitoring applications, infrastructure, and business metrics.\n\n## Use this skill when\n\n- Visualize Prometheus metrics\n- Create custom dashboards\n- Implement SLO dashboards\n- Monitor infrastructure\n- Track business KPIs\n\n## Dashboard Design Principles\n\n### 1. Hierarchy of Information\n```\n┌─────────────────────────────────────┐\n│  Critical Metrics (Big Numbers)     │\n├─────────────────────────────────────┤\n│  Key Trends (Time Series)           │\n├─────────────────────────────────────┤\n│  Detailed Metrics (Tables/Heatmaps) │\n└─────────────────────────────────────┘\n```\n\n### 2. RED Method (Services)\n- **Rate** - Requests per second\n- **Errors** - Error rate\n- **Duration** - Latency/response time\n\n### 3. USE Method (Resources)\n- **Utilization** - % time resource is busy\n- **Saturation** - Queue length/wait time\n- **Errors** - Error count\n\n## Dashboard Structure\n\n### API Monitoring Dashboard\n\n```json\n{\n  \"dashboard\": {\n    \"title\": \"API Monitoring\",\n    \"tags\": [\"api\", \"production\"],\n    \"timezone\": \"browser\",\n    \"refresh\": \"30s\",\n    \"panels\": [\n      {\n        \"title\": \"Request Rate\",\n        \"type\": \"graph\",\n        \"targets\": [\n          {\n            \"expr\": \"sum(rate(http_requests_total[5m])) by (service)\",\n            \"legendFormat\": \"{{service}}\"\n          }\n        ],\n        \"gridPos\": {\"x\": 0, \"y\": 0, \"w\": 12, \"h\": 8}\n      },\n      {\n        \"title\": \"Error Rate %\",\n        \"type\": \"graph\",\n        \"targets\": [\n          {\n            \"expr\": \"(sum(rate(http_requests_total{status=~\\\"5..\\\"}[5m])) / sum(rate(http_requests_total[5m]))) * 100\",\n            \"legendFormat\": \"Error Rate\"\n          }\n        ],\n        \"alert\": {\n          \"conditions\": [\n            {\n              \"evaluator\": {\"params\": [5], \"type\": \"gt\"},\n              \"operator\": {\"type\": \"and\"},\n              \"query\": {\"params\": [\"A\", \"5m\", \"now\"]},\n              \"type\": \"query\"\n            }\n          ]\n        },\n        \"gridPos\": {\"x\": 12, \"y\": 0, \"w\": 12, \"h\": 8}\n      },\n      {\n        \"title\": \"P95 Latency\",\n        \"type\": \"graph\",\n        \"targets\": [\n          {\n            \"expr\": \"histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service))\",\n            \"legendFormat\": \"{{service}}\"\n          }\n        ],\n        \"gridPos\": {\"x\": 0, \"y\": 8, \"w\": 24, \"h\": 8}\n      }\n    ]\n  }\n}\n```\n\n**Reference:** See `assets/api-dashboard.json`\n\n## Panel Types\n\n### 1. Stat Panel (Single Value)\n```json\n{\n  \"type\": \"stat\",\n  \"title\": \"Total Requests\",\n  \"targets\": [{\n    \"expr\": \"sum(http_requests_total)\"\n  }],\n  \"options\": {\n    \"reduceOptions\": {\n      \"values\": false,\n      \"calcs\": [\"lastNotNull\"]\n    },\n    \"orientation\": \"auto\",\n    \"textMode\": \"auto\",\n    \"colorMode\": \"value\"\n  },\n  \"fieldConfig\": {\n    \"defaults\": {\n      \"thresholds\": {\n        \"mode\": \"absolute\",\n        \"steps\": [\n          {\"value\": 0, \"color\": \"green\"},\n          {\"value\": 80, \"color\": \"yellow\"},\n          {\"value\": 90, \"color\": \"red\"}\n        ]\n      }\n    }\n  }\n}\n```\n\n### 2. Time Series Graph\n```json\n{\n  \"type\": \"graph\",\n  \"title\": \"CPU Usage\",\n  \"targets\": [{\n    \"expr\": \"100 - (avg by (instance) (rate(node_cpu_seconds_total{mode=\\\"idle\\\"}[5m])) * 100)\"\n  }],\n  \"yaxes\": [\n    {\"format\": \"percent\", \"max\": 100, \"min\": 0},\n    {\"format\": \"short\"}\n  ]\n}\n```\n\n### 3. Table Panel\n```json\n{\n  \"type\": \"table\",\n  \"title\": \"Service Status\",\n  \"targets\": [{\n    \"expr\": \"up\",\n    \"format\": \"table\",\n    \"instant\": true\n  }],\n  \"transformations\": [\n    {\n      \"id\": \"organize\",\n      \"options\": {\n        \"excludeByName\": {\"Time\": true},\n        \"indexByName\": {},\n        \"renameByName\": {\n          \"instance\": \"Instance\",\n          \"job\": \"Service\",\n          \"Value\": \"Status\"\n        }\n      }\n    }\n  ]\n}\n```\n\n### 4. Heatmap\n```json\n{\n  \"type\": \"heatmap\",\n  \"title\": \"Latency Heatmap\",\n  \"targets\": [{\n    \"expr\": \"sum(rate(http_request_duration_seconds_bucket[5m])) by (le)\",\n    \"format\": \"heatmap\"\n  }],\n  \"dataFormat\": \"tsbuckets\",\n  \"yAxis\": {\n    \"format\": \"s\"\n  }\n}\n```\n\n## Variables\n\n### Query Variables\n```json\n{\n  \"templating\": {\n    \"list\": [\n      {\n        \"name\": \"namespace\",\n        \"type\": \"query\",\n        \"datasource\": \"Prometheus\",\n        \"query\": \"label_values(kube_pod_info, namespace)\",\n        \"refresh\": 1,\n        \"multi\": false\n      },\n      {\n        \"name\": \"service\",\n        \"type\": \"query\",\n        \"datasource\": \"Prometheus\",\n        \"query\": \"label_values(kube_service_info{namespace=\\\"$namespace\\\"}, service)\",\n        \"refresh\": 1,\n        \"multi\": true\n      }\n    ]\n  }\n}\n```\n\n### Use Variables in Queries\n```\nsum(rate(http_requests_total{namespace=\"$namespace\", service=~\"$service\"}[5m]))\n```\n\n## Alerts in Dashboards\n\n```json\n{\n  \"alert\": {\n    \"name\": \"High Error Rate\",\n    \"conditions\": [\n      {\n        \"evaluator\": {\n          \"params\": [5],\n          \"type\": \"gt\"\n        },\n        \"operator\": {\"type\": \"and\"},\n        \"query\": {\n          \"params\": [\"A\", \"5m\", \"now\"]\n        },\n        \"reducer\": {\"type\": \"avg\"},\n        \"type\": \"query\"\n      }\n    ],\n    \"executionErrorState\": \"alerting\",\n    \"for\": \"5m\",\n    \"frequency\": \"1m\",\n    \"message\": \"Error rate is above 5%\",\n    \"noDataState\": \"no_data\",\n    \"notifications\": [\n      {\"uid\": \"slack-channel\"}\n    ]\n  }\n}\n```\n\n## Dashboard Provisioning\n\n**dashboards.yml:**\n```yaml\napiVersion: 1\n\nproviders:\n  - name: 'default'\n    orgId: 1\n    folder: 'General'\n    type: file\n    disableDeletion: false\n    updateIntervalSeconds: 10\n    allowUiUpdates: true\n    options:\n      path: /etc/grafana/dashboards\n```\n\n## Common Dashboard Patterns\n\n### Infrastructure Dashboard\n\n**Key Panels:**\n- CPU utilization per node\n- Memory usage per node\n- Disk I/O\n- Network traffic\n- Pod count by namespace\n- Node status\n\n**Reference:** See `assets/infrastructure-dashboard.json`\n\n### Database Dashboard\n\n**Key Panels:**\n- Queries per second\n- Connection pool usage\n- Query latency (P50, P95, P99)\n- Active connections\n- Database size\n- Replication lag\n- Slow queries\n\n**Reference:** See `assets/database-dashboard.json`\n\n### Application Dashboard\n\n**Key Panels:**\n- Request rate\n- Error rate\n- Response time (percentiles)\n- Active users/sessions\n- Cache hit rate\n- Queue length\n\n## Best Practices\n\n1. **Start with templates** (Grafana community dashboards)\n2. **Use consistent naming** for panels and variables\n3. **Group related metrics** in rows\n4. **Set appropriate time ranges** (default: Last 6 hours)\n5. **Use variables** for flexibility\n6. **Add panel descriptions** for context\n7. **Configure units** correctly\n8. **Set meaningful thresholds** for colors\n9. **Use consistent colors** across dashboards\n10. **Test with different time ranges**\n\n## Dashboard as Code\n\n### Terraform Provisioning\n\n```hcl\nresource \"grafana_dashboard\" \"api_monitoring\" {\n  config_json = file(\"${path.module}/dashboards/api-monitoring.json\")\n  folder      = grafana_folder.monitoring.id\n}\n\nresource \"grafana_folder\" \"monitoring\" {\n  title = \"Production Monitoring\"\n}\n```\n\n### Ansible Provisioning\n\n```yaml\n- name: Deploy Grafana dashboards\n  copy:\n    src: \"{{ item }}\"\n    dest: /etc/grafana/dashboards/\n  with_fileglob:\n    - \"dashboards/*.json\"\n  notify: restart grafana\n```\n\n## Reference Files\n\n- `assets/api-dashboard.json` - API monitoring dashboard\n- `assets/infrastructure-dashboard.json` - Infrastructure dashboard\n- `assets/database-dashboard.json` - Database monitoring dashboard\n- `references/dashboard-design.md` - Dashboard design guide\n\n## Related Skills\n\n- `prometheus-configuration` - For metric collection\n- `slo-implementation` - For SLO dashboards\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["grafana","dashboards","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-grafana-dashboards","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/grafana-dashboards","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34768 github stars · SKILL.md body (8,451 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T18:51:25.341Z","embedding":null,"createdAt":"2026-04-18T21:38:16.408Z","updatedAt":"2026-04-23T18:51:25.341Z","lastSeenAt":"2026-04-23T18:51:25.341Z","tsv":"'/dashboards/api-monitoring.json':708 '/etc/grafana/dashboards':555,729 '0':194,196,247,277,325,367 '0.95':261 '1':112,289,448,467,537,542,630 '10':550,687 '100':222,348,360,365 '12':198,245,249 '1m':517 '2':127,336,637 '24':281 '3':141,370,645 '30s':173 '4':401,651 '5':214,230,496,523,660 '5m':187,215,221,239,269,359,418,483,505,515 '6':658,665 '7':671 '8':200,251,279,283,675 '80':329 '9':681 '90':333 'absolut':322 'across':685 'action':68 'activ':599,621 'add':666 'alert':226,484,488,513 'allowuiupd':551 'ansibl':718 'api':159,165,168,702,740 'apivers':536 'appli':60 'applic':86,610 'appropri':653 'ask':801 'assets/api-dashboard.json':286,739 'assets/database-dashboard.json':609,746 'assets/infrastructure-dashboard.json':583,743 'auto':313,315 'avg':349,509 'best':62,628 'big':118 'boundari':809 'browser':171 'bucket':268,417 'busi':89,107,149 'cach':623 'calc':310 'channel':531 'clarif':803 'clarifi':54 'clear':776 'code':695 'collect':761 'color':326,330,334,680,684 'colormod':316 'common':556 'communiti':635 'comprehens':13,27 'condit':227,493 'config':704 'configur':672,758 'connect':591,600 'consist':639,683 'constraint':56 'context':670 'copi':725 'correct':674 'count':156,576 'cpu':344,354,563 'creat':4,18,98 'criteria':812 'critic':116 'custom':99 'dashboard':3,11,17,25,42,83,100,103,109,157,161,163,486,532,557,560,585,611,636,686,693,701,724,732,742,745,749,751,767 'dashboards.yml':534 'data':526 'databas':584,601,747 'dataformat':423 'datasourc':438,455 'default':319,540,656 'deploy':722 'describ':780 'descript':668 'design':80,110,752 'dest':728 'detail':73,124 'differ':46,690 'disabledelet':547 'disk':571 'domain':47 'durat':138,266,415 'effect':81 'environ':792 'environment-specif':791 'error':135,136,154,155,202,224,491,519,616 'evalu':228,494 'exampl':74 'excludebynam':390 'executionerrorst':512 'expert':797 'expr':181,207,258,301,347,380,410 'fals':309,450,548 'fieldconfig':318 'file':546,706,738 'fileglob':731 'flexibl':664 'folder':543,709,713 'format':362,368,382,421,426 'frequenc':516 'general':544 'goal':55 'grafana':2,10,16,24,41,82,634,700,712,723,736 'grafana-dashboard':1 'grafana_folder.monitoring.id':710 'graph':179,205,256,339,342 'green':327 'gridpo':192,243,275 'group':646 'gt':232,498 'guid':753 'h':199,250,282 'hcl':698 'heatmap':402,405,408,422 'hierarchi':113 'high':490 'histogram':259 'hit':624 'hour':659 'http':184,210,218,264,303,413,476 'i/o':572 'id':387 'idl':358 'implement':101,764 'indexbynam':393 'info':445,462 'inform':115 'infrastructur':87,105,559,744 'input':59,806 'instanc':351,395,396 'instant':384 'instruct':53 'item':727 'job':397 'json':162,294,340,373,403,431,487,705,733 'key':120,561,586,612 'kpis':108 'kube':443,460 'label':441,458 'lag':604 'last':657 'lastnotnul':311 'latenc':254,407,595 'latency/response':139 'le':271,420 'legendformat':190,223,273 'length':627 'length/wait':152 'limit':768 'list':433 'manag':6,20 'match':777 'max':364 'meaning':677 'memori':567 'messag':518 'method':129,143 'metric':90,97,117,125,648,760 'min':366 'miss':814 'mode':321,357 'monitor':85,104,160,166,703,714,717,741,748 'multi':449,468 'name':434,451,489,539,640,721 'namespac':435,446,463,464,479,480,578 'need':44 'network':573 'nodatast':524 'node':353,566,570,579 'notif':527 'notifi':734 'number':119 'observ':15,29 'open':77 'oper':233,499 'option':306,389,553 'organ':388 'orgid':541 'orient':312 'outcom':66 'output':786 'outsid':50 'p50':596 'p95':253,597 'p99':598 'panel':174,287,291,372,562,587,613,642,667 'param':229,237,495,503 'path':554 'path.module':707 'pattern':558 'per':133,565,569,589 'percent':363 'percentil':620 'permiss':807 'pod':444,575 'pool':592 'practic':63,629 'principl':111 'product':8,22,169,716 'production-readi':7,21 'prometheus':96,439,456,757 'prometheus-configur':756 'provid':67,538 'provis':533,697,719 'purpos':79 'quantil':260 'queri':236,242,429,437,440,454,457,473,502,511,588,594,606 'queue':151,626 'rang':655,692 'rate':131,137,177,183,203,209,217,225,263,352,412,475,492,520,615,617,625 'readi':9,23 'red':128,335 'reduc':507 'reduceopt':307 'refer':284,581,607,737 'references/dashboard-design.md':750 'refresh':172,447,466 'relat':647,754 'relev':61 'renamebynam':394 'replic':603 'request':132,176,185,211,219,265,299,304,414,477,614 'requir':58,76,805 'resourc':144,147,699,711 'resources/implementation-playbook.md':78 'respons':618 'restart':735 'review':798 'row':650 'safeti':808 'satur':150 'scope':52,779 'second':134,267,355,416,590 'see':285,582,608 'seri':123,338 'servic':130,189,191,272,274,377,398,452,461,465,481,482 'set':652,676 'short':369 'singl':292 'size':602 'skill':34,93,755,771 'skill-grafana-dashboards' 'slack':530 'slack-channel':529 'slo':102,763,766 'slo-implement':762 'slow':605 'source-sickn33' 'specif':793 'src':726 'start':631 'stat':290,296 'status':213,378,400,580 'step':69,323 'stop':799 'structur':158 'substitut':789 'success':811 'sum':182,208,216,262,302,411,474 'system':14,28 'tabl':371,375,383 'tables/heatmaps':126 'tag':167 'target':180,206,257,300,346,379,409 'task':37,775 'templat':432,633 'terraform':696 'test':688,795 'textmod':314 'threshold':320,678 'time':122,140,146,153,337,391,619,654,691 'timezon':170 'titl':164,175,201,252,297,343,376,406,715 'tool':49 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'total':186,212,220,298,305,356,478 'track':106 'traffic':574 'transform':386 'treat':784 'trend':121 'true':385,392,469,552 'tsbucket':424 'type':178,204,231,234,241,255,288,295,341,374,404,436,453,497,500,508,510,545 'uid':528 'unit':673 'unrel':39 'updateintervalsecond':549 'usag':345,568,593 'use':32,91,142,470,638,661,682,769 'users/sessions':622 'util':145,564 'valid':65,794 'valu':293,308,317,324,328,332,399,442,459 'variabl':428,430,471,644,662 'verif':71 'visual':95 'w':197,248,280 'x':193,244,276 'y':195,246,278 'yaml':535,720 'yax':361 'yaxi':425 'yellow':331","prices":[{"id":"2cc72d28-77d8-447f-bae9-c9a13de201b6","listingId":"54b2930b-1218-4a90-aafc-8758743f3663","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:38:16.408Z"}],"sources":[{"listingId":"54b2930b-1218-4a90-aafc-8758743f3663","source":"github","sourceId":"sickn33/antigravity-awesome-skills/grafana-dashboards","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/grafana-dashboards","isPrimary":false,"firstSeenAt":"2026-04-18T21:38:16.408Z","lastSeenAt":"2026-04-23T18:51:25.341Z"}],"details":{"listingId":"54b2930b-1218-4a90-aafc-8758743f3663","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"grafana-dashboards","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34768,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"f92f9ab38e037e80769cde8281daad60c3469f5c","skill_md_path":"skills/grafana-dashboards/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/grafana-dashboards"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"grafana-dashboards","description":"Create and manage production-ready Grafana dashboards for comprehensive system observability."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/grafana-dashboards"},"updatedAt":"2026-04-23T18:51:25.341Z"}}