Files
yixiong-claude-marketplace/plugins/obsidian/skills/obsidian-tasks/SKILL.md
T
SkyJourney 98522ef9be feat(obsidian): 描述去冗余 + 核心补 OFM 语法 + workflow 补 Web Clip
对标社区基准(kepano/obsidian-skills 31.8k★、AgriciDaniel/claude-obsidian
15 技能完整体系)后的 P1-P6 优化合集:

- P1: 8 个子技能 description 末尾去"伴随激活"冗余句(路由不识别该声明)
- P5: obsidian-plugins 描述聚焦环境层(插件/主题/CSS/Templates/快捷键/命令)
- P6: obsidian-workflow-pkm 描述加"多步骤复合需求优先匹配"前置引导
- P3: 核心 obsidian skill 增补 OFM 语法速查章节
       (wikilinks/embeds/callouts/block refs/highlight/math 全表)
- P4: workflow-pkm 新增 Workflow 8 Web Clip → Permanent
       (引用 defuddle 社区标准,WebFetch 兜底)
2026-06-12 19:48:45 +08:00

219 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: obsidian-tasks
description: 管理 Obsidian vault 中基于 Markdown 复选框(`- [ ]`/`- [x]`)的任务清单与 GTD 工作流:跨文件列出/筛选任务、切换单条任务状态、项目进度统计、收集-处理-执行流程。触发词:todo、待办、任务清单、完成任务、GTD、任务状态。不用于 Linear/飞书任务(linear/lark-task),不用于 frontmatter status 字段(obsidian-meta)。
---
# Obsidian Tasks · 任务清单管理
> 基于 Markdown 复选框语法 `- [ ]` / `- [x]` 的任务管理子集。每个任务 = 笔记某一行。适合 GTDGetting Things Done)与 Zettelkasten 流程化任务。
---
## 何时使用
- 列出 vault 中**所有任务**(跨文件)
- 筛选**未完成**todo)或**已完成**done)的任务
- 按**状态字符**筛选(`- [ ]` 待办、`- [x]` 完成、`- [/]` 进行中、`- [?]` 存疑等)
- **切换单个任务**状态(ref = `path:line`
- 配合每日笔记做 GTD 收集/回顾流程
## 不用于
- Linear issue → **linear** 技能
- 飞书任务 → **lark-task** 技能
- Frontmatter 级别的 `status: done`**obsidian-meta**(那是笔记级状态,不是任务级)
- 任务的视觉化看板 → **obsidian-bases** + obsidian-tasks
---
## 命令速查
### 列出任务
```bash
obsidian tasks # vault 所有任务(text 默认)
obsidian tasks todo # 只列未完成
obsidian tasks done # 只列已完成
obsidian tasks verbose # 按文件分组,含行号
obsidian tasks format=json # JSON 输出(agent 友好)
obsidian tasks total # 仅返回任务总数
obsidian tasks file="项目Alpha" # 某文件的任务
obsidian tasks path="10-Projects/alpha/README.md"
obsidian tasks active # 当前激活文件的任务
obsidian tasks daily # 今天每日笔记的任务
obsidian tasks status="/" # 按自定义状态字符筛选(进行中)
obsidian tasks status="?" # 存疑
obsidian tasks status="!" # 重要
obsidian tasks status="-" # 取消
```
### 操作单个任务
```bash
# 方式 1:用 refpath:line
obsidian task ref="10-Projects/alpha/README.md:42" toggle
obsidian task ref="10-Projects/alpha/README.md:42" done
obsidian task ref="10-Projects/alpha/README.md:42" todo
obsidian task ref="10-Projects/alpha/README.md:42" status="/"
# 方式 2:用 file + line
obsidian task file="项目Alpha" line=42 done
# 方式 3:操作每日笔记
obsidian task daily line=7 toggle
```
---
## Task Emoji Shorthand 约定(社区标准)
Obsidian Tasks 插件广泛使用的状态字符:
| 字符 | 含义 | 渲染 |
|-----|------|------|
| ` ` | 待办 | `- [ ]` |
| `x` | 已完成 | `- [x]` |
| `/` | 进行中 | `- [/]` |
| `?` | 存疑/需澄清 | `- [?]` |
| `!` | 重要/关键 | `- [!]` |
| `-` | 已取消 | `- [-]` |
| `>` | 已转发/委派 | `- [>]` |
| `<` | 已调度(计划中) | `- [<]` |
CLI 的 `status="<char>"` 参数支持这些自定义字符。
---
## AI Agent 最佳实践
### 场景 1 · 每日任务收集(GTD 收集阶段)
每天早晨,扫描所有来源把任务汇总到当天每日笔记:
```bash
# 1. 收集昨天未完成的任务
obsidian tasks todo format=json > /tmp/open-tasks.json
# 2. 提取 vault 中所有 "TODO:" "FIXME:" "XXX:" 标记(这些不是正式 task)
obsidian search query="TODO:" limit=50 format=json
obsidian search query="FIXME:" limit=50 format=json
# 3. 由 agent 分类后,写入今天的每日笔记(见 obsidian-daily 技能)
obsidian daily:append content="\n## 今日任务\n- [ ] 处理 TODO: ...\n- [ ] 继续昨日未完成: ..."
```
### 场景 2 · 周回顾(Weekly Review
GTD 的核心仪式,每周一次:
```bash
# 1. 本周已完成(展示成就)
obsidian tasks done verbose format=json > /tmp/done-this-week.json
# 2. 未完成且超期 7+ 天的任务(僵尸任务,需要决策)
obsidian tasks todo verbose format=json > /tmp/stale-tasks.json
# 3. 由 agent 生成周报
obsidian create path="99-Log/weekly-$(date +%Y-W%V).md" content="# 周回顾\n..."
```
### 场景 3 · 项目进度检查
```bash
# 某项目的完成度
obsidian tasks path="10-Projects/alpha/README.md" total # 总数
obsidian tasks path="10-Projects/alpha/README.md" done total # 已完成数
# 计算百分比后写回 frontmatter(配合 obsidian-meta
# progress = done / total * 100
obsidian property:set name=progress value=65 type=number file="项目Alpha"
```
### 场景 4 · AI 生成任务的注入规范
当 AI agent 为用户拆解任务时,输出格式应遵循:
```markdown
## AI 拆解任务 · 2026-04-09
来源:用户需求"重构认证模块"
拆解方式:按 PR 颗粒度,每个任务 < 2h
- [ ] 📖 阅读现有认证中间件代码
- [ ] 🧪 补充现有逻辑的单元测试(无则写)
- [ ] ✂️ 抽取 Token 验证为独立函数
- [/] 🔧 引入 JWT 库替换自研实现
- [ ] 📝 更新 API 文档
- [ ] ✅ 回归测试
```
**约定**
- Emoji 前缀标注任务类型(📖 阅读 / 🧪 测试 / ✂️ 重构 / 🔧 开发 / 📝 文档 / ✅ 验证)
-`/`(进行中)的任务至多 1 个(WIP 限制)
- 每个任务自描述,不依赖上下文才能理解
### 场景 5 · 跨笔记任务聚合视图
```bash
# 把所有 `50-Zettel/` 下的待办聚合到一个 MOC 笔记
obsidian tasks path="50-Zettel" todo verbose format=json > /tmp/zettel-tasks.json
# 写入 MOC
obsidian create path="60-MOC/open-research-questions.md" content="# 待解决的研究问题\n..."
```
---
## Bash 脚本范式:完整的 Daily Standup
```bash
#!/bin/bash
# 每日站会助手:生成今日状态
TODAY=$(date +%Y-%m-%d)
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d 2>/dev/null || date -v -1d +%Y-%m-%d)
echo "# Daily Standup · ${TODAY}"
echo ""
echo "## ✅ 昨日完成"
obsidian tasks done verbose format=json | \
jq -r '.[] | select(.completed >= "'${YESTERDAY}'") | "- \(.text) [\(.file):\(.line)]"'
echo ""
echo "## 🔄 今日计划"
obsidian tasks todo verbose format=json | \
jq -r '.[] | "- [ ] \(.text) [\(.file):\(.line)]"' | head -10
echo ""
echo "## 🚧 进行中"
obsidian tasks status="/" verbose format=json | \
jq -r '.[] | "- [/] \(.text) [\(.file):\(.line)]"'
```
---
## 与其他技能的协作
| 场景 | 链路 |
|-----|------|
| 每日任务注入 | obsidian-tasks → **obsidian-daily**`daily:append` |
| 项目进度同步 | obsidian-tasks(统计)→ **obsidian-meta**`property:set progress` |
| 任务可视化 | obsidian-tasks(写入)→ **obsidian-bases**(视图展示) |
| GTD 周回顾工作流 | **obsidian-workflow-pkm**(编排) |
| Linear 双向同步 | obsidian-tasks + **linear** |
---
## 常见陷阱
| 现象 | 原因 | 对策 |
|------|------|------|
| `task toggle` 不生效 | line 数字错了 | `tasks verbose` 先确认行号 |
| 缩进子任务被识别为独立任务 | Markdown 语法正常 | 接受:Obsidian 视子任务为独立 |
| 自定义 status 字符不显示 | 主题不支持 | 切换支持 Tasks Emoji 的主题 |
| tasks 命令返回空 | 路径/文件名错 | 用 `obsidian files` 先确认 |
| 每日任务重复出现 | 没有迁移机制 | 在每日模板里写"迁移昨日未完成"逻辑 |
| AI 滥加任务导致 WIP 爆炸 | 没设置上限 | 约定:进行中(`/`)至多 1~3 个 |