Communityコーディング&開発github.com

qbarev/para-plugin

フォルダをPARA保管庫にセットアップし、このプラグインと連携させます。すでにセットアップ済みの保管庫のスキーマ移行や不足部分の補完も行います。

para-plugin とは?

このスキルは、カレントディレクトリをPARA(Projects, Areas, Resources, Archive)メソッドに基づいた整理された保管庫へと変換・維持します。初回実行時は、必要なフォルダ構造、テンプレート、設定ファイルを作成し、ObsidianとClaude Codeの統合を構成します。2回目以降の実行では、不足している要素を追加し、古いスキーマからの移行を実行します。すべての操作は冪等性を持ち、計画の承認前に書き込みは行われず、監査証跡として変更が報告されます。Claude Code、Obsidian、MCPなどの多様なプラットフォームをサポートし、柔軟なタスクバックエンド(Todoist、ファイルベース、一般的なMCP)、エリアグループ化モデル、および言語設定を提供します。ユーザーが「set up the vault」、「init the vault」、「initialise PARA」、「migrate the vault」、または日本語で「保管庫を設定」「初期化」「マイグレート」などと指示した際に使用することを想定しています。

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

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

Init

セッションが開始されたフォルダを、このプラグインに接続されたPARA保管庫に変換し、その状態を維持します。2回目の実行では、不足している部分を補完し、古いスキーマを移行します。これは、保管庫の設定を書き込む唯一のスキルであり、設定がなくても実行できる唯一のスキルです。

書き込むもの

以下に示すもののみを書き込みます。それ以外は書き込みません。REPO_ROOT、PARA_DIR、PARA_ROOTはpaths.mdで定義されている通りです。

対象場所方法
PARAフォルダPARA_ROOT/ + Projects, Areas, Resources, Archive, Inbox, Templates存在しない場合に作成
ノートテンプレートPARA_ROOT/Templates/プラグインからシード、存在しない場合のみ(「Templates」)
IDジャーナルPARA_ROOT/Archive/.removed-idsヘッダー行のみ、存在しない場合のみ(project-id.md 「The journal」)
保管庫設定REPO_ROOT/.claude/para/vault.md, areas.md; adapter.mdはTASKSがmcpの場合のみconfig.example/からコピー、上書きはしない
プラグインブロックREPO_ROOT/CLAUDE.mdマーカー間のみ(「CLAUDE.md」)
スキル権限REPO_ROOT/.claude/settings.jsonマージ、置き換えない(「Settings」)
Obsidian設定REPO_ROOT/.obsidian/app.json, templates.jsonマージ(「Obsidian」)
ユーザーのノートとフォルダ(Bのみ)元の場所からPARAフォルダへ移動、編集はしない — 承認された計画にリストされた移動のみ(「シナリオB」)
プロジェクト概要(Bのみ)PARA_ROOT/Projects/PROJ-xxxx <title>/ユーザーがプロジェクトと呼んだフォルダに対して新規作成(「シナリオB」)
概要のペアキー(Cのみ)PARA_ROOT/Projects/, PARA_ROOT/Archive/1つのフロントマターキーをリネーム、それ以外は変更しない(scenario-c.md)
保管庫の計画ファイル(Cのみ)REPO_ROOT/.claude/local/planning.md新旧ツールから移行して新規作成(scenario-c.md)
古い組み込みツール(Cのみ)REPO_ROOT/.claude/, CLAUDE.md, 古いテンプレートのドキュメントmacOSのゴミ箱へ、ティア2(scenario-c.md)

ベースレイヤー

実行前に、このスキルのベースディレクトリからの相対パス../../para/<file>.mdとして読み取ること(../../config.example/、../../lang/、../../templates/も同様):

  • ../../para/paths.md — 常に:2つのルート、「Language」、TASKSのアダプタ。initが書き込むものはすべてこれと一致する必要があります。
  • ../../para/tasks.md — 操作、「Pairing」、「Backend missing」
  • ../../para/adapters/mcp-generic.md — TASKSがmcpの場合のみ。他の値に対するアダプタはpaths.mdで指定されます。
  • ../../para/note-format.md — テンプレートが一致する必要があるフロントマタースキーマ
  • ../../para/migrations.md — プラグインの現在のSCHEMAと移行の実行方法
  • ../../para/claude-md-block.md — CLAUDE.mdのためのブロック
  • ../../para/confirm.md — ティア。以下の計画はinitがそれらをどのように満たすかを示します。
  • ../../para/project-id.md — 「The journal」:IDジャーナルのヘッダー(ステップ5.1)
  • ../../config.example/vault.md, areas.md, adapter.md — 設定のテンプレート
  • シナリオBのみ:../../para/move.md(移動がリンクを維持する方法)、project-id.md(IDの発行)、../../para/thresholds.md(エリアの非アクティブしきい値と「The limit of mtime」)、paths.md 「IGNORE」
  • ../../lang/<LANG>.md、LANGが判明した後:init.*の文字列
  • シナリオCのみ、および再実行時のCの残存物:このスキルのベースディレクトリにあるscenario-c.md — 古いレイアウトに関するすべて。また../../para/move.md(ゴミ箱)

