agentsclimarketplace

Obsidian note

Skill RainZZZYYY/claude-learn-skills/obsidian-note

将当前对话内容创建为结构化的 Obsidian 笔记,自动命名并分类到合适目录。仅通过 /obsidian-note 主动调用,不响应对话中的关键词。From its SKILL.md

Install
npx -y skills add RainZZZYYY/claude-learn-skills --skill obsidian-note

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

14.1 KB, ~5.4k tokens by cl100k_base, as published. Nobody here has run it

Obsidian 笔记助手

基于当前对话内容,在 /mnt/e/StudyNotes 中创建或更新笔记。一次对话可能产出多篇——操作过程记成项目日记,提炼的理解合并到已有笔记或新建永久笔记,二者通过双向链接关联。

仓库结构

/mnt/e/StudyNotes/
├── 00_收件箱/              # 临时草稿,每周整理归类
├── 10_项目/                # 有终点的项目
│   ├── 任务总控.md          # 全局仪表盘,所有项目状态一览
│   └── 项目名/              # 一个项目一个文件夹
│       ├── 任务清单.md       # 该项目的详细任务待办
│       ├── 2026-05-10_xxx.md # 项目日记
│       └── ...
├── 20_笔记/                # 永久知识,按领域分
│   ├── 工具与环境/
│   ├── Python/
│   ├── OpenCV/
│   ├── PyTorch/
│   ├── 深度学习/
│   ├── ROS2/
│   └── 数学基础/
├── 30_资源/                # 速查表、命令集、模板、外部链接
└── 90_归档/                # 已完成的项目

文件夹只做大类区分,细节靠 Properties 中的 tagsaliases 组织。

执行步骤

第 1 步:扫描对话,拆成两类内容

回顾本轮对话,从中提取:

类型是什么判断标准
操作过程今天做了什么、踩了什么坑、怎么解决的有时序、有具体操作命令、有踩坑记录
理解收获概念理解了、原理想通了、能一句话说清脱离时间也有价值、以后能反复翻看和延伸

一次对话两种都可能有,也可能只有一种。如实提取即可。

第 1.5 步:检查学习工作文档

检查 40_中间产物/当前学习.md 是否存在:

  • 存在且未完成(frontmatter 中 current_point 未指向最后一个知识点) → 将已完成的知识点(✅标记的)内容纳入本次归档素材,在文档末尾已归档部分加上 > 📝 以上学习部分已归档于 YYYY-MM-DD,不删除文档
  • 存在且已完成(所有知识点 ✅) → 将全部内容纳入本次归档素材,归档完成后提示用户:
    📂 学习工作文档已归档完毕
    
    40_中间产物/当前学习.md 可删除。
    [1] 删除  [2] 保留
    
  • 不存在 → 跳过,正常流程

第 2 步:检查已有笔记,决定新建还是更新

这一步最关键。 对于每个「理解收获」,先搜索再决定操作,不要直接建新笔记。

  1. 20_笔记/ 中用 Glob + Grep 搜索相同主题的已有笔记(按主题关键词搜文件名和标题)
  2. 对每个理解收获,判断属于以下哪种情况:
情况判断标准操作
同一概念的新理解已有笔记讲了这个概念,本次有新角度、新深度、新踩坑更新已有笔记:追加关键点、补充怎么用、添加踩坑经验、新增关联链接
全新的独立概念仓库中没有这个主题的笔记新建笔记
内容已被覆盖已有笔记已经包含了本次的理解,没有新东西跳过,只在日记中链接已有笔记

日记不受此限制——每次对话一定新建一篇日记(日期不同,记录不同)。

第 3 步:落成笔记

操作过程 → 项目日记10_项目/项目名/YYYY-MM-DD_做了什么.md

文件名严格使用 ISO 8601 日期格式 YYYY-MM-DD。每次对话一篇。

理解收获 → 永久笔记20_笔记/领域/主题.md

  • 新建:文件名用主题命名,不加数字前缀、不加日期
  • 更新:在已有笔记中追加内容,保持原有结构不变

如果对话中出现了新的可复用命令/模板/链接 → 问用户要不要在 30_资源/ 下额外建一篇速查笔记。

拿不准分类 → 00_收件箱/

第 4 步:写笔记内容

新建永久笔记(第 5 步会应用 [未看] 前缀 + 00_收件箱/ 路径,此处只需写入正文内容):

模板(遵循 Obsidian Properties 官方文档):

---
aliases:
  - 别名1
  - 别名2
created: YYYY-MM-DD
tags:
  - 领域标签
  - 类型标签
---

# 主题(一句话概括)

(正文第一句直接说清这个概念是什么。)

## 关键点

- 第一点
- 第二点
- 第三点

## 怎么用

(贴最小可运行代码。没有则省略整个段落。)

## 关联

- [[相关笔记A]]
- [[相关笔记B]]

