qbarev/para-plugin

Obsidian PARA 保管庫のプロジェクトとタスクアプリ(Todoist など)のペアを操作します。アクティブなプロジェクトの一覧表示、プロジェクトの作成(フォルダとタスクアプリ側のプロジェクト)、プロジェクトの状況要約、タスクの追加を行います。

para-plugin とは?

このスキルは、Obsidian の PARA メソッドに基づく保管庫と、Todoist などの外部タスクバックエンドを連携し、プロジェクト管理を効率化します。`list`(一覧)、`create`(作成)、`overview`(要約)、`task`(タスク追加)の4つのサブコマンドを提供し、ユーザーの自然言語での指示から適切な操作を推論します。プロジェクトは保管庫内のフォルダとタスクバックエンド上のプロジェクトがペアになって管理され、各操作は `tasks.md` アダプタを介して行われます。レガシープロジェクト(タスクバックエンド導入以前のもの)も適切に扱い、読み取り専用の操作(`list`、`overview`)ではデータを変更しません。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/qbarev/para-plugin/tree/HEAD/skills/projects

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Projects(プロジェクト)

プロジェクトとは、明確な目標と終了状態を持つ取り組みです。Area(継続的な活動)とは異なります。プロジェクトは保管庫内のフォルダと、タスクバックエンド上のプロジェクトがペアになっています。フォルダはプロジェクトの意味を保持し、バックエンドはそのタスク(tasks.md)を保持します。すべてのタスク呼び出しは tasks.md の操作であり、TASKS のアダプタに従って実行されます。

基本レイヤー

行動する前に、以下のファイルを読み込んでください(各ファイルはこのスキルのベースディレクトリからの相対パス ../../para/<ファイル>.md にあります)。これらのファイルには共有ルールが含まれているため、記憶から再述してはいけません。

  • ../../para/paths.md — 常に。特に「言語」: 以下の文字列は lang/<LANG>.md から取得します。
  • ../../para/tasks.md — 常に。操作、ペアリング、タスクとは何か。
  • ../../para/find-target.md — overview および task 用。
  • ../../para/note-format.md — create 用。すべてのサブコマンドで「レガシーフィールド」を参照。
  • ../../para/project-id.md — create 用。
  • ../../para/dod.md — create(project.dod セクションの作成)および overview 用。
  • ../../para/thresholds.md — list および overview 用: プロジェクトの順序、陳腐化、ホライゾン、タスク数、出力サイズ。
  • ../../para/confirm.md — create および task は書き込み(Tier 1); list および overview は書き込みなし。
  • ../../para/move.md — create で、競合する可能性のあるフォルダを作成する前に使用。

サブコマンド

$ARGUMENTS の最初の単語でサブコマンドを決定します: list、create、overview、task。これらのいずれでもない場合は、言い回しから意図を判断し、選択したサブコマンドを伝えてください。$ARGUMENTS が空の場合は list を実行し、その後どうするか尋ねてください。

すべてのサブコマンドは、タスクバックエンドより前に作成されたプロジェクト(status、Tasks/(note-format.md にレガシーである場合の条件あり)、tasks_ref フィールドなし)を扱います。note-format.md の「レガシーフィールド」の指示に従って読み取り、報告のみ行い、決して書き換えてはいけません。


create <説明> — プロジェクトを開始する

