[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DW04VSSMF0HC9VJS99XFEW":3,"skill-same:01M6DW04VSSMF0HC9VJS99XFEW":49},{"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":22,"linkOnly":23,"markdownContent":24,"markdownBody":25,"frontMatter":26,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":33,"ownerDescription":6,"updatedAt":34,"install":35,"resources":48},"01M6DW04VSSMF0HC9VJS99XFEW","long-body",null,"A skill whose body exceeds the recommended line ceiling.","FabienSalles\u002Fclaude-marketplace","FabienSalles","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F937901?v=4","01M6DVJBD31CJKRB382FQFZ5FH","Fabien Salles","01M6DVJBQNY8Q18KJD1ESAD6TX",9,"MIT","https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fskills\u002Ftests\u002Ffixtures\u002Flong-body\u002FSKILL.md",[],[19,20,21],"long","long body","line","2026-11-10 10:12:30",false,"---\nname: long-body\ndescription: \"A skill whose body exceeds the recommended line ceiling.\"\nlicense: MIT\n---\n\n# Long Body Skill\n\nLine 1.\nLine 2.\nLine 3.\nLine 4.\nLine 5.\nLine 6.\nLine 7.\nLine 8.\nLine 9.\nLine 10.\nLine 11.\nLine 12.\nLine 13.\nLine 14.\nLine 15.\nLine 16.\nLine 17.\nLine 18.\nLine 19.\nLine 20.\nLine 21.\nLine 22.\nLine 23.\nLine 24.\nLine 25.\nLine 26.\nLine 27.\nLine 28.\nLine 29.\nLine 30.\nLine 31.\nLine 32.\nLine 33.\nLine 34.\nLine 35.\nLine 36.\nLine 37.\nLine 38.\nLine 39.\nLine 40.\nLine 41.\nLine 42.\nLine 43.\nLine 44.\nLine 45.\nLine 46.\nLine 47.\nLine 48.\nLine 49.\nLine 50.\nLine 51.\nLine 52.\nLine 53.\nLine 54.\nLine 55.\nLine 56.\nLine 57.\nLine 58.\nLine 59.\nLine 60.\nLine 61.\nLine 62.\nLine 63.\nLine 64.\nLine 65.\nLine 66.\nLine 67.\nLine 68.\nLine 69.\nLine 70.\nLine 71.\nLine 72.\nLine 73.\nLine 74.\nLine 75.\nLine 76.\nLine 77.\nLine 78.\nLine 79.\nLine 80.\nLine 81.\nLine 82.\nLine 83.\nLine 84.\nLine 85.\nLine 86.\nLine 87.\nLine 88.\nLine 89.\nLine 90.\nLine 91.\nLine 92.\nLine 93.\nLine 94.\nLine 95.\nLine 96.\nLine 97.\nLine 98.\nLine 99.\nLine 100.\nLine 101.\nLine 102.\nLine 103.\nLine 104.\nLine 105.\nLine 106.\nLine 107.\nLine 108.\nLine 109.\nLine 110.\nLine 111.\nLine 112.\nLine 113.\nLine 114.\nLine 115.\nLine 116.\nLine 117.\nLine 118.\nLine 119.\nLine 120.\nLine 121.\nLine 122.\nLine 123.\nLine 124.\nLine 125.\nLine 126.\nLine 127.\nLine 128.\nLine 129.\nLine 130.\nLine 131.\nLine 132.\nLine 133.\nLine 134.\nLine 135.\nLine 136.\nLine 137.\nLine 138.\nLine 139.\nLine 140.\nLine 141.\nLine 142.\nLine 143.\nLine 144.\nLine 145.\nLine 146.\nLine 147.\nLine 148.\nLine 149.\nLine 150.\nLine 151.\nLine 152.\nLine 153.\nLine 154.\nLine 155.\nLine 156.\nLine 157.\nLine 158.\nLine 159.\nLine 160.\nLine 161.\nLine 162.\nLine 163.\nLine 164.\nLine 165.\nLine 166.\nLine 167.\nLine 168.\nLine 169.\nLine 170.\nLine 171.\nLine 172.\nLine 173.\nLine 174.\nLine 175.\nLine 176.\nLine 177.\nLine 178.\nLine 179.\nLine 180.\nLine 181.\nLine 182.\nLine 183.\nLine 184.\nLine 185.\nLine 186.\nLine 187.\nLine 188.\nLine 189.\nLine 190.\nLine 191.\nLine 192.\nLine 193.\nLine 194.\nLine 195.\nLine 196.\nLine 197.\nLine 198.\nLine 199.\nLine 200.\nLine 201.\nLine 202.\nLine 203.\nLine 204.\nLine 205.\nLine 206.\nLine 207.\nLine 208.\nLine 209.\nLine 210.\nLine 211.\nLine 212.\nLine 213.\nLine 214.\nLine 215.\nLine 216.\nLine 217.\nLine 218.\nLine 219.\nLine 220.\nLine 221.\nLine 222.\nLine 223.\nLine 224.\nLine 225.\nLine 226.\nLine 227.\nLine 228.\nLine 229.\nLine 230.\nLine 231.\nLine 232.\nLine 233.\nLine 234.\nLine 235.\nLine 236.\nLine 237.\nLine 238.\nLine 239.\nLine 240.\nLine 241.\nLine 242.\nLine 243.\nLine 244.\nLine 245.\nLine 246.\nLine 247.\nLine 248.\nLine 249.\nLine 250.\nLine 251.\nLine 252.\nLine 253.\nLine 254.\nLine 255.\nLine 256.\nLine 257.\nLine 258.\nLine 259.\nLine 260.\nLine 261.\nLine 262.\nLine 263.\nLine 264.\nLine 265.\nLine 266.\nLine 267.\nLine 268.\nLine 269.\nLine 270.\nLine 271.\nLine 272.\nLine 273.\nLine 274.\nLine 275.\nLine 276.\nLine 277.\nLine 278.\nLine 279.\nLine 280.\nLine 281.\nLine 282.\nLine 283.\nLine 284.\nLine 285.\nLine 286.\nLine 287.\nLine 288.\nLine 289.\nLine 290.\nLine 291.\nLine 292.\nLine 293.\nLine 294.\nLine 295.\nLine 296.\nLine 297.\nLine 298.\nLine 299.\nLine 300.\nLine 301.\nLine 302.\nLine 303.\nLine 304.\nLine 305.\nLine 306.\nLine 307.\nLine 308.\nLine 309.\nLine 310.\nLine 311.\nLine 312.\nLine 313.\nLine 314.\nLine 315.\nLine 316.\nLine 317.\nLine 318.\nLine 319.\nLine 320.\nLine 321.\nLine 322.\nLine 323.\nLine 324.\nLine 325.\nLine 326.\nLine 327.\nLine 328.\nLine 329.\nLine 330.\nLine 331.\nLine 332.\nLine 333.\nLine 334.\nLine 335.\nLine 336.\nLine 337.\nLine 338.\nLine 339.\nLine 340.\nLine 341.\nLine 342.\nLine 343.\nLine 344.\nLine 345.\nLine 346.\nLine 347.\nLine 348.\nLine 349.\nLine 350.\nLine 351.\nLine 352.\nLine 353.\nLine 354.\nLine 355.\nLine 356.\nLine 357.\nLine 358.\nLine 359.\nLine 360.\nLine 361.\nLine 362.\nLine 363.\nLine 364.\nLine 365.\nLine 366.\nLine 367.\nLine 368.\nLine 369.\nLine 370.\nLine 371.\nLine 372.\nLine 373.\nLine 374.\nLine 375.\nLine 376.\nLine 377.\nLine 378.\nLine 379.\nLine 380.\nLine 381.\nLine 382.\nLine 383.\nLine 384.\nLine 385.\nLine 386.\nLine 387.\nLine 388.\nLine 389.\nLine 390.\nLine 391.\nLine 392.\nLine 393.\nLine 394.\nLine 395.\nLine 396.\nLine 397.\nLine 398.\nLine 399.\nLine 400.\nLine 401.\nLine 402.\nLine 403.\nLine 404.\nLine 405.\nLine 406.\nLine 407.\nLine 408.\nLine 409.\nLine 410.\nLine 411.\nLine 412.\nLine 413.\nLine 414.\nLine 415.\nLine 416.\nLine 417.\nLine 418.\nLine 419.\nLine 420.\nLine 421.\nLine 422.\nLine 423.\nLine 424.\nLine 425.\nLine 426.\nLine 427.\nLine 428.\nLine 429.\nLine 430.\nLine 431.\nLine 432.\nLine 433.\nLine 434.\nLine 435.\nLine 436.\nLine 437.\nLine 438.\nLine 439.\nLine 440.\nLine 441.\nLine 442.\nLine 443.\nLine 444.\nLine 445.\nLine 446.\nLine 447.\nLine 448.\nLine 449.\nLine 450.\nLine 451.\nLine 452.\nLine 453.\nLine 454.\nLine 455.\nLine 456.\nLine 457.\nLine 458.\nLine 459.\nLine 460.\nLine 461.\nLine 462.\nLine 463.\nLine 464.\nLine 465.\nLine 466.\nLine 467.\nLine 468.\nLine 469.\nLine 470.\nLine 471.\nLine 472.\nLine 473.\nLine 474.\nLine 475.\nLine 476.\nLine 477.\nLine 478.\nLine 479.\nLine 480.\nLine 481.\nLine 482.\nLine 483.\nLine 484.\nLine 485.\nLine 486.\nLine 487.\nLine 488.\nLine 489.\nLine 490.\nLine 491.\nLine 492.\nLine 493.\nLine 494.\nLine 495.\n","# Long Body Skill\n\nLine 1.\nLine 2.\nLine 3.\nLine 4.\nLine 5.\nLine 6.\nLine 7.\nLine 8.\nLine 9.\nLine 10.\nLine 11.\nLine 12.\nLine 13.\nLine 14.\nLine 15.\nLine 16.\nLine 17.\nLine 18.\nLine 19.\nLine 20.\nLine 21.\nLine 22.\nLine 23.\nLine 24.\nLine 25.\nLine 26.\nLine 27.\nLine 28.\nLine 29.\nLine 30.\nLine 31.\nLine 32.\nLine 33.\nLine 34.\nLine 35.\nLine 36.\nLine 37.\nLine 38.\nLine 39.\nLine 40.\nLine 41.\nLine 42.\nLine 43.\nLine 44.\nLine 45.\nLine 46.\nLine 47.\nLine 48.\nLine 49.\nLine 50.\nLine 51.\nLine 52.\nLine 53.\nLine 54.\nLine 55.\nLine 56.\nLine 57.\nLine 58.\nLine 59.\nLine 60.\nLine 61.\nLine 62.\nLine 63.\nLine 64.\nLine 65.\nLine 66.\nLine 67.\nLine 68.\nLine 69.\nLine 70.\nLine 71.\nLine 72.\nLine 73.\nLine 74.\nLine 75.\nLine 76.\nLine 77.\nLine 78.\nLine 79.\nLine 80.\nLine 81.\nLine 82.\nLine 83.\nLine 84.\nLine 85.\nLine 86.\nLine 87.\nLine 88.\nLine 89.\nLine 90.\nLine 91.\nLine 92.\nLine 93.\nLine 94.\nLine 95.\nLine 96.\nLine 97.\nLine 98.\nLine 99.\nLine 100.\nLine 101.\nLine 102.\nLine 103.\nLine 104.\nLine 105.\nLine 106.\nLine 107.\nLine 108.\nLine 109.\nLine 110.\nLine 111.\nLine 112.\nLine 113.\nLine 114.\nLine 115.\nLine 116.\nLine 117.\nLine 118.\nLine 119.\nLine 120.\nLine 121.\nLine 122.\nLine 123.\nLine 124.\nLine 125.\nLine 126.\nLine 127.\nLine 128.\nLine 129.\nLine 130.\nLine 131.\nLine 132.\nLine 133.\nLine 134.\nLine 135.\nLine 136.\nLine 137.\nLine 138.\nLine 139.\nLine 140.\nLine 141.\nLine 142.\nLine 143.\nLine 144.\nLine 145.\nLine 146.\nLine 147.\nLine 148.\nLine 149.\nLine 150.\nLine 151.\nLine 152.\nLine 153.\nLine 154.\nLine 155.\nLine 156.\nLine 157.\nLine 158.\nLine 159.\nLine 160.\nLine 161.\nLine 162.\nLine 163.\nLine 164.\nLine 165.\nLine 166.\nLine 167.\nLine 168.\nLine 169.\nLine 170.\nLine 171.\nLine 172.\nLine 173.\nLine 174.\nLine 175.\nLine 176.\nLine 177.\nLine 178.\nLine 179.\nLine 180.\nLine 181.\nLine 182.\nLine 183.\nLine 184.\nLine 185.\nLine 186.\nLine 187.\nLine 188.\nLine 189.\nLine 190.\nLine 191.\nLine 192.\nLine 193.\nLine 194.\nLine 195.\nLine 196.\nLine 197.\nLine 198.\nLine 199.\nLine 200.\nLine 201.\nLine 202.\nLine 203.\nLine 204.\nLine 205.\nLine 206.\nLine 207.\nLine 208.\nLine 209.\nLine 210.\nLine 211.\nLine 212.\nLine 213.\nLine 214.\nLine 215.\nLine 216.\nLine 217.\nLine 218.\nLine 219.\nLine 220.\nLine 221.\nLine 222.\nLine 223.\nLine 224.\nLine 225.\nLine 226.\nLine 227.\nLine 228.\nLine 229.\nLine 230.\nLine 231.\nLine 232.\nLine 233.\nLine 234.\nLine 235.\nLine 236.\nLine 237.\nLine 238.\nLine 239.\nLine 240.\nLine 241.\nLine 242.\nLine 243.\nLine 244.\nLine 245.\nLine 246.\nLine 247.\nLine 248.\nLine 249.\nLine 250.\nLine 251.\nLine 252.\nLine 253.\nLine 254.\nLine 255.\nLine 256.\nLine 257.\nLine 258.\nLine 259.\nLine 260.\nLine 261.\nLine 262.\nLine 263.\nLine 264.\nLine 265.\nLine 266.\nLine 267.\nLine 268.\nLine 269.\nLine 270.\nLine 271.\nLine 272.\nLine 273.\nLine 274.\nLine 275.\nLine 276.\nLine 277.\nLine 278.\nLine 279.\nLine 280.\nLine 281.\nLine 282.\nLine 283.\nLine 284.\nLine 285.\nLine 286.\nLine 287.\nLine 288.\nLine 289.\nLine 290.\nLine 291.\nLine 292.\nLine 293.\nLine 294.\nLine 295.\nLine 296.\nLine 297.\nLine 298.\nLine 299.\nLine 300.\nLine 301.\nLine 302.\nLine 303.\nLine 304.\nLine 305.\nLine 306.\nLine 307.\nLine 308.\nLine 309.\nLine 310.\nLine 311.\nLine 312.\nLine 313.\nLine 314.\nLine 315.\nLine 316.\nLine 317.\nLine 318.\nLine 319.\nLine 320.\nLine 321.\nLine 322.\nLine 323.\nLine 324.\nLine 325.\nLine 326.\nLine 327.\nLine 328.\nLine 329.\nLine 330.\nLine 331.\nLine 332.\nLine 333.\nLine 334.\nLine 335.\nLine 336.\nLine 337.\nLine 338.\nLine 339.\nLine 340.\nLine 341.\nLine 342.\nLine 343.\nLine 344.\nLine 345.\nLine 346.\nLine 347.\nLine 348.\nLine 349.\nLine 350.\nLine 351.\nLine 352.\nLine 353.\nLine 354.\nLine 355.\nLine 356.\nLine 357.\nLine 358.\nLine 359.\nLine 360.\nLine 361.\nLine 362.\nLine 363.\nLine 364.\nLine 365.\nLine 366.\nLine 367.\nLine 368.\nLine 369.\nLine 370.\nLine 371.\nLine 372.\nLine 373.\nLine 374.\nLine 375.\nLine 376.\nLine 377.\nLine 378.\nLine 379.\nLine 380.\nLine 381.\nLine 382.\nLine 383.\nLine 384.\nLine 385.\nLine 386.\nLine 387.\nLine 388.\nLine 389.\nLine 390.\nLine 391.\nLine 392.\nLine 393.\nLine 394.\nLine 395.\nLine 396.\nLine 397.\nLine 398.\nLine 399.\nLine 400.\nLine 401.\nLine 402.\nLine 403.\nLine 404.\nLine 405.\nLine 406.\nLine 407.\nLine 408.\nLine 409.\nLine 410.\nLine 411.\nLine 412.\nLine 413.\nLine 414.\nLine 415.\nLine 416.\nLine 417.\nLine 418.\nLine 419.\nLine 420.\nLine 421.\nLine 422.\nLine 423.\nLine 424.\nLine 425.\nLine 426.\nLine 427.\nLine 428.\nLine 429.\nLine 430.\nLine 431.\nLine 432.\nLine 433.\nLine 434.\nLine 435.\nLine 436.\nLine 437.\nLine 438.\nLine 439.\nLine 440.\nLine 441.\nLine 442.\nLine 443.\nLine 444.\nLine 445.\nLine 446.\nLine 447.\nLine 448.\nLine 449.\nLine 450.\nLine 451.\nLine 452.\nLine 453.\nLine 454.\nLine 455.\nLine 456.\nLine 457.\nLine 458.\nLine 459.\nLine 460.\nLine 461.\nLine 462.\nLine 463.\nLine 464.\nLine 465.\nLine 466.\nLine 467.\nLine 468.\nLine 469.\nLine 470.\nLine 471.\nLine 472.\nLine 473.\nLine 474.\nLine 475.\nLine 476.\nLine 477.\nLine 478.\nLine 479.\nLine 480.\nLine 481.\nLine 482.\nLine 483.\nLine 484.\nLine 485.\nLine 486.\nLine 487.\nLine 488.\nLine 489.\nLine 490.\nLine 491.\nLine 492.\nLine 493.\nLine 494.\nLine 495.\n",{"name":5,"license":15,"description":7},"main","479b264ec17cc5fafbf36287a1087472d3a386d3","plugins\u002Fskills\u002Ftests\u002Ffixtures\u002Flong-body",2,"https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace","https:\u002F\u002Fgithub.com\u002FFabienSalles","https:\u002F\u002Ffabiensalles.com","2026-10-13 04:33:22",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add FabienSalles\u002Fclaude-marketplace --skill long-body",{"tool":41,"command":42},"bunx","bunx skills add FabienSalles\u002Fclaude-marketplace --skill long-body",{"tool":44,"command":45},"pnpm","pnpm dlx skills add FabienSalles\u002Fclaude-marketplace --skill long-body","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fskills\u002Ftests\u002Ffixtures\u002Flong-body\u002FSKILL.md",true,[],[50,82,101,122,145,162],{"skillNo":51,"name":52,"nameZh":6,"description":53,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":61,"publishedAt":22},"01M6DW2YS1MGF65JNS1QQ15QHS","vitest-test-conventions","ACTIVATE when writing Vitest tests, creating test files, using vi.fn()\u002Fvi.mock()\u002Fvi.spyOn(), or test factories. ACTIVATE for 'Vitest', 'it.each', 'NestJS testing module', 'supertest', 'vi.fn', 'vi.mock', 'spyOn'. Provides Vitest\u002FNestJS-specific testing patterns; cross-language testing principles (DAMP, AAA, spy over mock, what NOT to test) live in craft:testing-principles. DO NOT use for: node:test files (a file importing node:test) or a project whose tests run under node --test (see node-test:node-test-conventions), TDD workflow\u002Fiterations (see vitest:vitest-tdd-workflow), PHP\u002FPHPUnit tests (see phpunit:php-test-conventions).","https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fvitest\u002Fskills\u002Fvitest-test-conventions\u002FSKILL.md",[56],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81],"test","vitest","conventions","vitest test conventions","testing","writing","tdd","workflow","file","testing patterns","use","files","nestjs","activate","do","project","tests","module","fn","testing principles",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":91,"publishedAt":22},"01M6DW2VFE6NPFCGQKQ68P1MVZ","vitest-tdd-workflow","ACTIVATE when building new features, endpoints, or user stories using TDD with Vitest in a TypeScript\u002FNestJS context. ACTIVATE for '\u002Ffeature-tdd-dev', 'TDD', 'red-green-refactor' in TS context. Provides Vitest\u002FNestJS-specific TDD examples and commands; cross-language TDD workflow (cross-layer iterations, RED-GREEN-REFACTOR, working app, bug-fix-first-test, mocks-hiding-bugs) lives in craft:tdd-workflow-principles. DO NOT use for: node:test files (a file importing node:test) or a project whose tests run under node --test (see node-test:node-test-conventions), test writing conventions (see vitest:vitest-test-conventions), PHP TDD (see phpunit:php-tdd-workflow).","https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fvitest\u002Fskills\u002Fvitest-tdd-workflow\u002FSKILL.md",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":59,"taxonomyTypeDesc":60},"01JBSEEDCAT000000000000023","Skill与智能体开发",[68,69,92,63,93,67,94,70,95,96,72,97,73,75,76,98,77,78,99,100],"tdd workflow","vitest tdd workflow","dev","examples","fix","red-green-refactor","green","feature","app",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":22},"01M6DW2RGMQE10D8C5Z5MA2RMY","ts-refactoring","ACTIVATE when refactoring TypeScript code. ACTIVATE for 'refactor', 'extract', 'redesign', 'simplify', or 'clean up' in a TypeScript \u002F Node \u002F NestJS context. This skill provides TS-specific examples for the cross-language refactoring rules defined in craft:refactoring-principles. DO NOT use for: writing new features from scratch, general OOP patterns (see ts-oop).","https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Ftypescript\u002Fskills\u002Fts-refactoring\u002FSKILL.md",[],[108,109,67,110,111,95,112,113,114,115,116,72,117,118,119,74,120,75,76,121],"refactoring","ts refactoring","typescript","code","refactor","simplify","Rules","node","redesign","up","general","clean","craft","patterns",{"skillNo":123,"name":124,"nameZh":6,"description":125,"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":129,"publishedAt":22},"01M6DW2MHYXNBBVYEGB058Y48J","ts-ports-adapters","ACTIVATE when a TypeScript codebase with no dependency-injection container has to declare a port and wire its adapter — a repository, a clock, an id generator, an event dispatcher the domain depends on. ACTIVATE for 'port', 'adapter', 'SPI', 'dependency inversion' or 'composition root' in a codebase that wires its dependencies by hand. Covers: the port as a type of functions in the domain layer, the adapter as an object literal annotated with it, the handler that takes its dependencies first and its data second, the composition root in the infrastructure layer, and the in-memory stub that substitutes for the adapter in a unit test. DO NOT use for: NestJS, or any container-based DI with decorators and tokens (see nest-ddd-conventions), aggregate operations and smart constructors (see ddd-ts-fp), the Result type itself (see ts-functional).","https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Ftypescript\u002Fskills\u002Fts-ports-adapters\u002FSKILL.md",[128],{"categoryNo":57,"categoryName":58,"taxonomyType":59,"taxonomyTypeDesc":60},[130,131,132,62,133,134,72,135,136,74,137,75,76,138,139,140,141,142,143,144],"ports","ts ports adapters","memory","ddd","Composition","container","functions","Literal","dependency-injection","domain","tokens","as","type","id","adapter",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":22},"01M6DW2GRXZFYT05HEDB26C9B8","ts-oop","ACTIVATE when designing TypeScript classes, and the value objects or collections modelled as classes, or when the user asks about object design, encapsulation, Tell Don't Ask, or Symbol.iterator. Provides TS-specific examples for the cross-language OOP rules defined in craft:oop-principles, plus TS-specific patterns (Symbol.iterator, branded types for primitive identifiers). DO NOT use for: a value object or an aggregate modelled as an immutable record rather than a class (see ddd-ts-fp), refactoring methodology (see ts-refactoring).","https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Ftypescript\u002Fskills\u002Fts-oop\u002FSKILL.md",[],[152,153,154,110,133,95,155,156,108,114,157,72,158,120,75,76,159,160,161,141],"oop","ts oop","design","methodology","immutable","ask","refactoring methodology","objects","record","collections",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":22},"01M6DW2D26XG5MJMTP9MSE43S2","ts-layer-boundaries","ACTIVATE when wiring a Worker entry point, a Router, a controller, or a domain event consumer in a TypeScript CQRS codebase, or when deciding where a port belongs. ACTIVATE for 'composition root', 'layer boundary', 'ESLint zones', 'domain must not import infrastructure'. Covers: the *Worker.ts composition root, the curried consumer, Router wiring of command endpoints, the five-gesture controller, the domain-to-infrastructure import boundary enforced by ESLint, infrastructure-only ports, in-memory doubles for every port, the read-can-reach-write asymmetry, and read endpoints going through a domain handler. DO NOT use for: the port's own shape and adapter binding (see ts-ports-adapters), the Result type (see ts-functional), domain event structure (see ts-ddd-events).","https:\u002F\u002Fgithub.com\u002FFabienSalles\u002Fclaude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Ftypescript\u002Fskills\u002Fts-layer-boundaries\u002FSKILL.md",[],[169,132,133,170,171,134,130,72,172,173,174,75,76,175,139,176,177,142,144,178],"ts layer boundaries","controller","boundary","router","only","endpoints","structure","cqrs","worker","import"]