更新已有笔记的方法

  • 保持原有 frontmatter(created 不动,aliases 如有新别名则追加)
  • 在「关键点」末尾追加新要点(前面加 (更新于 YYYY-MM-DD) 或直接混入列表)
  • 在「怎么用」补充新代码示例
  • 在「关联」追加新链接
  • 不删原有内容,不重写——知识笔记是生长的,不是替换的

模板规范

  • tags 用 YAML list,不加 #,用复数 tags 而非 tag(单数已废弃)
  • aliases 放中文别名、简称、英文原名
  • createdYYYY-MM-DD 格式
  • 属性值中的内部链接必须加引号:"[[链接]]"
  • 属性名用小写英文,值用中文或英文
  • 标签不超过 3 个

项目日记模板

---
tags:
  - diary
  - 项目标签
created: YYYY-MM-DD
---

# YYYY-MM-DD 做了什么

## 操作步骤

- 步骤 1
- 步骤 2

## 踩坑记录

- 遇到的问题和解决方法

## 关联

- [[永久笔记A]]
- [[永久笔记B]]

第 5 步:应用阅读状态追踪

所有永久笔记应用三态追踪,文件名前缀 + 正文勾选框双重标识

勾选框位置

---
aliases: ...
tags: ...
---

- [ ] 开头已确认

# 笔记标题

...正文...

- [ ] 结尾已确认

状态判定

文件名开头结尾状态位置
[未看] 主题.md[ ][ ]未看00_收件箱/
[待看] 主题.md[x][ ]待看00_收件箱/
主题.md已看20_笔记/领域/

