From 277e78812ca16ea453c752b2f3325660d9c5e3cb Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Wed, 10 Jun 2026 15:21:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20plan/discuss=20skill/command=20?= =?UTF-8?q?=E4=B8=AD=E5=B5=8C=E5=85=A5=20create=20=E5=BC=95=E5=AF=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/adapters/claude-code.ts | 22 ++++++++++++++++------ src/adapters/opencode.ts | 6 +++++- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/adapters/claude-code.ts b/src/adapters/claude-code.ts index d49b5f3..53479ce 100644 --- a/src/adapters/claude-code.ts +++ b/src/adapters/claude-code.ts @@ -29,10 +29,14 @@ export async function injectClaudeCode( await mkdir(commandDir, { recursive: true }); const commandPath = join(commandDir, `rune-${stage}.md`); if (!existsSync(commandPath)) { - await writeFile( - commandPath, - `执行以下命令,将输出作为当前阶段的工作指引:\n\`\`\`bash\n${cmd}\n\`\`\`${smartGuide}\n`, - ); + let content = `执行以下命令,将输出作为当前阶段的工作指引:\n\`\`\`bash\n${cmd}\n\`\`\`${smartGuide}`; + if (stage === "plan") { + content += `\n如果变更目录尚不存在(新变更),请先运行 \`${command} create <变更名>\` 创建目录,再开始规划。`; + } + if (stage === "discuss") { + content += `\n讨论结束后,如果确定了变更方向,请运行 \`${command} create <变更名>\` 创建变更目录,然后进入规划阶段。`; + } + await writeFile(commandPath, content + "\n"); } } @@ -55,8 +59,14 @@ export async function updateClaudeCode( const commandDir = join(projectRoot, COMMANDS_DIR); await mkdir(commandDir, { recursive: true }); const commandPath = join(commandDir, `rune-${stage}.md`); - const newContent = `执行以下命令,将输出作为当前阶段的工作指引:\n\`\`\`bash\n${cmd}\n\`\`\`${smartGuide}\n`; - await writeIfChanged(commandPath, newContent); + let newContent = `执行以下命令,将输出作为当前阶段的工作指引:\n\`\`\`bash\n${cmd}\n\`\`\`${smartGuide}`; + if (stage === "plan") { + newContent += `\n如果变更目录尚不存在(新变更),请先运行 \`${command} create <变更名>\` 创建目录,再开始规划。`; + } + if (stage === "discuss") { + newContent += `\n讨论结束后,如果确定了变更方向,请运行 \`${command} create <变更名>\` 创建变更目录,然后进入规划阶段。`; + } + await writeIfChanged(commandPath, newContent + "\n"); } const introCommandPath = join(projectRoot, COMMANDS_DIR, "rune-intro.md"); diff --git a/src/adapters/opencode.ts b/src/adapters/opencode.ts index b5ac987..3a18d86 100644 --- a/src/adapters/opencode.ts +++ b/src/adapters/opencode.ts @@ -64,7 +64,11 @@ function generateSkill(stage: string, command: string): string { let extraGuide = ""; if (stage === "plan") { - extraGuide = `\n规划阶段应先运行 \`${command} status <变更名>\` 获取当前有哪些文档需要编写,再按依赖顺序逐个生成。\n`; + extraGuide = `\n规划阶段应先运行 \`${command} status <变更名>\` 获取当前有哪些文档需要编写,再按依赖顺序逐个生成。\n\n如果变更目录尚不存在(新变更),请先运行 \`${command} create <变更名>\` 创建目录,再开始规划。\n`; + } + + if (stage === "discuss") { + extraGuide = `\n讨论结束后,如果确定了变更方向,请运行 \`${command} create <变更名>\` 创建变更目录,然后进入规划阶段。\n`; } const descriptionMap: Record = {