入力: プロジェクトの内容、目標、期限、最初のステップ。空の場合は、プロジェクトの内容と目標を尋ねてください。

  1. Templates/Project.md をディスクから読み込みます。 そのまま。

  2. note-format.md に従ってタイトルを生成します。 これは3つの方法で使用されます: title と H1(ID プレフィックスなし)、および — プレフィックス付きで — フォルダ名と概要ファイル名として。note-format.md に従って short(短縮形)を提案します。

  3. project-id.md に従って ID を発行します。

  4. Projects/ の下にフォルダ構造を作成します:

    PROJ-xxxx <タイトル>/
    ├── PROJ-xxxx <タイトル>.md      ← 概要、Templates/Project.md から
    ├── Notes/
    ├── Resources/
    └── Results/
    

    3つのサブフォルダすべて、空でも作成します。Tasks/ は作成しません(TASKS = files の場合、アダプタが最初のタスクとともに作成します)。

  5. note-format.md の Project 行に従ってフロントマターを記入します。 created は今日の日付。deadline は説明に期限がある場合のみ。tasks_ref はステップ7まで空白のまま(pairing: none の場合はフィールド自体を省略)。

  6. 本文を記入します:

    • project.goal セクション — 目標 / 望ましい終了状態。必須。
    • project.value セクション — ユーザーが得られるもの、測定可能または明確なもの(note-format.md、「成果に関する3つのセクション」)。必須。 これか project.goal のどちらかが入力から明確でない場合は、書き込み前に1つの質問で両方を尋ねてください(confirm.md、Tier 1.5)。
    • project.problem セクション — プロジェクトのきっかけ。
    • project.expected_result セクション — 具体的な成果物とその保存場所。
    • project.scope セクション — ユーザーが指定した項目のみ。通常は空: リサーチタスクが埋めます(tasks.md「リサーチタスク」)。
    • project.dod セクション — dod.md に従ったチェックボックス。説明から実際のチェック項目を導き出せない場合は、project.goal が不足している場合と同様に尋ねてください。
    • common.links セクション — 明確に関連するノートへのウィキリンク。それ以外はテンプレートの -。
  7. tasks.md「ペアリング」に従ってペアを作成します: project.create をタイトルと ID で呼び出します。pairing: separate の場合、返された ref を tasks_ref: に書き込みます。呼び出しが失敗した場合は、その旨を伝えます: フォルダはペアなしのまま残り、/projects task で後でペアを作成できるようにします。pairing: none の場合はペアも tasks_ref も存在しません: 書き込みをスキップします。

  8. 新しいプロジェクトの最初のタスク(日付なし):

    • tasks.md「リサーチタスク」に従ったリサーチタスクを 常に 作成します。ただし、ユーザーがすでに完全なスコープを指定している場合は、代わりに project.scope セクションに書き込みます。
    • ユーザーが明示的に指定したステップを、task.add で追加し、「タスクとは」に従って表現します。アクションとして表現できないステップは、タスクではなくリサーチのための質問です。

    ユーザーが指定しなかったステップを決して発明してはいけません。

  9. 報告します: フォルダパス、ID、タイトル、short(変更を提案)、期限、目標、価値の一文、バックエンドのプロジェクト名、作成されたタスク。

入力が終わりのない継続的な責任を説明している場合、これはプロジェクトではありません — その旨を伝え、代わりに /areas create を提案します。ユーザーが着手することを決めていないアイデアの場合は、まだプロジェクトではないと伝え(tasks.md「ペアリング」)、受信箱(inbox.name)に残すことを提案します。


task <プロジェクト> <タスク> — タスクを追加する

  1. find-target.md に従ってプロジェクトを検索します。 操作「プロジェクトにタスクを追加」。ターゲットは areas.md の AREA_TASK_PROJECTS からの Area プロジェクトの場合もあります — 名前で一致させます。
  2. 追加先を解決します: Area プロジェクト → area。それ以外は、概要の tasks_ref → project_ref(pairing: none の場合はプロジェクトフォルダが ref であり、このステップは単にプロジェクトです)。
    • pairing: separate で概要に tasks_ref がない場合 → task.unpaired 文字列を表示し、作成を提案します(create のステップ7)。承諾されたらペアを作成し、続行します。タスクを保管庫内に書き込むことは絶対にしないでください。
  3. tasks.md「タスクとは」に従ってタスクを表現します。 ユーザーの表現がすでに適合している場合はそのまま使用します。そうでなければ、言い換えたバージョンを告知文で提案します。アクションにできない場合は、次のステップを尋ねてください(Tier 1.5)。
  4. task.add を呼び出します。 project_ref または area(TASKS = files の場合、取得したベース名が衝突すると note-format.md「名前の衝突」に従い、サイレントサフィックスなしで尋ねます): テキスト、より長い説明、duration は指定された場合のみ。日付のルールは tasks.md「フィールド」。
  5. 報告します: タスクとプロジェクト。

