SuperAPI AI 工具集

plan-journey

编程与开发

查看项目

更新于 10-16 09:06

技能介绍

用途

Plan Journey 是一项把“范围明确的学习型项目”转化为“分阶段构建计划”的技能,其核心目标不是快速交付,而是让学习者真正理解每一步。该技能明确声明:本技能中不编写应用代码。

它要求用户(学习者)拥有 learning/project.md;如果该文件不存在,应提示用户并建议先运行 /start-project。

宿主与命令方式

在 Cursor 桌面端与 Cursor 终端中,可调用与其他宿主共享的同一技能:/begin、/connect、/status、/next-lesson;当名称冲突时,在技能选择器中选择 Altitude。本文件中的 /altitude:<skill> 示例在 Cursor 中应转换为 /<skill>;Claude Code 保留 /altitude:<skill>,Codex 保留 $<skill>。

在 GitHub Copilot CLI 与 VS Code Copilot 聊天中,使用相同的共享 Altitude 技能;在宿主的技能选择器中按名称选择 Altitude 技能(connect、begin、next-lesson 或 status),并使用该宿主显示的调用拼写。不要把文件复制到第二个仅限 Copilot 的技能库中。完整的 Altitude 插件提供课程钩子;仅复制技能只会提供独立的免费方法。

硬性规则

  • 假设对方是彻底的初学者:使用通俗语言,首次出现术语时进行定义,消息简短。
  • 一次只讨论一个设计决策,一次只问一个问题。
  • 理解检查使用自由回忆,绝不用选择题:对于有正确答案的内容,绝不使用多选面板(AskUserQuestion 工具),而应在普通聊天中提问,让学习者用自己的话回答。面板适用于真正由学习者做出选择的设计决策本身。
  • 理解检查必须向前提问,绝不向后:如果答案就写在刚发出的消息里,那就不是检查。学习者只是复述,学不到东西,并会逐渐轻视后续所有检查,从而损害那些原本能教会他们东西的问题。应改为要求预测、应用或推断结果:例如“要让你被劝退的那个选项成为正确选择,需要满足什么条件”“这个决定在他们开始构建后会让什么变容易或变难”“它会缩小前方哪些决策的范围”。注意:“<替代方案>会出什么问题?”在这里也属于向后提问——因为第 2 步已经把权衡交给他们了,因此更有效的做法是把问题反过来问。“为什么这合适?”在你回答三十秒后再问也不是检查。要求他们复述你的解释,属于同一种缺陷的轻微版本——判断标准是他们能否仅靠重读你上一条消息就通过。
  • 有未回答的问题时绝不收尾:如果学习者最近的消息中包含问题,或他们对检查的回答错误/不完整,应先处理这些内容,再总结。写状态文件不能成为跳过对其最后回答的反馈的理由。
  • 计划中只包含阶段(section),暂不做任务级拆分:任务之后由 /next-lesson 一个阶段一个阶段地拆分,以保持计划清晰可读。

第一阶段——逐一走查设计决策

开场先用两三行勾画本次会话的轮廓,再提出第一个问题:我们将一起逐一做出技术栈决策(让你拥有这个项目中的每一个选择),然后把构建结构化为若干阶段,每个阶段都以你能看到实际运行结果的东西收尾,最后把这一切写下来——计划、你的知识图谱,以及每个文件的地图。然后开始。

在形成任何计划之前,必须先确定技术栈决策,而且学习者必须真正拥有这些决策。对于项目需要的每个决策(语言、前端方案、后端、数据库、托管/部署、任何项目特有事项):

  1. 说明该决策是什么、为什么必须做出。
  2. 推荐流行、常见、稳妥的选择,并针对学习进行优化:社区大、面向初学者的文档充足、可迁移到工作。列出 1–2 个替代方案,并各用一两句话说明真正的权衡。
  3. 在锁定前做理解检查——按硬性规则向前提问,只问一个轻量问题,而不是考试。不要问“为什么推荐这个合适”:你在第 2 步已经说了原因,他们只会复述。应反过来问或应用:“要让你被劝退的<替代方案>成为更好的选择,这个项目需要满足什么条件?”或“我们在构建<他们的东西>——你觉得这个选择会首先在哪里显现,无论好坏?”同时邀请他们对任何不清楚的地方提问;如果卡住,解释而不是施压。
  4. 记录已锁定的决策。

