[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GXH77K83PVBXHVPDFD6JGY":3,"skill-same:01M6GXH77K83PVBXHVPDFD6JGY":81},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6GXH77K83PVBXHVPDFD6JGY","audit-charts-for-misleading-encoding",null,"Use when reading or producing a chart, dashboard, or infographic. Checks for truncated axes, bad scaling, and picked ranges that distort the message.","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\u002Fpayments\u002F0xklen-audit-charts-for-misleading-encoding\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-audit-charts-for-misleading-encoding\u002FSKILL.md",[19],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",[25,26,27,28,29,30,31,32,33,34,35,36,37,38],"audit","encoding","Charts","audit charts for misleading encoding","for","dashboard","use","infographic","message","scaling","bad","chart","reading","when","2026-11-10 10:12:30",false,"---\nname: audit-charts-for-misleading-encoding\ndescription: Use when reading or producing a chart, dashboard, or infographic. Checks for truncated axes, bad scaling, and picked ranges that distort the message.\n---\n\n# Audit Charts for Misleading Encoding\n\nMost deceptive charts are not fabricated — they are honest numbers drawn with an encoding chosen to exaggerate. Check the geometry, not the caption.\n\n## Procedure\n\n1. Check the y-axis baseline. Bars must start at zero; a bar chart starting at 97 turns a 1% difference into a full-height cliff. `grep -n 'ylim\\|set_ylim\\|min:' chart_config`.\n2. Check scaling for area\u002Fradius marks. A circle encodes value by area = π r², so doubling the value needs r × 1.41, not r × 2. Report the mapping used.\n3. Check the x-domain. A \"trend\" over 3 cherry-picked days is not a trend; widen to the full available period and see if it survives.\n4. Check dual axes. Two overlaid lines on independent scales can be made to cross anywhere; they imply causation that is not in the data.\n5. Check for a log axis presented as linear or vice versa. A log axis compresses the tail; label it.\n6. Check units and denominators. \"Cases per 100k\" vs \"cases\" reverses the ranking between a small and a large region.\n7. Redraw the honest version and compare the impression. If your conclusion flips, the chart was load-bearing and the original claim fails.\n\n```python\nimport matplotlib.pyplot as plt\n# always anchor bar charts at zero\nplt.bar(labels, values)\nplt.ylim(0, max(values) * 1.05)   # not plt.ylim(min(values), max(values))\n```\n\n## Pitfalls\n\n- 3D pie charts and perspective bars distort area non-linearly; refuse to read precise values from them.\n- Truncated axes are legitimate for line charts *showing change* and illegitimate for bars *showing magnitude* — say which convention the chart follows.\n- Missing gridlines and unlabelled tick marks force the reader to interpolate; supply the numbers.\n- Colour scales that map a continuous value through a rainbow hide the midpoint.\n- Small-multiple panels often omit a shared scale; confirm each panel uses the same range.\n\n## Verification\n\n    grep -nE 'ylim|set_ylim|xlim|log|symlog' plot.py\n\nBars anchored at zero, area marks scaled by sqrt, axes labelled with units. Report: \"Y-axis truncated at 97 (bars not zero-based) — the 1.2% gap renders as a full-height drop; redrawn from zero it is flat.\"\n","# Audit Charts for Misleading Encoding\n\nMost deceptive charts are not fabricated — they are honest numbers drawn with an encoding chosen to exaggerate. Check the geometry, not the caption.\n\n## Procedure\n\n1. Check the y-axis baseline. Bars must start at zero; a bar chart starting at 97 turns a 1% difference into a full-height cliff. `grep -n 'ylim\\|set_ylim\\|min:' chart_config`.\n2. Check scaling for area\u002Fradius marks. A circle encodes value by area = π r², so doubling the value needs r × 1.41, not r × 2. Report the mapping used.\n3. Check the x-domain. A \"trend\" over 3 cherry-picked days is not a trend; widen to the full available period and see if it survives.\n4. Check dual axes. Two overlaid lines on independent scales can be made to cross anywhere; they imply causation that is not in the data.\n5. Check for a log axis presented as linear or vice versa. A log axis compresses the tail; label it.\n6. Check units and denominators. \"Cases per 100k\" vs \"cases\" reverses the ranking between a small and a large region.\n7. Redraw the honest version and compare the impression. If your conclusion flips, the chart was load-bearing and the original claim fails.\n\n```python\nimport matplotlib.pyplot as plt\n# always anchor bar charts at zero\nplt.bar(labels, values)\nplt.ylim(0, max(values) * 1.05)   # not plt.ylim(min(values), max(values))\n```\n\n## Pitfalls\n\n- 3D pie charts and perspective bars distort area non-linearly; refuse to read precise values from them.\n- Truncated axes are legitimate for line charts *showing change* and illegitimate for bars *showing magnitude* — say which convention the chart follows.\n- Missing gridlines and unlabelled tick marks force the reader to interpolate; supply the numbers.\n- Colour scales that map a continuous value through a rainbow hide the midpoint.\n- Small-multiple panels often omit a shared scale; confirm each panel uses the same range.\n\n## Verification\n\n    grep -nE 'ylim|set_ylim|xlim|log|symlog' plot.py\n\nBars anchored at zero, area marks scaled by sqrt, axes labelled with units. Report: \"Y-axis truncated at 97 (bars not zero-based) — the 1.2% gap renders as a full-height drop; redrawn from zero it is flat.\"\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fpayments\u002F0xklen-audit-charts-for-misleading-encoding",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-13 02:31:19",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill audit-charts-for-misleading-encoding",{"tool":59,"command":60},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill audit-charts-for-misleading-encoding",{"tool":62,"command":63},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill audit-charts-for-misleading-encoding","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-audit-charts-for-misleading-encoding\u002FSKILL.md",true,[67,71,77],{"path":68,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":16},"LICENSE","许可证",1063,{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"SOURCE.md","REFERENCE","参考文档",362,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-audit-charts-for-misleading-encoding\u002FSOURCE.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-audit-charts-for-misleading-encoding\u002FTRUST.auto.yaml",[82,110,132,150,163,173],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":86,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":39},"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",[],[90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":114,"licenseFileUrl":115,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":39},"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",[],[119,120,121,122,123,124,125,126,127,128,29,129,130,131],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","api keys","maintenance","protobuf",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":114,"licenseFileUrl":136,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":39},"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",[],[140,120,141,142,143,144,145,129,29,128,146,147,148,124,149,123,122],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":114,"licenseFileUrl":154,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":39},"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",[],[158,159,121,160,161,130,29,162,127,126,124,123],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":164,"name":165,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":166,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":39},"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",[],[170,171,172],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":177,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":39},"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",[],[181,182,183,184,185,186,187,31,188,189,190],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]