overview <プロジェクト> — プロジェクトの状況

読み取り専用。 保管庫にもバックエンドにも何も書き込みません。要約で修正すべき点が見つかった場合は、その旨を伝え、ユーザーに決定を委ねます。

  1. find-target.md に従ってプロジェクトを検索します。 操作「報告」。引数がない場合は、プロジェクトを一覧表示して尋ねます。

  2. 概要ノートを読み取ります: フロントマターとセクション project.goal、project.value、project.expected_result、project.dod、common.links。空白のフィールドは空白として報告し、推測で埋めてはいけません。

  3. タスクを読み取ります(task.list、未完了): 日付と所要時間。thresholds.md「タスク数」に従って数を計算します。pairing: separate でペアがない場合はスキップし、task.unpaired 文字列を表示します。

  4. Notes/ 全体(および Results/、何かあれば)を thresholds.md の上限まで読み取ります。 ここに実際の決定とリスクが存在します。

  5. レガシー。 概要に status / priority / value / estimate がある場合、またはフォルダにレガシーな Tasks/(note-format.md)がある場合、1行追加します(overview.legacy 文字列)。{fields} は status, Tasks/ (3 files) のようになります(フォルダ数は overview.legacy_tasks 文字列)。存在するものだけを名前指定します。進行状況のためにタスクノートを読まないでください。移行によって何が生き残るかが決まります。

  6. シグナル — 発火したものだけを報告:

    • プロジェクトの deadline が過ぎている、または thresholds.md のホライゾン内にある。
    • 期限切れのタスク — 超過日数を表示。
    • 期限がホライゾン内にあるのにスケジュールされたタスクがない。
    • 日付があるが所要時間がないタスク。
    • thresholds.md のプロジェクトしきい値より長い沈黙(ペアがある場合は project.activity、ない場合は mtime、thresholds.md に従って測定)。
    • common.links セクションのぶら下がりウィキリンク。
    • プロジェクトがまだ Projects/ にあるのにすべての受入基準がチェックされている — 完了しているのにクローズされていない。
  7. LANG でチャットにレンダリング。 ラベルは lang/<LANG>.md 文字列で、以下のテンプレートではキーが中括弧で囲まれています。以下は英語の文字列で示します:

    ## PROJ-0001 · プロジェクトA
    
    **{overview.area}** エリアA · **{overview.deadline}** 2026-10-31 — 14日
    **{overview.tasks}** {count.scheduled} 3 · {count.overdue} 1 · {count.backlog} 6
    **{overview.acceptance}** ☑☐☐ 1/3
    
    ### {overview.essence}
    <目標、1-2文。>
    <期待される結果 — 1行。>
    <価値 — 1行。>
    
    ### {overview.scheduled}
    - **仕入先にメールを書く** — 火 10-21, 30分
    - **フォームに記入する** — 2日超過, 1時間
    
    ### {overview.backlog}
    - 予約をする
    - …他 3件
    
    ### {overview.digest}
    - <Notes/ からの重要な決定または結論 — あなたの言葉で。>
    
    ### {overview.signals}
    - 期限まで14日、スケジュールされたタスクなし
    

    中括弧はキーであり、リテラルテキストではありません: 各キーが表す文字列を出力します。日付は common.date 形式(2026-10-31; 短縮形 common.date_short では 10-31、タスク行では common.weekdays からの曜日と共に使用)。期限までの日数は common.days。単位の略語は common.unit.*。期限切れのタスクには task.overdue_by 文字列。バックログの末尾は overview.backlog_more 文字列({n} = 表示されないタスク数)。overview.backlog セクションは、thresholds.md の上限まで最も古い日付なしタスクを表示します。空になるセクションやフィールドは削除します。空の Results/ は正常な状態です。


