[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CY2YD5J68HTKTCZWHDS091":3,"skill-same:01M6CY2YD5J68HTKTCZWHDS091":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":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6CY2YD5J68HTKTCZWHDS091","legacy",null,"Detect deprecated Rust edition, crate, and language patterns and propose a safe migration path.","RebelliousSmile\u002Fmy-claude-marketplace","RebelliousSmile","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F40766799?v=4","01M6CXW595637KNM9Z3TYT9F7R","François-Xavier Guillois","01M6CXW5DBBQTQ9JM1BKH9VQGK",1,"MIT","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flegacy\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28],"Legacy","safe","rust","audit","Bash","backend","migration","files","language","patterns","2026-11-10 10:12:30",false,"---\nname: legacy\ndescription: >-\n  Detect deprecated Rust edition, crate, and language patterns and propose a safe migration path.\nauthor: François-Xavier Guillois\nversion: 0.5.2\nvibe_version: \">=1.0.0\"\npermissions:\n  - bash\n  - files\ntags:\n  - backend\n  - audit\n  - rust\n---\n\nRead [host portability](..\u002F..\u002Freferences\u002Fhost-portability.md) before resolving plugin files, invoking sibling skills, or persisting project guidance.\n\n# sc-rust Legacy\n\nDetects edition-specific patterns and deprecated APIs in the Rust codebase, then produces a migration plan and applies changes file by file — migrating to a newer edition or updating breaking crate API changes.\n\n## Available actions\n\n| # | Action | Role | Input |\n|---|--------|------|-------|\n| 01 | `scan` | Detect edition\u002FAPI gaps and deprecated patterns | path, target edition |\n| 02 | `migrate` | Apply edition migration and crate API transformations | scan manifest |\n\n## Default flow\n\nAlways sequential: `scan` → `migrate`.\n\n1. `scan` reads `Cargo.toml`, detects current edition, finds deprecated patterns and outdated crate API usage, emits a structured manifest\n2. `migrate` reads the manifest and applies transformations file by file\n\n## References\n\n- `references\u002Frust-editions.md` — edition-by-edition change tables (2015→2018→2021→2024)\n- `references\u002Fapi-deprecations.md` — std deprecations and crate migrations (failure, futures 0.1, rand, serde)\n\n## Transversal rules\n\n- Always detect the current Rust edition from `Cargo.toml` (`edition = \"2015\"\u002F\"2018\"\u002F\"2021\"\u002F\"2024\"`) before scanning.\n- Never remove a working pattern without providing its replacement inline.\n- For breaking changes: show a diff of what will change and ask for confirmation before writing.\n- `extern crate` removal: verify the crate is in the standard prelude or Rust 2018+ implicit imports before removing.\n- Error handling migration (failure\u002Ferror-chain → anyhow\u002Fthiserror): prefer `anyhow` for binaries\u002Fapplications, `thiserror` for library crates.\n- Never touch `target\u002F` or generated `build.rs` output.\n","Read [host portability](..\u002F..\u002Freferences\u002Fhost-portability.md) before resolving plugin files, invoking sibling skills, or persisting project guidance.\n\n# sc-rust Legacy\n\nDetects edition-specific patterns and deprecated APIs in the Rust codebase, then produces a migration plan and applies changes file by file — migrating to a newer edition or updating breaking crate API changes.\n\n## Available actions\n\n| # | Action | Role | Input |\n|---|--------|------|-------|\n| 01 | `scan` | Detect edition\u002FAPI gaps and deprecated patterns | path, target edition |\n| 02 | `migrate` | Apply edition migration and crate API transformations | scan manifest |\n\n## Default flow\n\nAlways sequential: `scan` → `migrate`.\n\n1. `scan` reads `Cargo.toml`, detects current edition, finds deprecated patterns and outdated crate API usage, emits a structured manifest\n2. `migrate` reads the manifest and applies transformations file by file\n\n## References\n\n- `references\u002Frust-editions.md` — edition-by-edition change tables (2015→2018→2021→2024)\n- `references\u002Fapi-deprecations.md` — std deprecations and crate migrations (failure, futures 0.1, rand, serde)\n\n## Transversal rules\n\n- Always detect the current Rust edition from `Cargo.toml` (`edition = \"2015\"\u002F\"2018\"\u002F\"2021\"\u002F\"2024\"`) before scanning.\n- Never remove a working pattern without providing its replacement inline.\n- For breaking changes: show a diff of what will change and ask for confirmation before writing.\n- `extern crate` removal: verify the crate is in the standard prelude or Rust 2018+ implicit imports before removing.\n- Error handling migration (failure\u002Ferror-chain → anyhow\u002Fthiserror): prefer `anyhow` for binaries\u002Fapplications, `thiserror` for library crates.\n- Never touch `target\u002F` or generated `build.rs` output.\n",{"name":5,"tags":34,"author":12,"version":35,"description":7,"permissions":36,"vibe_version":38},[24,22,21],"0.5.2",[37,26],"bash",">=1.0.0","main","a33208351920c3cd0562b6ccf0846a9abe46741c","plugins\u002Fsc-rust\u002Fskills\u002Flegacy",0,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace","https:\u002F\u002Fgithub.com\u002FRebelliousSmile","https:\u002F\u002Fwww.scriptami.com\u002F","2026-11-11 04:40:59",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill legacy",{"tool":53,"command":54},"bunx","bunx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill legacy",{"tool":56,"command":57},"pnpm","pnpm dlx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill legacy","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flegacy\u002FSKILL.md",true,[61,67,71,75,79],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"actions\u002F01-scan.md","REFERENCE","参考文档",5369,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flegacy\u002Factions\u002F01-scan.md",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"actions\u002F02-migrate.md",3638,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flegacy\u002Factions\u002F02-migrate.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"evals\u002Fscenarios.json",984,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flegacy\u002Fevals\u002Fscenarios.json",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fapi-deprecations.md",3724,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flegacy\u002Freferences\u002Fapi-deprecations.md",{"path":80,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Frust-editions.md",3404,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flegacy\u002Freferences\u002Frust-editions.md",[84,93,106,113,118,124],{"skillNo":85,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":29},"01M6CY3N1KXYQQG47SD4966CMS","web-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fweb-optimize\u002FSKILL.md",[],[90,91,92],"web","optimize","web optimize",{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":103,"publishedAt":29},"01M6CY3KR1H8WTNM1GV1SH6DY8","data-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fdata-optimize\u002FSKILL.md",[98],{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[104,91,105],"data","data optimize",{"skillNo":107,"name":108,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":29},"01M6CY3JJJGXQG2X5X5PVTTB2A","ap-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fap-optimize\u002FSKILL.md",[],[91,112],"ap optimize",{"skillNo":114,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":29},"01M6CY3HD94NANM2AE5JA7Z22D","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fweb-optimize\u002FSKILL.md",[],[90,91,92],{"skillNo":119,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":123,"publishedAt":29},"01M6CY3G6M0NC688HYCFD9TDV1","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fdata-optimize\u002FSKILL.md",[122],{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},[104,91,105],{"skillNo":125,"name":108,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":29},"01M6CY3ES1CAT89NKBXPBGEFZ9","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fap-optimize\u002FSKILL.md",[],[91,112]]