[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D7R89CG8ANCMD76K13KSAS":3,"skill-same:01M6D7R89CG8ANCMD76K13KSAS":77},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6D7R89CG8ANCMD76K13KSAS","extract-shared-types",null,"Extract shared type definitions into a dedicated types directory without runtime behavior changes","GeorgeQLe\u002Fagentic-skills","GeorgeQLe","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F21134126?v=4","01M6D2JP418S0VGJGF8M93EC3H","George Le","01M6D2JPBAKYD82TA5FS6HKQ3D",1,"MIT","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Fpacks\u002Fcode-quality\u002Fclaude\u002Fextract-shared-types\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"extract","shared","extract shared types","directory","package","refactor","execution","page","behavior","v0","alignment","domain","runtime","app","type","2026-11-10 10:12:30",false,"---\nname: extract-shared-types\ndescription: Extract shared type definitions into a dedicated types directory without runtime behavior changes\ntype: execution\nversion: v0.1\nrequired_conventions: [alignment-page]\nargument-hint: \"[optional: package, app, directory, or domain to refactor]\"\n---\n\n# Extract Shared Types\n\nUse this skill for type hoisting, type barreling, shared `types\u002F` directories, import honesty, and circular-dependency prevention when the requested change is explicitly structural and behavior-preserving.\n\n## Process\n\n1. **Establish scope.**\n   - Read `$ARGUMENTS` for a package, app, directory, or domain.\n   - If no scope is provided, inspect the repo and choose the smallest coherent area with shared exported types.\n   - Read project instructions, package manifests, TypeScript config, path aliases, lint rules, package export maps, and existing `types\u002F` or barrel conventions.\n\n2. **Classify declarations before editing.**\n   - Candidate moves: exported `type` aliases, `interface` declarations, ambient declarations, generic helper shapes, DTO\u002Fresult shapes, props\u002Fstate shapes, and domain data shapes.\n   - Do not move runtime values: functions, constants, classes, runtime enums, schemas, validators, database\u002FAPI clients, React components, business logic, or anything imported as a value.\n   - Treat TypeScript `enum` as runtime unless the project already uses `const enum` safely and the compiler settings make the move clearly type-only.\n\n3. **Design the target type layout.**\n   - Create or reuse a dedicated `types\u002F` directory at the nearest appropriate boundary.\n   - Organize files by domain, feature, or package convention rather than by source file name when a domain boundary is clear.\n   - Prefer direct imports from domain type files. Add `types\u002Findex.ts` only if the project already uses barrels or repeated type imports would otherwise become noisy.\n\n4. **Move type declarations.**\n   - Move only the approved type declarations.\n   - Preserve exported names, generic parameters, comments that explain shape semantics, and public visibility.\n   - Keep runtime implementation files focused on runtime logic, importing moved declarations with `import type` where supported.\n\n5. **Update imports and compatibility.**\n   - Update internal imports to the new type files.\n   - Use `import type` for type-only imports and avoid creating new value imports from `types\u002F`.\n   - If old import paths are part of a public API or package boundary, leave type-only re-exports from the original module rather than forcing a breaking migration.\n   - Avoid widening public barrels unless the repo already exposes that type surface intentionally.\n\n6. **Verify behavior preservation.**\n   - Run the narrowest relevant typecheck, tests, lint\u002Fimport checks, and dependency-cycle checks available.\n   - Inspect the diff for runtime changes: implementation logic, emitted values, schema definitions, package exports, route behavior, and component behavior should not change.\n   - If verification fails, fix import\u002Ftype issues without changing runtime behavior.\n\n## Output\n\nWhen reporting completion, include:\n\n- Scope refactored.\n- Type files created or reused.\n- Compatibility re-exports left in place, if any.\n- Verification commands run and their results.\n- Any skipped candidates with the reason they were runtime-coupled or public-API-sensitive.\n\n## Alignment Page\n\nFollow the shared alignment-page convention via the packaged convention resolver; output path is `alignment\u002Fextract-shared-types-{topic}.html`.\n\n## Constraints\n\n- Zero runtime behavior changes.\n- Do not move declarations unless they are type-only.\n- Do not introduce dependency upgrades, schema redesigns, or broad module restructuring.\n- Do not remove public import paths unless the user explicitly requests a breaking change.\n- Preserve unrelated user changes in the working tree.\n\n## Default Shipping Contract\n\nFollow the shared shipping contract convention in CLAUDE.md.\n\n","# Extract Shared Types\n\nUse this skill for type hoisting, type barreling, shared `types\u002F` directories, import honesty, and circular-dependency prevention when the requested change is explicitly structural and behavior-preserving.\n\n## Process\n\n1. **Establish scope.**\n   - Read `$ARGUMENTS` for a package, app, directory, or domain.\n   - If no scope is provided, inspect the repo and choose the smallest coherent area with shared exported types.\n   - Read project instructions, package manifests, TypeScript config, path aliases, lint rules, package export maps, and existing `types\u002F` or barrel conventions.\n\n2. **Classify declarations before editing.**\n   - Candidate moves: exported `type` aliases, `interface` declarations, ambient declarations, generic helper shapes, DTO\u002Fresult shapes, props\u002Fstate shapes, and domain data shapes.\n   - Do not move runtime values: functions, constants, classes, runtime enums, schemas, validators, database\u002FAPI clients, React components, business logic, or anything imported as a value.\n   - Treat TypeScript `enum` as runtime unless the project already uses `const enum` safely and the compiler settings make the move clearly type-only.\n\n3. **Design the target type layout.**\n   - Create or reuse a dedicated `types\u002F` directory at the nearest appropriate boundary.\n   - Organize files by domain, feature, or package convention rather than by source file name when a domain boundary is clear.\n   - Prefer direct imports from domain type files. Add `types\u002Findex.ts` only if the project already uses barrels or repeated type imports would otherwise become noisy.\n\n4. **Move type declarations.**\n   - Move only the approved type declarations.\n   - Preserve exported names, generic parameters, comments that explain shape semantics, and public visibility.\n   - Keep runtime implementation files focused on runtime logic, importing moved declarations with `import type` where supported.\n\n5. **Update imports and compatibility.**\n   - Update internal imports to the new type files.\n   - Use `import type` for type-only imports and avoid creating new value imports from `types\u002F`.\n   - If old import paths are part of a public API or package boundary, leave type-only re-exports from the original module rather than forcing a breaking migration.\n   - Avoid widening public barrels unless the repo already exposes that type surface intentionally.\n\n6. **Verify behavior preservation.**\n   - Run the narrowest relevant typecheck, tests, lint\u002Fimport checks, and dependency-cycle checks available.\n   - Inspect the diff for runtime changes: implementation logic, emitted values, schema definitions, package exports, route behavior, and component behavior should not change.\n   - If verification fails, fix import\u002Ftype issues without changing runtime behavior.\n\n## Output\n\nWhen reporting completion, include:\n\n- Scope refactored.\n- Type files created or reused.\n- Compatibility re-exports left in place, if any.\n- Verification commands run and their results.\n- Any skipped candidates with the reason they were runtime-coupled or public-API-sensitive.\n\n## Alignment Page\n\nFollow the shared alignment-page convention via the packaged convention resolver; output path is `alignment\u002Fextract-shared-types-{topic}.html`.\n\n## Constraints\n\n- Zero runtime behavior changes.\n- Do not move declarations unless they are type-only.\n- Do not introduce dependency upgrades, schema redesigns, or broad module restructuring.\n- Do not remove public import paths unless the user explicitly requests a breaking change.\n- Preserve unrelated user changes in the working tree.\n\n## Default Shipping Contract\n\nFollow the shared shipping contract convention in CLAUDE.md.\n\n",{"name":5,"type":25,"version":39,"description":7,"argument-hint":40,"required_conventions":41},"v0.1","[optional: package, app, directory, or domain to refactor]",[42],"alignment-page","master","96e2912af886dd1606b1b97df707715aef062b02","packs\u002Fcode-quality\u002Fclaude\u002Fextract-shared-types",0,"https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills","https:\u002F\u002Fagentic-skills-blush.vercel.app","https:\u002F\u002Fgithub.com\u002FGeorgeQLe","georgeqle.com","George Le is a futurist and serial tech entrepreneur who wants to work toward a world where humanity is free from robotic tasks.","2026-11-10 04:07:24",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add GeorgeQLe\u002Fagentic-skills --skill extract-shared-types",{"tool":59,"command":60},"bunx","bunx skills add GeorgeQLe\u002Fagentic-skills --skill extract-shared-types",{"tool":62,"command":63},"pnpm","pnpm dlx skills add GeorgeQLe\u002Fagentic-skills --skill extract-shared-types","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Fpacks\u002Fcode-quality\u002Fclaude\u002Fextract-shared-types\u002FSKILL.md",true,[67,73],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"ALIGNMENT-PAGE.md","REFERENCE","参考文档",52504,"https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Fpacks\u002Fcode-quality\u002Fclaude\u002Fextract-shared-types\u002FALIGNMENT-PAGE.md",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"CHANGELOG.md",311,"https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Fpacks\u002Fcode-quality\u002Fclaude\u002Fextract-shared-types\u002FCHANGELOG.md",[78,90,100,112,127,138],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":34},"01M6G0NJES15RJKZE6YZ0TSYGF","source-checkout-allowed","Valid source-checkout-only fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fsource-checkout-allowed\u002FSKILL.md",[],[85,86,87,88,28,89],"source checkout allowed","checkout","fixture","only","valid",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":34},"01M6G0NFZ3R1MNB1E3DVTM0WB7","deck-install-valid","Valid deck install fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fdeck-install\u002FSKILL.md",[],[97,98,99,89,87,28],"deck install valid","deck","install",{"skillNo":101,"name":102,"nameZh":6,"description":103,"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":106,"publishedAt":34},"01M6G0ND3QZQC4MDZ9NVB97PT2","codex-pack-guard-valid","Valid Codex Pack Availability Guard fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-pack-guard\u002FSKILL.md",[],[107,108,109,89,110,111,87,28],"codex pack guard valid","pack","guard","codex","availability",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":34},"01M6G0NA9YB3NKGZKD3S96JMNB","codex-missing-skill-valid","Valid Codex missing skill fallback fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-missing-skill-fallback\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[124,125,89,110,28,126,87],"codex missing skill valid","missing","fallback",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":134,"publishedAt":34},"01M6G0N7PC0EKFD40ZWQAXSAQ9","codex-base-skill-fallback-valid","Valid Codex base skill fallback fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fcodex-base-skill-fallback\u002FSKILL.md",[133],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},[89,110,126,135,136,137,28,87],"base skill","codex base skill fallback valid","base",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":34},"01M6G0N4VRR2YKZQ6N3Y6S2BQA","claude-pack-guard-valid","Valid Claude Pack Availability Guard fixture.","https:\u002F\u002Fgithub.com\u002FGeorgeQLe\u002Fagentic-skills\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fskill-install-routing\u002Fvalid\u002Fclaude-pack-guard\u002FSKILL.md",[],[89,109,108,145,111,28,87],"claude pack guard valid"]