[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GN17DX7EP3MHFE4FNTCSYP":3,"skill-same:01M6GN17DX7EP3MHFE4FNTCSYP":91},{"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":29,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6GN17DX7EP3MHFE4FNTCSYP","dashboard",null,"Open the ChainGPT marketplace dashboard — a localhost web UI with six read-only panels (Overview, Wallet, Skills, Activity, Health, About). Bind 127.0.0.1 only, admin-token auth, same-origin CSRF defense. Triggers: dashboard, open the dashboard, ChainGPT dashboard, marketplace dashboard, show me the dashboard, web UI, control panel, skills overview, agent wallet panel, env check, plugin health.","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\u002Fai-crypto\u002Fchaingpt-org-official-dashboard\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fchaingpt-org-official-dashboard\u002FSKILL.md",[19,24],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",{"categoryNo":25,"categoryName":26,"taxonomyType":27,"taxonomyTypeDesc":28},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[5,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"show","plugin health","read-only","with","web ui","panel","panels","env","bind","triggers","Wallet","only","overview","check","show me","open","health","csrf","auth","2026-11-10 10:12:30",false,"---\nname: dashboard\ndescription: \"Open the ChainGPT marketplace dashboard — a localhost web UI with six read-only panels (Overview, Wallet, Skills, Activity, Health, About). Bind 127.0.0.1 only, admin-token auth, same-origin CSRF defense. Triggers: dashboard, open the dashboard, ChainGPT dashboard, marketplace dashboard, show me the dashboard, web UI, control panel, skills overview, agent wallet panel, env check, plugin health.\"\n---\n\n# ChainGPT Dashboard\n\nA single localhost web UI that gives a glance-at-it view of the marketplace: which plugin\u002FMCP\u002Fmarketplace version is installed, what skills are available, recent agent-wallet activity, environment-variable health, and pointers to docs + changelog.\n\n**Read-only.** No signing flows are proxied through the browser. The dashboard intentionally cannot move funds — that stays in MCP tool calls with explicit user confirmation.\n\n## How to open\n\nThe fastest path is the slash command:\n\n```\n\u002Fchaingpt:dashboard\n```\n\nThat calls the underlying MCP tool, prints a URL and a one-time admin token, and asks if you want to open the URL in your browser.\n\nYou can also call the tool directly:\n\n```\n> Use chaingpt_dashboard_serve to start the dashboard on port 8788\n```\n\n## Panels\n\n| Panel | What it shows | Source |\n|---|---|---|\n| Overview | Plugin \u002F MCP \u002F marketplace versions; skill count; agent-wallet init state; docs link | `.claude-plugin\u002F*.json`, `mcp-server\u002Fpackage.json`, `~\u002F.chaingpt-mcp\u002Fagent-wallet\u002Fkeystore.json` |\n| Wallet | Agent EOA address (copy button); policy summary (kill switch, unrestricted mode, allowed chains, allowed\u002Fblocked address counts, max tx value, max gas, memo requirement, policy digest); tracked-token + custom-chain counts; signed-tx count; CTA to launch the full Wallet Admin UI (port 8787) for editing — only available when the agent wallet is enabled (`CHAINGPT_AGENT_WALLET_ENABLED=true`). Read-only — reads the public address from the keystore, never decrypts. | `~\u002F.chaingpt-mcp\u002Fagent-wallet\u002F{keystore,policy,tracked-tokens,custom-chains}.json` |\n| Skills | One card per skill in `skills\u002F` with name + description from its SKILL.md frontmatter | `skills\u002F*\u002FSKILL.md` |\n| Activity | Most recent signed transactions (newest first) | `~\u002F.chaingpt-mcp\u002Fagent-wallet\u002Factivity.jsonl` (empty if you haven't signed yet) |\n| Health | Presence (not value) of CHAINGPT_API_KEY, agent-wallet passphrase, Etherscan\u002FMoralis\u002FGoPlus keys; Node runtime; key paths | `process.env`, filesystem |\n| About | Plugin info + top of `CHANGELOG.md` | `.claude-plugin\u002Fplugin.json`, `CHANGELOG.md` |\n\n## Security model\n\n- **Bind:** `127.0.0.1` only — never `0.0.0.0`. Cross-host access requires an SSH tunnel.\n- **Admin token:** 48 hex chars \u002F 192 bits, written to `~\u002F.chaingpt-mcp\u002Fdashboard\u002F.admin-token` with `0600` perms. Rotated on every `chaingpt_dashboard_serve` call.\n- **Sessions:** HttpOnly cookie `cg_dash_sid`, 1-hour sliding TTL, in-memory only (no persistence across restarts).\n- **CSRF:** All state-changing requests checked against `Origin` (or `Referer`) — must equal `http:\u002F\u002F127.0.0.1:\u003Cport>` \u002F `http:\u002F\u002Flocalhost:\u003Cport>`.\n- **No secrets in the browser.** API keys never leave the Node process; the dashboard reports presence flags only.\n\n## Coexistence with the agent-wallet UI\n\nThe dashboard and `chaingpt_agent_wallet_serve_ui` run as separate servers on separate ports (8788 vs. 8787) with independent admin tokens. They share no auth state. Both can run simultaneously.\n\n## Environment variables (optional)\n\n| Var | What |\n|---|---|\n| `CHAINGPT_DASHBOARD_DIR` | Override the dashboard state dir. Default: `~\u002F.chaingpt-mcp\u002Fdashboard\u002F` |\n\n## Troubleshooting\n\n- **Login screen rejects the token:** the token rotates each invocation. Re-run `\u002Fchaingpt:dashboard` and use the freshly printed token.\n- **Port in use:** pass a different port: `chaingpt_dashboard_serve({ port: 9999 })`.\n- **403 Origin check failed:** you're hitting the URL from somewhere other than `127.0.0.1:\u003Cport>` \u002F `localhost:\u003Cport>`. Open the URL exactly as printed.\n","# ChainGPT Dashboard\n\nA single localhost web UI that gives a glance-at-it view of the marketplace: which plugin\u002FMCP\u002Fmarketplace version is installed, what skills are available, recent agent-wallet activity, environment-variable health, and pointers to docs + changelog.\n\n**Read-only.** No signing flows are proxied through the browser. The dashboard intentionally cannot move funds — that stays in MCP tool calls with explicit user confirmation.\n\n## How to open\n\nThe fastest path is the slash command:\n\n```\n\u002Fchaingpt:dashboard\n```\n\nThat calls the underlying MCP tool, prints a URL and a one-time admin token, and asks if you want to open the URL in your browser.\n\nYou can also call the tool directly:\n\n```\n> Use chaingpt_dashboard_serve to start the dashboard on port 8788\n```\n\n## Panels\n\n| Panel | What it shows | Source |\n|---|---|---|\n| Overview | Plugin \u002F MCP \u002F marketplace versions; skill count; agent-wallet init state; docs link | `.claude-plugin\u002F*.json`, `mcp-server\u002Fpackage.json`, `~\u002F.chaingpt-mcp\u002Fagent-wallet\u002Fkeystore.json` |\n| Wallet | Agent EOA address (copy button); policy summary (kill switch, unrestricted mode, allowed chains, allowed\u002Fblocked address counts, max tx value, max gas, memo requirement, policy digest); tracked-token + custom-chain counts; signed-tx count; CTA to launch the full Wallet Admin UI (port 8787) for editing — only available when the agent wallet is enabled (`CHAINGPT_AGENT_WALLET_ENABLED=true`). Read-only — reads the public address from the keystore, never decrypts. | `~\u002F.chaingpt-mcp\u002Fagent-wallet\u002F{keystore,policy,tracked-tokens,custom-chains}.json` |\n| Skills | One card per skill in `skills\u002F` with name + description from its SKILL.md frontmatter | `skills\u002F*\u002FSKILL.md` |\n| Activity | Most recent signed transactions (newest first) | `~\u002F.chaingpt-mcp\u002Fagent-wallet\u002Factivity.jsonl` (empty if you haven't signed yet) |\n| Health | Presence (not value) of CHAINGPT_API_KEY, agent-wallet passphrase, Etherscan\u002FMoralis\u002FGoPlus keys; Node runtime; key paths | `process.env`, filesystem |\n| About | Plugin info + top of `CHANGELOG.md` | `.claude-plugin\u002Fplugin.json`, `CHANGELOG.md` |\n\n## Security model\n\n- **Bind:** `127.0.0.1` only — never `0.0.0.0`. Cross-host access requires an SSH tunnel.\n- **Admin token:** 48 hex chars \u002F 192 bits, written to `~\u002F.chaingpt-mcp\u002Fdashboard\u002F.admin-token` with `0600` perms. Rotated on every `chaingpt_dashboard_serve` call.\n- **Sessions:** HttpOnly cookie `cg_dash_sid`, 1-hour sliding TTL, in-memory only (no persistence across restarts).\n- **CSRF:** All state-changing requests checked against `Origin` (or `Referer`) — must equal `http:\u002F\u002F127.0.0.1:\u003Cport>` \u002F `http:\u002F\u002Flocalhost:\u003Cport>`.\n- **No secrets in the browser.** API keys never leave the Node process; the dashboard reports presence flags only.\n\n## Coexistence with the agent-wallet UI\n\nThe dashboard and `chaingpt_agent_wallet_serve_ui` run as separate servers on separate ports (8788 vs. 8787) with independent admin tokens. They share no auth state. Both can run simultaneously.\n\n## Environment variables (optional)\n\n| Var | What |\n|---|---|\n| `CHAINGPT_DASHBOARD_DIR` | Override the dashboard state dir. Default: `~\u002F.chaingpt-mcp\u002Fdashboard\u002F` |\n\n## Troubleshooting\n\n- **Login screen rejects the token:** the token rotates each invocation. Re-run `\u002Fchaingpt:dashboard` and use the freshly printed token.\n- **Port in use:** pass a different port: `chaingpt_dashboard_serve({ port: 9999 })`.\n- **403 Origin check failed:** you're hitting the URL from somewhere other than `127.0.0.1:\u003Cport>` \u002F `localhost:\u003Cport>`. Open the URL exactly as printed.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fai-crypto\u002Fchaingpt-org-official-dashboard",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":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill dashboard",{"tool":69,"command":70},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill dashboard",{"tool":72,"command":73},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill dashboard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fchaingpt-org-official-dashboard\u002FSKILL.md",true,[77,81,87],{"path":78,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":16},"LICENSE","许可证",1065,{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"SOURCE.md","REFERENCE","参考文档",368,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fchaingpt-org-official-dashboard\u002FSOURCE.md",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"TRUST.auto.yaml",2193,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fchaingpt-org-official-dashboard\u002FTRUST.auto.yaml",[92,120,143,160,173,183],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":96,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":49},"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",[],[100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":124,"licenseFileUrl":125,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":49},"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",[],[129,130,131,132,133,134,135,136,137,138,139,140,141,142],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":124,"licenseFileUrl":147,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":49},"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",[],[151,130,152,153,154,40,155,140,139,138,156,157,158,134,159,133,132],"mexc spot rest","REST","admin","signing","requests","actions","secure","data","orders",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":124,"licenseFileUrl":164,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":49},"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",[],[168,169,131,170,171,141,139,172,137,136,134,133],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":174,"name":175,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":176,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":49},"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",[],[180,181,182],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":187,"sourceHtmlUrl":188,"categories":189,"keywords":190,"publishedAt":49},"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",[],[191,192,193,194,195,196,197,198,199,200,201],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","use","patch","code","share"]