AgentSkillsCN

new-learning

创建全新的学习项目,并初始化完整的学习目录结构。当用户想要开启一项新主题的学习时,可选用此功能。

SKILL.md
--- frontmatter
name: new-learning
description: 创建新的学习项目并初始化完整的学习目录结构。Use when user wants to start learning a new topic.

请使用 TodoWrite 工具创建以下任务列表,然后逐步执行:

任务列表

  1. 验证学习项名称并检查目录冲突
  2. 创建目录结构(notes, projects, resources, flashcards, reviews)
  3. 复制并初始化 README.md(从模板生成)
  4. 创建 progress.md 进度追踪文件
  5. 创建初始笔记文件 notes/00-overview.md
  6. 创建资源收集文件 resources/learning-resources.md
  7. 询问用户学习目标并生成个性化学习路线图
  8. 更新主 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

  1. 读取 _templates/LEARNING_ITEM.md
  2. 获取今天日期:date +"%Y-%m-%d"
  3. 替换占位符:
    • [学习项名称] → 实际名称
    • YYYY-MM-DD → 今天日期
  4. 使用 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

检查步骤:

  1. 读取根目录 README.md
  2. 验证表格格式是否存在
  3. 找到学习项目表格的位置

更新表格:

markdown
| 学习项 | 当前阶段 | 开始日期 | 最近更新 | 进度 |
| ------ | -------- | -------- | -------- | ---- |
| [现有项目...]
| [新项目名称](./[新项目名称]/) | Novice | YYYY-MM-DD | YYYY-MM-DD | 0% |
| _[添加新项目]_ | - | - | - | - |

如果表格格式不匹配:

  • 尝试匹配类似格式
  • 如果失败,在文件末尾追加新条目
  • 提示用户手动检查表格格式

错误处理:

  • 如果 README.md 不存在:创建新的 README.md
  • 如果 README.md 没有表格:添加新表格
  • 如果无法自动更新:提供 markdown 代码让用户手动添加

完成确认

完成所有任务后:

  1. 显示创建的目录结构

    bash
    tree [学习项名称] 2>/dev/null || ls -R [学习项名称]
    
  2. 提供首周学习建议

    • 建议学习时长(基于可用时间)
    • 推荐首先完成的 1-2 个任务
    • 推荐资源链接
  3. 询问下一步

    • 是否需要立即开始第一个学习任务?
    • 可使用 /study [学习项名称] 开始

错误恢复

如果在任何步骤失败:

  1. 记录失败点:在进度文件中记录
  2. 清理不完整目录(可选):询问用户是否删除
  3. 提供恢复选项
    • 从失败点重新开始
    • 使用部分创建的文件
    • 完全清理并重新开始

示例输出

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 开始学习