When a feature is too big to fit in one go, this skill creates a complete upfront plan: conceptual design, interface contracts, and a breakdown into sub-features. It lives in `.codestable/roadmap/{slug}/` and enforces a critical discipline: write the architecture layer contracts first (function signatures, data structures, protocols) before splitting into tasks. Each sub-feature will treat those contracts as hard constraints during feature-design, preventing the common mess where parallel features each invent their own incompatible interfaces. Two modes: new roadmaps and updates to existing ones. It won't let you skip the interface definition step with vague "TBD" placeholders, and it keeps planning separate from your requirements and architecture docs to avoid mixing "what we want" with "how we'll build it incrementally."
npx -y skills add liuzhengdongfortest/codestable --skill cs-roadmap --agent claude-codeInstalls into .claude/skills of the current project.
开始任何判断或动作前,先读取 .codestable/attention.md;缺失则视为骨架不完整,提示先补齐或运行 cs-onboard,不要回退到外部 AI 入口文件。
.codestable/roadmap/ 是项目的"规划层"——每个子目录承载一块大需求,主文档由三块构成:
三块一起作为这块大需求所有子 feature 的共同约束——每条子 feature 进 cs-feat-design 时,roadmap 第 2 块的接口契约就是它的硬约束输入(不能违反,要改先回 roadmap update)。
为什么 roadmap 承载架构方案不放进 architecture/:cs-arch 守"只记现状不记计划"。前瞻性架构方案属于"还没落地、可能还会变"的事前规划,放进 architecture 会污染那份系统地图。等子 feature 真正落地,对应接口由 cs-feat-accept 提炼回 architecture/——roadmap 完成过渡使命后归档。
为什么单独一层:requirements 记"要什么"(愿景)、architecture 记"怎么搭"(结构)、roadmap 记"怎么分步实现"(执行)。把执行规划塞进愿景或结构文档会把"要什么"和"打算怎么实现"混起来——查不到系统真实能力,计划改一下又得改两份文档。
为什么文件夹不是单文件:拆解过程会产生草稿 / 调研 / 方案对比 / 白板转述,塞一份 md 会乱又舍不得删。每个 roadmap 一个子目录,主文档对外口径,旁边 drafts/ 随便堆。
共享路径与命名约定看
.codestable/reference/shared-conventions.md。主文档和 items 完整模板看同目录reference.md。
cs-brainstorm 判为 case 3 移交过来(brainstorm 只做分诊,不做拆解)不适用:单 feature 能装下 → cs-feat;描述能力"是什么、边界" → cs-req;描述系统"结构怎么搭" → cs-arch;拍板长期规约 / 选型 → cs-decide。
| 用户说什么 | 模式 |
|---|---|
| "拆一下 X 需求"、"开一份 X 的 roadmap"、"我想要一个 X 系统" | new |
| "往 {已有 roadmap} 加子 feature"、"重排顺序"、"标 drop" | update |
判断不出问用户。
每次只动一份 roadmap。一次扔出"我想要 X 和 Y"先选一个,另一个下次。理由同 req / arch——一次吐多份用户 review 不过来。
.codestable/roadmap/{slug}/
├── {slug}-roadmap.md 主文档:背景 / 范围 / 模块拆分(概设)/ 接口契约(架构层详设)/ 子 feature 清单 / 排期
├── {slug}-items.yaml 机器可读清单(feature-design 读、feature-acceptance 回写)
└── drafts/ 可选,调研 / 讨论 / 草稿
{slug} 小写字母 / 数字 / 连字符,和大需求一致(permission-system、notification-center)。平铺不嵌套 epic / sub-epic。drafts/ 按需建,AI 不强制归档。
模式 + 目标 + 范围。new 模式先敲定一个英文 slug(参考现有 req / arch slug 习惯)。
共同必读:.codestable/attention.md + 用户素材 + roadmap/ 其他 roadmap(防重复)+ requirements/ 相关 req + architecture/ 相关 doc。
按情况读:
python .codestable/tools/search-yaml.py --dir .codestable/compound --query "{大需求关键词}"update 额外:当前主文档全文 + items.yaml 当前状态 + 已启动 / 完成的子 feature 的 design / acceptance。
按 reference.md "主文档结构"和"items.yaml 格式"写完整初稿不分批。
拆解纪律:
review 前自跑一遍汇报处理:
.codestable/features/ 确认不冲突)主文档 + items.yaml 完整贴给用户。改到用户明确"可以了"。
new:建 .codestable/roadmap/{slug}/;写主文档(status: active / created / last_reviewed 当天);写 items.yaml(每条 status: planned、feature: null);validate-yaml.py 校验。
update:改主文档(last_reviewed 当天,结构性改动文末加变更日志);改 items.yaml 对应条目(drop 不删,status: dropped 留存理由);重新校验 yaml。
不改 requirements / architecture——roadmap 是规划层,那两层只描述现状。拆解过程发现 req / 架构过时,在主文档"观察项"记一句给用户,不顺手改。
用户说"开始做 roadmap 里的 {子 feature}"时:
cs-feat-design(或 ff / brainstorm)起 feature 目录roadmap: {slug} + roadmap_item: {子 slug}status: in-progress、feature: YYYY-MM-DD-{slug}职责在 cs-feat-design 不在本技能。
roadmap 主文档第 4 节"接口契约"是 feature 的硬约束输入——不是参考,是不能违反、要改先回 roadmap update。这就是为什么 roadmap 要在拆 feature 前先把架构方案定下来:让多条 feature 并行 / 串行实现时对外接口对齐。
feature-design 发现接口契约不合理 / 漏了 / 描述不准 → 回 cs-roadmap update 改了再继续,不要在 feature 里偷偷绕开(绕开会让下一条同模块 feature 接到老契约导致二次冲突)。
cs-feat-accept 收尾时如果 design frontmatter 有 roadmap 字段就改对应 roadmap_item 的 status: done,同时同步主文档子 feature 清单勾选状态。职责在 cs-feat-accept 不在本技能。
done / dropped 后主文档 status: completed,目录留作历史档案status: paused,主文档加理由doc_type: roadmap / slug / status / created / last_reviewed / tags)slug / description / depends_on / status / featurevalidate-yaml.py 校验| 方向 | 关系 |
|---|---|
cs-req 配合 | req 记"为什么有这个能力"、roadmap 记"打算怎么分步做出来"。大需求下可能多份 req;缺 req 提示用户先 cs-req |
cs-arch 配合 | architecture 记现状、roadmap 记若干步。读 arch 理解现状但不改它 |
cs-feat 下游 | 每条子 feature 是未来一次 feature 流程的种子;起头时 design frontmatter 带 roadmap / roadmap_item |
cs-feat-accept 回写方 | acceptance 自动改 items.yaml 为 done,本技能只定义格式不负责回写 |
cs-onboard 创建者 | 建 roadmap/ 空目录 |
cs-brainstorm 上游 | case 3 移交本技能,带"真问题 / 大致范围 / 可能子模块"一句话汇总。本技能不重复分诊直接拆 |
mattpocock/skills