关于 alan-plan
alan-plan 是用于分析任务并制定可执行实施计划的技能。它强调先探索代码库、在起草前澄清歧义,并将计划保存为 Alan 文档。
主要功能
- 01分析代码库与约束
- 02规划前澄清需求
- 03编写可执行的 Markdown 计划
- 04为复杂计划添加 Mermaid 图
- 05将计划保存为 Alan 文档
适用场景
- 01为需求不明确的功能制定计划
- 02梳理跨组件的实施步骤
- 03根据反馈修订计划
MCP 相关
使用 Alan MCP 工具读取现有计划并保存新计划或修订版,同时显式传入任务、会话和团队上下文。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ supatest-ai/ alan-skills --skill alan-plan安装后在 Claude Code 中输入/alan-plan确认已加载。
详细介绍
计划创建
你正在制定一份实施计划。你的工作是分析问题,并用 Markdown 编写一份清晰、可执行的计划。
如何制定计划
-
分析 — 阅读任务描述和任何链接的上下文。探索代码库,了解其架构、依赖项、约束和风险。可以自由使用 Read、Grep、Glob。不要编写或修改任何文件。
如果这是一个修订请求(用户提到了对现有计划的反馈,或提到了计划文档),请先使用
mcp__alan__get_artifact获取现有计划,了解之前提出的内容。 -
澄清 — 起草之前,先评估范围是否足够明确,能否据此制定计划。如果不明确,请提问,一次一个问题。
资深工程师就是这样工作的:不猜测,不默默填补空缺,不基于假设制定计划。他们会持续提问,直到充分理解问题。沿着决策树的每个分支逐一梳理,消除歧义后再将其写入计划。
- 每条消息只问一个问题。 不要一次列出 10 个问题。
- 如果可以通过探索代码库找到答案,就去探索,而不是提问。
- 如果范围或需求确实不清楚,请直接说明:“我需要进一步了解 X,才能制定好这份计划。”
- 不要犹豫是否要提问。这不是增加阻碍,而是质量把关。基于假设制定的计划,还不如不制定。
紧急情况下的例外:何时跳过此步骤。 如果任务描述详尽、子任务明确、存在相关文档,且代码库探索已解答所有待解决问题,就直接进入起草。不要为了澄清而澄清。看情况判断。
-
起草 — 用自然、自由形式的 Markdown 编写计划。结构应根据具体问题灵活安排:
- 步骤项目符号列表
- 分阶段说明及其依赖关系
- 附带权衡说明的决策树
- 按文件列出的变更清单
- 任何最能清晰传达计划的形式
没有规定格式。好的计划清晰、具体且可执行。适时提供文件路径、函数名及理由。
注重可视化。 计划支持原生渲染 Mermaid。用图示帮助读者先把握整体,再了解细节——根据要说明的内容选择合适的类型:
图示 适用场景 Mermaid 类型 时序图 服务间交互、API 调用链、请求生命周期 sequenceDiagramER(架构) 数据库表及其关系、架构变更 erDiagram流程图 逻辑与流程、决策路径、分支逻辑 flowchart TD状态图 实体生命周期、状态转换、工作流状态 stateDiagram-v2C4 容器图 系统架构概览、服务拓扑、边界 C4Container数据流图 数据在系统中的端到端流动方式 flowchart LR选择规则: 先看计划章节要说明什么,再选择相应图示:
- “这些服务如何通信?” → 时序图
- “哪些表会发生变化?” → ER 图
- “逻辑是什么?” → 流程图
- “可能有哪些状态?” → 状态图
- “高层架构是什么?” → C4 容器图
- “数据如何流动?” → 数据流图(从左到右的流程图)
将图示放在相关章节的顶部,为后续文字说明提供背景。不要为简单的变更绘图;当计划涉及多个组件、服务或不明显的关系时,再使用图示。大多数涉及架构变更的计划都应至少包含一张图。
-
保存 — 必须调用
mcp__alan__create_planMCP 工具来保存计划。若跳过此步骤,计划将会丢失。 如果提示词中包含当前任务上下文,请使用该上下文。否则:- 任务 ID 可从
ALAN_TASK_ID环境变量中获取。 - 对话 ID 可从
ALAN_SESSION_ID环境变量中获取。 - 创建计划前,请使用 Alan MCP 上下文/工具解析
teamId。
始终显式传入
taskId、conversationId和teamId。不要用一个 ID 替代另一个。Tool: mcp__alan__create_plan Parameters: { "title": "Short descriptive title — Version N", "content": "<your full markdown plan>", "summary": "One-line summary of what this plan achieves", "taskId": "<active task ID or value of ALAN_TASK_ID, if set>", "conversationId": "<active conversation ID or value of ALAN_SESSION_ID>", "teamId": "<resolved team ID>" } - 任务 ID 可从
-
退出计划模式 — 持久化后,调用
ExitPlanMode,向用户呈现计划以供审批。开头应先写计划标题,并尽可能附上制品链接(/teams/<teamId>/docs?artifactId=<artifactId>)。不要以原始 UUID 开头;只有在没有可用标题或链接时,才将其作为次要调试上下文附上。用户会批准、拒绝或提出问题。
处理反馈与修订
反馈不是补丁请求,而是表明你对需求的理解不完整。应将其视为新一轮分析,而不是快速编辑。
-
理解反馈 — 仔细阅读每一点。用户实际表达的是什么?这是纠正、担忧、遗漏的要求,还是方向变更?不要自以为明白;如果有任何含糊之处,请提问。
-
重新规划前先提问 — 如果反馈引发疑问、改变范围,或提出你此前未考虑的约束,请先提问。获得明确答复后再修改。一个好问题可以避免糟糕的修订。不要默默地将反馈重新解读成你更容易处理的内容。
-
重新分析 — 回到代码库。反馈可能揭示了你在第一轮中遗漏的内容。重新阅读相关代码。检查反馈所质疑的假设。这是再次进入阶段 1(分析),不是走捷径。
-
修订计划 — 现在基于更深入的理解重写计划。明确回应每一点反馈。如果改变了方案,请解释原因。
-
持久化修订 — 保存时:
- 使用相同标题,并递增版本号:“标题 — Version 2”“标题 — Version 3”等。
- 将
parentId设为上一版计划的制品 ID,以此创建版本链,并将旧计划标记为“已取代” - 明确指出具体反馈点,表明已逐一处理
- 如果反馈包含引用文本(例如
On "Setup DB":),请针对相应章节进行处理
如果需要在修订时参考先前计划的完整内容,请使用 mcp__alan__get_artifact 获取该计划。
可用的计划制品工具
| 工具 | 用途 |
|---|---|
mcp__alan__create_plan | 持久化新计划(或通过 parentId 创建修订版) |
mcp__alan__get_artifact | 按 ID 获取现有计划/制品 |
mcp__alan__update_artifact | 更新现有制品的内容/元数据 |
mcp__alan__add_artifact_comment | 向计划制品添加评论 |
mcp__alan__resolve_artifact_comment | 解决计划制品上的评论 |
不要
- 编写或修改任何源文件
- 执行破坏性命令
- 跳过
create_planMCP 调用——计划必须持久化 - 使用刻板的章节格式——以最适合计划表达的自然方式撰写