SKILL_DIRは以下、ハーネスが通知するこのスキルのベースディレクトリです。

実行全体のルール

  • REPO_ROOTはセッションの作業ディレクトリであり、絶対パス(pwd)です。プラグインが作業ディレクトリからルートを取得する唯一の場所です。initは他のすべてのスキルに対してそれを書き留めます。計画にはそれがどのフォルダであるかが記載されるため、間違った場所でセッションが開始された場合、何かが書き込まれる前に検出されます。
  • 計画の「はい」が確認されるまでは何も書き込まれません。 調査、質問、タスクバックエンドのプローブは読み取り専用です。
  • vault.mdは最後に書き込まれます。 これにより保管庫がセットアップされたとマークされます。実行が中断された場合、vault.mdは残らず、次の実行は最初からやり直し、既に行われた作業を検出します。
  • すべてのステップは冪等です:存在しない場合は作成、存在する場合はマージ、決して上書きしません。initを2回連続で実行しても、2回目は何も変更されません。
  • すべてのパスを引用符で囲むこと(paths.md 「Rules」)。REPO_ROOTにはスペースが含まれる可能性があります。
  • 言語。 LANGが選択されるまでは、ユーザーが使用した言語で話します(手がかりがない場合は英語 — 裸の/para:initなど)。その後は、paths.md 「Language」に従って、残りの質問を含めすべてLANGで行われます。計画とレポートの見出しはinit.*文字列です。

事前に指定された回答

$ARGUMENTSには既に回答が含まれている場合があります:言語、PARA_DIR(「デフォルト」は提案されたものを意味します)、タスクバックエンド、エリアモデル、シナリオBのソート回答(フォルダごとまたはルートノートごと、および重複名の場合)、スナップショット回答、計画の承認。指定された回答はすべて受け入れ、再度質問しません。不足しているものだけを質問します。有効な選択肢ではない回答は、その理由を説明して再度質問されます。

事前に指定された承認は、計画を表示し、待たずに適用することを意味します — ただし、計画の各行が何か(フォルダ、ファイル、キー、エントリ)を追加する場合のみ。既に存在するものを変更または置き換える行(異なるObsidian値、異なるCLAUDE.mdブロック、移行中のテンプレート、既存のvault.md内のREPO_ROOT)はティア2(confirm.md)です:計画が表示され、initはその場合でも「はい」を待ちます。

シナリオBの移動には2種類あり、これが事前承認がそれらをどのようにカバーするかについての唯一の声明です。ユーザーが自身の回答(B3、または$ARGUMENTS内のソート回答)で決定した移動は、ノートの位置を変更するだけで、内容は変更せず、confirm.mdは移動をティア1に分類します:その時点または事前に与えられた計画の「はい」がそれをカバーします。ルールのみによって決定された移動(B2:Archive/またはResources/への移動)は、ユーザーのノートに関するinit自身の判断であり、それを示す計画に対してライブでの「はい」が必要です**。事前に承認が与えられていたとしても。** どちらの場合でも、移動の前にスナップショットが提供されます(ステップ4)。事前に指定されたソート質問は質問されません。回答されていないものは質問され、承認の有無にかかわらず、その回答がない限り何も適用されません。


ステップ1 — 調査

読み取り専用。フォルダの内容を確認し、シナリオを特定します。

REPO_ROOT=$(pwd)
ls -A "$REPO_ROOT"
ls "$REPO_ROOT/.claude" "$REPO_ROOT/.claude/para" "$REPO_ROOT/.claude/skills" 2>/dev/null
# 古い組み込みレイアウト(シナリオC):その設定フォルダまたはベースレイヤーファイル
ls -d "$REPO_ROOT/.claude/para/local" "$REPO_ROOT/.claude/para/paths.md" 2>/dev/null   # old-layout
# 古い組み込みスキルに似た名前のスキルフォルダ:報告されるが、それ自体ではCとはみなさない
for s in inbox projects areas resources archive remove vault-lint; do
  [ -f "$REPO_ROOT/.claude/skills/$s/SKILL.md" ] && echo "old skill: $s"; done
