关于 project-setup
面向 .NET 项目的技术栈顾问技能,说明工具包的默认选择及其取舍。它帮助开发者按需选择数据库、认证、缓存等方案,并将初始化、评估和迁移任务交给专门技能。
主要功能
- 01提供八类技术栈默认建议
- 02说明选择理由与取舍
- 03优先考虑 .NET 内置能力
- 04关注依赖的许可证
- 05将其他流程路由至专门技能
适用场景
- 01为新项目选择数据库和认证方案
- 02评估缓存或消息传递需求
- 03确定可观测性与测试组件
- 04将初始化或迁移请求交给对应技能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ codewithmukesh/ dotnet-claude-kit --skill project-setup安装后在 Claude Code 中输入/project-setup确认已加载。
详细介绍
项目设置 — 技术栈顾问
此技能只负责一件事:本工具包推荐的技术栈默认选项及其原因。使用这些推荐选项的工作流位于其他地方:
- 初始化项目 / 生成 CLAUDE.md →
dotnet-init(交互式流程、架构问卷、CLAUDE.md 生成) - 评估现有代码库 →
health-check(权威的 8 维度分级评估) - EF Core 架构、NuGet 或 .NET 版本迁移 →
migrate - 选择架构 →
architecture-advisor(始终先询问再给出建议)
核心原则
- 推荐默认选项,解释原因,让用户选择 — 每个维度都有工具包默认选项,但默认选项只是起点,并非硬性规定。用一句话说明权衡,让用户知情后再做选择。
- 优先使用 .NET 内置功能,而非第三方方案 — 使用
HybridCache而非 Redis 客户端封装,使用内置限流而非软件包,使用内置 OpenAPI 而非 Swashbuckle。依赖越少,许可方面的意外和升级问题就越少。 - 选择时考虑许可证 — MediatR(v13+)、MassTransit(v9+)和 FluentAssertions(v8+)已转为商业许可。工具包默认选择 MIT 许可的替代方案:Mediator、Wolverine、xUnit 原生断言。
- 消息传递可以稍后添加,而非永不添加 — 大多数项目第一天并不需要消息总线。默认选择“无(稍后添加)”,待异步工作流真正出现时再考虑使用 Wolverine。
模式
技术栈维度与默认选项
| 维度 | 选项 | 默认选项 | 原因 |
|---|---|---|---|
| 数据库 | PostgreSQL、SQL Server、SQLite | PostgreSQL | 开源;除 SQL Server 外,EF Core 提供程序中支持最佳;一流的 Testcontainers 支持 |
| 身份验证 | JWT Bearer、OIDC(Keycloak/Auth0)、无 | JWT Bearer | 对 API 而言,这是最简单且安全的默认选项;存在外部 IdP 时再迁移到 OIDC |
| 缓存 | HybridCache、Redis、无 | HybridCache | 内置功能,具备防击穿保护和 L1+L2;仅在 Redis 用作 L2 后端时才添加 |
| 消息传递 | Wolverine(RabbitMQ)、MassTransit、无 | 无(稍后添加) | 过早引入消息传递会增加运维负担;有需要时使用 Wolverine(MIT) |
| 可观测性 | Serilog + OpenTelemetry、基本日志记录 | Serilog + OTEL | 从第一天起就添加结构化日志和跟踪,成本很低;事后补上则不然 |
| 弹性 | Polly v8 管道、基本重试 | Polly v8 | 只需一行 AddStandardResilienceHandler(),即可获得适用于生产环境的默认配置 |
| API 文档 | 内置 OpenAPI + Scalar | OpenAPI + Scalar | 由框架维护规范生成;Scalar 可替代 Swagger UI |
| 测试 | xUnit v3 + Testcontainers | xUnit v3 + Testcontainers | 在测试中使用真实数据库;内存提供程序会掩盖真实错误 |
选定各维度后,dotnet-init 会将这些选择写入生成的 CLAUDE.md,并将每个选择映射到在对应领域工作时要加载的技能(ef-core、authentication、caching、messaging、serilog、opentelemetry、resilience、openapi、scalar、testing)。
反模式
未经询问就指定技术栈
# BAD — assuming the kit defaults apply everywhere
"You should use PostgreSQL and Wolverine."
# The team runs SQL Server enterprise-wide and has zero async workflows.
# GOOD — default + trade-off + question
"Kit default is PostgreSQL (best OSS EF provider). Any organizational
constraint — existing SQL Server licenses, DBA support — that should
override it?"
重复运行此技能不负责的工作流
# BAD — improvising a health grading or init flow from this skill
"Let me grade your codebase across 5 categories..."
# That grading conflicts with the canonical one.
# GOOD — route to the owner
Init/CLAUDE.md → dotnet-init | Assessment → health-check | Upgrades → migrate
决策指南
| 场景 | 转到 |
|---|---|
| “为 Claude Code 设置此项目” | dotnet-init |
| “我应该使用哪种数据库 / 身份验证 / 缓存?” | 此技能 — 见上表 |
| “此代码库的健康状况如何?” | health-check |
| “升级到 .NET 10” / “更新软件包” | migrate |
| “哪种架构合适?” | architecture-advisor |
| 已选定技术栈,准备开始构建 | 使用 scaffold 创建第一个功能 |
评论
支持 Markdown