[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DATT97F9ABVN144H9QXJQ7":3,"skill-same:01M6DATT97F9ABVN144H9QXJQ7":83},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":13,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6DATT97F9ABVN144H9QXJQ7","cruft-cleanup",null,"Use when reviewing or writing refactors, renames, or migrations where old interfaces may linger as aliases, re-exports, wrappers, fallback branches, deprecated flags, or other compatibility cruft. Especially relevant when changed code keeps both old and new paths alive inside the same repo.","tzeusy-org\u002Fai-bootstrap","tzeusy-org","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F141543652?v=4","01M6DAM1AP09H27BYGFY9QCNPB","01M6DAM1F4R187EK11XDN9JZKH",0,"MIT","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-engineering\u002Fsubskills\u002Fcruft-cleanup\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"cleanup","cruft cleanup","writing","codex","code","openai","repo","use","fallback","migrations","compatibility","flags","branches","active","openai codex","as","2026-11-10 10:12:30",false,"---\nname: cruft-cleanup\ndescription: >\n  Use when reviewing or writing refactors, renames, or migrations where old interfaces may\n  linger as aliases, re-exports, wrappers, fallback branches, deprecated flags, or other\n  compatibility cruft. Especially relevant when changed code keeps both old and new paths\n  alive inside the same repo.\nmetadata:\n  owner: tze\n  authors:\n    - tze\n    - OpenAI Codex\n  status: active\n  last_reviewed: \"2026-06-12\"\n---\n\n# Cruft Cleanup\n\nLLMs preserve old interfaces \"just in case.\" In same-repo refactors, that leaves dead wrappers, aliases, and fallback paths instead of a finished migration.\n\nWhen refactoring, migrating, or renaming, leave **only the new code path** unless backward compatibility is explicitly required.\n\n## When to Use\n\n- A function, module, type, flag, config key, or CLI option was renamed, moved, or replaced\n- A diff keeps both old and new interfaces alive in the same repo\n- A refactor adds aliases, re-exports, wrappers, or fallback branches \"for compatibility\"\n- LLM-generated code says some variant of \"old path still works\"\n- Tests were updated incompletely and still exercise the retired interface\n\n## Do Not Use This Skill When\n\n- Published APIs with real downstream consumers\n- Cross-repo migrations that cannot be completed atomically\n- Temporary compatibility layers with a verified owner and removal date\n- Residue at architecture scale (layers, abstractions, whole surfaces the\n  spec never needed) rather than one migration's leftovers —\n  [greenfield-parity](..\u002Fgreenfield-parity\u002FSKILL.md)\n\n## Core Rule\n\n**If you changed it, finish the job.** Every callsite, import, reference, and test uses the new interface. Delete the old one — not deprecate, not re-export, not alias.\n\nCatch yourself writing a compatibility alias, wrapper, or fallback? Stop and update the callers instead.\n\n## Read Order\n\n| File | Read when | Content |\n|------|-----------|---------|\n| [`references\u002Faudit-flow.md`](.\u002Freferences\u002Faudit-flow.md) | Every real use of this skill | Proactive and reactive workflow, grep strategy, and review sequence |\n| [`references\u002Fpatterns-to-delete.md`](.\u002Freferences\u002Fpatterns-to-delete.md) | You need concrete examples of cruft | Common shim\u002Ffallback\u002Ftombstone patterns to remove |\n| [`references\u002Fcompat-boundary.md`](.\u002Freferences\u002Fcompat-boundary.md) | You suspect compatibility might be legitimate | Hard boundary for when old interfaces may stay temporarily |\n\n## Trigger Sanity Check\n\n- Should trigger: \"This rename left a wrapper and old re-export behind so callers still work.\"\n- Should trigger: \"Clean up this refactor — I think there are leftover aliases and fallback branches.\"\n- Should not trigger: \"We need a planned deprecation layer for an external API consumed by other repos.\"\n","# Cruft Cleanup\n\nLLMs preserve old interfaces \"just in case.\" In same-repo refactors, that leaves dead wrappers, aliases, and fallback paths instead of a finished migration.\n\nWhen refactoring, migrating, or renaming, leave **only the new code path** unless backward compatibility is explicitly required.\n\n## When to Use\n\n- A function, module, type, flag, config key, or CLI option was renamed, moved, or replaced\n- A diff keeps both old and new interfaces alive in the same repo\n- A refactor adds aliases, re-exports, wrappers, or fallback branches \"for compatibility\"\n- LLM-generated code says some variant of \"old path still works\"\n- Tests were updated incompletely and still exercise the retired interface\n\n## Do Not Use This Skill When\n\n- Published APIs with real downstream consumers\n- Cross-repo migrations that cannot be completed atomically\n- Temporary compatibility layers with a verified owner and removal date\n- Residue at architecture scale (layers, abstractions, whole surfaces the\n  spec never needed) rather than one migration's leftovers —\n  [greenfield-parity](..\u002Fgreenfield-parity\u002FSKILL.md)\n\n## Core Rule\n\n**If you changed it, finish the job.** Every callsite, import, reference, and test uses the new interface. Delete the old one — not deprecate, not re-export, not alias.\n\nCatch yourself writing a compatibility alias, wrapper, or fallback? Stop and update the callers instead.\n\n## Read Order\n\n| File | Read when | Content |\n|------|-----------|---------|\n| [`references\u002Faudit-flow.md`](.\u002Freferences\u002Faudit-flow.md) | Every real use of this skill | Proactive and reactive workflow, grep strategy, and review sequence |\n| [`references\u002Fpatterns-to-delete.md`](.\u002Freferences\u002Fpatterns-to-delete.md) | You need concrete examples of cruft | Common shim\u002Ffallback\u002Ftombstone patterns to remove |\n| [`references\u002Fcompat-boundary.md`](.\u002Freferences\u002Fcompat-boundary.md) | You suspect compatibility might be legitimate | Hard boundary for when old interfaces may stay temporarily |\n\n## Trigger Sanity Check\n\n- Should trigger: \"This rename left a wrapper and old re-export behind so callers still work.\"\n- Should trigger: \"Clean up this refactor — I think there are leftover aliases and fallback branches.\"\n- Should not trigger: \"We need a planned deprecation layer for an external API consumed by other repos.\"\n",{"name":5,"metadata":39,"description":44},{"owner":40,"status":31,"authors":41,"last_reviewed":43},"tze",[40,42],"OpenAI Codex","2026-06-12","Use when reviewing or writing refactors, renames, or migrations where old interfaces may linger as aliases, re-exports, wrappers, fallback branches, deprecated flags, or other compatibility cruft. Especially relevant when changed code keeps both old and new paths alive inside the same repo.\n","main","c907d6f0bf96bd61b936e8972e0f1c66ebb8148c","skills\u002Fpersonal\u002Fth-engineering\u002Fsubskills\u002Fcruft-cleanup","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap","https:\u002F\u002Fgithub.com\u002Ftzeusy-org","2026-11-10 23:17:25",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add tzeusy-org\u002Fai-bootstrap --skill cruft-cleanup",{"tool":57,"command":58},"bunx","bunx skills add tzeusy-org\u002Fai-bootstrap --skill cruft-cleanup",{"tool":60,"command":61},"pnpm","pnpm dlx skills add tzeusy-org\u002Fai-bootstrap --skill cruft-cleanup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-engineering\u002Fsubskills\u002Fcruft-cleanup\u002FSKILL.md",true,[65,71,75,79],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"agents\u002Fopenai.yaml","REFERENCE","参考文档",294,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-engineering\u002Fsubskills\u002Fcruft-cleanup\u002Fagents\u002Fopenai.yaml",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Faudit-flow.md",1944,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-engineering\u002Fsubskills\u002Fcruft-cleanup\u002Freferences\u002Faudit-flow.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fcompat-boundary.md",762,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-engineering\u002Fsubskills\u002Fcruft-cleanup\u002Freferences\u002Fcompat-boundary.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fpatterns-to-delete.md",1636,"https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-engineering\u002Fsubskills\u002Fcruft-cleanup\u002Freferences\u002Fpatterns-to-delete.md",[84,108,134,149,167,178],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":34},"01M6DAZD21TWH2ET70V9FF75CQ","user-run","Use when a step needs privileges this session lacks (docker, sudo, another user's checkout or secrets, host access) and the owner must run it as tze. Writes a reviewable \u002Fhome\u002Forca\u002F.tmp\u002F\u003Cslug>\u002Frun.sh that impersonates tze (USER_TO_IMPERSONATE overrides), tees timestamped logs plus latest.log and collects artifacts there; Claude presents it with a risk and time brief, then continues from the logs. Triggers: \"I'll run it for you\", \"permission denied on docker.sock\", \"needs sudo\", \"sudo: a password is required\", \"run as tze\", \"\u002Fuser-run\".","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fuser-run\u002FSKILL.md",[],[91,92,93,94,95,25,96,33,97,98,31,99,100,101,102,103,104,105,106,107],"user run","user","run","docker","logs","host","triggers","permission","time","log","artifacts","session","password","access","secrets","risk","brief",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":124,"publishedAt":34},"01M6DAZAHTCBAD2WF0GAHWPST8","requesting-code-review","Use when completing tasks, implementing major features, or before merging to verify work meets requirements","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Frequesting-code-review\u002FSKILL.md",[114,119],{"categoryNo":115,"categoryName":116,"taxonomyType":117,"taxonomyTypeDesc":118},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":120,"categoryName":121,"taxonomyType":122,"taxonomyTypeDesc":123},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[125,22,126,127,128,129,31,130,131,25,132,133],"requesting code review","review","code review","work","requirements","upstream","superpowers","verify","tasks",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":142,"publishedAt":34},"01M6DAZ7CJ82D81XZB2YHVVY48","receiving-code-review","Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Freceiving-code-review\u002FSKILL.md",[140,141],{"categoryNo":115,"categoryName":116,"taxonomyType":117,"taxonomyTypeDesc":118},{"categoryNo":120,"categoryName":121,"taxonomyType":122,"taxonomyTypeDesc":123},[143,22,126,127,31,130,144,131,25,145,146,147,148],"receiving code review","implementation","code review feedback","technical","feedback","verification",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":34},"01M6DAZ4ER76ADXJ9KRFP7V3Q9","finishing-a-development-branch","Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Ffinishing-a-development-branch\u002FSKILL.md",[],[156,157,158,159,25,160,128,161,18,162,131,163,164,165,31,130,166,144],"branch","development","finishing a development branch","integrate","decide","how","pr","merge","tests","structured","options",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":34},"01M6DAYZFWWW2YPKP89QNQR96H","executing-plans","Use when you have a written implementation plan to execute in a separate session with review checkpoints","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Fexecuting-plans\u002FSKILL.md",[],[174,175,176,126,177,31,130,144,131,25,102],"plans","executing plans","plan","execute",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":34},"01M6DAYWM2YQHYCK7C35K1D29J","dispatching-parallel-agents","Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies","https:\u002F\u002Fgithub.com\u002Ftzeusy-org\u002Fai-bootstrap\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fth-workflow\u002Fsubskills\u002Fdispatching-parallel-agents\u002FSKILL.md",[],[185,186,187,25,131,130,188,31,189,133,190],"parallel agents","parallel","dispatching parallel agents","state","dependencies","shared"]