# ノート:REPO_ROOTのドットエントリ配下にないすべての.mdファイル(ただし、リポジトリ自身のファイルとテンプレートは除く)
# (ドットエントリはREPO_ROOTからの相対で除去されるため、保管庫自体がドットディレクトリの下にあっても検出される)
find "$REPO_ROOT" -mindepth 1 -name '.*' -prune -o -name "*.md" -not -path "*/Templates/*" \
  ! -path "$REPO_ROOT/CLAUDE.md" ! -path "$REPO_ROOT/README.md" ! -path "$REPO_ROOT/CHANGELOG.md" -print | head -50
# このフォルダの上にある保管庫:initがサブフォルダで開始された
 d=$(dirname "$REPO_ROOT")
while [ "$d" != "/" ] && [ "$d" != "$HOME" ]; do
  { [ -e "$d/.claude/para/vault.md" ] || [ -d "$d/.obsidian" ]; } && echo "vault above: $d"
  d=$(dirname "$d")
done

以下の場合は、他の何よりも先に停止します:

  • REPO_ROOTが$HOMEまたは/の場合 — 保管庫ではありません。その旨を伝えます。
  • 上の階層に保管庫が見つかった場合 — 「<そのフォルダ>から/para:initを実行してください」と伝えて停止します。他の保管庫の中に保管庫をセットアップすることは決してありません。

次に、この順序で判断し、何が見つかり、どのケースであるかを伝えます:

  1. セットアップ済み — .claude/para/vault.mdが存在する場合 → 以下の「再実行と移行」へ。
  2. シナリオC — 古い組み込みツール。古いベースレイヤーまたは設定(上記のold-layout行)によって認識される:その設定フォルダlocal/またはそのベースレイヤーファイルpaths.mdが.claude/para/内にある場合。→ 「シナリオC」。 古いスキルのいずれかに似た名前のスキルフォルダ(old skill:行)があり、上記のいずれもない場合は、Cではありません。以下のルールに従ってBまたはAに進みます。どのフォルダが見つかり、initがそれをそのままにするかを伝えます。計画の「未実行」部分で再度言及されます。 このプラグインの設定ファイル(areas.md、adapter.md)のみを含み、vault.mdを含まない.claude/para/はCではありません。これは、vault.mdの前に中断または拒否されたinitの初回実行です。それがないものとして、以下のBまたはAに進みます。ただし、それらのファイルは保管庫の設定であり — 決して上書きされません — そして、それらが既に回答している質問(areas.mdの質問4)は再度質問されません。実行は残りを補完します。
  3. シナリオB — ノートが見つかった場合(上記のfindコマンドが何かを出力した場合)。→ 「シナリオB」。
  4. シナリオA — それ以外:空のフォルダ、またはノート以外のファイルのみを含むフォルダ(新しいObsidian保管庫の.obsidian/、CLAUDE.mdなど)。→ ステップ2。

ステップ2 — 質問

