pdlc-adopt — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited pdlc-adopt (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- @include templates/prompts/iron-law-tool.md(已内联于下方,无需另读) --> ⛔ IRON LAW · 不可违反的硬门禁(工具型命令)
本命令不是主链路上的阶段:不追加 `history`,不改 `current_stage` / `next_step` / `last_phase_result`,也不为此分配功能ID。以下规则不可协商:
违反任一条 = 立即中止当前命令,输出违规详情,等待人工介入。 <!-- @include-end templates/prompts/iron-law-tool.md -->
扫描现有项目结构,逆向生成基线文档,并进行健康检查发现潜在问题。让旧项目平滑接入 PDLC 流程。
从本命令的参数中解析子命令:
| 子命令 | 说明 |
|---|---|
scan | 扫描项目,输出接入报告 + 健康检查报告(不写任何文件,只读分析) |
init | 根据扫描结果,逆向生成基线文档到 docs/ 目录 |
如果未提供子命令或无法识别,输出以上帮助信息后停止。
全程只读,不创建/修改任何文件,只在终端输出报告。
package.json、pom.xml、build.gradle、go.mod、requirements.txt、Pipfile、Cargo.toml、mix.exs 等react、vue、next、angular(从 package.json 依赖推断)backend/services/ 或具有独立启动入口的子目录frontend/、web/、app/ 或具有前端框架特征的目录按技术栈扫描路由定义:
| 技术栈 | 扫描目标 |
|---|---|
| Spring Boot | @RequestMapping、@GetMapping、@PostMapping 等注解 |
| Express/NestJS | router.get/post/put/delete、@Get/@Post 装饰器 |
| FastAPI | @app.get/post/put/delete、@router.get/post |
| Go (Gin/Echo) | r.GET/POST/PUT/DELETE、e.GET/POST |
| Django | urlpatterns、path()、re_path() |
提取信息:HTTP 方法、路径、处理函数名、参数(如能识别)。
| 来源 | 提取方式 |
|---|---|
| ORM Model | 扫描实体类/模型定义,提取表名、字段名、字段类型、关联关系 |
| Migration 文件 | 扫描 migrations/、db/migrate/ 等目录,提取 DDL 变更历史 |
| SQL 文件 | 扫描 *.sql 文件,提取 CREATE TABLE 语句 |
README.md 内容丰富度docs/ 目录及子目录docs/01_requirements/、docs/02_design/ 等)对代码进行静态分析级别的检查,按严重程度分级:
#### 🔴 阻断级(必须修复才能安全上线)
#### 🟠 严重级(高风险,建议尽快修复)
#### 🟡 一般级(影响质量,建议改进)
#### 🔵 建议级(优化项)
📊 项目扫描报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## 一、项目结构
| 项目 | 详情 |
|------|------|
| 技术栈 | Java Spring Boot 2.7 + MySQL 8.0 |
| 后端服务 | 3 个(user-service, order-service, product-service) |
| 前端应用 | 1 个(web-admin, React 18) |
| 数据库 | MySQL(12 张表) |
| 已有文档 | README.md(简略)、无 PDLC 文档 |
## 二、可生成的基线文档
| 文档类型 | 是否可生成 | 内容预估 |
|---------|-----------|---------|
| 基线 PRD | ✅ 可生成 | 从 README + 服务结构推断,需人工补充业务目标 |
| API 设计文档 | ✅ 可生成 | 提取到 45 个接口定义 |
| DB 设计文档 | ✅ 可生成 | 提取到 12 张表结构 |
| 架构概要 | ✅ 可生成 | 3 服务 + 1 前端的依赖关系图 |
## 三、健康检查报告
### 🔴 阻断 (2)
| # | 位置 | 问题 | 风险 | 修复建议 |
|---|------|------|------|---------|
| 1 | user-service/src/.../UserDao.java:45 | SQL 字符串拼接 | SQL 注入 | 改用 PreparedStatement 参数化查询 |
| 2 | config/application.yml:12 | 数据库密码明文硬编码 | 凭证泄露 | 使用环境变量或密钥管理服务 |
### 🟠 严重 (3)
...
### 🟡 一般 (5)
...
### 🔵 建议 (4)
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
统计:🔴 2 | 🟠 3 | 🟡 5 | 🔵 4 | 总计 14 个问题
💡 建议:先修复 🔴 阻断级问题,再运行 /pdlc-adopt init 生成基线文档。建议先运行 `scan` 查看报告,再运行 `init` 生成文档。
scan 相同的扫描逻辑(收集项目信息)docs/ 下是否已有同名基线文档,已存在则跳过(避免覆盖) docs/
├── 00_standards/
├── 01_requirements/prd/
├── 02_design/
│ ├── api/
│ ├── architecture/
│ └── database/
├── 03_development/
├── 04_testing/
├── 05_deployment/
└── 07_reviews/所有基线文档以 ADOPTED- 前缀命名,与正常 PDLC 文档区分。
所有文档头部包含接入标记:
<!-- PDLC-TRACE -->
<!-- PDLC-ADOPTED -->
<!-- 项目名称: my-project -->
<!-- 接入日期: YYYY-MM-DD -->
<!-- 阶段: 接入基线 -->
<!-- 说明: 由 /pdlc-adopt init 自动生成,内容基于代码逆向推断,需人工审核补充 -->#### 基线 PRD
docs/01_requirements/prd/ADOPTED-<项目名>-prd.md> ⚠️ 以下内容由代码逆向推断,业务目标和用户故事需人工补充#### 基线 API 设计文档
docs/02_design/api/ADOPTED-<服务名>-api.md(每个服务一个)assets/api-design-template.md 的格式> ⚠️ 接口描述基于函数名推断,请核对补充#### 基线 DB 设计文档
docs/02_design/database/ADOPTED-<服务名>-db.md(每个服务一个)assets/db-design-template.md 的格式> ⚠️ 表结构从代码提取,请核对与实际数据库是否一致#### 基线架构文档
docs/02_design/architecture/ADOPTED-<项目名>-arch.md> ⚠️ 架构描述基于代码结构推断,请核对补充#### 接入状态文件
docs/00_standards/adopt-status.md# PDLC 接入状态
> 由 `/pdlc-adopt init` 生成于 YYYY-MM-DD
## 接入概况
| 模块 | 基线 PRD | API 设计 | DB 设计 | 架构文档 | 测试覆盖 | 状态 |
|------|---------|---------|---------|---------|---------|------|
| user-service | ✅ | ✅ | ✅ | ✅ | ⚠️ 待补充 | 基线完成 |
| order-service | ✅ | ✅ | ✅ | ✅ | ⚠️ 待补充 | 基线完成 |
## 健康检查问题跟踪
| # | 级别 | 位置 | 问题 | 状态 |
|---|------|------|------|------|
| 1 | 🔴 | UserDao.java:45 | SQL 拼接 | 待修复 |
| 2 | 🔴 | application.yml:12 | 密码硬编码 | 待修复 |
## 后续建议
1. 人工审核基线文档,补充业务目标和用户故事
2. 修复 🔴 阻断级健康问题
3. 新功能开发使用 `/pdlc-feature` 走完整 PDLC 流程
4. 旧功能改造时从 `/pdlc-design` 开始(基线 PRD 已满足守卫检查)
5. 逐步为核心模块补充单元测试(使用 `/pdlc-tdd`)<!-- @include templates/prompts/output-language.md(已内联于下方,无需另读) --> 🌐 Output language for generated artifacts
All generated artifacts (PRDs, design docs, code comments, review reports, test plans, deployment manuals, changelog entries, etc.) follow this policy:
an artifact (e.g. "write the PRD in English", "用英文写 API 设计文档", "output the deploy doc in Japanese"), use that language for that artifact, regardless of conversation language.
language and others in a different language (common: Chinese PRD + English API docs for partners), honour each per-artifact instruction.
ask once before producing the first artifact.
This policy applies to content (prose, comments, headings). It does not override technical conventions like English variable names, English git commit subjects, or English error codes when the project's conventions require them. <!-- @include-end templates/prompts/output-language.md -->
docs/ 目录下创建文档> ⚠️ 引用块明确标注assets/adopt-report-template.md 模板作为格式参考接入操作: $ARGUMENTS
<!-- @include templates/prompts/handoff.md(已内联于下方,无需另读) -->
命令完成后必须输出以下格式的最终消息:
✅ <阶段名> 完成:<主要产出物路径>
📊 自检:<通过数>/<总数> 通过(若有未通过,附要点)
📦 状态快照:docs/.pdlc-state/<feature-id>.json
👉 下一步:/pdlc-<next_step>
(如果有分叉)或 /pdlc-<alt>(条件:<选择依据>)规则:
next_step,此时输出 👉 下一步:(本次流程结束,无后续)/pdlc-tdd;若测试已齐 → /pdlc-review"<!-- @include-end templates/prompts/handoff.md -->
本命令的 handoff 输出:
✅ PDLC 接入基线文档 完成
📦 产出:docs/**(基线文档集)
👉 下一步:(本次流程结束,无后续)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.