[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71SREXPNH90P3P9W97798AF":3,"skill-same:01M71SREXPNH90P3P9W97798AF":295},{"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":31,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":66,"ownerHtmlUrl":67,"ownerBlogUrl":68,"ownerDescription":69,"updatedAt":70,"install":71,"resources":84},"01M71SREXPNH90P3P9W97798AF","nestjs-best-practices",null,"NestJS best practices and architecture patterns for production apps","HigorAlves\u002Forc","HigorAlves","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11262976?v=4","01M71S79EZEMHZ8PQSV0XQJHYY","Higor Alves","01M71S79FKKTCHCN1EDR8DSTWQ",7,"MIT","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"nestjs best practices","nestjs","best practices","use","production apps","for","dependency injection","architecture patterns","patterns","security","injection","refactoring","dependency","architecture","code","when","apps","writing","performance","modules","2026-11-10 13:02:02",false,"---\nname: nestjs-best-practices\ndescription: NestJS best practices and architecture patterns for production apps\nwhen_to_use: Use when writing, reviewing, or refactoring NestJS code — modules, dependency injection, security, and performance.\nlicense: MIT\nmetadata:\n  author: Kadajett\n  version: \"1.1.0\"\n---\n\n# NestJS Best Practices\n\nComprehensive best practices guide for NestJS applications. Contains 40 rules across 10 categories, prioritized by impact to guide automated refactoring and code generation.\n\n## When to Apply\n\nReference these guidelines when:\n\n- Writing new NestJS modules, controllers, or services\n- Implementing authentication and authorization\n- Reviewing code for architecture and security issues\n- Refactoring existing NestJS codebases\n- Optimizing performance or database queries\n- Building microservices architectures\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Architecture | CRITICAL | `arch-` |\n| 2 | Dependency Injection | CRITICAL | `di-` |\n| 3 | Error Handling | HIGH | `error-` |\n| 4 | Security | HIGH | `security-` |\n| 5 | Performance | HIGH | `perf-` |\n| 6 | Testing | MEDIUM-HIGH | `test-` |\n| 7 | Database & ORM | MEDIUM-HIGH | `db-` |\n| 8 | API Design | MEDIUM | `api-` |\n| 9 | Microservices | MEDIUM | `micro-` |\n| 10 | DevOps & Deployment | LOW-MEDIUM | `devops-` |\n\n## Quick Reference\n\n### 1. Architecture (CRITICAL)\n\n- `arch-avoid-circular-deps` - Avoid circular module dependencies\n- `arch-feature-modules` - Organize by feature, not technical layer\n- `arch-module-sharing` - Proper module exports\u002Fimports, avoid duplicate providers\n- `arch-single-responsibility` - Focused services over \"god services\"\n- `arch-use-repository-pattern` - Abstract database logic for testability\n- `arch-use-events` - Event-driven architecture for decoupling\n\n### 2. Dependency Injection (CRITICAL)\n\n- `di-avoid-service-locator` - Avoid service locator anti-pattern\n- `di-interface-segregation` - Interface Segregation Principle (ISP)\n- `di-liskov-substitution` - Liskov Substitution Principle (LSP)\n- `di-prefer-constructor-injection` - Constructor over property injection\n- `di-scope-awareness` - Understand singleton\u002Frequest\u002Ftransient scopes\n- `di-use-interfaces-tokens` - Use injection tokens for interfaces\n\n### 3. Error Handling (HIGH)\n\n- `error-use-exception-filters` - Centralized exception handling\n- `error-throw-http-exceptions` - Use NestJS HTTP exceptions\n- `error-handle-async-errors` - Handle async errors properly\n\n### 4. Security (HIGH)\n\n- `security-auth-jwt` - Secure JWT authentication\n- `security-validate-all-input` - Validate with class-validator\n- `security-use-guards` - Authentication and authorization guards\n- `security-sanitize-output` - Prevent XSS attacks\n- `security-rate-limiting` - Implement rate limiting\n\n### 5. Performance (HIGH)\n\n- `perf-async-hooks` - Proper async lifecycle hooks\n- `perf-use-caching` - Implement caching strategies\n- `perf-optimize-database` - Optimize database queries\n- `perf-lazy-loading` - Lazy load modules for faster startup\n\n### 6. Testing (MEDIUM-HIGH)\n\n- `test-use-testing-module` - Use NestJS testing utilities\n- `test-e2e-supertest` - E2E testing with Supertest\n- `test-mock-external-services` - Mock external dependencies\n\n### 7. Database & ORM (MEDIUM-HIGH)\n\n- `db-use-transactions` - Transaction management\n- `db-avoid-n-plus-one` - Avoid N+1 query problems\n- `db-use-migrations` - Use migrations for schema changes\n\n### 8. API Design (MEDIUM)\n\n- `api-use-dto-serialization` - DTO and response serialization\n- `api-use-interceptors` - Cross-cutting concerns\n- `api-versioning` - API versioning strategies\n- `api-use-pipes` - Input transformation with pipes\n\n### 9. Microservices (MEDIUM)\n\n- `micro-use-patterns` - Message and event patterns\n- `micro-use-health-checks` - Health checks for orchestration\n- `micro-use-queues` - Background job processing\n\n### 10. DevOps & Deployment (LOW-MEDIUM)\n\n- `devops-use-config-module` - Environment configuration\n- `devops-use-logging` - Structured logging\n- `devops-graceful-shutdown` - Zero-downtime deployments\n\n## How to Use\n\nRead individual rule files for detailed explanations and code examples:\n\n```\nrules\u002Farch-avoid-circular-deps.md\nrules\u002Fsecurity-validate-all-input.md\nrules\u002F_sections.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect code example with explanation\n- Correct code example with explanation\n- Additional context and references\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n","# NestJS Best Practices\n\nComprehensive best practices guide for NestJS applications. Contains 40 rules across 10 categories, prioritized by impact to guide automated refactoring and code generation.\n\n## When to Apply\n\nReference these guidelines when:\n\n- Writing new NestJS modules, controllers, or services\n- Implementing authentication and authorization\n- Reviewing code for architecture and security issues\n- Refactoring existing NestJS codebases\n- Optimizing performance or database queries\n- Building microservices architectures\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Architecture | CRITICAL | `arch-` |\n| 2 | Dependency Injection | CRITICAL | `di-` |\n| 3 | Error Handling | HIGH | `error-` |\n| 4 | Security | HIGH | `security-` |\n| 5 | Performance | HIGH | `perf-` |\n| 6 | Testing | MEDIUM-HIGH | `test-` |\n| 7 | Database & ORM | MEDIUM-HIGH | `db-` |\n| 8 | API Design | MEDIUM | `api-` |\n| 9 | Microservices | MEDIUM | `micro-` |\n| 10 | DevOps & Deployment | LOW-MEDIUM | `devops-` |\n\n## Quick Reference\n\n### 1. Architecture (CRITICAL)\n\n- `arch-avoid-circular-deps` - Avoid circular module dependencies\n- `arch-feature-modules` - Organize by feature, not technical layer\n- `arch-module-sharing` - Proper module exports\u002Fimports, avoid duplicate providers\n- `arch-single-responsibility` - Focused services over \"god services\"\n- `arch-use-repository-pattern` - Abstract database logic for testability\n- `arch-use-events` - Event-driven architecture for decoupling\n\n### 2. Dependency Injection (CRITICAL)\n\n- `di-avoid-service-locator` - Avoid service locator anti-pattern\n- `di-interface-segregation` - Interface Segregation Principle (ISP)\n- `di-liskov-substitution` - Liskov Substitution Principle (LSP)\n- `di-prefer-constructor-injection` - Constructor over property injection\n- `di-scope-awareness` - Understand singleton\u002Frequest\u002Ftransient scopes\n- `di-use-interfaces-tokens` - Use injection tokens for interfaces\n\n### 3. Error Handling (HIGH)\n\n- `error-use-exception-filters` - Centralized exception handling\n- `error-throw-http-exceptions` - Use NestJS HTTP exceptions\n- `error-handle-async-errors` - Handle async errors properly\n\n### 4. Security (HIGH)\n\n- `security-auth-jwt` - Secure JWT authentication\n- `security-validate-all-input` - Validate with class-validator\n- `security-use-guards` - Authentication and authorization guards\n- `security-sanitize-output` - Prevent XSS attacks\n- `security-rate-limiting` - Implement rate limiting\n\n### 5. Performance (HIGH)\n\n- `perf-async-hooks` - Proper async lifecycle hooks\n- `perf-use-caching` - Implement caching strategies\n- `perf-optimize-database` - Optimize database queries\n- `perf-lazy-loading` - Lazy load modules for faster startup\n\n### 6. Testing (MEDIUM-HIGH)\n\n- `test-use-testing-module` - Use NestJS testing utilities\n- `test-e2e-supertest` - E2E testing with Supertest\n- `test-mock-external-services` - Mock external dependencies\n\n### 7. Database & ORM (MEDIUM-HIGH)\n\n- `db-use-transactions` - Transaction management\n- `db-avoid-n-plus-one` - Avoid N+1 query problems\n- `db-use-migrations` - Use migrations for schema changes\n\n### 8. API Design (MEDIUM)\n\n- `api-use-dto-serialization` - DTO and response serialization\n- `api-use-interceptors` - Cross-cutting concerns\n- `api-versioning` - API versioning strategies\n- `api-use-pipes` - Input transformation with pipes\n\n### 9. Microservices (MEDIUM)\n\n- `micro-use-patterns` - Message and event patterns\n- `micro-use-health-checks` - Health checks for orchestration\n- `micro-use-queues` - Background job processing\n\n### 10. DevOps & Deployment (LOW-MEDIUM)\n\n- `devops-use-config-module` - Environment configuration\n- `devops-use-logging` - Structured logging\n- `devops-graceful-shutdown` - Zero-downtime deployments\n\n## How to Use\n\nRead individual rule files for detailed explanations and code examples:\n\n```\nrules\u002Farch-avoid-circular-deps.md\nrules\u002Fsecurity-validate-all-input.md\nrules\u002F_sections.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect code example with explanation\n- Correct code example with explanation\n- Additional context and references\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n",{"name":5,"license":15,"metadata":57,"description":7,"when_to_use":60},{"author":58,"version":59},"Kadajett","1.1.0","Use when writing, reviewing, or refactoring NestJS code — modules, dependency injection, security, and performance.","main","7522fd7266944e30052204c2f6df287d8b5516be","orc\u002Fskills\u002Fnestjs-best-practices",0,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc","https:\u002F\u002Forc.novacstack.com\u002F","https:\u002F\u002Fgithub.com\u002FHigorAlves","higoralves.dev","Software Engineering","2026-11-07 07:26:38",{"source":8,"skillName":5,"commands":72,"prompt":82,"zipAvailable":83},[73,76,79],{"tool":74,"command":75},"npx","npx skills add HigorAlves\u002Forc --skill nestjs-best-practices",{"tool":77,"command":78},"bunx","bunx skills add HigorAlves\u002Forc --skill nestjs-best-practices",{"tool":80,"command":81},"pnpm","pnpm dlx skills add HigorAlves\u002Forc --skill nestjs-best-practices","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002FSKILL.md",true,[85,91,95,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,283,287,291],{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},".github\u002Fworkflows\u002Fbranch-protection.yml","REFERENCE","参考文档",760,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002F.github\u002Fworkflows\u002Fbranch-protection.yml",{"path":92,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":93,"sourceHtmlUrl":94},".github\u002Fworkflows\u002Fdeploy.yml",1273,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002F.github\u002Fworkflows\u002Fdeploy.yml",{"path":96,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":99,"sourceHtmlUrl":100},".gitignore","OTHER","其他",237,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002F.gitignore",{"path":102,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":103,"sourceHtmlUrl":104},"AGENTS.md",163058,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002FAGENTS.md",{"path":106,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":107,"sourceHtmlUrl":108},"README.md",4493,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002FREADME.md",{"path":110,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":111,"sourceHtmlUrl":112},"rules\u002F_sections.md",2153,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002F_sections.md",{"path":114,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":115,"sourceHtmlUrl":116},"rules\u002F_template.md",631,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002F_template.md",{"path":118,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":119,"sourceHtmlUrl":120},"rules\u002Fapi-use-dto-serialization.md",4385,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fapi-use-dto-serialization.md",{"path":122,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":123,"sourceHtmlUrl":124},"rules\u002Fapi-use-interceptors.md",5518,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fapi-use-interceptors.md",{"path":126,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":127,"sourceHtmlUrl":128},"rules\u002Fapi-use-pipes.md",5386,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fapi-use-pipes.md",{"path":130,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":131,"sourceHtmlUrl":132},"rules\u002Fapi-versioning.md",4986,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fapi-versioning.md",{"path":134,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":135,"sourceHtmlUrl":136},"rules\u002Farch-avoid-circular-deps.md",2021,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Farch-avoid-circular-deps.md",{"path":138,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":139,"sourceHtmlUrl":140},"rules\u002Farch-feature-modules.md",2316,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Farch-feature-modules.md",{"path":142,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":143,"sourceHtmlUrl":144},"rules\u002Farch-module-sharing.md",3876,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Farch-module-sharing.md",{"path":146,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":147,"sourceHtmlUrl":148},"rules\u002Farch-single-responsibility.md",2922,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Farch-single-responsibility.md",{"path":150,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":151,"sourceHtmlUrl":152},"rules\u002Farch-use-events.md",3051,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Farch-use-events.md",{"path":154,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":155,"sourceHtmlUrl":156},"rules\u002Farch-use-repository-pattern.md",2861,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Farch-use-repository-pattern.md",{"path":158,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":159,"sourceHtmlUrl":160},"rules\u002Fdb-avoid-n-plus-one.md",3888,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdb-avoid-n-plus-one.md",{"path":162,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":163,"sourceHtmlUrl":164},"rules\u002Fdb-use-migrations.md",3837,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdb-use-migrations.md",{"path":166,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":167,"sourceHtmlUrl":168},"rules\u002Fdb-use-transactions.md",4023,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdb-use-transactions.md",{"path":170,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":171,"sourceHtmlUrl":172},"rules\u002Fdevops-graceful-shutdown.md",5916,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdevops-graceful-shutdown.md",{"path":174,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":175,"sourceHtmlUrl":176},"rules\u002Fdevops-use-config-module.md",4446,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdevops-use-config-module.md",{"path":178,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":179,"sourceHtmlUrl":180},"rules\u002Fdevops-use-logging.md",5693,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdevops-use-logging.md",{"path":182,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":183,"sourceHtmlUrl":184},"rules\u002Fdi-avoid-service-locator.md",2981,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdi-avoid-service-locator.md",{"path":186,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":187,"sourceHtmlUrl":188},"rules\u002Fdi-interface-segregation.md",5224,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdi-interface-segregation.md",{"path":190,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":191,"sourceHtmlUrl":192},"rules\u002Fdi-liskov-substitution.md",7275,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdi-liskov-substitution.md",{"path":194,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":195,"sourceHtmlUrl":196},"rules\u002Fdi-prefer-constructor-injection.md",2309,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdi-prefer-constructor-injection.md",{"path":198,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":199,"sourceHtmlUrl":200},"rules\u002Fdi-scope-awareness.md",2618,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdi-scope-awareness.md",{"path":202,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":203,"sourceHtmlUrl":204},"rules\u002Fdi-use-interfaces-tokens.md",2588,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fdi-use-interfaces-tokens.md",{"path":206,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":207,"sourceHtmlUrl":208},"rules\u002Ferror-handle-async-errors.md",3531,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Ferror-handle-async-errors.md",{"path":210,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":211,"sourceHtmlUrl":212},"rules\u002Ferror-throw-http-exceptions.md",3181,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Ferror-throw-http-exceptions.md",{"path":214,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":215,"sourceHtmlUrl":216},"rules\u002Ferror-use-exception-filters.md",3695,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Ferror-use-exception-filters.md",{"path":218,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":219,"sourceHtmlUrl":220},"rules\u002Fmicro-use-health-checks.md",5985,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fmicro-use-health-checks.md",{"path":222,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":223,"sourceHtmlUrl":224},"rules\u002Fmicro-use-patterns.md",5102,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fmicro-use-patterns.md",{"path":226,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":227,"sourceHtmlUrl":228},"rules\u002Fmicro-use-queues.md",6214,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fmicro-use-queues.md",{"path":230,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":231,"sourceHtmlUrl":232},"rules\u002Fperf-async-hooks.md",2918,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fperf-async-hooks.md",{"path":234,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":235,"sourceHtmlUrl":236},"rules\u002Fperf-lazy-loading.md",3822,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fperf-lazy-loading.md",{"path":238,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":239,"sourceHtmlUrl":240},"rules\u002Fperf-optimize-database.md",3276,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fperf-optimize-database.md",{"path":242,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":243,"sourceHtmlUrl":244},"rules\u002Fperf-use-caching.md",3524,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fperf-use-caching.md",{"path":246,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":247,"sourceHtmlUrl":248},"rules\u002Fsecurity-auth-jwt.md",4083,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fsecurity-auth-jwt.md",{"path":250,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":251,"sourceHtmlUrl":252},"rules\u002Fsecurity-rate-limiting.md",3324,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fsecurity-rate-limiting.md",{"path":254,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":255,"sourceHtmlUrl":256},"rules\u002Fsecurity-sanitize-output.md",3815,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fsecurity-sanitize-output.md",{"path":258,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":259,"sourceHtmlUrl":260},"rules\u002Fsecurity-use-guards.md",3647,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fsecurity-use-guards.md",{"path":262,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":263,"sourceHtmlUrl":264},"rules\u002Fsecurity-validate-all-input.md",3393,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Fsecurity-validate-all-input.md",{"path":266,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":267,"sourceHtmlUrl":268},"rules\u002Ftest-e2e-supertest.md",4800,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Ftest-e2e-supertest.md",{"path":270,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":271,"sourceHtmlUrl":272},"rules\u002Ftest-mock-external-services.md",4613,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Ftest-mock-external-services.md",{"path":274,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":275,"sourceHtmlUrl":276},"rules\u002Ftest-use-testing-module.md",4392,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Frules\u002Ftest-use-testing-module.md",{"path":278,"resourceType":279,"resourceTypeDesc":280,"sizeBytes":281,"sourceHtmlUrl":282},"scripts\u002Fbuild-agents.ts","SCRIPT","脚本",8661,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Fscripts\u002Fbuild-agents.ts",{"path":284,"resourceType":279,"resourceTypeDesc":280,"sizeBytes":285,"sourceHtmlUrl":286},"scripts\u002Fbuild.sh",369,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Fscripts\u002Fbuild.sh",{"path":288,"resourceType":279,"resourceTypeDesc":280,"sizeBytes":289,"sourceHtmlUrl":290},"scripts\u002Fpackage-lock.json",8662,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Fscripts\u002Fpackage-lock.json",{"path":292,"resourceType":279,"resourceTypeDesc":280,"sizeBytes":293,"sourceHtmlUrl":294},"scripts\u002Fpackage.json",428,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fnestjs-best-practices\u002Fscripts\u002Fpackage.json",[296,325,351,372,394,414],{"skillNo":297,"name":298,"nameZh":6,"description":299,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":300,"categories":301,"keywords":309,"publishedAt":52},"01M71SW40F9TAAEDKBYYBCM814","writing-plans","Write a comprehensive implementation plan of bite-sized TDD tasks that an engineer with zero codebase context could execute — exact files, code, tests, and verification steps","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[302,305,306],{"categoryNo":303,"categoryName":304,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},{"categoryNo":307,"categoryName":308,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000036","内容创作者",[49,310,311,312,313,314,315,47,316,46,317,318,319,320,321,322,323,37,324,35],"writing plans","plans","engineer","superpowers","implementation plan","files","you","tasks","verification","plan","write","steps","context","ZeRO","tests",{"skillNo":326,"name":327,"nameZh":6,"description":328,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":329,"categories":330,"keywords":336,"publishedAt":52},"01M71SW15KHE4MHJW9NEXV65X2","writing-for-agents","orc's doctrine layer for writing any document an agent consumes — skills, AGENTS.md\u002FCLAUDE.md, reference docs","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[331,332,335],{"categoryNo":303,"categoryName":304,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":333,"categoryName":334,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":307,"categoryName":308,"taxonomyType":29,"taxonomyTypeDesc":30},[337,49,37,338,47,339,340,341,342,343,344,345,35,346,347,348,349,350],"writing for agents","matt pocock","inline","tuning","a skill","layer","doctrine","push","editing","document","github","https","reference","docs",{"skillNo":352,"name":353,"nameZh":6,"description":354,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":355,"categories":356,"keywords":358,"publishedAt":52},"01M71SVYQKXT743HHHWGHT3G13","workspace-mode","Use when cwd is a parent dir holding multiple sibling git repos — defines repo auto-detection, --repos\u002F--repo\u002F--all-repos\u002F--this-repo precedence, per-repo dispatch, and linked-PR mechanics.","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fworkspace-mode\u002FSKILL.md",[357],{"categoryNo":333,"categoryName":334,"taxonomyType":21,"taxonomyTypeDesc":22},[359,360,361,362,363,47,364,365,366,367,35,368,369,370,371],"workspace mode","mode","workspace","mechanics","auto","repos","git","pr","repo","dispatch","auto-detection","detection","parent",{"skillNo":373,"name":374,"nameZh":6,"description":375,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":376,"categories":377,"keywords":379,"publishedAt":52},"01M71SVVP3BXS06G9395P2K0RH","wizard","Generate an interactive bash wizard walking a human through work only they can perform — credentials, secrets, one-off migrations","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwizard\u002FSKILL.md",[378],{"categoryNo":333,"categoryName":334,"taxonomyType":21,"taxonomyTypeDesc":22},[374,380,381,382,383,338,47,384,385,386,387,388,389,321,390,391,37,35,392,393],"condition","never","provisioning infrastructure","only","Bash","work","credentials","generate","human","secrets","infrastructure","do","one","interactive",{"skillNo":395,"name":396,"nameZh":6,"description":397,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":398,"categories":399,"keywords":400,"publishedAt":52},"01M71SVT4AR6NKAM5B077E7QSJ","wait-what","Stop and re-pitch — the last message did not land; say it again simply, in the project's own vocabulary.","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[401,402,403,404,405,338,406,407,408,409,347,348,410,411,412,413],"wait what","wait","project","re","true","pitch","last","say","message","land","it","stop","vocabulary",{"skillNo":415,"name":416,"nameZh":6,"description":417,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":418,"categories":419,"keywords":422,"publishedAt":52},"01M71SVQVYRA9QBQ6G8MWR8G6F","vitest","Vitest fast unit testing framework powered by Vite with Jest-compatible API","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvitest\u002FSKILL.md",[420,421],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},[416,423,424,425,426,427,49,47,428,429,430,431,432,433,434,435,436,437,324,438],"coverage","unit","testing","testing framework","generated","api","jest","2026","at","scripts","unit testing","antfu","framework","vite","mocking","dev"]