[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CY2AS5RME234BXWNFB0510":3,"skill-same:01M6CY2AS5RME234BXWNFB0510":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":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},"01M6CY2AS5RME234BXWNFB0510","legacy",null,"Detect deprecated Python and framework patterns and propose a version-aware 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-python\u002Fskills\u002Flegacy\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28],"Legacy","python","framework","audit","Bash","version","backend","migration","files","patterns","2026-11-10 10:12:30",false,"---\nname: legacy\ndescription: >-\n  Detect deprecated Python and framework patterns and propose a version-aware migration path.\nauthor: François-Xavier Guillois\nversion: 0.6.3\nvibe_version: \">=1.0.0\"\npermissions:\n  - bash\n  - files\ntags:\n  - backend\n  - python\n  - audit\n---\n\nRead [host portability](..\u002F..\u002Freferences\u002Fhost-portability.md) before resolving plugin files, invoking sibling skills, or persisting project guidance.\n\n# sc-python Legacy\n\nDetects version-specific and deprecated patterns in the Python codebase, then produces a migration plan and applies changes file by file — either upgrading to modern Python or downgrading to a target version for compatibility.\n\n## Available actions\n\n| # | Action | Role | Input |\n|---|--------|------|-------|\n| 01 | `scan` | Detect legacy patterns and version gaps | path, target Python version |\n| 02 | `migrate` | Apply upgrade or downgrade transformations | scan manifest, direction |\n\n## Default flow\n\nAlways sequential: `scan` → `migrate`.\n\n1. `scan` reads `pyproject.toml`, `setup.py`, or `.python-version`, detects current and target Python versions, finds deprecated\u002Fmissing patterns, emits a structured manifest\n2. `migrate` reads the manifest and applies transformations file by file\n\n## References\n\n- `references\u002Fpython-versions.md` — version-by-version change tables (ES5→3.12+, type hint evolution)\n- `references\u002Fframework-migrations.md` — Django, FastAPI\u002FPydantic, SQLAlchemy breaking changes\n\n## Transversal rules\n\n- Always detect the current Python version from `pyproject.toml`, `.python-version`, or `tox.ini` 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- Downgrade migrations: never remove a feature without confirming the target version actually lacks it.\n- Framework-specific patterns (Django, FastAPI): check for framework version before applying framework-level migrations.\n- Never touch generated migration files (`migrations\u002F`, `alembic\u002Fversions\u002F`).\n","Read [host portability](..\u002F..\u002Freferences\u002Fhost-portability.md) before resolving plugin files, invoking sibling skills, or persisting project guidance.\n\n# sc-python Legacy\n\nDetects version-specific and deprecated patterns in the Python codebase, then produces a migration plan and applies changes file by file — either upgrading to modern Python or downgrading to a target version for compatibility.\n\n## Available actions\n\n| # | Action | Role | Input |\n|---|--------|------|-------|\n| 01 | `scan` | Detect legacy patterns and version gaps | path, target Python version |\n| 02 | `migrate` | Apply upgrade or downgrade transformations | scan manifest, direction |\n\n## Default flow\n\nAlways sequential: `scan` → `migrate`.\n\n1. `scan` reads `pyproject.toml`, `setup.py`, or `.python-version`, detects current and target Python versions, finds deprecated\u002Fmissing patterns, emits a structured manifest\n2. `migrate` reads the manifest and applies transformations file by file\n\n## References\n\n- `references\u002Fpython-versions.md` — version-by-version change tables (ES5→3.12+, type hint evolution)\n- `references\u002Fframework-migrations.md` — Django, FastAPI\u002FPydantic, SQLAlchemy breaking changes\n\n## Transversal rules\n\n- Always detect the current Python version from `pyproject.toml`, `.python-version`, or `tox.ini` 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- Downgrade migrations: never remove a feature without confirming the target version actually lacks it.\n- Framework-specific patterns (Django, FastAPI): check for framework version before applying framework-level migrations.\n- Never touch generated migration files (`migrations\u002F`, `alembic\u002Fversions\u002F`).\n",{"name":5,"tags":34,"author":12,"version":35,"description":7,"permissions":36,"vibe_version":38},[25,20,22],"0.6.3",[37,27],"bash",">=1.0.0","main","a33208351920c3cd0562b6ccf0846a9abe46741c","plugins\u002Fsc-python\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-python\u002Fskills\u002Flegacy\u002FSKILL.md",true,[61,67,71,75,79,83,87],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"actions\u002F01-scan.md","REFERENCE","参考文档",6392,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-python\u002Fskills\u002Flegacy\u002Factions\u002F01-scan.md",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"actions\u002F02-migrate.md",4547,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-python\u002Fskills\u002Flegacy\u002Factions\u002F02-migrate.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"dimension-checklists.md",8584,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Findranilbanerjee\u002Fdigital-marketing-pro\u002Fskills\u002Fseo-audit\u002Fdimension-checklists.md",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"evals\u002Fevals.json",2013,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Findranilbanerjee\u002Fdigital-marketing-pro\u002Fskills\u002Fseo-audit\u002Fevals\u002Fevals.json",{"path":80,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":81,"sourceHtmlUrl":82},"evals\u002Fscenarios.json",1106,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-python\u002Fskills\u002Flegacy\u002Fevals\u002Fscenarios.json",{"path":84,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fframework-migrations.md",3589,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-python\u002Fskills\u002Flegacy\u002Freferences\u002Fframework-migrations.md",{"path":88,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fpython-versions.md",2869,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-python\u002Fskills\u002Flegacy\u002Freferences\u002Fpython-versions.md",[92,101,114,121,126,132],{"skillNo":93,"name":94,"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":95,"categories":96,"keywords":97,"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",[],[98,99,100],"web","optimize","web optimize",{"skillNo":102,"name":103,"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":104,"categories":105,"keywords":111,"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",[106],{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[112,99,113],"data","data optimize",{"skillNo":115,"name":116,"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":117,"categories":118,"keywords":119,"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",[],[99,120],"ap optimize",{"skillNo":122,"name":94,"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":123,"categories":124,"keywords":125,"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",[],[98,99,100],{"skillNo":127,"name":103,"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":128,"categories":129,"keywords":131,"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",[130],{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},[112,99,113],{"skillNo":133,"name":116,"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":134,"categories":135,"keywords":136,"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",[],[99,120]]