From cb537b4f2a7b2bda776203592c1c412e0c622e6d Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Wed, 10 Jun 2026 13:08:47 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20config.yaml=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=20{{change-name}}=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20metadata=20=E8=AF=B4=E6=98=8E=E5=92=8C=20create=20=E9=98=B6?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/commands/init.ts | 11 ++++++++--- tests/commands/init.test.ts | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/commands/init.ts b/src/commands/init.ts index 9a77b64..9bd6ae5 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -11,10 +11,11 @@ import { parse as parseYaml } from "yaml"; const CONFIG_TEMPLATE = `# Rune 配置文件 # # 未配置的阶段将使用内置默认配置。 -# 阶段顺序:discuss -> plan -> build -> archive +# 阶段顺序:discuss -> create -> plan -> build -> archive # # 可配置阶段: # discuss - 探索阶段:深度思考、调查代码库、对比方案 +# create - 创建阶段:拟定变更名称并创建变更目录 # plan - 规划阶段:生成设计文档和任务清单 # build - 构建阶段:按任务清单逐步实现 # archive - 归档阶段:确认完成并归档变更 @@ -32,12 +33,16 @@ const CONFIG_TEMPLATE = `# Rune 配置文件 # - name: design # prompt: 生成设计文档 # template: | -# # {{change-name}} 设计文档 +# # 设计文档 # - name: task # prompt: 生成任务清单 # depend: [design] # template: | -# # {{change-name}} 任务清单 +# # 任务清单 +# +# metadata 说明: +# command - Rune CLI 执行命令(如 bunx @lanyuanxiaoyao/rune),init 时自动检测 +# tracked - 是否启用任务追踪(默认 true),开启时 plan.documents 必须包含 task 文档 `; export const SUPPORTED_TOOLS: Record Promise> = { diff --git a/tests/commands/init.test.ts b/tests/commands/init.test.ts index 64b13da..d8bb886 100644 --- a/tests/commands/init.test.ts +++ b/tests/commands/init.test.ts @@ -67,4 +67,26 @@ describe("runInit", () => { expect(content).toContain("metadata:"); expect(content).toContain("command:"); }); + + it("config.yaml 模板不含 {{change-name}}", async () => { + await runInit(TMP_DIR, ["opencode"]); + + const content = await readFile(join(TMP_DIR, ".rune", "config.yaml"), "utf-8"); + expect(content).not.toContain("{{change-name}}"); + }); + + it("config.yaml 模板包含 metadata 说明", async () => { + await runInit(TMP_DIR, ["opencode"]); + + const content = await readFile(join(TMP_DIR, ".rune", "config.yaml"), "utf-8"); + expect(content).toContain("metadata"); + expect(content).toContain("tracked"); + }); + + it("config.yaml 模板包含 create 阶段", async () => { + await runInit(TMP_DIR, ["opencode"]); + + const content = await readFile(join(TMP_DIR, ".rune", "config.yaml"), "utf-8"); + expect(content).toContain("create"); + }); });