[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GX3C3NPEM2Z5WKCQA96PDV":3,"skill-same:01M6GX3C3NPEM2Z5WKCQA96PDV":84},{"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":23,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":73},"01M6GX3C3NPEM2Z5WKCQA96PDV","manage-sources",null,"Use when user asks to \"add a source\", \"add docs\", \"ingest a site\", \"add this repo to the corpus\", \"remove a source\", \"disable a source\", or gives a documentation URL to include in the Solana MCP index. Edits ingestion\u002Fsources.yaml, validates with pnpm gen:sources, and opens a PR.","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\u002Fmcp-servers\u002Fsolana-manage-sources\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"manage sources","sources","manage","ingest","when","source","true","URL","with","add","solana","MCP","ingestion","use","remove","repo","site","yaml","index","pr","documentation","docs","2026-11-10 10:12:30",false,"---\nname: manage-sources\ndescription: Use when user asks to \"add a source\", \"add docs\", \"ingest a site\", \"add this repo to the corpus\", \"remove a source\", \"disable a source\", or gives a documentation URL to include in the Solana MCP index. Edits ingestion\u002Fsources.yaml, validates with pnpm gen:sources, and opens a PR.\nuser-invocable: true\n---\n\n# Manage ingestion sources\n\nAdd, remove, or disable entries in `ingestion\u002Fsources.yaml`, the single source of truth for what the Databricks ingestion job crawls and what `list_sections` exposes. `lib\u002Fsources.generated.ts` is gitignored and rebuilt at build time, so a PR only ever touches the yaml.\n\n## Operating procedure\n\n### 1. Dedup check (always first)\n\nSearch `ingestion\u002Fsources.yaml` for the requested URL's domain and any plausible id. A source counts as already present when its `primary_url` shares the domain\u002Fpath or an existing entry clearly covers the same docs. If found: report the existing entry (id, enabled state, sections) and stop. If it exists but `enabled: false`, ask whether to re-enable instead of adding.\n\nFor removals: find the entry by id or url. If nothing matches, list the closest candidates and stop.\n\n### 2. Author the entry (add) or delete it (remove)\n\nRead the header comment of `ingestion\u002Fsources.yaml` before writing — it defines the schema, the closed section taxonomy, and the tagging guidance. Key decisions:\n\n- **kind**: `github` for a GitHub repo (docs live in .md\u002F.mdx), `web` for a docs site, `openapi` for a JSON spec.\n- **id**: kebab-case, unique. GitHub sources use the `gh-` prefix (`gh-anchor`), web sources typically `\u003Cproject>-docs`.\n- **sections**: 1–3 tags from the closed taxonomy in the file header. Do not invent tags; the server boot check rejects unknown ones.\n- **use_cases**: comma-separated routing keywords, strongest hooks first. Written for an agent deciding whether this source answers a query.\n- Fetch the URL to confirm it resolves and to inform `use_cases`\u002F`sections`. Prefer `sitemaps` when the site publishes one, otherwise `start_urls`. Add `url_include` filters for multi-chain doc sites so only Solana pages are kept.\n\nInsert the entry into the matching `# --- ... ---` group in the file, not at the end. Follow the exact field order and style of neighboring entries.\n\nEntry shapes to copy:\n\n```yaml\n  - id: example-docs\n    name: Example Docs\n    kind: web\n    enabled: true\n    sections: [defi]\n    use_cases: \"Example AMM, swap API, liquidity pools\"\n    primary_url: https:\u002F\u002Fdocs.example.xyz\n    start_urls:\n      - https:\u002F\u002Fdocs.example.xyz\n\n  - id: gh-example\n    name: GitHub example-org\u002Fexample\n    kind: github\n    enabled: true\n    sections: [clients]\n    use_cases: \"Example SDK source, TypeScript client\"\n    primary_url: https:\u002F\u002Fgithub.com\u002Fexample-org\u002Fexample\n    github: { owner: example-org, repo: example, include_readmes: true, include_source_code: true }\n\n  - id: example-api\n    name: Example API (OpenAPI)\n    kind: openapi\n    enabled: true\n    sections: [data]\n    use_cases: \"Example REST API spec, historical data\"\n    primary_url: https:\u002F\u002Fapi.example.xyz\u002Fdocs\n    spec_url: https:\u002F\u002Fapi.example.xyz\u002Fopenapi.json\n```\n\nTo take a source out of rotation without losing its config, prefer `enabled: false` over deletion; delete only when the source is gone for good or was added in error.\n\n### 3. Validate\n\n```bash\npnpm install\npnpm gen:sources\npnpm typecheck\n```\n\n`gen:sources` enforces structure (unique ids, kinds, non-empty sections\u002Fuse_cases); the typecheck's `freezeSources` boot check rejects unknown section tags. All three must pass before committing.\n\n### 4. PR\n\n- Branch from `main`: `feat\u002Fsources-\u003Cid>` (or `chore\u002Fsources-remove-\u003Cid>`).\n- Conventional Commit, e.g. `feat(sources): add Example docs` \u002F `chore(sources): remove example-docs`.\n- `.claude\u002F*` is commonly globally gitignored; when editing this skill itself use `git add -f`.\n- Open the PR with a body noting: source id, kind, sections, why it belongs in the corpus, and the validation commands run.\n- Do not merge; a human reviews.\n\n## After merge (mention in the PR body)\n\nThe Databricks copy of `sources.yaml` refreshes on the next `just deploy` (asset bundle). The daily 09:00 UTC crawl only picks the source up after that deploy. The Cloud Run server side needs nothing extra: push to `main` redeploys and regenerates the catalogue.\n","# Manage ingestion sources\n\nAdd, remove, or disable entries in `ingestion\u002Fsources.yaml`, the single source of truth for what the Databricks ingestion job crawls and what `list_sections` exposes. `lib\u002Fsources.generated.ts` is gitignored and rebuilt at build time, so a PR only ever touches the yaml.\n\n## Operating procedure\n\n### 1. Dedup check (always first)\n\nSearch `ingestion\u002Fsources.yaml` for the requested URL's domain and any plausible id. A source counts as already present when its `primary_url` shares the domain\u002Fpath or an existing entry clearly covers the same docs. If found: report the existing entry (id, enabled state, sections) and stop. If it exists but `enabled: false`, ask whether to re-enable instead of adding.\n\nFor removals: find the entry by id or url. If nothing matches, list the closest candidates and stop.\n\n### 2. Author the entry (add) or delete it (remove)\n\nRead the header comment of `ingestion\u002Fsources.yaml` before writing — it defines the schema, the closed section taxonomy, and the tagging guidance. Key decisions:\n\n- **kind**: `github` for a GitHub repo (docs live in .md\u002F.mdx), `web` for a docs site, `openapi` for a JSON spec.\n- **id**: kebab-case, unique. GitHub sources use the `gh-` prefix (`gh-anchor`), web sources typically `\u003Cproject>-docs`.\n- **sections**: 1–3 tags from the closed taxonomy in the file header. Do not invent tags; the server boot check rejects unknown ones.\n- **use_cases**: comma-separated routing keywords, strongest hooks first. Written for an agent deciding whether this source answers a query.\n- Fetch the URL to confirm it resolves and to inform `use_cases`\u002F`sections`. Prefer `sitemaps` when the site publishes one, otherwise `start_urls`. Add `url_include` filters for multi-chain doc sites so only Solana pages are kept.\n\nInsert the entry into the matching `# --- ... ---` group in the file, not at the end. Follow the exact field order and style of neighboring entries.\n\nEntry shapes to copy:\n\n```yaml\n  - id: example-docs\n    name: Example Docs\n    kind: web\n    enabled: true\n    sections: [defi]\n    use_cases: \"Example AMM, swap API, liquidity pools\"\n    primary_url: https:\u002F\u002Fdocs.example.xyz\n    start_urls:\n      - https:\u002F\u002Fdocs.example.xyz\n\n  - id: gh-example\n    name: GitHub example-org\u002Fexample\n    kind: github\n    enabled: true\n    sections: [clients]\n    use_cases: \"Example SDK source, TypeScript client\"\n    primary_url: https:\u002F\u002Fgithub.com\u002Fexample-org\u002Fexample\n    github: { owner: example-org, repo: example, include_readmes: true, include_source_code: true }\n\n  - id: example-api\n    name: Example API (OpenAPI)\n    kind: openapi\n    enabled: true\n    sections: [data]\n    use_cases: \"Example REST API spec, historical data\"\n    primary_url: https:\u002F\u002Fapi.example.xyz\u002Fdocs\n    spec_url: https:\u002F\u002Fapi.example.xyz\u002Fopenapi.json\n```\n\nTo take a source out of rotation without losing its config, prefer `enabled: false` over deletion; delete only when the source is gone for good or was added in error.\n\n### 3. Validate\n\n```bash\npnpm install\npnpm gen:sources\npnpm typecheck\n```\n\n`gen:sources` enforces structure (unique ids, kinds, non-empty sections\u002Fuse_cases); the typecheck's `freezeSources` boot check rejects unknown section tags. All three must pass before committing.\n\n### 4. PR\n\n- Branch from `main`: `feat\u002Fsources-\u003Cid>` (or `chore\u002Fsources-remove-\u003Cid>`).\n- Conventional Commit, e.g. `feat(sources): add Example docs` \u002F `chore(sources): remove example-docs`.\n- `.claude\u002F*` is commonly globally gitignored; when editing this skill itself use `git add -f`.\n- Open the PR with a body noting: source id, kind, sections, why it belongs in the corpus, and the validation commands run.\n- Do not merge; a human reviews.\n\n## After merge (mention in the PR body)\n\nThe Databricks copy of `sources.yaml` refreshes on the next `just deploy` (asset bundle). The daily 09:00 UTC crawl only picks the source up after that deploy. The Cloud Run server side needs nothing extra: push to `main` redeploys and regenerates the catalogue.\n",{"name":5,"description":7,"user-invocable":51},true,"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fmcp-servers\u002Fsolana-manage-sources",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":62,"prompt":72,"zipAvailable":51},[63,66,69],{"tool":64,"command":65},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill manage-sources",{"tool":67,"command":68},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill manage-sources",{"tool":70,"command":71},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill manage-sources","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fsolana-manage-sources\u002FSKILL.md",[74,80],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"SOURCE.md","REFERENCE","参考文档",392,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fsolana-manage-sources\u002FSOURCE.md",{"path":81,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":82,"sourceHtmlUrl":83},"TRUST.auto.yaml",2254,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fsolana-manage-sources\u002FTRUST.auto.yaml",[85,114,137,155,168,178],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":90,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":46},"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",[],[94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":118,"licenseFileUrl":119,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":46},"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",[],[123,124,125,126,127,128,129,130,131,132,133,134,135,136],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":118,"licenseFileUrl":141,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":46},"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",[],[145,124,146,147,148,149,150,134,133,132,151,152,153,128,154,127,126],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"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":118,"licenseFileUrl":159,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":46},"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",[],[163,164,125,165,166,135,133,167,131,130,128,127],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":169,"name":170,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":171,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":46},"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",[],[175,176,177],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":89,"licenseFileUrl":182,"sourceHtmlUrl":183,"categories":184,"keywords":185,"publishedAt":46},"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",[],[186,187,188,189,190,43,191,37,192,193,194],"tests","cover","verify tests cover changed lines","verify","coverage","exercise","patch","code","share"]