规则

  • 新建永久笔记 → 文件名 [未看] 主题.md,正文两个 [ ],放入 00_收件箱/
  • 更新已有永久笔记 → 统一操作:
    1. 保留第一个(开头)勾选框状态不变(若笔记原无勾选框则在开头插入 [ ]
    2. 重置第二个(结尾)勾选框为 [ ]
    3. 根据第一个勾选框状态重命名文件:
      • [ ] [ ][未看]
      • [x] [ ][待看]
    4. 确保文件在 00_收件箱/(在 20_笔记/ 的移回收件箱)
  • 用户升级未看→待看 → 勾选开头 [ ][x],重命名 [未看] 主题.md[待看] 主题.md,文件留在 00_收件箱/
  • 用户确认已看 → 去除文件名前缀、去除两个勾选框,移动到 20_笔记/ 对应领域
  • 更新日记 → 不受此规则影响,日记直接存入 10_项目/ 对应位置
  • 归档完成后 → 在汇总确认中询问用户:
    👁️ 阅读状态
      以下笔记在 00_收件箱/,可升级状态:
      - [未看] Python变量.md → 勾选开头 → 变 [待看]
      - [待看] Git核心概念.md → 勾选结尾 → 移入 20_笔记/
      [回复笔记名升级状态,或回复"跳过"]
    

第 6 步:双向链接

  • 用 Glob 搜索仓库中已有的相关笔记
  • 日记必须链接到本次产出的 / 更新的所有永久笔记,以及之前的相关笔记
  • 永久笔记之间互相链接
  • 大胆使用空链接—— [[一个还不存在的笔记]] 完全合法,以后补建即可

第 7 步:维护任务清单

如果用户正在执行某个项目的任务,建完日记后要同步更新 10_项目/项目名/任务清单.md

  1. 检查 10_项目/项目名/任务清单.md 是否存在
  2. 如果存在,将本次完成的任务勾选为 [x],补上日记和笔记的链接
  3. 如果不存在但用户有任务列表,问用户"要不要先把任务清单生成出来?"

同时更新 10_项目/任务总控.md 中的项目进度,并同步更新 > 🎯 下一任务 为当前阶段第一个未完成的任务。

第 8 步:维护技能清单

仅当本轮对话涉及创建或修改了 Claude 技能时触发。 检查 30_资源/Claude技能清单.md 是否存在:

  • 不存在 → 新建该笔记,将所有已有技能都扫描一遍写入
  • 存在 → 更新对应技能的条目,无变化则跳过

每个技能条目格式:

## 技能名

- **触发**:仅主动调用 / 对话中关键词触发
- **功能**:一句话描述做什么
- **流程**:2-3 句话说明怎么工作
- **建议场景**:什么时候用

示例条目:

## obsidian-note

- **触发**:`/obsidian-note`(仅主动调用)
- **功能**:将对话内容自动拆分为项目日记和永久笔记,先搜再建避免重复,更新任务清单进度
- **流程**:扫描对话 → 拆分操作过程和理解收获 → 检查已有笔记决定新建或更新 → 写笔记 → 双向链接 → 维护任务清单
- **建议场景**:完成一个学习任务后整理产出、讨论出重要结论后沉淀知识、踩坑后保存经验

如果 Claude技能清单.md 中已有该技能的条目,对比新旧内容,有变化才更新,无变化跳过。

第 9 步:汇总确认

一次性展示所有操作,区分「新建」「更新」「跳过」:

📔 项目日记(1 篇)
  新建:10_项目/视觉工程学习/2026-05-12_阈值分割调试.md

📝 永久笔记
  新建:00_收件箱/[未看] Otsu算法.md
  更新:00_收件箱/[待看] 阈值分割.md — 追加踩坑经验

⏭️ 跳过
  OpenCV图像读取 — 现有笔记已覆盖,无新内容

👁️ 阅读状态
  以下笔记在 00_收件箱/,是否有已确认阅读的?
  - 未看:Otsu算法.md
  - 待看:阈值分割.md

📋 任务清单
  更新:任务清单.md — 勾选任务 16

📄 学习工作文档
  40_中间产物/当前学习.md — 未完成,已归档部分加标记
  或
  40_中间产物/当前学习.md — 已完成,归档后可删除

🔗 交叉链接
  日记 → 阈值分割、Otsu算法
  阈值分割 → Otsu算法

📋 README
  更新:README.md — 进度同步

📦 Git
  已提交并推送:3 个文件变更
  或
  push 失败:网络超时,笔记已本地保存

🔧 技能
  已推送:learn/SKILL.md, obsidian-note/SKILL.md
  或
  技能目录无变更,跳过

等用户确认后逐篇写入。

第 10 步:同步任务总控到 README

如果本次更新了任务总控,将其「进行中」「等待中」「已完成」和 🎯 下一任务 同步到 README.md

  1. 读取 10_项目/任务总控.md,提取「进行中」区块的所有条目
  2. 读取 /mnt/e/StudyNotes/README.md,如果不存在则跳过
  3. 将 README 中 ## 当前进度 下的 ### 进行中 条目替换为任务总控中对应的条目(保持 Obsidian [[链接|显示名]] 格式)
  4. ### 等待中### 已完成 同理从任务总控同步
  5. 更新 > 🎯 下一任务 为当前阶段第一个未完成的任务

只替换进度条目和下一任务,不动 README 的其他结构(目录结构、工具说明等)。

第 11 步:Git 自动提交

所有笔记写入完成后,自动将变更提交到 StudyNotes 仓库:

  1. 检查 /mnt/e/StudyNotes 是否是一个 git 仓库(git status
  2. 如果不是仓库,跳过本步骤
  3. 执行提交:
cd /mnt/e/StudyNotes
git add -A
git commit -m "笔记: YYYY-MM-DD — 简要描述本次变更"
git push

提交信息格式:笔记: 日期 — 做了什么,例如:

  • 笔记: 2026-05-10 — 搭建 WSL2 环境
  • 笔记: 2026-05-10 — 学习 Git 核心概念
  • 笔记: 2026-05-10 — 新建 Otsu 算法,更新 阈值分割
  1. 如果 push 失败(网络问题等),告知用户但不阻塞流程,笔记已经本地保存。

第 12 步:自动推送技能变更

如果本次笔记涉及技能文件的创建或修改(/home/rainz/.claude/skills/ 下有变更),自动执行 /push-skills

  1. 检查技能目录的 git 状态
  2. 有未推送的变更 → 执行 push-skills 流程
  3. 无变更 → 跳过

在汇总确认中追加:

🔧 技能
  已推送:learn/SKILL.md, obsidian-note/SKILL.md
  或
  技能目录无变更,跳过

  1. 在汇总确认的展示中加入 Git 状态:
📦 Git
  已提交并推送:3 个文件变更
  或
  push 失败:网络超时,笔记已本地保存

原则

原则说明
先搜再建每个永久笔记创建前先搜索有无相同主题的已有笔记;已有则更新,不重复建
知识笔记是生长的更新已有笔记时追加不覆盖,同一个概念随学习深入越来越厚
日记每次新建日记记录过程,日期不同就是不同篇,不受合并规则影响
一次对话 = 一套笔记日记 + 永久笔记 + 任务清单更新,不同性质的内容不混在一篇里
一篇笔记只讲清一件事不写成教科书章节
任务清单是唯一真相源任务进度、产出链接全在清单里;日记是任务和笔记的桥梁
两层任务管理任务总控.md 看全局仪表盘,各项目文件夹内的 任务清单.md 看单项目细节
属性辅助组织,文件夹只做大类文件夹划分领域,细节靠 tagsaliases
大胆链出去每篇永久笔记至少一个 [[]];空链接完全合法
一致性减少决策负担日期统一 YYYY-MM-DD、标签统一小写英文复数、命名统一格式
文件优于应用笔记就是本地 .md 文件,不依赖任何特定插件才能阅读
拿不准往收件箱放宁可选错分类也不丢内容
新建文件夹前先确认不随意扩张目录结构

What ships with it: 1 file

3.0 KB alongside SKILL.md, 1 of them executable

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.