Community生产力与协作github.com

qbarev/para-plugin

在 Obsidian PARA 库中处理归档操作——将已完成或废弃的项目(文件夹及其在任务应用中的配对项目,如 Todoist)或笔记移入归档,列出归档内容,或从归档中恢复项目。

para-plugin 是什么?

该技能为 Obsidian PARA 库提供完整的归档工作流管理。它支持三个核心子命令:归档目标(项目或笔记)、列出归档内容以及从归档恢复。当用户说出“archive this”、“move to archive”、“close the project”、“заархивируй”等触发词时,技能会准确识别并执行相应操作。对于项目归档,它会自动检查任务状态(需与任务应用配对),应用完成定义条件,并移动完整文件夹。技能设计遵循 PARA 方法的原则,强调移动而非删除,保留所有历史记录。它支持多种 Obsidian 插件和适配器,包括 Todoist 等任务应用,并处理冲突检测、协作笔记归档等边缘情况。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/qbarev/para-plugin/tree/HEAD/skills/archive

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

归档

库中的 Archive/ 区域:所有已完成或搁置的内容都放在这里,且归档始终是移动操作——绝非删除。永久删除使用 /remove。项目的后端配对项与其文件夹一同归档和恢复。

基础层

在操作前阅读,每个文件相对于此技能的基础目录为 ../../para/<file>.md——这些文件包含共享规则,请勿凭记忆复述:

  • ../../para/paths.md——始终,包括「语言」:下面的字符串来自 lang/<LANG>.md
  • ../../para/find-target.md——用于接受目标的子命令
  • ../../para/move.md——始终
  • ../../para/confirm.md——始终
  • ../../para/dod.md——当目标是项目时
  • ../../para/tasks.md——当目标是项目时:操作、配对、领域项目
  • ../../para/note-format.md——当编辑 frontmatter 时;「遗留字段」

子命令

$ARGUMENTS 的第一个单词确定子命令。list 和 restore 是唯一的保留关键字——其他任何内容都是归档的目标,因此 /archive project c 归档该目标项目。空的 $ARGUMENTS 表示显示三个子命令并询问。


<target>——放入归档

  1. 查找目标:根据 find-target.md,操作类型为「Archive」。

  2. 如果目标是项目:

    • 首先处理未完成任务。 读取配对项目的任务(task.list,打开状态,包含 project_ref)。如果任务处于打开状态,列出它们并询问一次(第 1.5 层)如何处理:完成它们(对每个任务执行 task.complete),将它们移动到某个领域项目(使用 task.move 加 area),或者保留在已归档项目内部。如果适配器标记 task.complete 为「不支持」,则第一个选项替换为 archive.close_in_app 字符串,并且不会调用任何操作。在继续之前记录用户的答案。在 pairing: separate 模式下,未配对的但有遗留 Tasks/ 文件夹的项目没有后端部分;dod.md 说明了如何检查其任务。在 pairing: none 模式下,任务就是项目自身的 Tasks/ 笔记,随文件夹一起移动。
    • 应用 dod.md 并说出每个不成立的条件。该文件决定结果是“已完成”还是“已废弃”;不要在此处复述其推理,也不要弱化它。
    • 将整个文件夹(内部结构不变)从 Projects/PROJ-xxxx <title>/ 移动到 Archive/PROJ-xxxx <title>/。名称完全保持不变:ID 终生跟随项目,ID 发行时会扫描 Archive/ 以保持其保留状态(project-id.md)。
    • 当配对时执行 project.archive(在 pairing: none 模式下始终如此;那里是空操作)。保留 tasks_ref: 在概览中——恢复时需要它。
    • 遗留字段(status 等)完全保持原样(note-format.md):已归档的项目保留其历史。
  3. 如果目标是独立笔记(领域、资源或来自 Inbox/ 的散落笔记):将单个 .md 文件移动到 Archive/。

    • 领域按其定义是持续进行的,通常不应归档。询问用户的意图(第 1.5 层)——通常表示笔记已过时,而非责任结束。
    • 位于某项目内但不是要被归档的项目中的遗留任务笔记:移动它不会破坏任何有用内容,而且很可能不是用户的本意——询问(第 1.5 层)。任务现在在后端关闭。
  4. 移动前检查基本名称是否有冲突(move.md、note-format.md)。重复名称会使该名称的所有链接产生歧义——第 1.5 层,询问而非直接移动。

  5. 关闭循环——仅限项目。 在报告之前,提出一个问题并等待回答:archive.ask_changed 字符串。不是问产生了什么成果——dod.md 的条件 2 已经覆盖了产物——而是问现在项目结束后有什么不同,以及是否值得付出代价。

    在提问之前,大声读出 project.value 部分——用户在项目开始时写下的收益(note-format.md,“关于结果的三个部分”)——并用 archive.expected 字符串询问这个收益是否成真({value} 是用户写下的内容,例如「每周减少 5 小时的评审」)。如果该部分为空或缺失,则按原样提问,不要编造期望。

    在概览正文末尾写入 project.what_changed 部分。其第一行是 dod.md 定义的结果——project.outcome.completed 或 project.outcome.abandoned 字符串({reason} 用用户的话说)——然后是用用户自己的话记录的答案;不要用自己的话概括。如果答案中提到某件事情比项目更持久,那么这是 dod.md 的条件 4 在说话;将其路由到 Areas/ 或 Resources/,而不是留在归档中。

    如果用户不想回答,仅写入结果行并说明循环被跳过。绝不编造其余内容。

  6. 报告:移动了什么、其新路径、结果行、打开的任务如何处理、后端项目是否已归档、任何警告。


