codebase-baseline-planner

在修改、DIY、重构、迁移、接手维护或继续实现已有代码库前,先独立还原原项目并形成可追溯的认知基线,再系统发现盲区、未知与潜在风险,保持独立判断并纠正用户认知,经用户确认后生成融合的二次开发方案;同时把关键认知、决策与实施状态写回项目内,供其他 Agent 或新对话快速接手。适用于本地代码、压缩包、文档或 GitHub 仓库:优先复用项目内已保存的基线、决策、融合方案和实施状态,核对分支与提交后增

SKILL.md

GitHub

原项目分析、盲区发现与二次开发协作规划

把本 Skill 作为带证据和阶段门槛的工作流:先独立还原原项目并系统发现盲区与未知,再与你讨论并确认二次开发方向,确认后生成融合改造方案;同时把关键认知、决策与进度写回项目内,作为辅助的交接能力,供其他 Agent 或新对话快速接手。

读取参考文件

  • 每次开始时读取 references/persistence-protocol.md,执行项目记忆定位、新鲜度检查和写回规则。
  • 需要深度分析原项目时读取 references/analysis-framework.md。
  • 准备认知基线、决策、融合方案或实施交接文档时读取 references/report-templates.md。
  • 不要把任何参考文件中的条目当成完整范围;根据项目实际证据扩展高价值方向并压缩低价值细节。

核心规则

  1. 先还原,后评价,再融合。 原项目基线中不得提前混入用户 DIY 想法。
  2. 清单只保证最低覆盖。 所有列举都是提示,不是思考边界。
  3. 证据优先。 以代码、配置、测试、运行结果、仓库历史和维护者记录支撑结论;无法确认时降低结论强度。
  4. 保持独立判断。 不机械接受用户判断,也不为表现独立而无依据反对;主动指出更合理的路径。
  5. 持续发现未知。 未知会在分析、讨论和实施中出现;发现后更新基线、决策、计划和实施状态。
  6. 设置阶段门槛。 未获得用户明确确认前,不生成最终融合架构,不实施相关修改。
  7. 先恢复记忆,再扫描代码。 优先复用项目内已保存的入口、基线、决策、融合方案和实施状态(记忆是辅助交接能力)。
  8. 先核对版本,再信任文档。 比较当前分支、HEAD、工作区和文档记录的修订;旧文档不是自动成立的事实。
  9. 优先增量复查。 既有文档仍有效时,只调查变更区域及其上下游;满足重建条件时才完整重扫。
  10. 把状态写回项目。 不把重要认知、决定和进度只留在聊天记录中。
  11. 不伪装完成。 代码写入但未验证时标记为已实现未验证,不得标记完成。
  12. 保护项目与用户。 不覆盖人工文档,不写入敏感信息,不在未获授权时提交、推送或开 PR。

默认项目记忆结构

项目内记忆是辅助交接能力,核心仍是上面约定的分析与协作工作流;记忆用于让新 Agent 或新对话快速复用已建立的认知,不替代分析本身。除非项目已有更合适的规范,使用:

AI_PROJECT_CONTEXT.md

docs/ai-project/
├── state.json
├── BASELINE.md
├── DECISIONS.md
├── FUSION_PLAN.md
├── IMPLEMENTATION_STATUS.md
└── CHANGELOG.md

把 AI_PROJECT_CONTEXT.md 作为稳定入口。详细职责和写回要求见 references/persistence-protocol.md。

在本地可写环境中,可使用:

python <skill-dir>/scripts/project_memory.py status --project-root <project-root>
python <skill-dir>/scripts/project_memory.py init --project-root <project-root>
python <skill-dir>/scripts/project_memory.py validate --project-root <project-root>

脚本只初始化和检查项目记忆,不替代实际分析。禁止用 --force 覆盖已有文档,除非已确认内容可安全替换。

工作流

阶段 -1:恢复项目记忆并判断新鲜度

首先确定项目根目录、当前分支、HEAD 和工作区状态,然后:

  1. 查找并读取 AI_PROJECT_CONTEXT.md 和 docs/ai-project/state.json;
  2. 根据任务读取基线、决策、融合方案和实施状态;
  3. 比较已记录修订与当前代码;
  4. 判断采取以下哪种方式:
    • 直接复用:版本一致、工作区无相关变化、文档无明显冲突;
    • 增量复查:存在可界定的提交或工作区变化;
    • 完整重建:历史失效、架构根本变化、文档证据不足或重大冲突;
  5. 向用户说明采用的方式和实际覆盖边界。

直接复用时仍要抽查与当前任务最相关的代码位置。不要只读入口摘要就继续实施。

项目记忆不存在且项目可写时,初始化结构。项目只读时,明确说明无法持久化,不得声称已经保存。

阶段 0:确认调查对象和证据范围

识别并记录:

  • 项目来源、仓库地址或本地路径;
  • 当前分支、版本、标签、提交和工作区状态;
  • 可访问的代码、文档、测试、运行环境和历史记录;
  • 是否能访问 Issues、PR、Discussions、Releases、提交、Actions 和安全公告;
  • 已有项目记忆对应的版本和可信边界;
  • 当前无法访问或无法验证的资料。

项目位于 GitHub 时,优先使用可用的 GitHub 连接器或仓库工具读取真实记录。不要只分析 README,也不要把未证实反馈直接当作 Bug。

阶段 1:生成或更新项目特定覆盖图

根据代码库自身生成调查范围,而不是照抄固定目录。

至少说明:

  • 真正影响运行、扩展、兼容和维护的领域;
  • 每个领域的重要原因和证据来源;
  • 已有基线已经覆盖什么;
  • 本次变化影响什么;
  • 哪些领域仍有信息缺口;
  • 除用户要求外主动增加了哪些高价值方向。