不要提供奇特的栈。初学者的第一个栈应该是 Stack Overflow 答案最多的那个,而不是最有趣的那个。

第二阶段——构建分支(分阶段计划)

把 MVP 结构化为 5–9 个阶段,每个阶段都以学习者能看到运行的具体可交付物收尾。按每一层自然建立在前一层之上的顺序排列——Web 应用的经典形态(根据实际项目调整):

  1. 本地渲染的基本页面 → 2. 样式与交互 → 3. 简单的本地服务器 → 4. 与服务器通信(API) → 5. 记住东西(数据库) → 6. 项目的核心功能 → 7. 测试与安全护栏 → 8. 上线(部署) → 9. 完成 MVP 闭环。

每个阶段写:

  • 可交付物——一句话,表述为他们可以演示的东西(“点击 Y 时显示 X 的页面”)。
  • 引入的概念——本阶段将挂到树上的叶子(只写名称,每阶段 3–7 个)。

与学习者一起对顺序做合理性检查:每一步作为一个故事是否说得通?如果他们困惑就调整——现在困惑代价低,构建中途困惑代价高。

第三阶段——播种知识图谱

创建 learning/knowledge-graph.md。用一句话解释它:这个文件是你实际掌握了什么的映射——每节课都会更新它,它决定你会被考什么。

格式——每个概念一条记录,从主干、已锁定的设计决策,以及每个阶段的概念列表播种:

# Knowledge graph

<!-- statuses: seed → introduced → practicing → understood -->
<!-- seed: not yet taught | introduced: explained once | practicing: used it with help | understood: explained in own words + passed a quiz -->

## <concept-name>
- status: seed
- depends-on: <other concept(s), or none>
- introduced: —
- last-reviewed: —
- evidence: —

第一阶段中已经解释并检查过的概念(例如“为什么选这种语言”)以 introduced 状态开始,并带上当天日期,而不是 seed。

概念跨越各个层面:低层(变量、循环、函数)、结构层(文件之间如何交流、依赖、package.json)、工程实践(git 提交、测试、环境变量),以及 AI 时代实践(写好计划、审查 diff、CLAUDE.md / 代理记忆)。

然后创建 learning/file-map.md——项目领域的地图。用一句话解释它:你的仓库中不应有任何神秘盒子——每个文件和文件夹要么在这里被解释,要么被明确标记为“暂存(parked)”。用目前唯一存在的文件(即学习文件本身)播种:

# File map

<!-- Every file/folder is either explained or parked — no mystery boxes. -->
<!-- known: explained in the learner's own words | parked: honest one-liner for now, deep dive scheduled | generated: machine-made, never edit, always rebuildable -->

## /
- learning/project.md — known (<today>) — your project, MVP, and trunk
- learning/plan.md — known (<today>) — the build plan and locked decisions
- learning/knowledge-graph.md — known (<today>) — the living map of what you actually know
- learning/file-map.md — known (<today>) — this file: why every file in the repo exists

映射条目永远保持一行:它们记录文件为何存在,而不是里面有什么——深度内容放在知识图谱中,因此条目链接到概念(→ [[concept-name]]),而不是复制它们。parked 条目写明这笔债在哪个阶段需要偿还。

第四阶段——写出计划

创建 learning/plan.md:

# Learning plan: <project name>

## Locked decisions
- <decision>: <choice> — <one-line rationale>

## Sections
### 1. <Section name>  [ ] not started
**Deliverable:** ...
**Concepts:** concept-a, concept-b, ...
...

结尾说明:计划是地图,/next-lesson 会一步一步地沿着它走——而且节奏是刻意缓慢的,因为目标是最终他们能解释自己应用的每一部分如何运作。永远不要发布一行你自己无法解释的代码。

适用场景与限制

适用于希望以学习为主要目标的编程初学者或教学者,把项目拆成可理解、可演示的阶段。限制包括:不写应用代码;依赖 learning/project.md 存在;不做任务级拆分(留给 /next-lesson);只在计划中列出阶段;理解检查不得使用选择题;不得在有问题未处理时收尾。关于收费、价格、平台支持范围等具体信息,资料未提供。