[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GV45Z78ZPCBN4MPJRE5YMC":3,"skill-same:01M6GV45Z78ZPCBN4MPJRE5YMC":102},{"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":27,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":62,"updatedAt":63,"install":64,"resources":77},"01M6GV45Z78ZPCBN4MPJRE5YMC","test-guided-tool-run",null,"Use when user asks to \"run tool as function\", \"test directly\", or \"call standalone\" (outside MCP server). Essential for correct mock Context setup (MagicMock + AsyncMock). Finds integration tests with real test data.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",80,"LicenseRef-Custom","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fblockscout-test-guided-tool-run\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fblockscout-test-guided-tool-run\u002FSKILL.md",[19,24],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000023","Skill与智能体开发",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"test","run","test guided tool run","tool","essential","when","for","standalone","with","mock","false","as","context setup","tests","MCP","test data","call","use","correct","server","integration tests","mcp server","2026-11-09 23:53:37",false,"---\nname: test-guided-tool-run\ndescription: Use when user asks to \"run tool as function\", \"test directly\", or \"call standalone\" (outside MCP server). Essential for correct mock Context setup (MagicMock + AsyncMock). Finds integration tests with real test data. \nuser-invocable: false\n---\n\n# Test-Guided Tool Run Skill\n\nBefore running any MCP tool directly (outside the MCP server), examine the corresponding integration test to understand the correct usage pattern.\n\n## Workflow\n\n### 1. Find the Integration Test\n\n```bash\npython .claude\u002Fskills\u002Ftest-guided-tool-run\u002Fscripts\u002Ffind_test.py \u003Ctool_name>\n```\n\nExample:\n\n```bash\npython .claude\u002Fskills\u002Ftest-guided-tool-run\u002Fscripts\u002Ffind_test.py get_transaction_info\n```\n\n### 2. Read the Integration Test\n\nThe script outputs the test file path. Read it to understand:\n\n- Import statements and mock context setup\n- Real test data (addresses, transaction hashes, etc.)\n- Expected response structure\n\n### 3. Create Your Test Script\n\nUse this template in `\u002Ftmp\u002Fclaude\u002F...\u002Fscratchpad\u002F`:\n\n```python\n#!\u002Fusr\u002Fbin\u002Fenv python3\nimport asyncio\nimport sys\nfrom pathlib import Path\nfrom unittest.mock import AsyncMock, MagicMock\n\nsys.path.insert(0, str(Path(__file__).parent.parent.parent.parent.parent))\n\nfrom blockscout_mcp_server.tools.\u003Ccategory>.\u003Ctool_module> import \u003Ctool_function>\n\n\ndef create_mock_ctx():\n    \"\"\"Create a mock MCP Context object (pattern from tests\u002Fconftest.py).\"\"\"\n    ctx = MagicMock()\n    ctx.report_progress = AsyncMock()\n    ctx.info = AsyncMock()\n    return ctx\n\n\nasync def main():\n    ctx = create_mock_ctx()\n    try:\n        result = await \u003Ctool_function>(\n            # Your parameters here\n            ctx=ctx\n        )\n        print(\"Success! Result:\")\n        print(result)\n    except Exception as e:\n        print(f\"Error: {type(e).__name__}: {e}\")\n        import traceback\n        traceback.print_exc()\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### 4. Run Your Test Script\n\n```bash\npython \u002Ftmp\u002Fclaude\u002F...\u002Fscratchpad\u002Fyour_test_script.py\n```\n","# Test-Guided Tool Run Skill\n\nBefore running any MCP tool directly (outside the MCP server), examine the corresponding integration test to understand the correct usage pattern.\n\n## Workflow\n\n### 1. Find the Integration Test\n\n```bash\npython .claude\u002Fskills\u002Ftest-guided-tool-run\u002Fscripts\u002Ffind_test.py \u003Ctool_name>\n```\n\nExample:\n\n```bash\npython .claude\u002Fskills\u002Ftest-guided-tool-run\u002Fscripts\u002Ffind_test.py get_transaction_info\n```\n\n### 2. Read the Integration Test\n\nThe script outputs the test file path. Read it to understand:\n\n- Import statements and mock context setup\n- Real test data (addresses, transaction hashes, etc.)\n- Expected response structure\n\n### 3. Create Your Test Script\n\nUse this template in `\u002Ftmp\u002Fclaude\u002F...\u002Fscratchpad\u002F`:\n\n```python\n#!\u002Fusr\u002Fbin\u002Fenv python3\nimport asyncio\nimport sys\nfrom pathlib import Path\nfrom unittest.mock import AsyncMock, MagicMock\n\nsys.path.insert(0, str(Path(__file__).parent.parent.parent.parent.parent))\n\nfrom blockscout_mcp_server.tools.\u003Ccategory>.\u003Ctool_module> import \u003Ctool_function>\n\n\ndef create_mock_ctx():\n    \"\"\"Create a mock MCP Context object (pattern from tests\u002Fconftest.py).\"\"\"\n    ctx = MagicMock()\n    ctx.report_progress = AsyncMock()\n    ctx.info = AsyncMock()\n    return ctx\n\n\nasync def main():\n    ctx = create_mock_ctx()\n    try:\n        result = await \u003Ctool_function>(\n            # Your parameters here\n            ctx=ctx\n        )\n        print(\"Success! Result:\")\n        print(result)\n    except Exception as e:\n        print(f\"Error: {type(e).__name__}: {e}\")\n        import traceback\n        traceback.print_exc()\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n### 4. Run Your Test Script\n\n```bash\npython \u002Ftmp\u002Fclaude\u002F...\u002Fscratchpad\u002Fyour_test_script.py\n```\n",{"name":5,"description":7,"user-invocable":51},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fmcp-servers\u002Fblockscout-test-guided-tool-run",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":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill test-guided-tool-run",{"tool":70,"command":71},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill test-guided-tool-run",{"tool":73,"command":74},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill test-guided-tool-run","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fblockscout-test-guided-tool-run\u002FSKILL.md",true,[78,84,88,94,98],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"agents\u002Fopenai.yaml","REFERENCE","参考文档",316,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fblockscout-test-guided-tool-run\u002Fagents\u002Fopenai.yaml",{"path":85,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":16},"LICENSE","许可证",24890,{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"scripts\u002Ffind_test.py","SCRIPT","脚本",3878,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fblockscout-test-guided-tool-run\u002Fscripts\u002Ffind_test.py",{"path":95,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":96,"sourceHtmlUrl":97},"SOURCE.md",359,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fblockscout-test-guided-tool-run\u002FSOURCE.md",{"path":99,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":100,"sourceHtmlUrl":101},"TRUST.auto.yaml",2228,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fblockscout-test-guided-tool-run\u002FTRUST.auto.yaml",[103,133,155,173,186,196],{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":107,"licenseFileUrl":108,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":132},"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.","MIT","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",[],[112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask","2026-11-10 10:12:30",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":137,"licenseFileUrl":138,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":132},"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",[],[142,143,144,145,146,147,148,149,150,151,34,152,153,154],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","api keys","maintenance","protobuf",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":137,"licenseFileUrl":159,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":132},"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",[],[163,143,164,165,166,167,168,152,34,151,169,170,171,147,172,146,145],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"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":137,"licenseFileUrl":177,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":132},"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",[],[181,182,144,183,184,153,34,185,150,149,147,146],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":187,"name":188,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":107,"licenseFileUrl":189,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":132},"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",[],[193,194,195],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":107,"licenseFileUrl":200,"sourceHtmlUrl":201,"categories":202,"keywords":203,"publishedAt":132},"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",[],[41,204,205,206,207,208,209,45,210,211,212],"cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]