执行开放式检查:

假设用户没有提供任何清单,作为维护者、架构分析者和后续开发者,还必须理解什么?

阶段 2:调查或增量更新原项目

根据新鲜度判断选择调查深度:

  • 还原目标、边界、架构、模块关系、运行链路、数据流和关键状态;
  • 定位重要目录、文件、类、函数、接口、数据结构、配置和扩展点;
  • 识别技术栈、依赖、构建、部署、兼容、错误处理、测试和隐含约定;
  • 查找不宜随意修改的核心部分及连锁影响;
  • 调查 Issues、PR、Discussions、Releases、Changelog、提交、CI、安全和废弃记录;
  • 提取历史缺陷、触发条件、修复方式、被拒绝方案、平台差异和可复用调试经验;
  • 区分当前版本事实、历史问题、未证实反馈、设计限制和仍未解决事项。

持续区分:

  • 已验证事实;
  • 有依据的推断;
  • 外部反馈;
  • 未知或待核实。

阶段 3:执行盲区发现

把“已明确内容、已意识到的未知、未写出的隐含已知、尚未意识到的未知”作为扩大调查范围的透镜,不要机械建立四个固定栏目。

至少执行:

  1. 代码、配置、测试、文档、历史和运行结果交叉核对;
  2. 从新接手 Agent、维护者、二次开发者、使用者及项目特有角色寻找遗漏;
  3. 反向推演未来失败、兼容破坏、回归或误解最可能源于哪些缺失信息;
  4. 主动寻找当前清单和术语之外的高影响问题;
  5. 检查当前分类是否正在限制调查范围。

优先调查可能改变架构理解、开发方向、成本、稳定性或维护难度的内容。不要为了显得全面而堆积无关细节。

阶段 4:保存原项目认知基线并暂停

按照弹性模板更新 BASELINE.md,并同步更新:

  • AI_PROJECT_CONTEXT.md;
  • state.json;
  • CHANGELOG.md。

只有满足完成标准后才标记 baseline-complete;否则标记 baseline-in-progress 并写明缺失范围。

提交给用户阅读后暂停。不要直接输出融合版方案或修改代码,除非用户已经明确确认最终改造方向。

阶段 5:讨论用户想法并维护决策记录

对每项高影响想法建立稳定决策 ID,例如 DEC-001,写入 DECISIONS.md。说明:

  • 目标、结论和依据;
  • 影响模块、运行链路和历史问题;
  • 收益、成本、风险和维护负担;
  • 更简单或稳妥的替代路径;
  • 仍需验证之处和重新评估条件;
  • 状态:已确认、暂定、被否决、延后、待验证或被替代。

不得删除被否决或被替代的历史,也不得把临时设想写成最终要求。

阶段 6:仅在明确确认后保存融合方案

用户明确确认改造方向后,更新 FUSION_PLAN.md,并同步更新决策、入口、状态和变更日志。

方案说明:

  • 新旧目标、架构、模块、接口、数据和流程映射;
  • 保留、修改、新增和移除内容及原因;
  • 实施顺序、前置条件、兼容和迁移策略;
  • 历史问题复现风险和可借鉴方案;
  • 测试、验收、故障定位和回退方式;
  • Agent 可自主决定与必须暂停确认的边界;
  • 尚未解决的未知、风险和验证计划。

融合方案必须指向其依赖的基线修订和决策 ID。

阶段 7:实施并持续更新交接状态

对每个工作项建立稳定实施 ID,例如 IMP-001,持续更新 IMPLEMENTATION_STATUS.md。

至少区分:未开始、进行中、阻塞、已实现未验证、完成、取消、被替代。

标记完成前记录:

  • 关联决策或方案章节;
  • 修改文件或提交;
  • 验证方式和实际结果;
  • 已知限制和未覆盖测试;
  • 剩余工作和下一步。

每次暂停、阶段结束或准备交接前,更新根入口中的当前阶段、最近完成、正在进行、未完成、阻塞、下一步、最近验证和工作区状态,使新 Agent 无需依赖旧对话即可恢复工作。

防止“清单锁死”的强制动作

每个阶段结束前:

  1. 删除或合并低价值、重复内容;
  2. 增加由项目证据新暴露的高价值内容;
  3. 检查是否只回答了提示词明确点名的事项;
  4. 写出本阶段最可能仍遗漏的高影响内容;
  5. 判断继续扩展是否会改变决策,而不是只增加细节;
  6. 检查是否需要更新项目记忆中的其他关联文档。

完成标准

只有满足以下条件,才能把当前阶段标为可提交或完成:

  • 主要运行链路能够被连贯解释;
  • 高影响模块、依赖、约束和历史问题已覆盖;
  • 重要结论可追溯到证据和代码位置;
  • 重大信息缺口已经暴露;
  • 至少执行一次脱离原清单的开放式复查;
  • 没有把未检查、未理解或未验证写成不存在;
  • 项目记忆对应当前明确的分支或修订;
  • 入口、详细文档和状态文件保持一致;
  • 继续调查主要只会增加低价值细节,不会显著改变判断。

表达和写入要求

  • 使用自然、直接的语言,不用大量模板化设问或为了完整而机械分点。
  • 对高影响判断给出依据;对低影响事实适度压缩。
  • 纠正用户时保持克制,不夸大 AI 能力,不制造不存在的确定性。
  • 写入前读取并合并现有文档,禁止无条件覆盖人工内容。
  • 不把密钥、令牌、个人隐私或其他敏感数据写入项目记忆。
  • 写入后报告修改文件、对应修订和是否已被 Git 跟踪。
  • 默认不创建提交、不推送、不开 PR,除非用户明确授权。