원클릭으로
writing-plans
将 spec/需求拆分为可执行的分步实施计划。 Use when: 有 spec 或需求,准备动手前需要拆分步骤。 Not for: trivial 改动(≤5 行)、已有详细计划。 Output: 分步实施计划(含 TDD 步骤和检查点)。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
将 spec/需求拆分为可执行的分步实施计划。 Use when: 有 spec 或需求,准备动手前需要拆分步骤。 Not for: trivial 改动(≤5 行)、已有详细计划。 Output: 分步实施计划(含 TDD 步骤和检查点)。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
约定图发现方法论:进一个 repo 先识别 repo-specific conventions,再定义 domain/extractor 接 Convention Graph 引擎。Use when: 进入陌生 repo、要画约定图、要找“改 X 影响谁”的约定层关联、 F242/Convention Graph Layer 工作。Not for: 普通符号跳转/LSP、文档索引检索、记忆图谱、直接使用 codegraph/GitNexus。Output: domain 定义 + extractor 计划 + gap/freshness/provenance 报告。 GOTCHA: 沉淀的是“怎么画图”的方法,不是把 cat-cafe 的 extractor 硬搬到所有 repo。
跨 thread 协同:发现平行 session → 通知(3+2 件套)→ 争用协调 → 确认。 Use when: 平行 session 之间需要协同、收到跨线程消息、通知改动影响、共享文件争用。 Not for: 跨猫工作交接(用 cross-cat-handoff)、需要新建 thread 时(用 propose_thread / thread-orchestration)。 GOTCHA: 收到跨线程 ACTION 不等于接活;先做 thread/feat ownership gate,不属于当前 thread 就 cross-post 退回。 Boundary with F128: 发现跨 scope 问题 → 先 list_threads 查有没有已有 thread → 有 = 本 skill(cross_post)→ 没有 = propose_thread。 Output: cross-post 通知 + 争用协调完成。
Feature 立项、讨论、完成的全生命周期管理。 Use when: 开个新功能、new feature、F0xx、立项、feature 完成、验收通过、讨论新功能需求。 Not for: 代码实现、review、merge(那些有专门的 skill)。 Output: Feature 聚合文件 + BACKLOG 索引 + 真相源同步。
明星开源项目拆解:从宣传/PPT/README 进入源码,验证真实架构、明星特性、算法含量、营销水分、可学习点和不 follow 的 tradeoff。 Use when: operator要求拆解热门 GitHub 项目、竞品 agent/runtime、外部 skill/tool 框架,或问“它到底有什么真本事/我们能学什么”。 Not for: 普通资料搜索(用 deep-research)、社区 issue/PR 运营(用 opensource-ops)、只需要架构头脑风暴(用 collaborative-thinking)。 Output: feature-discussions/YYYY-MM-DD-{project}-deep-dive/ 下的代码证据报告 + 对比结论 + 候选 lesson/skill。 GOTCHA: 不许只看 README 下判断;每个明星特性必须追到代码路径、状态突变点、反馈闭环和算法输入输出。
开发完成后的自检门禁:愿景对照 + spec 合规 + 验证。 Use when: 开发完了准备提 review、声称完成了、准备交付。 Not for: 收到 review 反馈(用 receive-review)、merge(用 merge-gate)。 Output: Spec 合规报告(含愿景覆盖度)。
接球前真相核验三问:claim → resolver → verdict (sourceTier T0/T1/T2 + actionFamily), 防止把传球者当无审视真相源(F167 Phase O 第一性原理)。 Use when: 即将调 hold_ball / register_pr_tracking / register_issue_tracking / merge / takeover / 改 owner / 任何 irreversible action / 基于 "operator signoff" 或 "你是 owner" 类 claim 行动之前。 Not for: 纯阅读 cross_post(无 actionFamily 后续);本 thread 日常 @mention 无副作用; implementation continuation(自检通过的下一步)。 Output: claim grounding verdict (verified/mismatch/insufficient) + 接球决策 (proceed / block / push back to source thread)。
| name | writing-plans |
| description | 将 spec/需求拆分为可执行的分步实施计划。 Use when: 有 spec 或需求,准备动手前需要拆分步骤。 Not for: trivial 改动(≤5 行)、已有详细计划。 Output: 分步实施计划(含 TDD 步骤和检查点)。 |
| triggers | ["写计划","implementation plan","拆分步骤"] |
将 spec/需求拆分为分步实施计划。写清楚每步改哪些文件、代码、测试、怎么验证。DRY. YAGNI. TDD. Frequent commits.
Announce at start: "I'm using the writing-plans skill to create the implementation plan."
Context: Write the plan on main before opening a feature worktree. After the plan is committed, continue to worktree and then tdd.
开工前 Recall(F102 记忆系统)🔴:写计划前先搜相关历史——search_evidence("{feature}") 找相关 spec/ADR/讨论,避免重复造轮子。
Save plans to: feature-specs/YYYY-MM-DD-<feature-name>.md
Before splitting steps, do this first:
Steps are internal implementation rhythm, NOT delivery batches. The deliverable to the user is a complete feat matching the full spec — not a step's output. Do not expose intermediate steps as "验收点" to the user.
Plan 涉及有生命周期的状态对象(thread 标记 / carrier / session / 持久 config / cache / 索引 / 注册表)时,「功能描述 + 幂等测试点」不够——那是把状态机的边留给 reviewer 逐轮补(PR #2202 实测:4 P1 + 16 P2 全是同一对象的状态转移边——crash window / restore 复活 / deleted-list 漏过滤 / 并发 race / self-heal,打了 20 轮才合入)。
Census 先行(F229 A3a 二次教训 2026-06-11):gate 第一步是普查——列出 plan 涉及的全部有生命周期对象再逐个三件套。特别注意"复用现有 API"场景下的新消费侧状态(轮询循环、发送闸门、到达判定器都是状态机)。漏报对象 = gate 形同虚设:F229 A3b 三对象三件套齐全,A3a 的 ConversationSendCycle 漏普查 → 云端同型 5 轮逐边补课。
三件套,缺一 = plan 不完整,不准发给实现猫:
派生值规则:能用纯投影(pure selector,零存储)表达的状态,禁止落独立存储——无同步即无失同步。
Each step is one action (2-5 minutes):
Every plan MUST start with this header:
# [Feature Name] Implementation Plan
**Feature:** F0xx — `docs/features/F0xx-xxx.md`
**Goal:** [One sentence — must match feat doc 的 goal]
**Acceptance Criteria:** [从 feat doc 逐条抄过来,plan 必须覆盖全部 AC]
**Architecture cell:** [ownership cell id from docs/architecture/ownership/README.md]
**Map delta:** none | update required | new cell required
**Map delta why:** [一句话说明为什么不改 map / 改哪个 cell / 为什么需要新 cell]
**Architecture:** [2-3 sentences about approach]
**Tech Stack:** [Key technologies/libraries]
**前端验证:** [涉及前端?标注 Yes — reviewer 必须用 Playwright/Chrome 实测]
---
F191 约束:普通增量写 Map delta: none,不得重新画架构图。update required 或 new cell required 代表 Phase 0 还包含 ownership map 更新,必须在 implementation steps 里列出来。
### Task N: [Component Name]
**Files:**
- Create: `exact/path/to/file.py`
- Modify: `exact/path/to/existing.py:123-145`
- Test: `tests/exact/path/to/test.py`
**Step 1: Write the failing test**
```python
def test_specific_behavior():
result = function(input)
assert result == expected
Step 2: Run test to verify it fails
Run: pytest tests/path/test.py::test_name -v
Expected: FAIL with "function not defined"
Step 3: Write minimal implementation
def function(input):
return expected
Step 4: Run test to verify it passes
Run: pytest tests/path/test.py::test_name -v
Expected: PASS
Step 5: Commit
git add tests/path/test.py src/path/file.py
git commit -m "feat: add specific feature"
## Open Questions in Plans
计划中的 Open Question 必须分类:
- **技术 OQ**:实现过程中自行解决
- **价值 OQ**:需要 operator 判断 → 附 Decision Packet(格式见 `refs/decision-matrix.md`),包含 TL;DR + 回滚成本 + 真正需要判断的价值问题
先判断可逆性:回滚成本低的不升级 operator,猫猫自决。
## Remember
- Exact file paths always
- Complete code in plan (not "add validation")
- Exact commands with expected output
- DRY, YAGNI, TDD, frequent commits
## 下一步
计划写完并提交 → **直接加载 `worktree`**(创建隔离开发环境)→ `tdd`(开始实现)。SOP 链条自动推进(§17)。