[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6K2EN2F5DEMYA95GTVCZYPD":3,"skill-same:01M6K2EN2F5DEMYA95GTVCZYPD":189},{"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":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6K2EN2F5DEMYA95GTVCZYPD","minipower-backend-scaffold-dotnet",null,"Scaffold solution .NET 9 phân lớp + cài Jarvis framework từ folder trống — F5 chạy Swagger. Dùng khi tạo project backend mới, cài package Jarvis, hoặc thêm module vào solution có sẵn.","hoangnh2412\u002Fminipower","hoangnh2412","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9604921?v=4","01M6K2685NFX1C55B4TR54NT7S","Hoàng Nguyễn","01M6K268AEV8J57BMZJEKCJNZE",7,"MIT","https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36],"dotnet","scaffold","backend","minipower backend scaffold dotnet","github","framework","package","jarvis","swagger","project","module","folder","khi","2026-11-10 10:12:30",false,"---\nname: minipower-backend-scaffold-dotnet\ndescription: Scaffold solution .NET 9 phân lớp + cài Jarvis framework từ folder trống — F5 chạy Swagger. Dùng khi tạo project backend mới, cài package Jarvis, hoặc thêm module vào solution có sẵn.\nmetadata:\n  workflow: github\n---\n\n# Jarvis Framework — Orchestrator\n\nSkill điều phối **scaffold solution chuẩn** và **cài đặt Jarvis** trên ASP.NET Core **.NET 9**.\n\n## Luồng chính (khuyến nghị)\n\n```text\nFolder trống → skill minipower-backend-scaffold-dotnet → solution phân lớp + Jarvis → F5\n```\n\n| Bước | Workflow |\n|---|---|\n| 1. Scaffold từ đầu | **[workflows\u002Fscaffold.md](workflows\u002Fscaffold.md)** |\n| 2. Thêm module Jarvis | [workflows\u002Fadd.md](workflows\u002Fadd.md) |\n| 3. Chỉ cài package (solution có sẵn) | [workflows\u002Finit.md](workflows\u002Finit.md) |\n\n## Cấu trúc solution tiêu chuẩn\n\n```text\n{product}-backend\u002F\n├── src\u002F{Product}.sln\n│   ├── {Product}.Domain.Shared\n│   ├── {Product}.Domain\n│   ├── {Product}.Application      → Jarvis.DDD.Application\n│   ├── {Product}.Infrastructure   → Jarvis.EntityFramework\n│   └── {Product}.Host             → Jarvis.Mvc, OTEL, HealthChecks, Swagger\n└── tests\u002F\n```\n\nChi tiết folder, DI convention, Jarvis mapping: [reference\u002Fsolution-structure.md](reference\u002Fsolution-structure.md).\n\n**Composition root:** `Program.cs` chỉ gọi `AddHostLayer()` \u002F `UseHostLayer()`.\n\n## Templates scaffold\n\n| Tài nguyên | Path |\n|---|---|\n| Bản đồ scaffold → skill | [templates\u002FSKILLS.md](templates\u002FSKILLS.md) |\n| Architecture test R1–R7 | [minipower-backend-architecture-dotnet\u002Ftemplates\u002FArchitectureTests\u002F](..\u002Fminipower-backend-architecture-dotnet\u002Ftemplates\u002FArchitectureTests\u002F) |\n| Cây thư mục | [templates\u002Fsolution-tree.txt](templates\u002Fsolution-tree.txt) |\n| Layer extensions + Host | [templates\u002Flayers\u002F](templates\u002Flayers\u002F) |\n| csproj Jarvis refs | [templates\u002Flayer-csproj\u002F](templates\u002Flayer-csproj\u002F) |\n| README \u002F Architecture | [templates\u002Fdocs-README.md](templates\u002Fdocs-README.md) |\n| `.editorconfig` + `Directory.Build.props` | [minipower-backend-convention-dotnet\u002Ftemplates\u002F](..\u002Fminipower-backend-convention-dotnet\u002Ftemplates\u002F) |\n\n## Hai cách cài Jarvis\n\n| Cách | Khi nào |\n|---|---|\n| **ProjectReference** | Monorepo cạnh repo Jarvis (`{JarvisRoot}`) — packages cross-cutting trong `{JarvisRoot}\u002Fframeworks\u002F` |\n| **NuGet** | Repo độc lập, feed nội bộ |\n\n**PackageId:** `Jarvis.Authentication.*` folder → NuGet `Jarvis.Authentications.*`.\n\n## Catalog package (NuGet)\n\nPhiên bản tham chiếu từ repo Jarvis (`develop`):\n\n| Module | PackageId | Version | Layer |\n|---|---|---|---|\n| Domain shared | `Jarvis.DDD.Domain.Shared` | 1.0.0 | Domain.Shared |\n| Domain | `Jarvis.DDD.Domain` | 1.1.1 | Host (enricher) |\n| Application | `Jarvis.DDD.Application` | 1.2.1 | Application |\n| Application contracts | `Jarvis.DDD.Application.Contracts` | 1.2.1 | Application |\n| Entity Framework | `Jarvis.EntityFramework` | 1.0.0 | Infrastructure |\n| Caching | `Jarvis.Caching` | 1.1.0 | Infrastructure (**bắt buộc trước EF**) |\n| Caching Redis | `Jarvis.Caching.Redis` | 1.1.0 | Infrastructure (tùy chọn) |\n| MVC | `Jarvis.Mvc` | 1.1.0 | Host — kéo transitive `Jarvis.Common` + `Jarvis.DDD.Domain.Shared` + `Jarvis.OpenTelemetry`, cân nhắc khi chỉ cần domain thuần |\n| Swashbuckle | `Jarvis.Swashbuckle` | 1.0.1 | Host |\n| Health checks | `Jarvis.HealthChecks` | 1.0.0 | Host |\n| OpenTelemetry | `Jarvis.OpenTelemetry` | 1.0.1 | Host |\n| Authentication | `Jarvis.Authentications.*` | 1.0.1 | Host |\n\nBảng đầy đủ \u002F monorepo ProjectReference: [workflows\u002Finit.md](workflows\u002Finit.md), csproj repo Jarvis.\n\n## Quy tắc DI (develop)\n\n| Thứ tự | Lý do |\n|---|---|\n| `AddJarvisCaching()` → `AddEntityFramework()` | EF bọc `ITenantConnectionStringResolver` qua `ICacheService` |\n| `AddCoreDbContext` sau `AddEntityFramework` | Multitenancy + interceptor |\n| `AddJarvisOpenTelemetry` trước `Build()` | Plug-in trong callback `configureServices` |\n\nSkill chuyên sâu: [minipower-backend-entityframework-dotnet](..\u002Fminipower-backend-entityframework-dotnet\u002FREADME.md) · [minipower-backend-caching-dotnet](..\u002Fminipower-backend-caching-dotnet\u002FREADME.md) · [minipower-backend-telemetry-dotnet](..\u002Fminipower-backend-telemetry-dotnet\u002FREADME.md)\n\n## Modules (atomic)\n\n| Module | Skill chuyên sâu |\n|---|---|\n| Kiến trúc + tính năng mới | [minipower-backend-architecture-dotnet](..\u002Fminipower-backend-architecture-dotnet\u002FREADME.md) |\n| Authentication | [minipower-backend-authentication-dotnet](..\u002Fminipower-backend-authentication-dotnet\u002FREADME.md) |\n| Notification | [minipower-backend-notification-dotnet](..\u002Fminipower-backend-notification-dotnet\u002FREADME.md) |\n| Entity Framework | [minipower-backend-entityframework-dotnet](..\u002Fminipower-backend-entityframework-dotnet\u002FREADME.md) |\n| Caching | [minipower-backend-caching-dotnet](..\u002Fminipower-backend-caching-dotnet\u002FREADME.md) |\n| Blob storing | [minipower-backend-blobstoring-dotnet](..\u002Fminipower-backend-blobstoring-dotnet\u002FREADME.md) |\n| Swashbuckle | [minipower-backend-swashbuckle-dotnet](..\u002Fminipower-backend-swashbuckle-dotnet\u002FREADME.md) |\n| OpenTelemetry | [minipower-backend-telemetry-dotnet](..\u002Fminipower-backend-telemetry-dotnet\u002FREADME.md) |\n| Health checks | [minipower-backend-healthcheck-dotnet](..\u002Fminipower-backend-healthcheck-dotnet\u002FREADME.md) |\n\nMở rộng module: dùng [templates\u002FSKILLS.md](templates\u002FSKILLS.md) và skill `*-dotnet` trong `.opencode\u002Fskills\u002F`.\n\n## F5 sau scaffold\n\n- Startup project: `{Product}.Host`\n- `launchSettings.json` → Swagger\n- `GET \u002Fapi\u002Fping` — không cần DB\n- `\u002Fhealth\u002Flive` — OK; `\u002Fhealth\u002Fready` cần PostgreSQL nếu bật DB check\n\n## Output bắt buộc (scaffold)\n\n- Solution 5 project + **3** test projects (gồm `{Product}.ArchitectureTests`)\n- `*LayerExtension.cs` mỗi layer\n- `Program.cs` mỏng\n- `appsettings` + `launchSettings`\n- `.editorconfig` (root) + `src\u002FDirectory.Build.props` — [minipower-backend-convention-dotnet](..\u002Fminipower-backend-convention-dotnet\u002FSKILL.md)\n- `dotnet build` thành công; `dotnet test -c Debug` xanh — kể cả luật kiến trúc R1–R7 ([minipower-backend-architecture-dotnet](..\u002Fminipower-backend-architecture-dotnet\u002FSKILL.md))\n- Code C# theo [minipower-backend-convention-dotnet](..\u002Fminipower-backend-convention-dotnet\u002FSKILL.md) — `dotnet format --verify-no-changes` sạch trên file đã chạm\n","# Jarvis Framework — Orchestrator\n\nSkill điều phối **scaffold solution chuẩn** và **cài đặt Jarvis** trên ASP.NET Core **.NET 9**.\n\n## Luồng chính (khuyến nghị)\n\n```text\nFolder trống → skill minipower-backend-scaffold-dotnet → solution phân lớp + Jarvis → F5\n```\n\n| Bước | Workflow |\n|---|---|\n| 1. Scaffold từ đầu | **[workflows\u002Fscaffold.md](workflows\u002Fscaffold.md)** |\n| 2. Thêm module Jarvis | [workflows\u002Fadd.md](workflows\u002Fadd.md) |\n| 3. Chỉ cài package (solution có sẵn) | [workflows\u002Finit.md](workflows\u002Finit.md) |\n\n## Cấu trúc solution tiêu chuẩn\n\n```text\n{product}-backend\u002F\n├── src\u002F{Product}.sln\n│   ├── {Product}.Domain.Shared\n│   ├── {Product}.Domain\n│   ├── {Product}.Application      → Jarvis.DDD.Application\n│   ├── {Product}.Infrastructure   → Jarvis.EntityFramework\n│   └── {Product}.Host             → Jarvis.Mvc, OTEL, HealthChecks, Swagger\n└── tests\u002F\n```\n\nChi tiết folder, DI convention, Jarvis mapping: [reference\u002Fsolution-structure.md](reference\u002Fsolution-structure.md).\n\n**Composition root:** `Program.cs` chỉ gọi `AddHostLayer()` \u002F `UseHostLayer()`.\n\n## Templates scaffold\n\n| Tài nguyên | Path |\n|---|---|\n| Bản đồ scaffold → skill | [templates\u002FSKILLS.md](templates\u002FSKILLS.md) |\n| Architecture test R1–R7 | [minipower-backend-architecture-dotnet\u002Ftemplates\u002FArchitectureTests\u002F](..\u002Fminipower-backend-architecture-dotnet\u002Ftemplates\u002FArchitectureTests\u002F) |\n| Cây thư mục | [templates\u002Fsolution-tree.txt](templates\u002Fsolution-tree.txt) |\n| Layer extensions + Host | [templates\u002Flayers\u002F](templates\u002Flayers\u002F) |\n| csproj Jarvis refs | [templates\u002Flayer-csproj\u002F](templates\u002Flayer-csproj\u002F) |\n| README \u002F Architecture | [templates\u002Fdocs-README.md](templates\u002Fdocs-README.md) |\n| `.editorconfig` + `Directory.Build.props` | [minipower-backend-convention-dotnet\u002Ftemplates\u002F](..\u002Fminipower-backend-convention-dotnet\u002Ftemplates\u002F) |\n\n## Hai cách cài Jarvis\n\n| Cách | Khi nào |\n|---|---|\n| **ProjectReference** | Monorepo cạnh repo Jarvis (`{JarvisRoot}`) — packages cross-cutting trong `{JarvisRoot}\u002Fframeworks\u002F` |\n| **NuGet** | Repo độc lập, feed nội bộ |\n\n**PackageId:** `Jarvis.Authentication.*` folder → NuGet `Jarvis.Authentications.*`.\n\n## Catalog package (NuGet)\n\nPhiên bản tham chiếu từ repo Jarvis (`develop`):\n\n| Module | PackageId | Version | Layer |\n|---|---|---|---|\n| Domain shared | `Jarvis.DDD.Domain.Shared` | 1.0.0 | Domain.Shared |\n| Domain | `Jarvis.DDD.Domain` | 1.1.1 | Host (enricher) |\n| Application | `Jarvis.DDD.Application` | 1.2.1 | Application |\n| Application contracts | `Jarvis.DDD.Application.Contracts` | 1.2.1 | Application |\n| Entity Framework | `Jarvis.EntityFramework` | 1.0.0 | Infrastructure |\n| Caching | `Jarvis.Caching` | 1.1.0 | Infrastructure (**bắt buộc trước EF**) |\n| Caching Redis | `Jarvis.Caching.Redis` | 1.1.0 | Infrastructure (tùy chọn) |\n| MVC | `Jarvis.Mvc` | 1.1.0 | Host — kéo transitive `Jarvis.Common` + `Jarvis.DDD.Domain.Shared` + `Jarvis.OpenTelemetry`, cân nhắc khi chỉ cần domain thuần |\n| Swashbuckle | `Jarvis.Swashbuckle` | 1.0.1 | Host |\n| Health checks | `Jarvis.HealthChecks` | 1.0.0 | Host |\n| OpenTelemetry | `Jarvis.OpenTelemetry` | 1.0.1 | Host |\n| Authentication | `Jarvis.Authentications.*` | 1.0.1 | Host |\n\nBảng đầy đủ \u002F monorepo ProjectReference: [workflows\u002Finit.md](workflows\u002Finit.md), csproj repo Jarvis.\n\n## Quy tắc DI (develop)\n\n| Thứ tự | Lý do |\n|---|---|\n| `AddJarvisCaching()` → `AddEntityFramework()` | EF bọc `ITenantConnectionStringResolver` qua `ICacheService` |\n| `AddCoreDbContext` sau `AddEntityFramework` | Multitenancy + interceptor |\n| `AddJarvisOpenTelemetry` trước `Build()` | Plug-in trong callback `configureServices` |\n\nSkill chuyên sâu: [minipower-backend-entityframework-dotnet](..\u002Fminipower-backend-entityframework-dotnet\u002FREADME.md) · [minipower-backend-caching-dotnet](..\u002Fminipower-backend-caching-dotnet\u002FREADME.md) · [minipower-backend-telemetry-dotnet](..\u002Fminipower-backend-telemetry-dotnet\u002FREADME.md)\n\n## Modules (atomic)\n\n| Module | Skill chuyên sâu |\n|---|---|\n| Kiến trúc + tính năng mới | [minipower-backend-architecture-dotnet](..\u002Fminipower-backend-architecture-dotnet\u002FREADME.md) |\n| Authentication | [minipower-backend-authentication-dotnet](..\u002Fminipower-backend-authentication-dotnet\u002FREADME.md) |\n| Notification | [minipower-backend-notification-dotnet](..\u002Fminipower-backend-notification-dotnet\u002FREADME.md) |\n| Entity Framework | [minipower-backend-entityframework-dotnet](..\u002Fminipower-backend-entityframework-dotnet\u002FREADME.md) |\n| Caching | [minipower-backend-caching-dotnet](..\u002Fminipower-backend-caching-dotnet\u002FREADME.md) |\n| Blob storing | [minipower-backend-blobstoring-dotnet](..\u002Fminipower-backend-blobstoring-dotnet\u002FREADME.md) |\n| Swashbuckle | [minipower-backend-swashbuckle-dotnet](..\u002Fminipower-backend-swashbuckle-dotnet\u002FREADME.md) |\n| OpenTelemetry | [minipower-backend-telemetry-dotnet](..\u002Fminipower-backend-telemetry-dotnet\u002FREADME.md) |\n| Health checks | [minipower-backend-healthcheck-dotnet](..\u002Fminipower-backend-healthcheck-dotnet\u002FREADME.md) |\n\nMở rộng module: dùng [templates\u002FSKILLS.md](templates\u002FSKILLS.md) và skill `*-dotnet` trong `.opencode\u002Fskills\u002F`.\n\n## F5 sau scaffold\n\n- Startup project: `{Product}.Host`\n- `launchSettings.json` → Swagger\n- `GET \u002Fapi\u002Fping` — không cần DB\n- `\u002Fhealth\u002Flive` — OK; `\u002Fhealth\u002Fready` cần PostgreSQL nếu bật DB check\n\n## Output bắt buộc (scaffold)\n\n- Solution 5 project + **3** test projects (gồm `{Product}.ArchitectureTests`)\n- `*LayerExtension.cs` mỗi layer\n- `Program.cs` mỏng\n- `appsettings` + `launchSettings`\n- `.editorconfig` (root) + `src\u002FDirectory.Build.props` — [minipower-backend-convention-dotnet](..\u002Fminipower-backend-convention-dotnet\u002FSKILL.md)\n- `dotnet build` thành công; `dotnet test -c Debug` xanh — kể cả luật kiến trúc R1–R7 ([minipower-backend-architecture-dotnet](..\u002Fminipower-backend-architecture-dotnet\u002FSKILL.md))\n- Code C# theo [minipower-backend-convention-dotnet](..\u002Fminipower-backend-convention-dotnet\u002FSKILL.md) — `dotnet format --verify-no-changes` sạch trên file đã chạm\n",{"name":5,"metadata":42,"description":7},{"workflow":28},"main","6a33a408b13c0b55ce2c7c5558e6f239e9c091b2","src\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet",0,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower","https:\u002F\u002Fgithub.com\u002Fhoangnh2412","http:\u002F\u002Fhoangnh.com","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fhoangnh91\u002F","2026-11-09 04:22:29",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add hoangnh2412\u002Fminipower --skill minipower-backend-scaffold-dotnet",{"tool":58,"command":59},"bunx","bunx skills add hoangnh2412\u002Fminipower --skill minipower-backend-scaffold-dotnet",{"tool":61,"command":62},"pnpm","pnpm dlx skills add hoangnh2412\u002Fminipower --skill minipower-backend-scaffold-dotnet","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002FSKILL.md",true,[66,72,76,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,185],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"README.md","REFERENCE","参考文档",9896,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002FREADME.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"reference\u002Fsolution-structure.md",8733,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Freference\u002Fsolution-structure.md",{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"templates\u002Fcsproj-references.xml","OTHER","其他",2285,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Fcsproj-references.xml",{"path":83,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":84,"sourceHtmlUrl":85},"templates\u002Fdocs-Architecture.md",1601,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Fdocs-Architecture.md",{"path":87,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":88,"sourceHtmlUrl":89},"templates\u002Fdocs-README.md",1315,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Fdocs-README.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"templates\u002Flayer-csproj\u002FApplication.csproj.xml",873,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayer-csproj\u002FApplication.csproj.xml",{"path":95,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":97},"templates\u002Flayer-csproj\u002FDomain.csproj.xml",743,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayer-csproj\u002FDomain.csproj.xml",{"path":99,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":100,"sourceHtmlUrl":101},"templates\u002Flayer-csproj\u002FDomain.Shared.csproj.xml",150,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayer-csproj\u002FDomain.Shared.csproj.xml",{"path":103,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":104,"sourceHtmlUrl":105},"templates\u002Flayer-csproj\u002FHost.csproj.xml",1775,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayer-csproj\u002FHost.csproj.xml",{"path":107,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":108,"sourceHtmlUrl":109},"templates\u002Flayer-csproj\u002FInfrastructure.csproj.xml",953,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayer-csproj\u002FInfrastructure.csproj.xml",{"path":111,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":112,"sourceHtmlUrl":113},"templates\u002Flayers\u002FAppDbContext.cs",398,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FAppDbContext.cs",{"path":115,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":116,"sourceHtmlUrl":117},"templates\u002Flayers\u002FApplicationLayerExtension.cs",533,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FApplicationLayerExtension.cs",{"path":119,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":120,"sourceHtmlUrl":121},"templates\u002Flayers\u002Fappsettings.json",1350,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002Fappsettings.json",{"path":123,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":124,"sourceHtmlUrl":125},"templates\u002Flayers\u002FAppUnitOfWork.cs",343,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FAppUnitOfWork.cs",{"path":127,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":128,"sourceHtmlUrl":129},"templates\u002Flayers\u002FDomainLayerExtension.cs",355,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FDomainLayerExtension.cs",{"path":131,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":132,"sourceHtmlUrl":133},"templates\u002Flayers\u002FEnrichLogService.cs",287,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FEnrichLogService.cs",{"path":135,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":136,"sourceHtmlUrl":137},"templates\u002Flayers\u002FEnrichTraceService.cs",291,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FEnrichTraceService.cs",{"path":139,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":140,"sourceHtmlUrl":141},"templates\u002Flayers\u002FHostLayerExtension.cs",2510,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FHostLayerExtension.cs",{"path":143,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":144,"sourceHtmlUrl":145},"templates\u002Flayers\u002FIAppUnitOfWork.cs",128,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FIAppUnitOfWork.cs",{"path":147,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":148,"sourceHtmlUrl":149},"templates\u002Flayers\u002FInfrastructureLayerExtension.cs",1206,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FInfrastructureLayerExtension.cs",{"path":151,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":152,"sourceHtmlUrl":153},"templates\u002Flayers\u002FlaunchSettings.json",393,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FlaunchSettings.json",{"path":155,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":156,"sourceHtmlUrl":157},"templates\u002Flayers\u002FPingController.cs",259,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FPingController.cs",{"path":159,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":160,"sourceHtmlUrl":161},"templates\u002Flayers\u002FProgram.cs",177,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Flayers\u002FProgram.cs",{"path":163,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":164,"sourceHtmlUrl":165},"templates\u002Fprogram-setup.cs",1650,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Fprogram-setup.cs",{"path":167,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":168,"sourceHtmlUrl":169},"templates\u002FREADME.md",693,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002FREADME.md",{"path":171,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":172,"sourceHtmlUrl":173},"templates\u002FSKILLS.md",4347,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002FSKILLS.md",{"path":175,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":176,"sourceHtmlUrl":177},"templates\u002Fsolution-tree.txt",1933,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Ftemplates\u002Fsolution-tree.txt",{"path":179,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":180,"sourceHtmlUrl":181},"workflows\u002Fadd.md",3034,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Fworkflows\u002Fadd.md",{"path":183,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":104,"sourceHtmlUrl":184},"workflows\u002Finit.md","https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Fworkflows\u002Finit.md",{"path":186,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":187,"sourceHtmlUrl":188},"workflows\u002Fscaffold.md",9713,"https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fbackend\u002Fskills\u002Fminipower-backend-scaffold-dotnet\u002Fworkflows\u002Fscaffold.md",[190,212,229,242,256,264],{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":199,"publishedAt":37},"01M6K2MXJSPKZ79031YX0HB546","minipower-vcs-gitlab","Tra GitLab (search, issue, pipeline, MR), soạn MR\u002Fcomment, tạo MR và commit\u002Fpush sau L2. Dùng khi merge request, GitLab MCP, code_provider gitlab — không scaffold .NET, không force-push.","https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fvcs\u002Fskills\u002Fminipower-vcs-gitlab\u002FSKILL.md",[196],{"categoryNo":197,"categoryName":198,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[200,201,202,28,203,204,25,205,206,207,208,209,210,211,36],"gitlab","minipower vcs gitlab","MCP","commit","merge","code","push","search","pipeline","issue","provider","l2",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":216,"categories":217,"keywords":219,"publishedAt":37},"01M6K2MQXWTZWXG7PKARYT0RNY","minipower-toolbox-skill-author","Viết và soát skill lá-rời Minipower (minipower-{module}-{capability}) — chọn module bằng 3 câu hỏi ADR-022, dựng cây SKILL.md\u002FREADME.md\u002Fworkflows\u002Fproviders, đặt description kích hoạt được, cập nhật hub và test canh. Hỏi người xác nhận trước mọi quyết định, không tự chốt. Dùng khi tạo skill mới, thêm provider\u002Fpattern\u002Fworkflow, mở module mới, hoặc soát skill có sẵn lệch chuẩn.","https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Ftoolbox\u002Fskills\u002Fminipower-toolbox-skill-author\u002FSKILL.md",[218],{"categoryNo":197,"categoryName":198,"taxonomyType":21,"taxonomyTypeDesc":22},[220,221,210,222,223,224,34,36,225,226,28,227,228],"minipower toolbox skill author","Providers","pattern","hub","README","adr","workflows","workflow","test",{"skillNo":230,"name":231,"nameZh":6,"description":232,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":233,"categories":234,"keywords":235,"publishedAt":37},"01M6K2MJD0DJNJA538148044K6","minipower-tasks-lark","Đọc, lọc, tìm, soạn nháp và ghi task Lark (tasklist \u002F task) theo L1–L3. Dùng khi việc trên Lark, sprint, tasklist, \"tìm task\", \"tạo task\", tasks_provider lark — không dùng cho tin nhắn nhóm hay wiki.","https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Ftasks\u002Fskills\u002Fminipower-tasks-lark\u002FSKILL.md",[],[236,237,238,36,28,239,210,240,241],"tasks","lark","minipower tasks lark","wiki","task","sprint",{"skillNo":243,"name":244,"nameZh":6,"description":245,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":246,"categories":247,"keywords":248,"publishedAt":37},"01M6K2ME2K0QBN64PQKSB2W3VX","minipower-support-registry","Rà registry DOC theo project_mode, nhắc owner thiếu ID hoặc chỗ lưu sai. Dùng khi doc-registry, thiếu DOC, rà soát tiêu chuẩn — không tự sửa FR, không init.","https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fsupport\u002Fskills\u002Fminipower-support-registry\u002FSKILL.md",[],[249,250,251,252,28,253,254,33,36,255],"minipower support registry","registry","support","id","init","doc","mode",{"skillNo":257,"name":258,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":259,"categories":260,"keywords":261,"publishedAt":37},"01M6K2MB1B4C4AP9VCSRBAT83D","minipower-support-publish","https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Fsupport\u002Fskills\u002Fminipower-support-publish\u002FSKILL.md",[],[262,263,251],"publish","minipower support publish",{"skillNo":265,"name":266,"nameZh":6,"description":267,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":268,"categories":269,"keywords":271,"publishedAt":37},"01M6K2M4Q4N1QHA0VGD58WFJNF","minipower-router","Phân loại intent Minipower rồi gợi ý đúng một pack nghề hoặc kênh. Dùng khi làm gì tiếp, chọn skill, dispatcher, không biết mở pack nào — không tự gọi MCP L3, không spawn agent.","https:\u002F\u002Fgithub.com\u002Fhoangnh2412\u002Fminipower\u002Fblob\u002Fmain\u002Fsrc\u002Frouter\u002Fskills\u002Fminipower-router\u002FSKILL.md",[270],{"categoryNo":197,"categoryName":198,"taxonomyType":21,"taxonomyTypeDesc":22},[272,273,28,274,275,276,277,36,278,202],"minipower router","router","dispatcher","spawn","intent","spawn agent","pack"]