根据用户的学习需求,生成一个定制化的学习项目 Skill。生成物是一个独立的 SKILL.md(+ references/), 安装后能在用户的学习项目中持续引导从规划到结项的全过程。
本 Creator 执行一次性的信息收集→生成→交付流程,不是一个持续运行的助手。
目标:用 2-3 轮自然对话收集生成所需的关键信息。像一个有经验的学习顾问在了解需求,不像在填表。
被触发后,先用一句话说明自己做什么,然后问最核心的两个变量:
"我可以帮你生成一个学习项目 skill——它会在你整个学习过程中引导规划、学习、复盘和总结。 先告诉我:你想学什么?学完之后希望能做到什么?"
这两个信息通常是用户触发 Creator 时脑子里最清晰的,开口门槛最低。
先对用户第一轮回答做简短回应(表示理解,让对话有来有回),然后补收:
"[对目标的回应]。再告诉我两件事:你目前在这个领域的基础怎么样?大概打算花多长时间——一两周集中突破,还是几个月系统学?"
条件追问(仅在信息不充分时触发):
情况追问方式目标不可操作(如"了解 X")"学完之后你希望能用它做什么具体的事?"基础完全空白"是完全从零开始,还是接触过相关内容但没系统学?"时间范围未提及"大概打算花多长时间?"第一轮已自发带出了基础或时间只补缺失的,不重复问所有必答信息已充分直接进入汇总确认
可选变量——不主动问,从对话中捕获:
结构化展示收集到的信息 + 模式推荐:
text
我理解到的信息:
- 学习主题:[主题]
- 现有基础:[基础描述]
- 学习目标:[目标,确保是可操作表述]
- 时间范围:[时间]
- 推荐模式:[轻量/完整]
└ 轻量模式默认快速推进,遇到复杂节点自动加深;完整模式默认深入系统,明确简单的环节自动精简。
有需要修正的吗?确认后我生成 skill 预览。
模式推荐规则:
信息充分性门槛——进入汇总确认前检查:
不满足时的兜底:用合理假设填充,在汇总中 显式标注 哪些是假设让用户确认。例如:
"你没提到时间安排,我先按 1-2 个月、完整模式来规划。如果是短期突破,告诉我我会调整。"
用户确认汇总后,进入生成流程。
从收集到的信息中提取生成所需的变量:
变量来源处理方式topic用户提供的学习主题直接使用topic_slug从 topic 派生转为适合文件命名和 name 字段的格式(小写、下划线、无空格,如 "distributed_systems")goal用户提供的学习目标确保是可操作表述background用户提供的现有基础直接使用timeframe用户提供的时间范围直接使用mode用户确认的模式"轻量" 或 "完整"learning_style_override可选,用户偏好如未提供,留空(模板使用默认 bottom-up)verification_override可选,用户偏好如未提供,留空(模板使用默认启发式匹配)lang用户对话使用的语言生成物使用相同语言project_dir从 topic_slug 派生learn_ + topic_slug + /(如 learn_distributed_systems/),项目文件的存放目录generated_byCreator 版本标识固定值 skill_creator_learning v1.4.0
根据 mode 选择对应的骨架模板:
references/templates/skill/lite.mdreferences/templates/skill/full.md用收集到的变量替换模板中的占位符( {{topic}}、 {{goal}} 等)
处理可选变量的条件注入:
learning_style_override:如用户提供了偏好,在模板的 {{learning_style_override}} 位置插入说明,如"\n- 注意:本项目用户偏好先看整体再钻细节(top-down),调整讲解策略"verification_override:类似处理准备 references/ 文件:
references/templates/guides/review_guide.md → 生成 review_guide.mdreferences/templates/guides/framework_guide.md → 生成 framework_guide.md(完整模式默认使用;轻量模式在自适应升级时使用)如果对话语言不是中文,将生成物全文翻译为用户使用的语言,保持结构和格式不变
将生成的 SKILL.md 完整内容展示给用户,然后列出 references/ 文件清单:
"此外还会生成以下配套文件:
- references/review_guide.md — 复盘执行指南
- references/framework_guide.md — 认知框架生成指南
你可以提出修改意见,或者确认后我直接生成。"
修改类型判断标准处理方式结构性修改影响模式逻辑或文件管理(如"不要复盘""加个打卡机制")调整骨架,重新生成受影响部分,再次完整展示内容微调不影响结构(如"目标描述改一下""加一条项目信息")定点修改,展示差异点("已更新 XX,其他不变。确认?")
迭代引导:
生成时逐项检查,确保每个占位符都已处理:
占位符来源处理方式{{topic}}用户输入的学习主题直接替换{{topic_slug}}从 topic 派生(小写、下划线、无空格)直接替换{{goal}}用户输入的学习目标(可操作表述)直接替换{{background}}用户输入的现有基础直接替换{{timeframe}}用户输入的时间范围直接替换{{learning_style_override}}可选,用户提到的学习风格偏好有值→插入说明文本;无值→清除占位符(不留空行){{verification_override}}可选,用户提到的验收方式偏好有值→插入说明文本;无值→清除占位符(不留空行){{project_dir}}从 topic_slug 派生learn_ + topic_slug + /(如 learn_distributed_systems/),直接替换{{generated_by}}Creator 版本标识固定值 skill_creator_learning v1.4.0,直接替换
⚠️ 用户确认生成后,必须进入 Phase 3 执行交付流程。不要直接写文件——Phase 3 包含安装路径探测、交付方式询问等必要步骤。
用户确认预览后,询问交付方式:
"你希望我怎么交付?
- 直接安装到当前工作空间 — skill 和项目文件夹都创建在当前工作空间内,立即可用
- 打包为 ZIP — 生成 zip 文件,你可以自行解压到任意位置或分享给别人"
无论哪种交付方式,都需要先确定 skill 的安装目录前缀。按以下优先级探测:
.claude/skills/、 .agents/skills/、 .agent/skills/、 _agents/skills/、 _agent/skills/、 .workbuddy/skills/、 skills/ 等目录。找到任意一个则沿用该前缀~/)下的全局 skill 路径:扫描是否存在 ~/.claude/skills/、 ~/.openclaw/skills/、 ~/.agents/skills/、 ~/.gemini/antigravity/skills/ 等目录。能找到则说明用户在用对应平台,项目级路径使用对应前缀.agents/skills/ 作为默认前缀(Agent Skills 开放标准,兼容性最广)探测到的前缀记为 {skill_prefix}。最终 skill 安装路径为: {skill_prefix}/learn_{{topic_slug}}/SKILL.md
执行以下步骤(必须按顺序完成):
{skill_prefix} 创建 skill 目录: {skill_prefix}/learn_{{topic_slug}}/references/ 子目录,写入 review_guide.md 和 framework_guide.mdlearn_{{topic_slug}}/(用于存放学习过程中产生的所有项目文件:学习计划、笔记、总结等)cat <<EOF)或重定向写入"学习项目已安装到当前工作空间:
- skill 位于
{skill_prefix}/learn_{{topic_slug}}/- 项目文件将保存在
learn_{{topic_slug}}/目录下直接开始对话就可以使用了——说「开始学习」或「继续学习」即可。"
执行以下步骤(必须按顺序完成):
learn_{{topic_slug}}_package/{skill_prefix} 创建 skill 目录结构: {skill_prefix}/learn_{{topic_slug}}/SKILL.md + {skill_prefix}/learn_{{topic_slug}}/references/learn_{{topic_slug}}/(空目录,首次使用时 skill 会自动初始化)cd /tmp && zip -r learn_{{topic_slug}}.zip learn_{{topic_slug}}_package/"已打包为
learn_{{topic_slug}}.zip。 解压到你的工作空间根目录后,skill 会自动生效,项目文件将保存在learn_{{topic_slug}}/目录下。"
生成前最后过一遍,确保生成物质量:
内容质量
{{...}}交付验证
{skill_prefix} 值{skill_prefix}/learn_[topic_slug]/SKILL.md + references/learn_[topic_slug]/