一度に1つずつ、この順序で、事前に回答されたものはスキップします。各質問は、その選択肢と、デフォルトがある場合はそれを表示します。

  1. 言語(LANG)。選択肢はプラグインに含まれる言語です:lang/<code>.mdとtemplates/<code>/の両方を持つコード(paths.md 「Language」):

    for f in "$SKILL_DIR"/../../lang/*.md; do l=$(basename "$f" .md)
      [ -d "$SKILL_DIR/../../templates/$l" ] && echo "$l"; done
    
  2. PARAフォルダ(PARA_DIR)。シナリオごとのデフォルト:A — PARA(サブフォルダ)。ツールとノートを分離します。B — .。PARAフォルダがユーザー自身のフォルダの隣に配置されます。ただし「シナリオB」に従います。.はPARAフォルダをREPO_ROOTに直接配置します。有効な値:.または1つのフォルダ名 — /を含まない、.で始まらない、PARAフォルダ名のいずれでもない。

  3. タスクバックエンド(TASKS)。選択肢はtodoist、files、またはmcp。最初のものが推奨されます。それぞれの意味を1行で伝えます:アプリの受信箱とプロジェクト。保管庫内のタスクノート、アプリなし。MCP経由で接続された他のToDoアプリ。次にプローブします — 以下の「バックエンドのプローブ」。プローブに失敗した値は記録されません。

  4. エリアモデル(areas.md)。1つの質問:エリアはグループ化されますか — none、またはグループの名前(例:Work, Home)?その他はすべて導出され、計画に表示され、ユーザーが変更できます:

    キーグループ化none
    GROUPINGフィールド名。ユーザーが指定しない限りsphere(シードテンプレートのキー)none
    GROUPS指定された名前空
    PLACEMENTAreas/<GROUP>/<title>.mdAreas/<title>.md
    REVIEW_GROUPINGグループごとに1ブロック、報告するものがないグループは省略1つのフラットリスト
    PLACEMENT_CHECKノートのGROUPINGフィールドは、そのノートが属するトップレベルフォルダの名前と一致する必要があるnone
    AREA_TASK_PROJECTSGROUPS名1つの名前:areas.review.heading文字列

バックエンドのプローブ

プローブはinbox.listで、選択された値のアダプタに従って実行されます(paths.md)。読み取り専用です。空の受信箱は成功です。カウントのみを出力し、キャプチャは出力しません。

  • files — プローブするものはありません:アダプタはディスクであり、「Backend missing」は発生しません(tasks.md)。
  • mcp — 今すぐadapters/mcp-generic.mdのステップ1〜6を実行します。ステップ1でツールが見つからない場合はプローブ失敗です。ユーザーが同意し、アプリに受信箱がある場合、ステップ6がプローブです。それ以外の場合、計画はマッピングが未検証であると伝えます。ステップ7〜8は計画と以下の「ステップ5」に属します。
  • その他の値 — そのアダプタに従ってinbox.listを実行します。アダプタのツールがこのセッションにない場合、または呼び出しが失敗した場合:1行でその旨を伝え(tasks.md 「Backend missing」)、値を記録せず、代わりにfilesを提供するか、アプリを接続して/para:initを再度実行するように提案します。プローブが成功しなかったTASKS値を書き込むことは決してなく、後で切り替えることを約束しながら値を記録することも決してありません。

ステップ3 — 計画

作成、マージ、または変更されるすべてのものの1つのリスト。init.plan.heading文字列を先頭に付けます。これはユーザーが編集する提案であり、発表ではありません。編集により新しい計画が作成され、再度表示されます。init.plan.approve文字列で終了し、「はい」が確認されるまでは何も適用されません(または、事前に指定された承認が「事前に指定された回答」で設定された制限内で行われた場合)。

計画では、この順序で示します:

  1. REPO_ROOT(このフォルダ)とPARA_ROOT。
  2. 作成するフォルダ、および存在しない場合のIDジャーナル。
  3. コピーするテンプレート。それぞれに「Templates」が行う変更を加えます。 シナリオBの場合、ここに:移動、プロジェクト、IGNORE、保留された重複、および切断されるリンク(「シナリオB」、「計画のBパート」)。
  4. 設定:vault.mdとareas.mdのすべてのキーとその値。mcpの場合は、アダプタテーブル(mcp-generic.md ステップ7 — 計画の「はい」がそのテーブルの「はい」になります)。
  5. CLAUDE.md、.claude/settings.json、.obsidian/app.json、.obsidian/templates.json:それぞれに追加されるもの。変更される既存の値はそれぞれ個別の行として、古い値と新しい値を示します。
  6. プローブ結果:バックエンドが応答した場合(受信箱の数を含む)、またはfiles。
  7. 実行されないものとその理由(既に存在するテンプレート、保持される値など)。

ステップ4 — スナップショット(BおよびCのみ)

既存の保管庫に影響を与える計画を適用する前に、その隣にzipコピーを提供します。常に質問され、拒否は受け入れられ、事前に指定された回答が尊重されます。これは計画の承認と同じメッセージで質問されるため(init.snapshot文字列)、ユーザーは一度に回答します:

zip_path="$(dirname "$REPO_ROOT")/$(basename "$REPO_ROOT")-backup-$(date +%Y-%m-%d).zip"
ditto -c -k --keepParent "$REPO_ROOT" "$zip_path"

シナリオAには保存するものがないため、これをスキップします。

...

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

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", "какие проекты", "список проектов", "покажи проекты", "что у меня в работе", "заведи проект", "новый проект", "саммари по проекту", "обзор проекта", "что по проекту", "статус проекта", "где я по проекту", "добавь задачу", "заведи задачу".

関連スキル