用途
sdd-init 是 SDD(规格驱动开发)流程的第 0 步。它的目标是在新项目开始使用 SDD 之前,先对现有代码库做一次系统性分析,产出一份 docs/project.md 项目上下文文档。这份文档记录项目的技术栈、架构与约定,是后续所有 SDD 技能的主要输入。
主要能力
-
技术栈自动检测:扫描项目根目录与源码树中的构建和配置文件,尽可能自动识别以下内容:
- 语言与版本:pom.xml(<java.version>)、build.gradle/build.gradle.kts(jvmToolchain、sourceCompatibility)、.java-version、pyproject.toml、package.json(engines)、go.mod、Cargo.toml
- 框架:pom.xml / build.gradle 依赖中的 Spring Boot、Quarkus、Micronaut、FastAPI、Express、Django、Rails 等
- 构建工具:pom.xml(Maven)、gradlew(Gradle)、package.json(npm/yarn/pnpm)、Makefile、pyproject.toml(Poetry/Hatch)
- 数据库:依赖或配置文件,如 application.properties/application.yml 中的 spring.datasource、.env.example 中的 DATABASE_URL、docker-compose 服务
- ORM / 数据访问:Hibernate/JPA、Spring Data、SQLAlchemy、Prisma、TypeORM、GORM、Diesel
- 迁移工具:Flyway、Liquibase、Alembic、db/migrate/(Rails)、Prisma migrate
- 消息系统:Kafka、RabbitMQ、SQS、Redis Streams
- 测试库:JUnit 5、Mockito、Testcontainers、RestAssured、pytest、Jest、Vitest、RSpec
- 其他库:Spring Security、MapStruct、Lombok、Resilience4j、OpenAPI 等
- 若存在 docker-compose.yml 或 docker-compose.yaml,也会读取,以发现数据库、消息与缓存栈
-
架构与约定检测:探索源码树结构,识别顶层源码布局(如 src/main/java、src/、app/、lib/),并根据包/目录名称推断架构模式:
- controller、service、repository 等包名 → 分层架构
- domain、application、infrastructure、adapter 等包名 → 六边形 / 整洁架构
- 按业务模块命名(如 order、payment、user)且每个模块内含分层 → 模块化单体
- 多个顶层服务各自拥有构建文件 → 微服务 同时识别基础包名(如 com.example.myapp)、集中式错误处理器(如 GlobalExceptionHandler、middleware、error boundary 等)、REST 基础路径前缀(如 /api/v1)、安全配置(如 SecurityConfig、认证注解、JWT 设置)。
-
澄清提问:对无法可靠检测的信息,以单条分组消息向用户提问,包括项目名称与使命、架构模式确认、代码中不明显的约定(命名规则、各端点认证要求、错误响应格式、分页风格)、依赖约束(是否限制可添加的库)。若已从代码扫描中获得高置信度,可调整或省略第 2–4 个问题。
-
生成 docs/project.md:若 docs/ 不存在则创建,并按固定结构写入文档,包含 Mission、Tech Stack、Architecture、Conventions、Approved Dependencies 等章节。要求不留下任何占位符文本(尖括号标记),每个字段都要填写,确实未知则省略该行。
-
确认与后续引导:写入完成后,向用户展示自动检测内容与用户提供内容的对比摘要,提示用户审阅并修正,提醒随技术栈演进保持该文件更新,并引导用户运行 /sdd-feature <功能描述> 开始第一个功能。
使用方式
该技能以提示词形式运行。前置条件检查:若 docs/project.md 已存在,会询问用户是否重新生成(会覆盖当前文件),等待确认;用户拒绝则停止并建议手动编辑;用户确认则继续完整流程。若文件不存在,则直接进入分析流程。
适用场景
- 在新项目中首次启用 SDD 流程之前
- 需要为 AI Agent 建立项目上下文文档时
- 希望统一记录技术栈、架构与代码约定时
限制
- 部分信息无法可靠自动检测,必须依赖用户回答
- 重新生成会覆盖现有 docs/project.md,需用户确认
- 该技能本身不实现功能,仅生成项目上下文文档