请使用 TodoWrite 工具创建以下任务列表,然后逐步执行:
任务列表
- •验证学习项名称并检查目录冲突
- •创建目录结构(notes, projects, resources, flashcards, reviews)
- •复制并初始化 README.md(从模板生成)
- •创建 progress.md 进度追踪文件
- •创建初始笔记文件 notes/00-overview.md
- •创建资源收集文件 resources/learning-resources.md
- •询问用户学习目标并生成个性化学习路线图
- •更新主 README.md 的学习项目表格
执行指南
步骤 1: 验证名称
名称验证规则:
- •只允许小写字母、数字、连字符(-)
- •不能以连字符开头或结尾
- •不能包含连续的连字符
- •不能包含空格或特殊字符
- •建议长度:3-50 个字符
验证命令:
bash
# 检查名称格式(只允许字母数字和连字符)
if [[ ! "$NAME" =~ ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$ ]]; then
echo "错误:名称只能包含小写字母、数字和连字符"
exit 1
fi
目录冲突检查:
bash
# 检查目录是否已存在
ls -d [学习项名称] 2>/dev/null
# 如已存在,执行以下操作:
if [ $? -eq 0 ]; then
echo "警告:目录已存在"
# 使用 AskUserQuestion 询问用户:
# 1. 更换名称
# 2. 覆盖现有目录
# 3. 取消操作
fi
错误处理:
- •如果名称包含空格:提示使用连字符替代(如:"web development" → "web-development")
- •如果名称包含大写字母:提示转换为小写
- •如果目录已存在:显示目录内容,询问是否覆盖
步骤 2: 创建目录
bash
mkdir -p [学习项名称]/{notes,projects,resources,flashcards,reviews}
如果失败:
- •检查父目录权限
- •检查磁盘空间
- •提供详细错误信息并建议解决方案
步骤 3: 初始化 README
- •读取
_templates/LEARNING_ITEM.md - •获取今天日期:
date +"%Y-%m-%d" - •替换占位符:
- •
[学习项名称]→ 实际名称 - •
YYYY-MM-DD→ 今天日期
- •
- •使用 Write 工具创建
[学习项名称]/README.md
如果模板不存在:
bash
# 检查模板文件是否存在
if [ ! -f "_templates/LEARNING_ITEM.md" ]; then
echo "错误:模板文件不存在"
echo "请创建 _templates/LEARNING_ITEM.md 或从其他项目复制"
# 提供选项:
# 1. 创建基础 README(不使用模板)
# 2. 从示例复制模板
# 3. 取消操作
fi
步骤 4-6: 创建辅助文件
progress.md 内容:
- •当前阶段: Novice
- •开始日期:今天
- •总时长:0 小时
- •完成比例:0%
- •初始进度日志条目
notes/00-overview.md 内容:
- •初步疑问(5-10 个提示问题)
- •核心概念占位符
- •术语表模板
- •下一步计划区域
resources/learning-resources.md 内容:
- •书籍分类模板(至少 3 个条目)
- •在线课程分类模板
- •文档/教程分类模板
- •社区分类模板
- •工具分类模板
reviews/spaced-repetition.md 内容:
- •间隔重复追踪表(参考模板
_templates/SPACED_REPETITION.md) - •初始化复习时间表
- •学习记录索引
步骤 7: 个性化学习计划
使用 AskUserQuestion 询问:
问题 1: 每周可用学习时间?
- •选项:1-3 小时、3-5 小时、5-10 小时、10+ 小时
- •影响:调整学习路线图的周数预估
问题 2: 主要学习目标是什么?
- •选项:职业发展、兴趣爱好、学术研究、项目需求
- •影响:推荐不同类型的资源
问题 3: 是否有特定感兴趣的子领域?
- •多选:列出该领域的常见子领域
- •影响:调整 Beginner/Intermediate 阶段的重点
基于回答生成:
- •5 个阶段的学习路线图(参考 Novice→Master 路径)
- •每个阶段的预估周数(基于每周可用时间)
- •3-5 个优质入门资源(基于目标和兴趣)
自动化选项: 如果用户使用脚本/自动化调用,可通过参数跳过询问:
bash
# 示例:new-learning --auto "python" --time "5-10h" --goal "career" # 在这种情况下,使用默认值或提供的参数
步骤 8: 更新主 README
检查步骤:
- •读取根目录 README.md
- •验证表格格式是否存在
- •找到学习项目表格的位置
更新表格:
markdown
| 学习项 | 当前阶段 | 开始日期 | 最近更新 | 进度 | | ------ | -------- | -------- | -------- | ---- | | [现有项目...] | [新项目名称](./[新项目名称]/) | Novice | YYYY-MM-DD | YYYY-MM-DD | 0% | | _[添加新项目]_ | - | - | - | - |
如果表格格式不匹配:
- •尝试匹配类似格式
- •如果失败,在文件末尾追加新条目
- •提示用户手动检查表格格式
错误处理:
- •如果 README.md 不存在:创建新的 README.md
- •如果 README.md 没有表格:添加新表格
- •如果无法自动更新:提供 markdown 代码让用户手动添加
完成确认
完成所有任务后:
- •
显示创建的目录结构
bashtree [学习项名称] 2>/dev/null || ls -R [学习项名称]
- •
提供首周学习建议
- •建议学习时长(基于可用时间)
- •推荐首先完成的 1-2 个任务
- •推荐资源链接
- •
询问下一步
- •是否需要立即开始第一个学习任务?
- •可使用
/study [学习项名称]开始
错误恢复
如果在任何步骤失败:
- •记录失败点:在进度文件中记录
- •清理不完整目录(可选):询问用户是否删除
- •提供恢复选项:
- •从失败点重新开始
- •使用部分创建的文件
- •完全清理并重新开始
示例输出
code
验证名称:python-basics
创建目录结构
初始化 README.md
创建 progress.md
创建 notes/00-overview.md
创建 resources/learning-resources.md
更新主 README.md
创建的学习项目结构:
python-basics/
├── README.md
├── progress.md
├── notes/
│ └── 00-overview.md
├── projects/
├── resources/
│ └── learning-resources.md
├── flashcards/
└── reviews/
└── spaced-repetition.md
首周学习建议:
- 建议学习时长:每周 5-7 小时
- 第一个任务:完成 Python 环境搭建
- 推荐资源:Python 官方教程
下一步:使用 /study python-basics 开始学习