From learning-tools
将任意内容(文件夹/文件/文字)转换为交互式教程并启动预览服务。触发词:文档转教程、生成交互式教程、创建教程、制作教程、tutorial、interactive tutorial、转教程、做教程、写教程、文档变教程、把文档做成教程
How this skill is triggered — by the user, by Claude, or both
Slash command
/learning-tools:doc-to-tutorialThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<role>
gsd:workflow gsd:meta doc-to-tutorial 文档转教程、生成交互式教程、创建教程、制作教程、tutorial、interactive tutorial、转教程、做教程、写教程、文档变教程、把文档做成教程 Read, Write, Glob, Bash, AskUserQuestion
<!-- 执行前检查点 -->
<checkpoints>
<checkpoint order="1">Node.js、interactive-tutorial CLI 和框架路径检查通过</checkpoint>
<checkpoint order="2">内容来源已确认</checkpoint>
<checkpoint order="3">敏感信息已处理</checkpoint>
<checkpoint order="4">教程元数据已收集</checkpoint>
<checkpoint order="5">生成的教程内容已确认</checkpoint>
<checkpoint order="6">预览服务启动成功</checkpoint>
</checkpoints>
<!-- 安全约束 -->
<constraints>
<constraint>必须过滤敏感信息(.env、个人路径、credentials)</constraint>
<constraint>生成的教程不包含真实密码或密钥</constraint>
<constraint>使用占位符替换个人路径(如 <YOUR_PATH>)</constraint>
<constraint>每个交互点必须等待用户确认后才继续</constraint>
</constraints>
</gsd:meta>
gsd:goal将任意内容源转换为符合 interactive-tutorial 框架标准的交互式教程,并启动本地预览</gsd:goal>
<gsd:phase name="dependency-check" order="0"> gsd:step检查 Node.js、interactive-tutorial CLI 和 INTERACTIVE_TUTORIAL_FRAMEWORK_PATH</gsd:step> gsd:step缺少运行时依赖时,给出对应安装或配置指引</gsd:step> gsd:checkpoint运行时依赖和框架路径均已就绪</gsd:checkpoint> </gsd:phase>
<gsd:phase name="collect-context" order="1"> gsd:step检测内容来源类型(文件夹/文件/文字)</gsd:step> gsd:step扫描并过滤敏感信息</gsd:step> gsd:step收集教程元数据(标题、分类、难度、时长)</gsd:step> gsd:checkpoint内容来源、敏感信息处理、元数据全部确认</gsd:checkpoint> </gsd:phase>
<gsd:phase name="generate-tutorial" order="2"> gsd:step分析源内容,拆分为逻辑步骤</gsd:step> gsd:step生成 config.json 元数据文件</gsd:step> gsd:step为每个步骤生成 .mdx 文件</gsd:step> gsd:checkpoint用户确认生成的教程结构和内容</gsd:checkpoint> </gsd:phase>
<gsd:phase name="preview" order="3"> gsd:step检查 INTERACTIVE_TUTORIAL_FRAMEWORK_PATH 配置</gsd:step> gsd:step启动 interactive-tutorial 预览服务</gsd:step> gsd:checkpoint预览服务运行正常,用户可访问</gsd:checkpoint> </gsd:phase> </gsd:workflow>
| 变量名 | 说明 | 默认值 |
|---|---|---|
TUTORIAL_OUTPUT_PATH | 教程输出目录 | <当前工作区>/content/ |
INTERACTIVE_TUTORIAL_FRAMEWORK_PATH | 框架路径(必须配置) | 无默认值 |
⚠️ 必须配置:
INTERACTIVE_TUTORIAL_FRAMEWORK_PATH需要在全局 CLAUDE.md 中设置,指向 interactive-tutorial-framework 的路径。示例(添加到 ~/.claude/CLAUDE.md):
| `INTERACTIVE_TUTORIAL_FRAMEWORK_PATH` | 框架路径 | `/path/to/interactive-tutorial-framework` |
npm install -g @wangjs-jacky/interactive-tutorial
interactive-tutorial --version
目标:确保必要依赖已就绪
依赖列表:
| 依赖 | 类型 | 说明 |
|---|---|---|
| Node.js >= 18 | runtime | 运行教程工具 |
interactive-tutorial | CLI | 生成并预览教程 |
INTERACTIVE_TUTORIAL_FRAMEWORK_PATH | 配置 | 定位教程框架 |
步骤:
node --version 和 interactive-tutorial --versionINTERACTIVE_TUTORIAL_FRAMEWORK_PATH 是否指向有效目录🛑 Checkpoint — 必须确认
检查项 说明 ✅ 依赖就绪 Node.js、CLI 和框架路径均可用
目标:了解用户要转换的内容来源
步骤:
| 来源类型 | 说明 | 处理方式 |
|---|---|---|
| 文件夹路径 | 将文件夹内容转为教程 | 扫描目录结构,分析文件内容 |
| 单个文件路径 | 将文件内容转为教程 | 解析文件,拆分为步骤 |
| 直接输入文字 | 将用户描述转为教程 | 理解描述,结构化输出 |
⚠️ 排除规则:以下内容不应包含在生成的教程中
| 排除类型 | 示例 |
|---|---|
| 环境变量文件 | .env、.env.local、.env.* |
| 依赖目录 | node_modules/、vendor/ |
| 版本控制 | .git/、.svn/ |
| 个人路径 | $HOME/...、%USERPROFILE%\\... |
| 敏感信息 | credentials、secrets、passwords |
处理策略:
<YOUR_PATH>、<YOUR_API_KEY>)| 字段 | 必需 | 说明 |
|---|---|---|
| 教程标题 | ✅ | 教程名称 |
| 教程分类 | 可选 | 如:入门指南、进阶教程 |
| 难度级别 | 可选 | 初级/中级/高级 |
| 预计时长 | 可选 | 如:30 分钟 |
| 标签 | 可选 | 用于分类搜索 |
🛑 Checkpoint — 必须确认
检查项 说明 ✅ 内容来源 已明确内容来源类型和路径 ✅ 个人内容 已检测并处理敏感信息(脱敏/排除) ✅ 元数据 已收集教程标题等必要信息
目标:根据内容来源生成交互式教程文件
输出目录:$TUTORIAL_OUTPUT_PATH/<tutorial-name>/(默认为当前工作区下的 content/ 目录)
目录结构:
<当前工作区>/content/<tutorial-name>/
├── config.json # 教程元数据
└── steps/
├── 01-intro.mdx # 步骤 1
├── 02-step-two.mdx # 步骤 2
└── ...
config.json 格式:
{
"title": "教程标题",
"coverEmoji": "🧭",
"category": "分类",
"difficulty": "初级|中级|高级",
"duration": "X 分钟",
"tags": ["标签1", "标签2"],
"featured": false,
"description": "教程简介",
"steps": [
{ "id": "intro", "title": "欢迎使用", "order": 1 },
{ "id": "step-2", "title": "步骤 2 标题", "order": 2 }
]
}
MDX 步骤格式:
---
id: step-id
title: 步骤标题
---
import { CodeBlock, Tip, Checkpoint } from '@components';
# 步骤标题
步骤内容...
## 子标题
<CodeBlock language="bash" copyable>{`命令示例`}</CodeBlock>
<Tip type="info" title="提示">
提示内容
</Tip>
<Checkpoint stepId="step-id" label="我已完成此步骤" />
可用 MDX 组件:
| 组件 | 用途 | 属性 |
|---|---|---|
<CodeBlock> | 代码块 | language, copyable |
<Tip> | 提示框 | type (info/warning/success/error), title |
<Checkpoint> | 检查点按钮 | stepId, label |
步骤:
.mdx 文件config.json 元数据🛑 Checkpoint — 用户确认
操作 说明 🛑 等待 用户确认生成的教程结构和内容 ✅ 通过 用户确认后继续
目标:使用 @wangjs-jacky/interactive-tutorial 启动本地预览
步骤:
content/<tutorial-name>/ 下INTERACTIVE_TUTORIAL_FRAMEWORK_PATH 是否已配置:
# 使用框架 CLI(需要先配置 INTERACTIVE_TUTORIAL_FRAMEWORK_PATH)
cd $INTERACTIVE_TUTORIAL_FRAMEWORK_PATH
npm run tutorial:serve -- --tutorial <tutorial-name> --port 5174 --open
命令选项:
# 基础启动(自动打开浏览器)
interactive-tutorial serve /path/to/framework/content --tutorial my-tutorial --open
# 指定端口
interactive-tutorial serve /path/to/framework/content --tutorial my-tutorial --port 5174 --open
# 不自动打开浏览器
interactive-tutorial serve /path/to/framework/content --tutorial my-tutorial --port 5174
✅ Checkpoint — 验证服务
检查项 说明 ✅ 服务启动 interactive-tutorial 服务正常运行 ✅ 预览可用 用户可以在浏览器访问预览页面
<success_criteria> 完成以下所有项目即视为任务成功:
<quick_reference>
| 操作 | 命令 |
|---|---|
| 安装 CLI | npm install -g @wangjs-jacky/interactive-tutorial |
| 验证安装 | interactive-tutorial --version |
| 启动预览 | npm run tutorial:serve -- --tutorial <name> --port 5174 --open |
<当前工作区>/content/<tutorial-name>/TUTORIAL_OUTPUT_PATH 变量| 变量 | 位置 | 说明 |
|---|---|---|
INTERACTIVE_TUTORIAL_FRAMEWORK_PATH | 全局 CLAUDE.md | 框架路径(必须) |
TUTORIAL_OUTPUT_PATH | 全局/项目 CLAUDE.md | 输出目录(可选) |
| </quick_reference> |
A: 确保已全局安装:npm install -g @wangjs-jacky/interactive-tutorial,并检查 Node.js 版本 >= 18。
A: 在 steps/ 目录下创建新的 .mdx 文件,并在 config.json 的 steps 数组中添加对应条目。
A: 支持 CodeBlock、Tip、Checkpoint 组件,分别用于代码块、提示框和用户确认点。
A: 在全局 CLAUDE.md 中设置 INTERACTIVE_TUTORIAL_FRAMEWORK_PATH 变量,或在运行时指定。
A: 设置 TUTORIAL_OUTPUT_PATH 环境变量,或在执行时指定输出目录。
A: 自动检测并排除 .env、.git、node_modules 等敏感内容。个人路径使用 <YOUR_PATH> 占位符替换。
用户:帮我把 /path/to/my-project 转成交互式教程
↓
Claude:Phase 0 - 检查依赖
↓
Claude:Phase 1 - 分析项目结构,检测敏感信息
↓
Claude:Phase 1 - 收集教程元数据(标题、难度等)
↓
Claude:Phase 2 - 创建 config.json 和 steps/*.mdx
↓
用户:确认教程结构
↓
Claude:Phase 3 - 启动预览服务
↓
输出:浏览器自动打开 http://localhost:5174
npm install -g @wangjs-jacky/interactive-tutorialINTERACTIVE_TUTORIAL_FRAMEWORK_PATHinteractive-tutorial --version| 阶段 | 标记 | 用户操作 |
|---|---|---|
| Phase 0 | 🛑 | 确认依赖安装或跳过 |
| Phase 1 | 📝 | 提供内容来源(路径或文字) |
| Phase 1 | 🛑 | 确认敏感信息处理方式 |
| Phase 1 | 📝 | 输入教程元数据(标题、分类等) |
| Phase 2 | 🛑 | 确认生成的教程结构和内容 |
| Phase 3 | ✅ | 验证预览服务可用 |
LLM 执行提示:
npx claudepluginhub wangjs-jacky/jacky-skills --plugin learning-toolsCreates checkpointed step-by-step technical tutorials with visible end state, dependency-ordered steps, working checkpoints, and mechanism explanations. Use for drafting, revising, or outlining tutorials, guides, or onboarding docs.
Designs hands-on tutorials with progressive disclosure, exercises, and troubleshooting sections. Use when creating learning content, workshops, or step-by-step guides.
Transforms code and features into step-by-step tutorials with hands-on examples. Best when building educational content, onboarding materials, or learning resources.