[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GZPAM0WNN5R7A64WM3D7CT":3,"skill-same:01M6GZPAM0WNN5R7A64WM3D7CT":83},{"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":19,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6GZPAM0WNN5R7A64WM3D7CT","read-error-messages-literally",null,"Use when a command, test, or API call returns an error. Parse the exact text as written, resolve its paths and exit code, and only then form a hypothesis.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",80,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-read-error-messages-literally\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-read-error-messages-literally\u002FSKILL.md",[],[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"error messages","messages","read error messages literally","error","read","use","when","parse","form","paths","as","call","exit","only","test","command","returns","text","api","hypothesis","code","2026-11-10 10:12:30",false,"---\nname: read-error-messages-literally\ndescription: Use when a command, test, or API call returns an error. Parse the exact text as written, resolve its paths and exit code, and only then form a hypothesis.\n---\n\n# Read error messages literally\n\nMost debugging fails at the first sentence: the tool said what was wrong and the reader substituted what they expected. This skill forces a byte-level reading of the message before any theory is allowed.\n\n## Procedure\n\n1. Capture the full message, not the last line. Re-run the failing command with stderr attached: `.\u002Fbuild.sh 2>&1 | tee \u002Ftmp\u002Ferr.txt`, then read it back with `read_file(\"\u002Ftmp\u002Ferr.txt\")`.\n\n2. Quote the exact string in your working notes. Do not paraphrase; the wording carries the signal.\n\n3. Decompose the message into literal parts: error code, path, line number, offending token, and which program emitted it.\n\n4. For a stack trace, read upward from the last line — that is the raising frame, not necessarily the root cause. `pytest -x -q --tb=long` prints the assertion and the frame that failed it.\n\n5. Resolve every path the message names: `ls -l \u002Fetc\u002Fssl\u002Fcerts\u002Fca.pem` to confirm the file exists or does not. Do not assume existence either way.\n\n6. Check the numeric exit status separately: `echo $?`. 127 means command not found, 126 not executable, 137 killed (SIGKILL), 139 segfault — map the number before theorising.\n\n7. Only when every literal token in the message is accounted for do you propose a cause. If your cause does not explain each token, it is wrong.\n\n8. Re-run the exact minimal command after any fix and paste the new output; never assume a fix worked because it seems right.\n\n## Pitfalls\n\n- \"Connection refused\" and \"connection timed out\" are different faults; conflating them sends you to the wrong layer.\n- Truncated logs hide the real line; check `wc -l \u002Ftmp\u002Ferr.txt` against the log's own reported total.\n- A missing-file error may be a symptom of an earlier step that wrote to the wrong working directory.\n- Trailing whitespace or a smart quote in the message is a hint, not noise.\n- A stack trace truncated by a log rotation can end mid-frame; confirm you have the complete record.\n\n## Verification\n\n    .\u002Fbuild.sh 2>&1 | tail -5; echo \"exit=$?\"\n\nReport the exact string, the exit code, and each resolved path — never a paraphrase of the error.\n","# Read error messages literally\n\nMost debugging fails at the first sentence: the tool said what was wrong and the reader substituted what they expected. This skill forces a byte-level reading of the message before any theory is allowed.\n\n## Procedure\n\n1. Capture the full message, not the last line. Re-run the failing command with stderr attached: `.\u002Fbuild.sh 2>&1 | tee \u002Ftmp\u002Ferr.txt`, then read it back with `read_file(\"\u002Ftmp\u002Ferr.txt\")`.\n\n2. Quote the exact string in your working notes. Do not paraphrase; the wording carries the signal.\n\n3. Decompose the message into literal parts: error code, path, line number, offending token, and which program emitted it.\n\n4. For a stack trace, read upward from the last line — that is the raising frame, not necessarily the root cause. `pytest -x -q --tb=long` prints the assertion and the frame that failed it.\n\n5. Resolve every path the message names: `ls -l \u002Fetc\u002Fssl\u002Fcerts\u002Fca.pem` to confirm the file exists or does not. Do not assume existence either way.\n\n6. Check the numeric exit status separately: `echo $?`. 127 means command not found, 126 not executable, 137 killed (SIGKILL), 139 segfault — map the number before theorising.\n\n7. Only when every literal token in the message is accounted for do you propose a cause. If your cause does not explain each token, it is wrong.\n\n8. Re-run the exact minimal command after any fix and paste the new output; never assume a fix worked because it seems right.\n\n## Pitfalls\n\n- \"Connection refused\" and \"connection timed out\" are different faults; conflating them sends you to the wrong layer.\n- Truncated logs hide the real line; check `wc -l \u002Ftmp\u002Ferr.txt` against the log's own reported total.\n- A missing-file error may be a symptom of an earlier step that wrote to the wrong working directory.\n- Trailing whitespace or a smart quote in the message is a hint, not noise.\n- A stack trace truncated by a log rotation can end mid-frame; confirm you have the complete record.\n\n## Verification\n\n    .\u002Fbuild.sh 2>&1 | tail -5; echo \"exit=$?\"\n\nReport the exact string, the exit code, and each resolved path — never a paraphrase of the error.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fpayments\u002F0xklen-read-error-messages-literally",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-11 08:47:40",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill read-error-messages-literally",{"tool":61,"command":62},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill read-error-messages-literally",{"tool":64,"command":65},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill read-error-messages-literally","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-read-error-messages-literally\u002FSKILL.md",true,[69,73,79],{"path":70,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":16},"LICENSE","许可证",1063,{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"SOURCE.md","REFERENCE","参考文档",355,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-read-error-messages-literally\u002FSOURCE.md",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-read-error-messages-literally\u002FTRUST.auto.yaml",[84,112,134,152,165,175],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":88,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":41},"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",[],[92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":116,"licenseFileUrl":117,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":41},"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",[],[121,122,123,38,124,125,126,127,128,129,130,131,132,133],"mexc spot websocket","spot","websocket","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":116,"licenseFileUrl":138,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":41},"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",[],[142,122,143,144,145,146,147,131,130,129,148,149,150,125,151,124,38],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":116,"licenseFileUrl":156,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":41},"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",[],[160,161,123,162,163,132,130,164,128,127,125,124],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":166,"name":167,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":168,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":41},"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",[],[172,173,174],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":179,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":41},"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",[],[183,184,185,186,187,188,189,25,190,40,191],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","share"]