[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GSKQH32ZN7CM3CWNJZWAWC":3,"skill-same:01M6GSKQH32ZN7CM3CWNJZWAWC":78},{"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":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6GSKQH32ZN7CM3CWNJZWAWC","cdcx-auth-setup",null,"Credential and profile management — configure API keys via the setup wizard, environment variables, or config file. Resolution order and troubleshooting.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fcrypto-com-cdcx-auth-setup\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"setup","cdcx auth setup","auth","auth setup","environment","setup wizard","api keys","keys","Variables","via","environment variables","resolution","credential","profile","management","troubleshooting","configure","wizard","api","file","config","2026-11-10 10:12:30",false,"---\nname: cdcx-auth-setup\ndescription: Credential and profile management — configure API keys via the setup wizard, environment variables, or config file. Resolution order and troubleshooting.\n---\n\n# Auth & Profile Setup\n\n## When to Use\n\n- First-time cdcx setup\n- Configure multiple profiles (e.g. production + UAT)\n- Verify credentials work\n- Troubleshoot authentication errors\n\n## Resolution Order\n\ncdcx resolves credentials in this order (first match wins):\n\n1. `--api-key` \u002F `--api-secret` command-line flags\n2. `CDCX_API_KEY` \u002F `CDCX_API_SECRET` environment variables (preferred prefix)\n3. `CDC_API_KEY` \u002F `CDC_API_SECRET` environment variables (legacy prefix)\n4. `~\u002F.config\u002Fcdcx\u002Fconfig.toml` profile (default profile, or `--profile \u003Cname>`)\n\n## Setup Methods\n\n### Interactive Wizard (recommended)\n\n```\ncdcx setup\n```\n\nPrompts for API key, secret, and profile name. Writes `~\u002F.config\u002Fcdcx\u002Fconfig.toml` with mode 600. Handles migration from the legacy `CDC_` variables.\n\n### Environment Variables\n\n```\nexport CDCX_API_KEY=\"your-key\"\nexport CDCX_API_SECRET=\"your-secret\"\ncdcx account summary -o json\n```\n\nPrefer this for CI or containers where you don't want a config file on disk.\n\n### Config File (manual)\n\n`~\u002F.config\u002Fcdcx\u002Fconfig.toml`:\n\n```toml\n[profiles.default]\napi_key = \"your-key\"\napi_secret = \"your-secret\"\n\n[profiles.uat]\napi_key = \"uat-key\"\napi_secret = \"uat-secret\"\nenv = \"uat\"\n```\n\nMust be mode 600 — cdcx refuses to read world-readable credential files.\n\n## Profiles\n\n```\ncdcx --profile uat account summary         # Use UAT profile\ncdcx --profile default account summary     # Explicit default\n\nCDCX_PROFILE=uat cdcx account summary      # Env var alternative\n```\n\n## Environment Selection\n\nValid `--env` values: `production` (default), `uat`.\n\n```\ncdcx --env uat market ticker BTC_USDT\ncdcx --env production account summary\n```\n\n`--env` is independent of `--profile`. You can override either or both per call.\n\n## Verify\n\n```\n# Public call (no auth)\ncdcx market ticker BTC_USDT -o json\n\n# Auth check\ncdcx account summary -o json\n\n# Verbose — shows which profile \u002F env resolved\ncdcx --verbose account summary\n```\n\n## Troubleshooting\n\n| Symptom | Cause | Fix |\n|---------|-------|-----|\n| \"No credentials found\" | No flags, env vars, or config profile | Run `cdcx setup` or export `CDCX_API_KEY`\u002F`CDCX_API_SECRET` |\n| HTTP 401 \u002F signature invalid | Wrong key\u002Fsecret or clock skew | Re-run `cdcx setup`; ensure system clock is within a few seconds of UTC |\n| \"Permission denied\" on config | File mode not 600 | `chmod 600 ~\u002F.config\u002Fcdcx\u002Fconfig.toml` or re-run `cdcx setup` (auto-fixes) |\n| UAT calls hitting production | `--env` not set on the profile | Add `env = \"uat\"` to the profile or pass `--env uat` |\n| \"Withdrawal not enabled\" | API key lacks withdrawal permission | Re-issue the key with withdrawal permission in the Exchange web GUI |\n\n## Notes\n\n- Credentials never appear in `cdcx` output or logs. Verbose mode only confirms *which* profile was resolved\n- Do not commit `~\u002F.config\u002Fcdcx\u002Fconfig.toml` to version control; it is explicitly not git-tracked\n- UAT has its own keypair — production keys do not work against UAT and vice versa\n","# Auth & Profile Setup\n\n## When to Use\n\n- First-time cdcx setup\n- Configure multiple profiles (e.g. production + UAT)\n- Verify credentials work\n- Troubleshoot authentication errors\n\n## Resolution Order\n\ncdcx resolves credentials in this order (first match wins):\n\n1. `--api-key` \u002F `--api-secret` command-line flags\n2. `CDCX_API_KEY` \u002F `CDCX_API_SECRET` environment variables (preferred prefix)\n3. `CDC_API_KEY` \u002F `CDC_API_SECRET` environment variables (legacy prefix)\n4. `~\u002F.config\u002Fcdcx\u002Fconfig.toml` profile (default profile, or `--profile \u003Cname>`)\n\n## Setup Methods\n\n### Interactive Wizard (recommended)\n\n```\ncdcx setup\n```\n\nPrompts for API key, secret, and profile name. Writes `~\u002F.config\u002Fcdcx\u002Fconfig.toml` with mode 600. Handles migration from the legacy `CDC_` variables.\n\n### Environment Variables\n\n```\nexport CDCX_API_KEY=\"your-key\"\nexport CDCX_API_SECRET=\"your-secret\"\ncdcx account summary -o json\n```\n\nPrefer this for CI or containers where you don't want a config file on disk.\n\n### Config File (manual)\n\n`~\u002F.config\u002Fcdcx\u002Fconfig.toml`:\n\n```toml\n[profiles.default]\napi_key = \"your-key\"\napi_secret = \"your-secret\"\n\n[profiles.uat]\napi_key = \"uat-key\"\napi_secret = \"uat-secret\"\nenv = \"uat\"\n```\n\nMust be mode 600 — cdcx refuses to read world-readable credential files.\n\n## Profiles\n\n```\ncdcx --profile uat account summary         # Use UAT profile\ncdcx --profile default account summary     # Explicit default\n\nCDCX_PROFILE=uat cdcx account summary      # Env var alternative\n```\n\n## Environment Selection\n\nValid `--env` values: `production` (default), `uat`.\n\n```\ncdcx --env uat market ticker BTC_USDT\ncdcx --env production account summary\n```\n\n`--env` is independent of `--profile`. You can override either or both per call.\n\n## Verify\n\n```\n# Public call (no auth)\ncdcx market ticker BTC_USDT -o json\n\n# Auth check\ncdcx account summary -o json\n\n# Verbose — shows which profile \u002F env resolved\ncdcx --verbose account summary\n```\n\n## Troubleshooting\n\n| Symptom | Cause | Fix |\n|---------|-------|-----|\n| \"No credentials found\" | No flags, env vars, or config profile | Run `cdcx setup` or export `CDCX_API_KEY`\u002F`CDCX_API_SECRET` |\n| HTTP 401 \u002F signature invalid | Wrong key\u002Fsecret or clock skew | Re-run `cdcx setup`; ensure system clock is within a few seconds of UTC |\n| \"Permission denied\" on config | File mode not 600 | `chmod 600 ~\u002F.config\u002Fcdcx\u002Fconfig.toml` or re-run `cdcx setup` (auto-fixes) |\n| UAT calls hitting production | `--env` not set on the profile | Add `env = \"uat\"` to the profile or pass `--env uat` |\n| \"Withdrawal not enabled\" | API key lacks withdrawal permission | Re-issue the key with withdrawal permission in the Exchange web GUI |\n\n## Notes\n\n- Credentials never appear in `cdcx` output or logs. Verbose mode only confirms *which* profile was resolved\n- Do not commit `~\u002F.config\u002Fcdcx\u002Fconfig.toml` to version control; it is explicitly not git-tracked\n- UAT has its own keypair — production keys do not work against UAT and vice versa\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fexchanges\u002Fcrypto-com-cdcx-auth-setup",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-15 02:28:10",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill cdcx-auth-setup",{"tool":60,"command":61},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill cdcx-auth-setup",{"tool":63,"command":64},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill cdcx-auth-setup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fcrypto-com-cdcx-auth-setup\u002FSKILL.md",true,[68,74],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"SOURCE.md","REFERENCE","参考文档",359,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fcrypto-com-cdcx-auth-setup\u002FSOURCE.md",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fcrypto-com-cdcx-auth-setup\u002FTRUST.auto.yaml",[79,108,128,146,159,169],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":83,"licenseFileUrl":84,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":40},"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",[],[88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":112,"licenseFileUrl":113,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":40},"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",[],[117,118,119,37,120,121,122,123,124,26,125,25,126,127],"mexc spot websocket","spot","websocket","workflows","public","listen","streams","depth","for","maintenance","protobuf",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":112,"licenseFileUrl":132,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":40},"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",[],[136,118,137,138,139,140,141,25,125,26,142,143,144,121,145,120,37],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":112,"licenseFileUrl":150,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":40},"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",[],[154,155,119,156,157,126,125,158,124,123,121,120],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":160,"name":161,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":83,"licenseFileUrl":162,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":40},"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",[],[166,167,168],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":83,"licenseFileUrl":173,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":40},"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",[],[177,178,179,180,181,182,183,184,185,186,187],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","use","patch","code","share"]