[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GN90MSBTMG3CGS9M89YCKQ":3,"skill-same:01M6GN90MSBTMG3CGS9M89YCKQ":115},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":24,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":78,"commitSha":79,"skillDirectory":80,"forksCount":81,"repositoryHtmlUrl":82,"repositoryHomepageUrl":6,"ownerHtmlUrl":83,"ownerBlogUrl":84,"ownerDescription":85,"updatedAt":86,"install":87,"resources":100},"01M6GN90MSBTMG3CGS9M89YCKQ","data-viz",null,"Create data visualizations from the command line. Generate charts, graphs, and plots from CSV\u002FJSON data without leaving the terminal.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fianalloway-data-viz\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fianalloway-data-viz\u002FSKILL.md",[19],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"data viz","data","json","uplot","termgraph","line","gnuplot","uv","install","command","brew","jq","curl","terminal","visualizations","Charts","Tools","csv","https","command line","generate","create","github","2026-11-10 10:12:30",false,"---\nname: data-viz\ndescription: \"Create data visualizations from the command line. Generate charts, graphs, and plots from CSV\u002FJSON data without leaving the terminal.\"\nhomepage: https:\u002F\u002Fgithub.com\u002Fred-data-tools\u002FYouPlot\nmetadata:\n  {\n    \"openclaw\": {\n      \"emoji\": \"?\",\n      \"requires\": {\n        \"bins\": [\"curl\", \"jq\"],\n        \"anyBins\": [\"uplot\", \"termgraph\", \"gnuplot\"]\n      },\n      \"install\": [\n        {\n          \"id\": \"youplot-brew\",\n          \"kind\": \"brew\",\n          \"formula\": \"youplot\",\n          \"bins\": [\"uplot\"],\n          \"label\": \"Install YouPlot (brew)\"\n        },\n        {\n          \"id\": \"termgraph-uv\",\n          \"kind\": \"uv\",\n          \"package\": \"termgraph\",\n          \"bins\": [\"termgraph\"],\n          \"label\": \"Install termgraph (uv)\"\n        },\n        {\n          \"id\": \"gnuplot-brew\",\n          \"kind\": \"brew\",\n          \"formula\": \"gnuplot\",\n          \"bins\": [\"gnuplot\"],\n          \"label\": \"Install gnuplot (brew)\"\n        },\n        {\n          \"id\": \"jq-brew\",\n          \"kind\": \"brew\",\n          \"formula\": \"jq\",\n          \"bins\": [\"jq\"],\n          \"label\": \"Install jq (brew)\"\n        }\n      ]\n    }\n  }\n---\n# Data Visualization\n\nCreate terminal-based charts and visualizations from CSV, JSON, or piped data.\n\n## Quick Visualizations with YouPlot\n\nYouPlot (`uplot`) creates Unicode charts in the terminal.\n\n### Bar Chart\n\n```bash\necho -e \"Apple,30\\nBanana,45\\nCherry,20\\nDate,35\" | uplot bar -d, -t \"Fruit Sales\"\n```\n\n### Line Chart\n\n```bash\nseq 1 20 | awk '{print $1, sin($1\u002F3)*10+10}' | uplot line -t \"Sine Wave\"\n```\n\n### Histogram\n\n```bash\nawk 'BEGIN{for(i=0;i\u003C1000;i++)print rand()}' | uplot hist -t \"Random Distribution\" -n 20\n```\n\n### Scatter Plot\n\n```bash\nawk 'BEGIN{for(i=0;i\u003C100;i++)print rand()*100, rand()*100}' | uplot scatter -t \"Random Points\"\n```\n\n## From CSV Files\n\n```bash\n# Bar chart from CSV\ncat sales.csv | uplot bar -d, -H -t \"Monthly Sales\"\n\n# Line chart with headers\ncat timeseries.csv | uplot line -d, -H -t \"Stock Price\"\n```\n\n## From JSON (with jq)\n\n```bash\n# Extract data from JSON and plot (CoinGecko markets as a live example)\ncurl -s \"https:\u002F\u002Fapi.coingecko.com\u002Fapi\u002Fv3\u002Fcoins\u002Fmarkets?vs_currency=usd&order=market_cap_desc&per_page=10&page=1\" \\\n  | jq -r '.[] | \"\\(.symbol),\\(.current_price)\"' | uplot bar -d,\n```\n\n## Termgraph (Python Alternative)\n\nSimple horizontal bar charts:\n\n```bash\necho -e \"2020 50\\n2021 75\\n2022 90\\n2023 120\" | termgraph\n```\n\nWith colors:\n\n```bash\necho -e \"Sales 150\\nCosts 80\\nProfit 70\" | termgraph --color green\n```\n\n## Gnuplot (Advanced)\n\nFor publication-quality charts:\n\n```bash\n# Quick line plot\ngnuplot -e \"set terminal dumb; plot sin(x)\"\n\n# From data file\ngnuplot -e \"set terminal dumb; plot 'data.txt' with lines\"\n```\n\n## Sparklines\n\nInline mini-charts:\n\n```bash\n# Using spark (if installed)\necho \"1 5 22 13 5\" | spark\n# Output: ▁▂█▅▂\n\n# Pure bash sparkline\ndata=\"1 5 22 13 5\"; min=$(echo $data | tr ' ' '\\n' | sort -n | head -1); max=$(echo $data | tr ' ' '\\n' | sort -n | tail -1); for n in $data; do printf \"\\u258$((7-7*($n-$min)\u002F($max-$min)))\"; done; echo\n```\n\n## ASCII Tables\n\nFormat data as tables:\n\n```bash\n# Using column\necho -e \"Name,Score,Grade\\nAlice,95,A\\nBob,82,B\\nCarol,78,C\" | column -t -s,\n\n# Using csvlook (csvkit)\ncat data.csv | csvlook\n```\n\n## Real-World Examples\n\n### Stock Price Chart\n\n```bash\n# Fetch and plot stock data (using Alpha Vantage free API)\ncurl -s \"https:\u002F\u002Fwww.alphavantage.co\u002Fquery?function=TIME_SERIES_DAILY&symbol=AAPL&apikey=demo\" | \\\n  jq -r '.[\"Time Series (Daily)\"] | to_entries | .[:20] | reverse | .[] | \"\\(.key) \\(.value[\"4. close\"])\"' | \\\n  uplot line -t \"AAPL Stock Price\"\n```\n\n### System Metrics\n\n```bash\n# CPU usage over time\nfor i in {1..20}; do\n  top -bn1 | grep \"Cpu(s)\" | awk '{print 100-$8}'\n  sleep 1\ndone | uplot line -t \"CPU Usage %\"\n```\n\n### API Response Times\n\n```bash\n# Measure and plot response times\nfor i in {1..10}; do\n  curl -s -o \u002Fdev\u002Fnull -w \"%{time_total}\\n\" https:\u002F\u002Fexample.com\ndone | uplot line -t \"Response Time (s)\"\n```\n\n## Tips\n\n- Use `-d,` for comma-delimited data, `-d'\\t'` for tabs\n- Use `-H` when your data has headers\n- Pipe through `head` or `tail` to limit data points\n- Combine with `jq` for JSON data extraction\n- Use `watch` for live updating charts: `watch -n1 'command | uplot bar'`\n","# Data Visualization\n\nCreate terminal-based charts and visualizations from CSV, JSON, or piped data.\n\n## Quick Visualizations with YouPlot\n\nYouPlot (`uplot`) creates Unicode charts in the terminal.\n\n### Bar Chart\n\n```bash\necho -e \"Apple,30\\nBanana,45\\nCherry,20\\nDate,35\" | uplot bar -d, -t \"Fruit Sales\"\n```\n\n### Line Chart\n\n```bash\nseq 1 20 | awk '{print $1, sin($1\u002F3)*10+10}' | uplot line -t \"Sine Wave\"\n```\n\n### Histogram\n\n```bash\nawk 'BEGIN{for(i=0;i\u003C1000;i++)print rand()}' | uplot hist -t \"Random Distribution\" -n 20\n```\n\n### Scatter Plot\n\n```bash\nawk 'BEGIN{for(i=0;i\u003C100;i++)print rand()*100, rand()*100}' | uplot scatter -t \"Random Points\"\n```\n\n## From CSV Files\n\n```bash\n# Bar chart from CSV\ncat sales.csv | uplot bar -d, -H -t \"Monthly Sales\"\n\n# Line chart with headers\ncat timeseries.csv | uplot line -d, -H -t \"Stock Price\"\n```\n\n## From JSON (with jq)\n\n```bash\n# Extract data from JSON and plot (CoinGecko markets as a live example)\ncurl -s \"https:\u002F\u002Fapi.coingecko.com\u002Fapi\u002Fv3\u002Fcoins\u002Fmarkets?vs_currency=usd&order=market_cap_desc&per_page=10&page=1\" \\\n  | jq -r '.[] | \"\\(.symbol),\\(.current_price)\"' | uplot bar -d,\n```\n\n## Termgraph (Python Alternative)\n\nSimple horizontal bar charts:\n\n```bash\necho -e \"2020 50\\n2021 75\\n2022 90\\n2023 120\" | termgraph\n```\n\nWith colors:\n\n```bash\necho -e \"Sales 150\\nCosts 80\\nProfit 70\" | termgraph --color green\n```\n\n## Gnuplot (Advanced)\n\nFor publication-quality charts:\n\n```bash\n# Quick line plot\ngnuplot -e \"set terminal dumb; plot sin(x)\"\n\n# From data file\ngnuplot -e \"set terminal dumb; plot 'data.txt' with lines\"\n```\n\n## Sparklines\n\nInline mini-charts:\n\n```bash\n# Using spark (if installed)\necho \"1 5 22 13 5\" | spark\n# Output: ▁▂█▅▂\n\n# Pure bash sparkline\ndata=\"1 5 22 13 5\"; min=$(echo $data | tr ' ' '\\n' | sort -n | head -1); max=$(echo $data | tr ' ' '\\n' | sort -n | tail -1); for n in $data; do printf \"\\u258$((7-7*($n-$min)\u002F($max-$min)))\"; done; echo\n```\n\n## ASCII Tables\n\nFormat data as tables:\n\n```bash\n# Using column\necho -e \"Name,Score,Grade\\nAlice,95,A\\nBob,82,B\\nCarol,78,C\" | column -t -s,\n\n# Using csvlook (csvkit)\ncat data.csv | csvlook\n```\n\n## Real-World Examples\n\n### Stock Price Chart\n\n```bash\n# Fetch and plot stock data (using Alpha Vantage free API)\ncurl -s \"https:\u002F\u002Fwww.alphavantage.co\u002Fquery?function=TIME_SERIES_DAILY&symbol=AAPL&apikey=demo\" | \\\n  jq -r '.[\"Time Series (Daily)\"] | to_entries | .[:20] | reverse | .[] | \"\\(.key) \\(.value[\"4. close\"])\"' | \\\n  uplot line -t \"AAPL Stock Price\"\n```\n\n### System Metrics\n\n```bash\n# CPU usage over time\nfor i in {1..20}; do\n  top -bn1 | grep \"Cpu(s)\" | awk '{print 100-$8}'\n  sleep 1\ndone | uplot line -t \"CPU Usage %\"\n```\n\n### API Response Times\n\n```bash\n# Measure and plot response times\nfor i in {1..10}; do\n  curl -s -o \u002Fdev\u002Fnull -w \"%{time_total}\\n\" https:\u002F\u002Fexample.com\ndone | uplot line -t \"Response Time (s)\"\n```\n\n## Tips\n\n- Use `-d,` for comma-delimited data, `-d'\\t'` for tabs\n- Use `-H` when your data has headers\n- Pipe through `head` or `tail` to limit data points\n- Combine with `jq` for JSON data extraction\n- Use `watch` for live updating charts: `watch -n1 'command | uplot bar'`\n",{"name":5,"homepage":53,"metadata":54,"description":7},"https:\u002F\u002Fgithub.com\u002Fred-data-tools\u002FYouPlot",{"openclaw":55},{"emoji":56,"install":57,"requires":75},"?",[58,63,67,71],{"id":59,"bins":60,"kind":35,"label":61,"formula":62},"youplot-brew",[28],"Install YouPlot (brew)","youplot",{"id":64,"bins":65,"kind":32,"label":66,"package":29},"termgraph-uv",[29],"Install termgraph (uv)",{"id":68,"bins":69,"kind":35,"label":70,"formula":31},"gnuplot-brew",[31],"Install gnuplot (brew)",{"id":72,"bins":73,"kind":35,"label":74,"formula":36},"jq-brew",[36],"Install jq (brew)",{"bins":76,"anyBins":77},[37,36],[28,29,31],"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fai-crypto\u002Fianalloway-data-viz",17,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia","https:\u002F\u002Feth2030.com","Hardcore infra. Building @alt-research and applied cryptography.","2026-11-12 02:28:42",{"source":8,"skillName":5,"commands":88,"prompt":98,"zipAvailable":99},[89,92,95],{"tool":90,"command":91},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill data-viz",{"tool":93,"command":94},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill data-viz",{"tool":96,"command":97},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill data-viz","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fianalloway-data-viz\u002FSKILL.md",true,[101,105,111],{"path":102,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":104,"sourceHtmlUrl":16},"LICENSE","许可证",1068,{"path":106,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":109,"sourceHtmlUrl":110},"SOURCE.md","REFERENCE","参考文档",343,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fianalloway-data-viz\u002FSOURCE.md",{"path":112,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":113,"sourceHtmlUrl":114},"TRUST.auto.yaml",2197,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fianalloway-data-viz\u002FTRUST.auto.yaml",[116,144,167,184,197,207],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":120,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":48},"01M712C436EQYE43342Q4E7GG1","recipe-performance","Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold\u002Fwarm\u002Fbackground-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout\u002Fpaint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FSKILL.md",[],[124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":148,"licenseFileUrl":149,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":48},"01M70XT2F8A5CQZ81JBP98KSW3","mexc-spot-websocket","MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FSKILL.md",[],[153,154,155,156,157,158,159,160,161,162,163,164,165,166],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":148,"licenseFileUrl":171,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":48},"01M70XT0MBXN3WZY1BKN0CPNKR","mexc-spot-rest","MEXC Spot REST workflows for public data, signed account requests, orders, wallet\u002Fadmin actions, and secure signing without exposing API keys.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FSKILL.md",[],[175,154,176,177,178,179,180,164,163,162,181,182,26,158,183,157,156],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","orders",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":148,"licenseFileUrl":188,"sourceHtmlUrl":189,"categories":190,"keywords":191,"publishedAt":48},"01M70XSYSVZ2N0N91XCAR2CAK0","mexc-futures-websocket","MEXC Futures WebSocket workflows for public streams, private account\u002Forder\u002Fposition streams, ping\u002Fpong, subscriptions, and depth maintenance.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSKILL.md",[],[192,193,155,194,195,165,163,196,161,160,158,157],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":198,"name":199,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":200,"sourceHtmlUrl":201,"categories":202,"keywords":203,"publishedAt":48},"01M6H0ZWHVE5W04WG2DKQE2SQC","0xklen-version-and-refresh-sanctions-lists","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FSKILL.md",[],[204,205,206],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":208,"name":209,"nameZh":6,"description":210,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":211,"sourceHtmlUrl":212,"categories":213,"keywords":214,"publishedAt":48},"01M6H0Z28Q3R8J0S799GJQWXM3","verify-tests-cover-changed-lines","Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FSKILL.md",[],[215,216,217,218,219,220,221,222,223,224,225],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","use","patch","code","share"]