[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FF9BQ3PE0MB73KXQ3QJTE9":3,"skill-same:01M6FF9BQ3PE0MB73KXQ3QJTE9":53},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6FF9BQ3PE0MB73KXQ3QJTE9","grafana-dashboards",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Frmyndharis\u002Fantigravity-skills\u002Fgrafana-dashboards\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[23,24,25],"grafana","grafana dashboards","dashboards","2026-11-10 10:12:30",false,"# 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\u002Fimplementation-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\u002FHeatmaps) │\n└─────────────────────────────────────┘\n```\n\n### 2. RED Method (Services)\n- **Rate** - Requests per second\n- **Errors** - Error rate\n- **Duration** - Latency\u002Fresponse time\n\n### 3. USE Method (Resources)\n- **Utilization** - % time resource is busy\n- **Saturation** - Queue length\u002Fwait 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])) \u002F 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\u002Fapi-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: \u002Fetc\u002Fgrafana\u002Fdashboards\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\u002FO\n- Network traffic\n- Pod count by namespace\n- Node status\n\n**Reference:** See `assets\u002Finfrastructure-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\u002Fdatabase-dashboard.json`\n\n### Application Dashboard\n\n**Key Panels:**\n- Request rate\n- Error rate\n- Response time (percentiles)\n- Active users\u002Fsessions\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}\u002Fdashboards\u002Fapi-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: \u002Fetc\u002Fgrafana\u002Fdashboards\u002F\n  with_fileglob:\n    - \"dashboards\u002F*.json\"\n  notify: restart grafana\n```\n\n## Reference Files\n\n- `assets\u002Fapi-dashboard.json` - API monitoring dashboard\n- `assets\u002Finfrastructure-dashboard.json` - Infrastructure dashboard\n- `assets\u002Fdatabase-dashboard.json` - Database monitoring dashboard\n- `references\u002Fdashboard-design.md` - Dashboard design guide\n\n## Related Skills\n\n- `prometheus-configuration` - For metric collection\n- `slo-implementation` - For SLO dashboards\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Frmyndharis\u002Fantigravity-skills\u002Fgrafana-dashboards",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill grafana-dashboards",{"tool":45,"command":46},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill grafana-dashboards",{"tool":48,"command":49},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill grafana-dashboards","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Frmyndharis\u002Fantigravity-skills\u002Fgrafana-dashboards\u002FSKILL.md",true,[],[54,68,78,87,93,100],{"skillNo":55,"name":56,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":64,"publishedAt":26},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[59],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[65,66,67],"model","model hierarchy","model hierarchy skill",{"skillNo":69,"name":70,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":74,"publishedAt":26},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[73],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},[75,76,77],"MCP","zoom","zoom mcp",{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":26},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[84,85,86,76],"sdk","zoom apps sdk","apps",{"skillNo":88,"name":89,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":26},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[89],{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":99,"publishedAt":26},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[98],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},[95],{"skillNo":101,"name":102,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":26},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[102]]