list — プロジェクト一覧

読み取り専用。 プロジェクトごとに1行。一覧であり、要約ではありません: Notes/ を開くことはありません。

  1. Projects/ 直下のフォルダを列挙します。 アーカイブされたプロジェクトは一覧表示されません — それは /archive list の役割です。

  2. 概要のフロントマターを読み取ります: id、title、area、deadline、および(pairing: separate の場合)tasks_ref。フロントマターがないフォルダはコンベンション前のものです — フォルダ名と common.no_metadata 文字列で表示します。

  3. ref を持つ各プロジェクトのタスクを読み取ります(task.list を project_ref で、未完了)。 thresholds.md「タスク数」に従ってカウントします。

  4. thresholds.md「プロジェクトの順序」に従って並べ替えます。

  5. LANG でレンダリングします。 list.*、count.*、task.unpaired 文字列を使用。行はコンパクトなので、バックログ数は count.backlog_short(ヘッダー list.header、期限は list.until と日付を common.date_short で、thresholds.md のホライゾン内の場合はその後ろに (14 d) と残り日数と common.unit.day)。以下は英語の文字列で示します:

    **プロジェクト (4)**
    1. PROJ-0008 プロジェクトA — エリアA · 期限 10-31 (14 d) · 予定 2 · バックログ 3
    2. PROJ-0020 プロジェクトB — 期限 10-31 (14 d) · 予定 0 · バックログ 3
    3. PROJ-0009 プロジェクトC — エリアB · 期限 02-28 · タスクマネージャーにペアなし · 旧形式
    4. PROJ-0027 プロジェクトD — バックログ空
    保管庫にペアなし: 「プロジェクトE」
    
    • 期限が過ぎている場合: list.deadline_passed 文字列。
    • レガシーフィールドがある場合、またはレガシーな Tasks/ がある場合: list.legacy 文字列。
    • バックログが空のプロジェクト: list.backlog_empty 文字列。
    • 最終行(list.orphans)は、どの概要も指していないバックエンドプロジェクトを、tasks.md「テーブルに関する注意」の project.list から見つけて表示。空の場合、またはアダプタが project.list をサポートしていない場合は削除。
    • 空白のフィールドは削除し、プレースホルダーは出力しないでください。空の Projects/ は有効な答えです: そのまま表示します。

アーカイブおよびコンベンション前のプロジェクト

Archive/ 内のプロジェクトは、コンベンションより前のものである可能性があります: フロントマターなし、PROJ-xxxx プレフィックスなし、サブフォルダなし。ノートから project.goal セクションを読み取り、タスクセクションと overview.acceptance をスキップし、アーカイブされていて旧形式であることを明確に表示します。

注意事項

  • 計算し、推定しない: 日数、タスク数、期限超過期間はバックエンド、ファイル、および今日のシステム日付から取得します。フィールドが空白のために計算できない場合は、推測ではなく空白と表示します。
  • 要約は状態を報告します。ユーザーを判断しません。「5日超過」と表示し、「あなたはプロジェクトを放棄した」とは表示しません。
  • すべて LANG で、タスクも含みます。

Individual skills in this repo

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

qbarev/para-plugin

Work with Archive in the Obsidian PARA vault — put a finished or abandoned project (folder and its project in the task app, such as Todoist) or a note into the archive, list what is already there, or restore something back into an active folder. Use when the user says "archive this", "move to archive", "close the project", "what is in the archive", "show the archive", "restore from the archive", "заархивируй", "перенеси в архив", "закрой проект", "что в архиве", "покажи архив", "верни из архива", "восстанови проект".

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", "мигрируй хранилище".

関連スキル