Skip to main content

cs

CodeStable:用 Vision / Project Spec / Epic / Issue 与 codestable/ 制度记忆理解和推进软件演化;按用户当前姿态行动——讨论、快改、受管理实现、修 bug、整理愿景/规格、理解现状、关闭收尾、按需 review。 触发:cs、CodeStable、讨论/先聊清楚、快速/快改/直接开干、穿刺、修 bug/debug、整理 vision/spec、关闭/收尾、review、这系统怎么工作,或项目已有 codestable/ 且正在处理愿景、规格、bug、实现与关闭。

Source facts

Repository
codestable/CodeStable-Lite
Last source activity
August 1, 2026 at 16:47
Detected SKILL.md language
Chinese
Stars
46
Forks
3

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
33 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
cs
description
CodeStable:用 Vision / Project Spec / Epic / Issue 与 codestable/ 制度记忆理解和推进软件演化;按用户当前姿态行动——讨论、快改、受管理实现、修 bug、整理愿景/规格、理解现状、关闭收尾、按需 review。 触发:cs、CodeStable、讨论/先聊清楚、快速/快改/直接开干、穿刺、修 bug/debug、整理 vision/spec、关闭/收尾、review、这系统怎么工作,或项目已有 codestable/ 且正在处理愿景、规格、bug、实现与关闭。
# CodeStable CodeStable 是一套理解和推进软件演化的方法。它用 Vision、Project Spec、Epic、Issue 和 `codestable/` 中的制度记忆连接目标、现实与行动;它**不是**强制流水线,也不是 Agent 编排器。 调用 `cs` 不等于跑完整流程。先判断用户此刻要讨论、理解、设计、实现还是收尾,再采用匹配的管理强度。 ### 沟通方式:先结论,再展开 先用用户正在使用的词,简短说明**结论和原因**。只有需要做取舍、取得授权,或必须展示验证与风险证据时,才展开框架、规则和细节。简短不等于省略关键判断,而是先让用户容易理解,再按需下钻。 ### 节省上下文(Codex) 同一会话中,已经完整读取且没有变化的 `SKILL.md`、reference、template 或相邻说明,必须复用既有理解,不要重复读取。仅在用户要求重读、文件已变化,或当前理解不足以支撑判断时,读取相关最小范围。 --- ## 1. 先定姿态 从用户原话与上下文中选择**一个主姿态**。选定后立即读取“必读”,再开始行动;未命中的姿态文件不要预读。 | 主姿态 | 用户常这样说 | 必读 | 按需读 | 默认边界 | |---|---|---|---|---| | **接入** | 初始化 cs、接入 CodeStable、补齐 `codestable/` | [onboard](references/onboard.md) | — | 必须明确授权;不编造业务内容 | | **讨论** | 聊聊、先理清、想清楚再做、帮我规划一下 | [talk](references/talk.md) | [docs](references/docs.md);具体变化 → [quality](references/quality.md);UI → [ui-spec](references/ui-spec.md) | 用户确认前不落盘,不建 issue、epic 或 vision | | **愿景** | 应用将来什么样、整理 vision、产品全景 | [vision](references/vision.md) | [docs](references/docs.md);质量方向 → [quality](references/quality.md);UI → [ui-spec](references/ui-spec.md) | 确认后才写 vision;不强迫创建开发事项 | | **规格** | 维护 spec、当前真相、epic 活规格 | [spec](references/spec.md) | [docs](references/docs.md);质量约束 → [quality](references/quality.md);UI → [ui-spec](references/ui-spec.md) | 只写仍然成立的结论 | | **理解现状** | 怎么工作的、这条链路、影响范围 | [explore](references/explore.md) | [docs](references/docs.md);服务具体变化 → [quality](references/quality.md) | 先解释现状;复杂且值得复用时才建 Explore Issue | | **修 bug** | 坏了、不符合预期、debug、修这个 bug | [complain](references/complain.md) | [debug](references/debug.md)、[economy](references/economy.md)、[quality](references/quality.md);结构 → [code-design](references/code-design.md) | 简单问题默认快改并留下 `ff`;复杂问题可受管理推进 | | **设计** | 怎么实现、先设计、实现方案 | [design](references/design.md) | [code-design](references/code-design.md)、[economy](references/economy.md)、[quality](references/quality.md);UI → [ui-spec](references/ui-spec.md) | 不写代码;高风险先安排穿刺顺序 | | **快交付** | 快速、快改、小改一下、直接开干、别走流程 | [fast](references/fast.md) | [economy](references/economy.md);必要时 [quality](references/quality.md);UI → [ui-spec](references/ui-spec.md) | 默认轻检索、验证并留下 `ff`;用户明确不要痕迹时才可省略 `ff` | | **受管理实现** | 做这个 issue、推进 epic、实现(有档)、穿刺/先打通 | [do](references/do.md) | [code-design](references/code-design.md)、[economy](references/economy.md)、[quality](references/quality.md);现状不清 → [explore](references/explore.md);UI → [ui-spec](references/ui-spec.md) | 完成不等于关闭;风险先穿刺,再加厚 | | **收尾** | 关闭、收尾、做完并沉淀、毕业回写 | [close](references/close.md) | [docs](references/docs.md)、[quality](references/quality.md);有界简化 → [economy](references/economy.md) | 关闭需要用户授权;不自动移入 `done/` | | **审代码** | review、评审、看看这 diff/PR | [code-design](references/code-design.md)(文末 Review) | [economy](references/economy.md);相关时 → [quality](references/quality.md) | 用户点名才做;默认只审不改 | | **记知识** | 记一下坑、写 note | [note](references/note.md) | [docs](references/docs.md) | 同主题更新原 note,不重复新建 | | **学流程** | 我带你跑一遍、教 AI 做某流程 | [maketools](references/maketools.md) | [docs](references/docs.md) | 危险操作前再次确认 | ### 怎样判断姿态 1. 用户的原话与授权,优先于“看起来应该走重流程”。 2. 事情小、目标清楚、用户要快且没有要求建档 → **快交付**。 3. 目标模糊或取舍未定 → **讨论**;聊清后再切换到快交付、受管理实现、愿景等姿态。 4. 已有常规 Issue,或用户点名 Issue / Epic → **受管理实现**,必要时先设计。 5. 已有行为坏了 → **修 bug**;新增能力 → 快交付或受管理实现,不归入 Complain。 6. 用户只问系统怎样工作 → **理解现状**,不要默认开始修改。 7. 意图不清,而且选错会实质改变后续,例如是否建 Issue、是否改代码 → 给一句话推荐和理由,请用户选择;不要默认采用重流程。 8. 写或修改 Agent 技能本身,不属于 CodeStable 的职责。 ### 选择管理强度 | 情况 | 默认选择 | |---|---| | 小、低风险、一次可完成,或用户明确要快 | **快改**;完成后留下 `ff`,见 [fast](references/fast.md) | | 用户明确不要痕迹或不要写 Issue | 可以不留 `ff`;若现有真相失效,仍须同步 spec 或标记漂移 | | 涉及范围取舍、多轮推进、交接、显著风险或长期质量承诺 | 建立**常规 Issue**:`type: feature\|bug\|chore\|refactor` | | 跨模块、多批次,且规格会在边界内持续演化 | 建立 **Epic**;边界足够清楚的切片可直接在 Epic 内推进 | | 技术、集成或迁移风险需要先证明可行 | 先做**穿刺**,见 [do](references/do.md),再加厚实现 | | 用户明确要求管理或明确不要建档 | 服从用户选择 | --- ## 2. 世界模型与工作区 ### 从目标到现实 ```text Vision Spec(目标世界) │ 摘取一段有界变化 ▼ Epic Spec(变化中的活规格) ──推进──> Epic Issues │ Epic 关闭后毕业 ▼ Project Spec(当前现实) 独立 Issue ─────────关闭毕业────────> Project Spec ``` Vision 保存目标世界;Epic 承载一段有边界的大变化;Issue 是可关闭的行动;Project Spec 只保存当前仍成立的现实。 只靠 Issue 会丢失方向;只靠 Project Spec 无法安放互斥构想;把未来与现实混写会失去时间边界;巨型 Issue 又难以关闭。因此,只把**值得跨会话保留**的信息写入 `codestable/`,并放到承担相应职责的位置。 ### `codestable/` 工作区地图 CodeStable 的制度记忆统一存放在项目的 `codestable/` 下。 ```text codestable/ ├── vision/ 目标世界、旅程与候选方向 │ ├── index.md Vision 地图 │ └── ... 按旅程或能力展开 ├── spec/ 当前稳定真相 │ ├── index.md Project Spec 地图 │ └── ... 按场景或能力展开 ├── epics/ 有界的大变化;本树独立编号 │ ├── EEE-o|x-{Epic名}/ │ │ ├── spec.md 该 Epic 唯一权威的活规格 │ │ └── issues/ 只属于该 Epic 的 issues 树 │ └── done/ 用户主动整理后的已关闭 Epic ├── issues/ 不属于单个 Epic 的独立 issues 树 ├── notes/ 可复用知识;本树独立编号 │ └── NNN-{主题}.md ├── talks/ 尚未落定的讨论;本树独立编号 │ └── NNN-{议题}.md └── tools/ 稳定、可重复执行的流程工具 └── ... 说明、脚本及其所需资源 ``` 根 `issues/` 与每个 Epic 内的 `issues/` 使用同一种结构,但各自独立编号: ```text issues/ ├── NNN-o|x-{事项}.md 常规 Issue ├── NNN-o|x-ff-{事项}.md 快改记录 ├── NNN-o|x-{探索名}/ Explore Issue │ ├── index.md 认知地图、边界、结论与毕业位置 │ └── *.md 按「触发→结果」组织的路径文章 └── done/ 可选整理区;仍参与检索和编号 ``` 图中的 `o|x` 表示取 `o`(open)或 `x`(closed),不是路径中的字面字符。路径表达唯一归属:只属于一个 Epic 的事项进入该 Epic 的 `issues/`,其余留在根 `issues/`。常规 Issue 与 `ff` 是单文件;只有需要独立调查工作区的 Explore Issue 使用目录。Epic 的 `issues/` 在首个所属事项创建时再建立。 `done/` 只是用户主动整理后的存放位置,不是新的生命周期状态。关闭不会自动移动事项;`done/` 中的内容仍参与检索和编号。 这张图是定位地图,不是每次工作的必读清单。按当前姿态和关键词命中逐层下钻,只读取足以支撑判断的局部。 ### 各实体回答什么 | 实体 | 回答的问题 | |---|---| | **Vision** | 应用最终要成为什么样;有哪些旅程、能力以及候选或互斥方向 | | **Project Spec** | 项目现在有哪些仍然成立的稳定事实;按场景和能力组织,不按代码目录组织 | | **Epic** | 这段有界大变化已经确定什么、仍在变化什么、接下来可以推进什么 | | **Issue** | 要完成并关闭哪一个具体行动;物理位置表达唯一归属 | | **Fast Fix (`ff`)** | 这个小改做了什么、改了哪里、怎样验证、是否影响制度记忆 | | **Explore Issue** | 一个复杂、可停止、可复用的现状调查得出了什么;简单理解只做现状说明,不建事项 | | **Talk** | 一个尚未落定的议题如何被提出、纠正和收束,以及建议从哪里继续 | | **Note** | 哪些知识、证据、步骤与坑点在未来仍值得复用 | | **Tool** | 哪段已跑通的流程已经稳定到可以重复执行,同时仍需守住哪些危险边界 | ### 路径、命名与编号 每棵编号树分别编号:根 `issues/`、每个 Epic 的 `issues/`、`epics/`、`notes/`、`talks/` 都从本树(**包含 `done/`**)已有最大开头数字加 1。编号至少三位;超过 999 后继续使用 `1000`、`1001`,不设上限。 Issue 编号不是全局身份。引用 Epic Issue 时,必须给完整路径,或写成 `Epic NNN / Issue NNN`。 | 形态 | 路径 | |---|---| | 独立 Issue | `codestable/issues/{NNN}-o\|x-{名}.md` | | Epic Issue | `codestable/epics/{EEE}-o\|x-{epic}/issues/{NNN}-o\|x-{名}.md` | | 快改 | 所属 issues 树下 `{NNN}-o\|x-ff-{名}.md`;`type: ff`;模板 `ff-issue.md` | | Explore Issue | 所属 issues 树下 `{NNN}-o\|x-{名}/index.md` | | Epic | `codestable/epics/{NNN}-o\|x-{名}/spec.md`;每个 Epic 只有一份权威 spec | | 已整理事项 | 对应 issues 树的 `done/` 下保留同名文件或目录 | | 已整理 Epic | `codestable/epics/done/` 下保留同名目录 | | Talk / Note | `{NNN}-{名}.md`,不使用 `o`、`x` 或 `ff` | **归属由路径决定:** - 只属于一个 Epic 的 Issue,必须进入该 Epic 的 `issues/`。 - 不属于任何 Epic 的 Issue,留在根 `issues/`。 - 跨多个 Epic 的事项,不得随意挂到其中一个;应保留为独立 Issue,或升级为 Epic。 - `ff`、bug、feature、chore、refactor 与 Explore Issue 都遵守同一归属规则。 - 新建 Issue 不再用 `epic` frontmatter 表达归属。归属改变时移动原事项并更新明确引用,不复制第二份。 旧版中位于根 `issues/`、依靠 `epic` frontmatter 关联的**已关闭** Issue 仍然有效,不自动迁移。仍在推进的旧 Issue,在下次实质更新时移入所属 Epic:优先保留原编号;若编号冲突,则使用该 Epic issues 树的下一编号,并更新明确引用。 关闭 Issue 时,将目标路径中的 `-o-` 改为 `-x-`,序号与名称不变,并把 `status` 改为 `closed`。关闭 Epic 时只改 Epic 目录名,内部 Issue 随目录保留。 常规 Issue 使用 `templates/entities/issue.md`,`type` 只能是 `feature|bug|chore|refactor`。`ff` 只回答四件事:做了什么、改了哪些、怎样验证、对 `codestable/` 有什么影响;不要写成迷你 Design,也不要保留空槽位。 Talk 写入 `codestable/talks/`;Note 写入 `codestable/notes/`,同主题更新原文件;Tool 写入 `codestable/tools/`。启动时必须自动注入的短规则,只写入 `AGENTS.md` 或 `CLAUDE.md`,不要在两处重复,也不要创建 `facts.md`。 ### 什么内容可以写到哪一层 | 写入位置 | 时机 | |---|---| | Vision 目标内容 | 用户确认愿景后;实现结论若要改变目标,必须再次确认 | | Vision 实现程度与链接 | Epic 关闭时,按已经发生的事实更新 | | Project Spec | 独立 Issue / Explore Issue 关闭毕业;Epic 关闭合并;快改使现有真相失效;或处于规格维护姿态 | | Epic Spec | 处于规格维护姿态;或 Epic 下的 Issue 关闭回写 | | Issue / Explore Issue / `ff` | 受管理推进时按归属写入对应 issues 树;快改完成后写入并关闭 `ff` | 出现冲突时,按 `用户最新确认 > 证据与代码 > 疑似过期的 spec` 判断。Epic 与 Vision 不一致时,先说明这是收窄实现还是修改目标,不要静默绕过。 ### 完成、关闭、done 与 Git | 状态 | 含义 | |---|---| | **完成** | 实现和验证已经达到目标 | | **关闭** | 用户授权收尾:`o` → `x`,并完成毕业回写;Git 操作按关闭契约执行 | | **整理进 `done/`** | 用户主动要求后,将已关闭事项移入整理区;这不是关闭的默认步骤 | | 用户动作或场景 | 默认行为 | |---|---| | 快改 | 验证后必须写 `ff`,也可以直接写成 `x-ff`;不自动 commit 或 push | | 受管理实现 | 推进到完成即可;不自动关闭 Issue,也不自动 commit 或 push | | 用户说“做完”或“修好” | 完成实现与验证;小改仍留下 `ff`,除非用户明确不要痕迹;常规 Issue 不自动关闭 | | 用户说“关闭”或“收尾” | 执行 [close](references/close.md);不自动移入 `done/` | | push、部署、初始化或覆盖 `codestable/`、关闭 Epic、破坏性操作 | 必须取得明确授权 | 毕业方向: - 独立 Issue → Project Spec。 - Epic 内 Issue → Epic Spec。 - Epic 关闭 → 将稳定结论的**具体内容**合并进 Project Spec,并检查 Vision;只链接 Epic 不算毕业回写。 - `ff` 默认不做大段毕业;若现有真相失效,则同步 spec 或明确标记漂移。 详细规则见 [close](references/close.md)。 ### 质量语言 使用 ISO/IEC 25010:2023 的九个质量特征作为统一语言,但不要把它变成九项必填表。**一旦选中某项,它就是承诺。** 快改不写形式化质量清单,但仍须遵守 spec、用户要求与必要护栏。信息安全性与安全性是不同概念,不要笼统混称为“安全”。详见 [quality](references/quality.md)。 --- ## 3. 开工协议 在设计、实现、快改、修 bug、维护规格或穿刺之前,如果项目已有 `codestable/`,先完成以下动作。各 reference 不再重复展开这套协议。 1. **浏览路径并检索关键词。** 扫描 `codestable/` 的结构与当前主题;同一会话中已经扫描且没有新写入时,复用已有结果。 2. **按权重深入读取。** 先读 `spec/`,再读相关 Epic 与 Notes,然后递归检索根目录和各 Epic 的 issues 树,包括 `-x-`、`ff` 与 `done/`;最后按需读取 Talks、Vision 和 Tools。 3. **判断现状是否足够。** 能否用一句话说明“触发如何经过系统产生结果”?不能则先做现状说明;跨多个边界或理解值得复用时,再建立 Explore Issue。 4. **选择管理强度。** 按前文“选择管理强度”执行。 5. **处理文档与代码冲突。** 先核对证据,再修正真相;不要用代码静默覆盖已记录的取舍,也不要盲信可能过期的文档。 有目标 Issue 时,确认正在处理的是其**当前版本**;在 Epic 下工作时,读取该 Epic 的 `spec.md`。 把 `codestable/` 当作制度记忆:遇到奇怪代码先查 Spec,踩到旧坑先查 Notes,要理解历史取舍先查 Issue。 --- ## 4. 授权边界 这些边界适用于所有姿态: - 方向已经确认且用户要求执行时,持续推进到**完成**或遇到真实阻塞,不要在正常步骤之间反复确认。 - 用户确认前,讨论不落盘;设计不写代码。 - 完成不等于关闭,关闭不等于进入 `done/`。 - 实现或快改后,不自动 Review,也不自动 push。 - 初始化 `codestable/`、覆盖入口文件、关闭 Epic、危险操作、推送和部署,都必须取得明确授权。 --- ## 5. 按需读取的原则文件 | 文件 | 何时读取 | |---|---| | [quality](references/quality.md) | 讨论、设计、实现或关闭具体变化;处理质量相关 bug;在 spec 中记录质量约束 | | [economy](references/economy.md) | 设计、实现或修 bug 时做取舍;关闭时发现可以进行有界简化 | | [code-design](references/code-design.md) | 设计、受管理实现或结构问题;进行 Review 时必须读取全文,包括文末 Review 部分 | | [ui-spec](references/ui-spec.md) | 处理 UI 空间关系、信息层级与多状态 | | [docs](references/docs.md) | 编写或重组 Vision、Spec、Explore、Note、Talk 等文档 | | [debug](references/debug.md) | 修 bug 需要升级到慢路径时 | 实体模板位于 `templates/entities/`,包括 `issue.md`、`ff-issue.md` 以及 Explore、Vision、Spec、Talk、Note 等模板。初始化脚本是 `scripts/init_codestable.py`。产物格式以相应 reference 为准,不要只根据文件名猜测。
View on GitHub