M-Plan
flowchart LR
A["Read shaped facts"] --> R["Registry preflight"] --> S["Complete index scan"]
S --> F["Filter Lesson / Project / capability summaries"]
F --> D["Open current source CLAUDE.md"]
D --> E["Open minimum relevant evidence"]
E --> B["Define verifiable Tasks"] --> C["Bind plan identity"]
Version Preflight
写入前读取 $SKILL_DIR/MTP_VERSION 和 ai/mtp.json。manifest 缺失、profile
不是 lightweight、缺少有效 project_id / registry_id 或版本不匹配时,返回
m-new 且零写。只有完整 Bundle 0.1.4 项目才继续。
只读取 CLAUDE.md、ai/brief.md、当前 ai/plan.md 和被明确引用的证据。方向仍有
实质性不确定时返回 m-define,不写计划。
Registry Preflight and Progressive Discovery
创建或修订多步计划前,主 Agent 自动调用当前项目安装的
scripts/validate_plan.py 的 discover 路径,加载项目内 ai/registry.py 并通过机器级 Git locator
定位独立 Registry。不得按 Skill 安装路径、项目路径副本或文件系统扫描推测 Registry。
发现顺序固定为:
- 完整读取 Registry active index,按 stable ID 升序记录全部
scanned_ids和registry_revision;无总匹配上限。 - 以 8 条为一批读取 summary,筛出可能相关的 Lesson、Project 和 capability,记录
matching_ids。不足以判断时继续下一批。 - 以 2 条为一批读取 detail;先读取来源项目
CLAUDE.md,再只打开该记录 evidence 指针所指向且与问题相关的最小文件。不得读取MTP_THINK.md或广泛加载项目。 - 将过期、缺失或与来源项目当前 HEAD 不一致的
source_revision排除,并记录applicability、selected_record_ids、停止条件和已加载路径。
结果必须作为计划证据保留。无匹配是有效的 candidate-exhaustion,不是失败。
Registry 不可用时:local-only 且非 Registry relevant 继续降级;显式跨项目问题阻断;
其余 Registry relevant 情况记录 registry-pending 到项目 ai/NEXT.md,不污染
CLAUDE.md。发现只提供导航和证据,不复制、调用、集成或修改其他项目。
普通单步 Direct Path 不触发该预检;只有确实需要多步计划或跨项目信息的问题才进入该路径。
清晰、边界明确、局部、可逆且可确定验证的单步请求不进入本 Skill,也不创建正式计划;
直接交给 m-build 的 Direct Path。不得为了流程完整把简单工作包装成 Task。
所有规划遵循 Think Before Coding、Simplicity First、Surgical Changes 和 Goal-Driven Execution:先写明假设、歧义、取舍和更简单方案,只规划完成目标所需的最小 改动,并让每项修改、测试和审查都能追溯到 Task 的 AC、TC 和验证。
- 将目标拆成可独立交付和验证的 Task。每个 Task 必须包含
task_id,以及goal、dependencies、allowed_paths、artifact、acceptance_criteria、test_cases、baseline_verification、verification、completion_signal、risk、review、rollback、execution和exclusive_resources。 每个验收条件使用唯一AC-...ID;每个测试用例使用唯一TC-...ID,并显式列出其覆盖的 AC。不得有未知、重复或未覆盖的 ID,也不得为不存在的 TC 声称验证。 - 明确依赖、允许路径和独占资源。默认使用
execution=primary,按风险选择review:低风险 self、中风险 combined、高风险 two-stage、发布 independent。 风险理由必须说明影响面、可逆性、失败后果、可验证性以及真实风险信号。边界明确、局部、可逆、 可确定验证,且不涉及实质歧义、共享合同、业务数据迁移、权限或安全边界、远程不可逆 副作用、大范围删除、真实并发或不可验证行为的 工作才是简单低风险:由主 Agent 自己执行,Reviewer 和子 Agent 调用数均为零,只做 受影响验证,不建立独立审查 artifact;不要为并发而拆分 Task。parallel只用于有真实并行收益、依赖已 Accepted、声明范围和实际范围都不相交、 且隔离 worktree 与中断能力可用的例外写入。复杂 Task 缺少child时主 Agent 顺序执行;缺少写隔离或中断时 Blocked,除非用户明确许可主 Agent 顺序执行。 合同要求的 Reviewer 不可用时一律 Blocked。 - 在
ai/plan.md的MTP01-PLAN:BEGIN/END标记内保存一个 JSON 语义合同:goal、dependencies、task_contracts和success_criteria。运行python3 $SKILL_DIR/scripts/validate_plan.py ai/plan.md --print-revision校验结构并计算 规范化 SHA-256plan_revision;校验失败时不更新现行计划。 - 用户批准后提交包含该合同的 Git commit,将其 SHA 作为
plan_commit。使用脚本的--plan-commit与--plan-revision复核身份,再只更新ai/NEXT.md的当前 Task、plan_commit和plan_revision。 ai/NEXT.md、ai/review.md、ai/IMPL_LOG.md是状态文件,不参与 revision;目标、 依赖、Task 合同或成功标准变化时必须生成新 revision,并使旧 revision 的未接受派发失效。
本 Skill 只写 ai/plan.md 和 ai/NEXT.md,不写 CLAUDE.md 或 ai/lessons.md,
不执行实现、不调度 Agent、不写审查结果。
计划就绪后返回 m-build。
微信扫一扫