with one click
cs-feat-design
// feature 流程阶段 1——为新功能起草 {slug}-design.md 作为后续实现和验收的唯一输入,拍板后抽出 checklist。触发:用户说"开始设计方案"、"写 design doc"、"准备实现 XX",前提是已知道做什么、为谁、怎么算成功。
// feature 流程阶段 1——为新功能起草 {slug}-design.md 作为后续实现和验收的唯一输入,拍板后抽出 checklist。触发:用户说"开始设计方案"、"写 design doc"、"准备实现 XX",前提是已知道做什么、为谁、怎么算成功。
通过 Chrome 扩展控制真实浏览器。需要访问网页、抽取网页数据、点击按钮、填写表单、执行浏览器自动化、提取渲染后的组件证据,或以程序方式操作页面时使用。通过 DOM diff、简化 HTML 和 component evidence pack 返回节省 token 的结构化结果。适用于 browser control、web automation、page scraping、web data extraction、execute JS in browser、web_scan、web_execute_js、open browser、navigate to URL、get page content、fill form、click button、extract component、rendered DOM、computed styles、component evidence。
想法还模糊时的讨论入口,做分诊后路由到 feature-design / feature-brainstorm / roadmap。AI 是思考伙伴不是记录员。触发:用户说"有个想法还没想清楚"、"先 brainstorm 一下"、"聊一聊这块"、"方向还在摇摆"。不处理 bug 和重构。
feature 流程的超轻量通道——不写 design / checklist 直接动手,但先指引 AI 查 CodeStable 知识库再开工。触发:用户说"快速模式"、"fastforward"、"别那么多步骤"、"直接开干",且需求小到不值得走 design 流程。
issue 流程阶段 2——读 report + 读代码定位根因、评估风险,给用户 2-3 个修复方案让 TA 拍板。这一步不改代码。触发:用户说"分析这个 bug"、"找根因"、"定位问题",且已有 {slug}-report.md。
系统审计——从代码中主动发现 bug 隐患、安全漏洞、性能问题、可维护性债务和架构偏离,产出批量发现清单。触发:用户说"审查系统"、"审计代码"、"扫描问题"、"找找 bug"、"有什么可以优化的"。
CodeStable 工作流根入口,介绍体系全貌并把诉求路由到对应 cs-* 子技能。触发:用户只输入 `cs`、说"介绍一下 codestable"、"该用哪个技能"、"不知道用哪个",或诉求还很开放未收敛。本技能只做路由不做事。
| name | cs-feat-design |
| description | feature 流程阶段 1——为新功能起草 {slug}-design.md 作为后续实现和验收的唯一输入,拍板后抽出 checklist。触发:用户说"开始设计方案"、"写 design doc"、"准备实现 XX",前提是已知道做什么、为谁、怎么算成功。 |
这一阶段的产出是一份方案文件 {slug}-design.md,加上从中抽出的行动清单 {slug}-checklist.yaml。这两份东西后面会被两个阶段消费——implement 照着推进、acceptance 照着核对,所以这里写错或写漏,下游就跟着错。
共享路径和命名约定看
codestable/reference/shared-conventions.md。本阶段一般 feature 目录已经由 brainstorm 创建好了;没有的话在这一步建。
本阶段有三个入口:
{slug}-intent.md),直接进"流程"一节走完整起草。{slug}-intent.md 就结束本轮,等用户填完再回来。roadmap / roadmap_item 两个字段,同时回写 items.yaml 把对应条目 status 改为 in-progress、feature 填为 feature 目录名。详见下文"从 roadmap 条目起头"。触发:用户想自己写一份半成品方案({slug}-intent.md)作为后续 design 的输入,但不想手动建目录。
动作:
和用户快速对齐两件事——一句话需求概要 + 敲定 slug(小写字母、数字、连字符;user-auth、export-csv 这种)。日期取当天(frontmatter 用 currentDate 即可)。feature 目录命名是 YYYY-MM-DD-{slug}。
创建 codestable/features/{YYYY-MM-DD}-{slug}/ 目录。
写一份空的 {slug}-intent.md 作为草稿骨架,内容就是下面这段:
---
doc_type: feature-intent
feature: {YYYY-MM-DD}-{slug}
status: draft
summary: {一句话需求,AI 按和用户对齐的结果填}
---
# {slug} intent
## 背景 / 为什么做
(一句话就够)
## 大致怎么做
(100 字左右描述想法,含关键步骤 / 数据流)
## 相关数据结构 / 类型
(贴相关 types、接口签名、或指向代码位置)
## 已知不做 / 待定
(可选:明确的边界或自己也没想清楚的地方)
告知用户"骨架已建好,填完后再来找我,我基于 intent 写正式 design",然后本轮结束,不继续推进 design 流程。
为什么在这里停?intent 的价值就是让用户离线思考、把脑子里的东西落到纸面。AI 继续问会把 intent 模式退化成 brainstorm,失去意义。
触发:用户说"开始做 roadmap 里的 {子 feature}"或指向 items.yaml 里某条 planned 条目。
{roadmap-slug}-roadmap.md 和 {roadmap-slug}-items.yaml:
status: planned + depends_on 前置全 done,否则停下来报告cs-roadmap update 改,不要在 design 里偷偷绕开YYYY-MM-DD-{roadmap 条目 slug},不另起roadmap / roadmap_item 两字段status: approved 同时回写 items.yaml:对应条目 status: in-progress + feature: YYYY-MM-DD-{slug},用 validate-yaml.py 校验完整衔接协议看 codestable/reference/shared-conventions.md 第 2.5 节。
design 只管"编排-计算分离"里的编排那一侧:这次 feature 在名词层和编排层的现状与变化。计算层细节(具体怎么写、改哪些函数、测试怎么搭)归 implement。
写三类东西,名词层和编排层都用"现状 → 变化"两段式:
外加一个固定结构健康度环节(第 2.5 节):评估即将被改动的文件是否偏胖 / 职责混杂、以及新文件要落进的目录是否摊平,决定是否在实现前先做"只搬不改行为"的微重构(拆文件 / 重组目录)。即使结论是"不做"也要在 design 里显式写出来——否则 AI 默认会持续往胖文件里塞代码、往拥挤目录里加文件。这一节随整稿一起进整体 review,不单独走确认。
判据:换一种写法名词层或编排层会变得不同 → design 的事;换一种写法只是"代码不那么好看 / 函数拆法不同 / 测试用了别的 framework" → implement 的事。
不写改动文件清单、函数级落点、测试代码、库选型细节——design 阶段还没读完相关代码,预测多半会回头改。implement 拿到 design 后才扫现状决定。
读者打开 {slug}-design.md 是想 5 分钟内抓到要点,不是逐字精读。具体做法:
碰到"用户没说清的角落"默认停下来问,不自己挑一个填上去。具体:
回答:"如果想把它拔掉,要拔哪些地方?" 答不出说明边界没想清楚,feature 一上线就变成拆不动的既成事实。
落到挂载点清单(第 2.3 节)。判据:删掉这一项,feature 在用户/系统视角是不是就消失了?是→列,否→不列。详细 ✅/❌ 例子和写法看 reference.md。这清单顺带帮你发现自己有没有不小心往太多地方插桩——真挂入点越多代表耦合越散,是个信号。
前置 gate:需求输入至少含 用户目标 / 核心行为 / 成功标准 / 明确不做 四项(来源 intent / brainstorm / 对话)。缺了补;用户自己说不清就回退到 brainstorm。
必做 4 条:
{slug}-design.md / {slug}-intent.md / {slug}-brainstorm.md:
status=draft 各节基本完整 → 跳到本流程"5. 整体 review"status=approved → 别默认覆盖,问用户接着改还是另起 slugcodestable/ 发现可用目录和文档类型,按类取用:
architecture/ → 读 ARCHITECTURE.md + 索引 + 相关子系统 doc,关注名词复用和流程级约束requirements/ → 有对应 req:frontmatter requirement 填 slug,读"用户故事 / 边界"两节;新能力首次出现留空,由 acceptance 回填;纯重构 / 技术债留空compound/ → 用 search-yaml.py --dir codestable/compound 搜相关 decision / explore / trick / learning;命中冲突 decision 必须正面回应features/ → 搜历史 design 有无同类 feature 可参考按信号触发 3 条(没信号跳过):
codestable/reference/code-dimensions.md 列偏离点;无信号写"走默认档位"详细规则看 codestable/reference/shared-conventions.md 第 5 节。
动笔写名词层 / 编排层前,先回答:这次要加的东西在项目整体结构里属于哪儿?
代价:放错了模块就变"什么都装的筐";新建平行实现就有几个版本同存。
结论写进第 1 节"决策与约束"。涉及新建模块或跨模块接口时同步写进第 4 节,提示在 ARCHITECTURE.md 加指向。
AI 默认翻车的姿势是不思考就往眼前最顺手的文件里加。
按 reference.md 模板写第 2 节四个子节(2.1 名词层 / 2.2 编排层 / 2.3 挂载点 / 2.4 推进策略)。重点提示:
"现状"必须指向代码位置,不能想当然——读者要靠它判断"变化"是否合理
编排层开头一张 mermaid 图建 mental model
挂载点按"删了它 feature 是否消失"判据,3-5 条为正常区间
推进策略按 paradigm 维度切片(编排骨架 → 计算节点 → 持久化 → 测试),不下沉到 file:line
第 2.5 节"结构健康度与微重构"是固定步骤——按 reference.md 写作要求评估两类对象:要改的文件(文件级)+ 要落新文件的目标目录(目录级)。评估前先查 compound 已有 convention(关键词围绕"目录组织 / 文件归属 / 命名约定"),命中就直接照办。结论三选一:
选择 2 / 3 时给出"搬什么 → 搬到哪 → 怎么验证行为不变"的具体方案,落进 checklist 作为第 1 步且独立验证退出,再开始 feature 主体
重组目录时多问一步:是稳定模式还是一次性整理——稳定模式(如"自定义业务组件统一放 components/custom/",未来其他 feature 也该遵守)就在 2.5 末尾加"建议沉淀的 convention"段,提示用户 implement 跑通后走 cs-decide 归档;一次性整理(只是这个目录碰巧挤了)就只搬不归档。design 阶段不直接归档——方案还没真跑过,留钩子给 implement 后再决定
design 只做安全的微重构,边界严格守住:"只搬不改行为"——文件级靠 IDE rename / move + 编译器校验,目录级靠纯文件移动 + import 路径更新 + 编译器校验。一旦涉及改函数签名 / 改返回值结构 / 改调用关系语义 / 模块拆合,就超出 design 范围:写进第 2.5 节末尾的"超出范围的观察"里提示用户"建议后续走 cs-refactor 处理",不阻塞本 feature、不作为前置依赖。是否真去做、什么时候做由用户在 feature 之外决定
第 2.5 节随整稿一起 review,不单独确认——和功能方案打包给用户一次过,避免拆成两轮把节奏拖长
按 reference.md 模板补齐剩余节(第 0 / 3 / 4 节)。初稿 frontmatter status: draft。
整稿成型后才交给用户看,不分批 review——分批用户只看到局部,发现不了"第 1 节范围跟第 2 节变化对不上"这种跨节问题。
第 3 节"验收契约"提示:每条写成"输入 / 触发 → 期望可观察结果",覆盖正常 + 边界 + 错误。不写测试代码 / framework / mock。
发一次整体 review 提示(提示词在 reference.md 第 5 节)。用户提意见就改,反复直到放行,把 status 从 draft 改 approved。
方案确认后从 {slug}-design.md 抽出 steps + checks 落到 {slug}-checklist.yaml。完整格式、提取规则、典型节奏看 reference.md 第 3 节。
落盘后 python codestable/tools/validate-yaml.py --file {path} --yaml-only 校验。
按下文退出条件核对,引导用户进入阶段 2。
用户整体 review 通过,并且:
doc_type / feature / status=approved / summary / tags),requirement 字段已对齐{slug}-checklist.yaml 已落盘并通过 validate-yaml.py 校验status: in-progress + feature 填上)