[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70GGWA5CNWPMR00APMPDCVJ":3,"skill-same:01M70GGWA5CNWPMR00APMPDCVJ":66},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M70GGWA5CNWPMR00APMPDCVJ","nestjs-patterns",null,"NestJS architecture patterns for modules, controllers, providers, DTO validation, guards, interceptors, config, and production-grade TypeScript backends. Use when building or reviewing a NestJS backend — modules, providers, DTO validation, guards, or interceptors.","mdnaimul22\u002Fhuman-skills","mdnaimul22","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F64520358?v=4","01M70FH95MH2H796Q01TYSFZ03","Naimul","01M70FH96798CQR4YHA13F17GA",3,"MIT","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Faffaan-m_ECC\u002Fnestjs-patterns\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"nestjs patterns","nestjs","patterns","Production","validation","backend","use","for","interceptors","Providers","architecture patterns","nestjs architecture","typescript","config","architecture","when","dto","modules","2026-11-10 10:12:30",false,"---\nname: nestjs-patterns\ndescription: NestJS architecture patterns for modules, controllers, providers, DTO validation, guards, interceptors, config, and production-grade TypeScript backends. Use when building or reviewing a NestJS backend — modules, providers, DTO validation, guards, or interceptors.\nmetadata:\n  origin: ECC\n---\n\n# NestJS Development Patterns\n\nProduction-grade NestJS patterns for modular TypeScript backends.\n\n## When to Activate\n\n- Building NestJS APIs or services\n- Structuring modules, controllers, and providers\n- Adding DTO validation, guards, interceptors, or exception filters\n- Configuring environment-aware settings and database integrations\n- Testing NestJS units or HTTP endpoints\n\n## Project Structure\n\n```text\nsrc\u002F\n├── app.module.ts\n├── main.ts\n├── common\u002F\n│   ├── filters\u002F\n│   ├── guards\u002F\n│   ├── interceptors\u002F\n│   └── pipes\u002F\n├── config\u002F\n│   ├── configuration.ts\n│   └── validation.ts\n├── modules\u002F\n│   ├── auth\u002F\n│   │   ├── auth.controller.ts\n│   │   ├── auth.module.ts\n│   │   ├── auth.service.ts\n│   │   ├── dto\u002F\n│   │   ├── guards\u002F\n│   │   └── strategies\u002F\n│   └── users\u002F\n│       ├── dto\u002F\n│       ├── entities\u002F\n│       ├── users.controller.ts\n│       ├── users.module.ts\n│       └── users.service.ts\n└── prisma\u002F or database\u002F\n```\n\n- Keep domain code inside feature modules.\n- Put cross-cutting filters, decorators, guards, and interceptors in `common\u002F`.\n- Keep DTOs close to the module that owns them.\n\n## Bootstrap and Global Validation\n\n```ts\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule, { bufferLogs: true });\n\n  app.useGlobalPipes(\n    new ValidationPipe({\n      whitelist: true,\n      forbidNonWhitelisted: true,\n      transform: true,\n      transformOptions: { enableImplicitConversion: true },\n    }),\n  );\n\n  app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector)));\n  app.useGlobalFilters(new HttpExceptionFilter());\n\n  await app.listen(process.env.PORT ?? 3000);\n}\nbootstrap();\n```\n\n- Always enable `whitelist` and `forbidNonWhitelisted` on public APIs.\n- Prefer one global validation pipe instead of repeating validation config per route.\n\n## Modules, Controllers, and Providers\n\n```ts\n@Module({\n  controllers: [UsersController],\n  providers: [UsersService],\n  exports: [UsersService],\n})\nexport class UsersModule {}\n\n@Controller('users')\nexport class UsersController {\n  constructor(private readonly usersService: UsersService) {}\n\n  @Get(':id')\n  getById(@Param('id', ParseUUIDPipe) id: string) {\n    return this.usersService.getById(id);\n  }\n\n  @Post()\n  create(@Body() dto: CreateUserDto) {\n    return this.usersService.create(dto);\n  }\n}\n\n@Injectable()\nexport class UsersService {\n  constructor(private readonly usersRepo: UsersRepository) {}\n\n  async create(dto: CreateUserDto) {\n    return this.usersRepo.create(dto);\n  }\n}\n```\n\n- Controllers should stay thin: parse HTTP input, call a provider, return response DTOs.\n- Put business logic in injectable services, not controllers.\n- Export only the providers other modules genuinely need.\n\n## DTOs and Validation\n\n```ts\nexport class CreateUserDto {\n  @IsEmail()\n  email!: string;\n\n  @IsString()\n  @Length(2, 80)\n  name!: string;\n\n  @IsOptional()\n  @IsEnum(UserRole)\n  role?: UserRole;\n}\n```\n\n- Validate every request DTO with `class-validator`.\n- Use dedicated response DTOs or serializers instead of returning ORM entities directly.\n- Avoid leaking internal fields such as password hashes, tokens, or audit columns.\n\n## Auth, Guards, and Request Context\n\n```ts\n@UseGuards(JwtAuthGuard, RolesGuard)\n@Roles('admin')\n@Get('admin\u002Freport')\ngetAdminReport(@Req() req: AuthenticatedRequest) {\n  return this.reportService.getForUser(req.user.id);\n}\n```\n\n- Keep auth strategies and guards module-local unless they are truly shared.\n- Encode coarse access rules in guards, then do resource-specific authorization in services.\n- Prefer explicit request types for authenticated request objects.\n\n## Exception Filters and Error Shape\n\n```ts\n@Catch()\nexport class HttpExceptionFilter implements ExceptionFilter {\n  catch(exception: unknown, host: ArgumentsHost) {\n    const response = host.switchToHttp().getResponse\u003CResponse>();\n    const request = host.switchToHttp().getRequest\u003CRequest>();\n\n    if (exception instanceof HttpException) {\n      return response.status(exception.getStatus()).json({\n        path: request.url,\n        error: exception.getResponse(),\n      });\n    }\n\n    return response.status(500).json({\n      path: request.url,\n      error: 'Internal server error',\n    });\n  }\n}\n```\n\n- Keep one consistent error envelope across the API.\n- Throw framework exceptions for expected client errors; log and wrap unexpected failures centrally.\n\n## Config and Environment Validation\n\n```ts\nConfigModule.forRoot({\n  isGlobal: true,\n  load: [configuration],\n  validate: validateEnv,\n});\n```\n\n- Validate env at boot, not lazily at first request.\n- Keep config access behind typed helpers or config services.\n- Split dev\u002Fstaging\u002Fprod concerns in config factories instead of branching throughout feature code.\n\n## Persistence and Transactions\n\n- Keep repository \u002F ORM code behind providers that speak domain language.\n- For Prisma or TypeORM, isolate transactional workflows in services that own the unit of work.\n- Do not let controllers coordinate multi-step writes directly.\n\n## Testing\n\n```ts\ndescribe('UsersController', () => {\n  let app: INestApplication;\n\n  beforeAll(async () => {\n    const moduleRef = await Test.createTestingModule({\n      imports: [UsersModule],\n    }).compile();\n\n    app = moduleRef.createNestApplication();\n    app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));\n    await app.init();\n  });\n});\n```\n\n- Unit test providers in isolation with mocked dependencies.\n- Add request-level tests for guards, validation pipes, and exception filters.\n- Reuse the same global pipes\u002Ffilters in tests that you use in production.\n\n## Production Defaults\n\n- Enable structured logging and request correlation ids.\n- Terminate on invalid env\u002Fconfig instead of booting partially.\n- Prefer async provider initialization for DB\u002Fcache clients with explicit health checks.\n- Keep background jobs and event consumers in their own modules, not inside HTTP controllers.\n- Make rate limiting, auth, and audit logging explicit for public endpoints.\n","# NestJS Development Patterns\n\nProduction-grade NestJS patterns for modular TypeScript backends.\n\n## When to Activate\n\n- Building NestJS APIs or services\n- Structuring modules, controllers, and providers\n- Adding DTO validation, guards, interceptors, or exception filters\n- Configuring environment-aware settings and database integrations\n- Testing NestJS units or HTTP endpoints\n\n## Project Structure\n\n```text\nsrc\u002F\n├── app.module.ts\n├── main.ts\n├── common\u002F\n│   ├── filters\u002F\n│   ├── guards\u002F\n│   ├── interceptors\u002F\n│   └── pipes\u002F\n├── config\u002F\n│   ├── configuration.ts\n│   └── validation.ts\n├── modules\u002F\n│   ├── auth\u002F\n│   │   ├── auth.controller.ts\n│   │   ├── auth.module.ts\n│   │   ├── auth.service.ts\n│   │   ├── dto\u002F\n│   │   ├── guards\u002F\n│   │   └── strategies\u002F\n│   └── users\u002F\n│       ├── dto\u002F\n│       ├── entities\u002F\n│       ├── users.controller.ts\n│       ├── users.module.ts\n│       └── users.service.ts\n└── prisma\u002F or database\u002F\n```\n\n- Keep domain code inside feature modules.\n- Put cross-cutting filters, decorators, guards, and interceptors in `common\u002F`.\n- Keep DTOs close to the module that owns them.\n\n## Bootstrap and Global Validation\n\n```ts\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule, { bufferLogs: true });\n\n  app.useGlobalPipes(\n    new ValidationPipe({\n      whitelist: true,\n      forbidNonWhitelisted: true,\n      transform: true,\n      transformOptions: { enableImplicitConversion: true },\n    }),\n  );\n\n  app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector)));\n  app.useGlobalFilters(new HttpExceptionFilter());\n\n  await app.listen(process.env.PORT ?? 3000);\n}\nbootstrap();\n```\n\n- Always enable `whitelist` and `forbidNonWhitelisted` on public APIs.\n- Prefer one global validation pipe instead of repeating validation config per route.\n\n## Modules, Controllers, and Providers\n\n```ts\n@Module({\n  controllers: [UsersController],\n  providers: [UsersService],\n  exports: [UsersService],\n})\nexport class UsersModule {}\n\n@Controller('users')\nexport class UsersController {\n  constructor(private readonly usersService: UsersService) {}\n\n  @Get(':id')\n  getById(@Param('id', ParseUUIDPipe) id: string) {\n    return this.usersService.getById(id);\n  }\n\n  @Post()\n  create(@Body() dto: CreateUserDto) {\n    return this.usersService.create(dto);\n  }\n}\n\n@Injectable()\nexport class UsersService {\n  constructor(private readonly usersRepo: UsersRepository) {}\n\n  async create(dto: CreateUserDto) {\n    return this.usersRepo.create(dto);\n  }\n}\n```\n\n- Controllers should stay thin: parse HTTP input, call a provider, return response DTOs.\n- Put business logic in injectable services, not controllers.\n- Export only the providers other modules genuinely need.\n\n## DTOs and Validation\n\n```ts\nexport class CreateUserDto {\n  @IsEmail()\n  email!: string;\n\n  @IsString()\n  @Length(2, 80)\n  name!: string;\n\n  @IsOptional()\n  @IsEnum(UserRole)\n  role?: UserRole;\n}\n```\n\n- Validate every request DTO with `class-validator`.\n- Use dedicated response DTOs or serializers instead of returning ORM entities directly.\n- Avoid leaking internal fields such as password hashes, tokens, or audit columns.\n\n## Auth, Guards, and Request Context\n\n```ts\n@UseGuards(JwtAuthGuard, RolesGuard)\n@Roles('admin')\n@Get('admin\u002Freport')\ngetAdminReport(@Req() req: AuthenticatedRequest) {\n  return this.reportService.getForUser(req.user.id);\n}\n```\n\n- Keep auth strategies and guards module-local unless they are truly shared.\n- Encode coarse access rules in guards, then do resource-specific authorization in services.\n- Prefer explicit request types for authenticated request objects.\n\n## Exception Filters and Error Shape\n\n```ts\n@Catch()\nexport class HttpExceptionFilter implements ExceptionFilter {\n  catch(exception: unknown, host: ArgumentsHost) {\n    const response = host.switchToHttp().getResponse\u003CResponse>();\n    const request = host.switchToHttp().getRequest\u003CRequest>();\n\n    if (exception instanceof HttpException) {\n      return response.status(exception.getStatus()).json({\n        path: request.url,\n        error: exception.getResponse(),\n      });\n    }\n\n    return response.status(500).json({\n      path: request.url,\n      error: 'Internal server error',\n    });\n  }\n}\n```\n\n- Keep one consistent error envelope across the API.\n- Throw framework exceptions for expected client errors; log and wrap unexpected failures centrally.\n\n## Config and Environment Validation\n\n```ts\nConfigModule.forRoot({\n  isGlobal: true,\n  load: [configuration],\n  validate: validateEnv,\n});\n```\n\n- Validate env at boot, not lazily at first request.\n- Keep config access behind typed helpers or config services.\n- Split dev\u002Fstaging\u002Fprod concerns in config factories instead of branching throughout feature code.\n\n## Persistence and Transactions\n\n- Keep repository \u002F ORM code behind providers that speak domain language.\n- For Prisma or TypeORM, isolate transactional workflows in services that own the unit of work.\n- Do not let controllers coordinate multi-step writes directly.\n\n## Testing\n\n```ts\ndescribe('UsersController', () => {\n  let app: INestApplication;\n\n  beforeAll(async () => {\n    const moduleRef = await Test.createTestingModule({\n      imports: [UsersModule],\n    }).compile();\n\n    app = moduleRef.createNestApplication();\n    app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));\n    await app.init();\n  });\n});\n```\n\n- Unit test providers in isolation with mocked dependencies.\n- Add request-level tests for guards, validation pipes, and exception filters.\n- Reuse the same global pipes\u002Ffilters in tests that you use in production.\n\n## Production Defaults\n\n- Enable structured logging and request correlation ids.\n- Terminate on invalid env\u002Fconfig instead of booting partially.\n- Prefer async provider initialization for DB\u002Fcache clients with explicit health checks.\n- Keep background jobs and event consumers in their own modules, not inside HTTP controllers.\n- Make rate limiting, auth, and audit logging explicit for public endpoints.\n",{"name":5,"metadata":42,"description":7},{"origin":43},"ECC","main","74715deacdc69119d739f38916f8ee4f0f979ebf","skills\u002Fstorage\u002Faffaan-m_ECC\u002Fnestjs-patterns",0,"https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills","https:\u002F\u002Fgithub.com\u002Fmdnaimul22","AI Agents Workflows Automation | Specializing in Python, FastAPI, MCP Agents & Custom ERP.","2026-11-11 06:54:12",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add mdnaimul22\u002Fhuman-skills --skill nestjs-patterns",{"tool":58,"command":59},"bunx","bunx skills add mdnaimul22\u002Fhuman-skills --skill nestjs-patterns",{"tool":61,"command":62},"pnpm","pnpm dlx skills add mdnaimul22\u002Fhuman-skills --skill nestjs-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Faffaan-m_ECC\u002Fnestjs-patterns\u002FSKILL.md",true,[],[67,75,105,126,145,160],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":74},"01M72JT3YP1SQHD0MANGDXQ4RT","higgsfield-websites","Build, edit, and deploy full-stack websites, apps and games via the Higgsfield CLI (`higgsfield website …`). Each is a React 19 + TanStack Start SSR app in one Cloudflare Worker (D1\u002FR2\u002FKV\u002FDO\u002FContainers). THREE product types, picked via `--type` on create: `website` (standalone, no Higgsfield integration — references\u002Fwebsite-flow.md), `app` (Sign in with Higgsfield + fnf SDK, Quanta — references\u002Fapp-flow.md), `game` (realtime multiplayer rooms — references\u002Fgame-flow.md). Routes to the right flow; each carries its own rules and deploy\u002Fpublish gates.\nUse when: \"build me a website\", \"make a landing page\", \"create a web app\", \"build a SaaS dashboard \u002F portfolio\", \"make me a game\", \"deploy this site\", \"publish\". Also owns GAME ART: \"make a spritesheet\", \"tileable texture\", \"animate a 3D character\", game music\u002FSFX — see the game-* references.\nNOT for: single image\u002Fvideo\u002Faudio generation (higgsfield-generate), product photos (higgsfield-product-photoshoot), marketplace cards (higgsfield-marketplace-cards).","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fhiggsfield-ai_skills\u002Fhiggsfield-websites\u002FSKILL.md",[],[],"2026-11-10 22:39:42",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":97,"publishedAt":37},"01M70JPK8HAXXA85P7Q8NKZZYG","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fwriting-skills\u002FSKILL.md",[81,86,91,94],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",{"categoryNo":92,"categoryName":93,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":95,"categoryName":96,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000008","测试与质量",[98,99,100,101,25,102,103,34,104],"writing","writing skills","editing","deployment","Existing","new","work",{"skillNo":106,"name":107,"nameZh":6,"description":108,"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":116,"publishedAt":37},"01M70JP4PHBH1CQVVDWZ94W159","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fwriting-plans\u002FSKILL.md",[111,112,113],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},{"categoryNo":114,"categoryName":115,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000030","开发工程师",[98,117,118,119,34,120,26,25,121,122,123,124,125],"writing plans","plans","you","code","requirements","task","multi","spec","multi-step task",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":37},"01M70JNTYVGXFZT8PASZ844TH8","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fverification-before-completion\u002FSKILL.md",[],[133,134,135,136,137,138,25,139,140,141,34,142,104,143,144],"verification","verification before completion","complete","about","output","assertions","prs","evidence","claim","claims","commands","running",{"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":152,"publishedAt":37},"01M70JNGVSQDESWN0Q5BPJ875V","using-superpowers","Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fusing-superpowers\u002FSKILL.md",[151],{"categoryNo":92,"categoryName":93,"taxonomyType":84,"taxonomyTypeDesc":85},[153,154,155,156,25,34,157,158,159],"using superpowers","superpowers","conversation","how to","how","find","questions",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":37},"01M70JN57CE588NPYPYTWH1DWG","using-git-worktrees","Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback","https:\u002F\u002Fgithub.com\u002Fmdnaimul22\u002Fhuman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fstorage\u002Fobra_superpowers\u002Fusing-git-worktrees\u002FSKILL.md",[],[167,168,169,170,171,172,34,104,173,174,175,176,177,178,179,118,25,180,181],"using git worktrees","Using git","git","worktrees","git worktrees","implementation","git worktree","worktree","native","Tools","isolation","fallback","feature","via","workspace"]