list——显示归档中的内容

仅读取。切勿打开下面指定范围之外的笔记。

  1. 列出 Archive/——包括项目文件夹和松散的 .md 文件。
  2. 对于每个项目文件夹,读取概览 frontmatter(id、deadline)以及 project.what_changed 部分的第一行(如果该部分存在)。
  3. 使用 LANG 语言打印两个部分,每个部分按字母顺序排列,并在标题中显示计数(archive.list.projects 和 archive.list.notes 字符串)。显示的结果为:已完成的项目显示第一行(不带句点),已废弃的项目仅显示冒号前的单词(不重复原因);截止日期显示为 archive.list.deadline 字符串;如下所示使用英文示例:
**已归档项目(N)**
1. PROJ-0005 项目 D — 已完成,截止日期 2026-09-30
2. PROJ-0007 项目 F — 已废弃
3. PROJ-0003 项目 C — 未记录结果
4. 旧项目 — 无元数据

**已归档笔记(N)**
1. 某笔记

仅当 project.what_changed 部分的第一个非空行恰好是 project.outcome.completed 字符串或以 project.outcome.abandoned 字符串开头(直到冒号部分)时,才读取结果。否则——该部分缺失,或者以用户自己的话开头(如在此规则之前归档的项目)——打印 archive.no_outcome 字符串;绝不从自由文本或遗留的 status 字段推断结果。common.no_metadata 字符串表示完全没有 frontmatter。空归档是一个有效答案:直接说明。


restore <target>——将内容恢复回来

  1. 查找目标:根据 find-target.md,操作类型为「Restore from archive」。
  2. 确定它应该回到哪里。 项目回到 Projects/。笔记回到其 frontmatter 暗示的 PARA 文件夹——area/<slug> 映射到 Areas/,resource/<slug> 映射到 Resources/。如果标签没有说明,或者笔记早于该约定,则询问它属于哪里。任何内容都不能恢复到 Inbox/——它不是一个目标文件夹(paths.md)。
  3. 如上所述检查基本名称是否有冲突,然后移动。
  4. 任务端——仅限项目。 使用 ref 执行 project.restore。在 pairing: separate 模式下且没有 tasks_ref: 时,提供创建配对的选项(tasks.md 「配对」);如果用户同意,则执行 project.create,添加 tasks_ref: 键并填充它。在 pairing: none 模式下,没有可提供的配对。保持 project.dod 部分和 project.what_changed 部分中的已勾选复选框原样——编辑它们属于第 2 层操作,且很少需要。
  5. 报告:什么恢复回来了、回到哪里、以及其后端配对的状态。

说明

  • 永远不要在这里删除任何内容。归档始终是移动到 Archive/ 的操作;如果用户想要移除某个内容,应使用 /remove。
  • 所有面向用户的文本和 LANG 中的每个 frontmatter 值;固定字符串来自 lang/<LANG>.md。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

qbarev/para-plugin

Work with Areas in the Obsidian PARA vault — create an area of ongoing responsibility, or review which areas have gone quiet and what has drifted in them. Use when the user says "create an area", "new area", "review the areas", "which areas have gone quiet", "заведи область", "новая сфера", "добавь область", "обзор областей", "что по областям", "какие сферы провисают", "ревью сфер".

qbarev/para-plugin

Work with the inbox of the PARA vault, which lives in the task app's inbox — capture a raw thought into it, list what is sitting there unprocessed, or process captures one by one into their proper PARA folder. Use when the user wants to capture a note, mentions their task app's inbox (Todoist «Входящие», for example), or says "capture this", "add to the inbox", "what is in the inbox", "process the inbox", "запиши", "закинь в инбокс", "что в инбоксе", "покажи инбокс", "разбери инбокс", "разгреби инбокс".

qbarev/para-plugin

Set up a folder as a PARA vault run by this plugin, or bring an already set-up vault up to date — detect what the folder is, ask the setup questions one at a time, show one plan, apply it on one «yes», report. Re-running fills in what is missing and migrates an older vault schema. Use when the user says "set up the vault", "init the vault", "initialise PARA", "migrate the vault", "run /para:init", "настрой хранилище", "инициализируй хранилище", "подключи PARA", "мигрируй хранилище".

qbarev/para-plugin

Work with Projects in the Obsidian PARA vault and their pairs in the task app — list the active projects, create a project (folder plus a project in the task app), summarize where a project stands, or add a task to a project in the task app (Todoist, for example). Use when the user says "list projects", "show projects", "what am I working on", "create a project", "new project", "project overview", "project status", "add a task", "какие проекты", "список проектов", "покажи проекты", "что у меня в работе", "заведи проект", "новый проект", "саммари по проекту", "обзор проекта", "что по проекту", "статус проекта", "где я по проекту", "добавь задачу", "заведи задачу".

相关技能