project-health-check-SKILL
Project Health Check|项目状态自动检测
# Project Health Check|项目状态自动检测
目标
用“证据优先(Evidence First)”方式自动判断项目的真实状态,而不是相信 README、任务看板、口头描述或文件夹名称。
本 Skill 的核心输出必须回答:
- 这是什么项目?
- 当前真正做到哪一步?
- 能否构建、测试、运行、发布?
- 哪些能力是真实实现,哪些只是 UI / mock / placeholder / stub?
- 当前最严重的阻塞是什么?
- 下一步唯一最值得做的动作是什么?
默认模式
默认:只读检查(READ-ONLY)。
除非用户明确授权,否则禁止:
- 修改源码
- 安装或升级依赖
- 删除、移动、重命名文件
- 写数据库
- 修改配置或环境变量
- Git commit / push / reset / clean
- 启动会影响生产数据的服务
- 登录生产环境
- 执行部署
- 自动修复
允许:
- 枚举目录
- 读取代码与配置
- 检查 Git 状态
- 读取已有构建、测试、日志与发布产物
- 运行明确无副作用的只读命令
- 在用户明确允许时运行本地 build/test/typecheck/lint
无法验证的事实必须标记:UNVERIFIED。
输入
至少需要以下之一:
- 项目路径
- 仓库
- 压缩包
- 已上传项目文件
- 当前工作目录
可选输入:
- 用户认为的当前阶段
- 目标发布平台
- 已知问题
- 是否允许运行测试
- 是否允许联网
- 是否允许检查生产环境
阶段模型
统一使用以下阶段,不只使用百分比:
S0 Idea:仅想法、需求或文档S1 Design:产品/UI/架构设计存在S2 Prototype:可运行原型或 DemoS3 Functional:核心功能真实可用S4 Integrated:主要模块完成集成S5 Release Candidate:达到发布候选S6 Production:已有生产部署并验证S7 Mature:长期稳定运行并持续维护
如需要可附完成度百分比,但阶段判断优先。
工作流
Step 1:识别项目身份
检查:
- 根目录
- Git 仓库
- README / PRD / HANDOFF / ROADMAP
- package.json
- pyproject.toml / requirements.txt
- Cargo.toml
- go.mod
- pom.xml
- build.gradle / settings.gradle
- hvigorfile / build-profile.json5
- tauri.conf
- electron-builder
- Dockerfile / compose
- next.config / astro.config / vite.config
- CI 配置
- release / dist / bundle / artifacts
输出:
- 产品名称
- 项目类型
- 技术栈
- 主入口
- 运行方式
- 发布目标
Step 2:建立事实清单
从代码和真实产物验证:
- 主模块是否存在
- API 是否真实实现
- 数据库 schema 是否存在
- 鉴权是否真实存在
- 模型调用是否真实存在
- 文件/网络/设备操作是否真实
- UI 是否只是占位
- 是否存在 mock / stub / placeholder
- 是否存在 hardcoded response
- 是否存在 TODO / FIXME / not implemented
- 是否存在真实 release 产物
重点搜索:
TODO
FIXME
PLACEHOLDER
MOCK
STUB
NOT_IMPLEMENTED
COMING_SOON
example response
hardcoded
throw new Error("Not implemented")
不能把“有界面”判定为“功能完成”。
Step 3:检查 Git 与版本健康
记录:
- 当前 branch
- HEAD commit
- 是否 dirty
- 未跟踪文件
- worktree
- tag
- 最近提交
- 是否存在多条实现路线
- README、构建产物和源码是否一致
不得自动修改 Git。
Step 4:检查工程健康
检查已有证据:
- typecheck
- lint
- unit test
- integration test
- E2E
- build
- packaging
- installer
- dependency audit
- license/security docs
- CI
如果用户允许实际执行,只运行项目已有标准命令,不擅自发明破坏性命令。
执行失败必须记录:
- 命令
- exit code
- 最小错误摘要
- 属于代码、环境还是依赖问题
Step 5:检查运行与发布状态
判断:
- 本地能否启动
- 主进程是否健康
- 端口是否正常
- 是否有安装包
- 是否签名
- 是否经过干净环境安装
- 是否验证升级/卸载
- 是否有回滚
- 是否有备份
- 是否有生产部署证据
生产运行仅在用户明确授权下复验。
Step 6:检查风险
至少检查:
- 明文 secret 指示文件是否存在
.env/.pem/.key/ credentials 文件名- 过宽权限
192.0.2.10暴露- debug 配置进入生产
- 硬编码路径
- 硬编码主机/IP
- 用户数据混入源码
- 大型构建产物混入仓库
- 重复 node_modules / venv / target
- 旧版本覆盖主线
- 源码/README/产物不一致
禁止输出真实 secret 内容。
Step 7:给出健康结论
健康状态仅使用:
HEALTHYHEALTHY_WITH_WARNINGSAT_RISKBLOCKEDUNKNOWN
并给出置信度:
- High
- Medium
- Low
Step 8:给出唯一 NEXT ACTION
最终必须给出一个最重要的下一步。
格式:
NEXT ACTION:<唯一动作>
禁止一次给十几个行动项。
输出格式
Project Health Report
1. Executive Summary
- Product:
- Stage:
- Health:
- Confidence:
- Verified:
- Unverified:
- Release status:
2. Evidence
| 事实 | 证据 | 状态 |
|---|
3. Build / Test / Run Matrix
| Gate | Status | Evidence |
|---|
状态只能使用:
PASS / FAIL / PENDING / UNVERIFIED / N/A
4. Functional Reality Check
| 能力 | UI存在 | 真实逻辑 | 验证状态 |
|---|
5. Risks
按严重度:
- P0 Blocking
- P1 High
- P2 Medium
- P3 Low
6. Current Blocker
只写当前最主要阻塞。
7. NEXT ACTION
只允许一个动作。
最终检查
完成前确认:
- 没有因为 README 宣称完成就直接判完成
- 没有把 UI 当成功能
- 没有把构建成功当成生产可用
- 没有把旧产物当成当前版本
- 没有泄露 secrets
- 所有无法验证的事实都标记 UNVERIFIED
- 给出了唯一 NEXT ACTION