CommunityProductivity & Collaborationgithub.com

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

What is para-plugin?

para-plugin is a Claude Code agent skill that 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", "запиши", "закинь в инбокс", "что в инбоксе", "покажи инбокс", "разбери инбокс", "разгреби инбокс".

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/qbarev/para-plugin/tree/HEAD/skills/inbox

Installed? Explore more Productivity & Collaboration skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Inbox

The vault's capture buffer is the task backend's inbox, not a folder — paths.md owns that rule and what Inbox/ on disk is for. A capture leaves the buffer for a proper PARA folder once it is clear what it is, or stays in the backend if it is just an action.

Under TASKS = files the inbox is the Inbox/ folder (paths.md says what that means, including strays); the steps below are unchanged except the strays handling.

Every task call is an operation from tasks.md, run per the adapter for TASKS. If the backend is unavailable, tasks.md «Backend missing» applies.

Base layer

Read before acting, each as ../../para/<file>.md relative to this skill's base directory — these hold the shared rules, do not restate them from memory:

  • ../../para/paths.md — always, including «Language»: the strings below come from lang/<LANG>.md
  • ../../para/tasks.md — always: the operations; for process also what a task is, area projects
  • ../../para/note-format.md — for process
  • ../../para/confirm.md — for process
  • ../../para/move.md — for process, when it routes a stray file out of Inbox/

Subcommands

The first word of $ARGUMENTS picks the subcommand. Anything that is not list or process is treated as the text of an add, so /inbox a thought about sleep captures that thought — the add keyword is optional. Empty $ARGUMENTS → show the three subcommands and ask.


add <text> — capture

  1. inbox.add with a title and optional description. A short text is the title as given. A long one gets a short title in LANG derived from it (6 words or fewer) and the full text verbatim as the description.
  2. Set nothing else — no date, priority or labels unless the user said them. This is a buffer, not a place to tidy the user's thought into shape.
  3. Report in one line what was created, so the user can rename if they disagree.

If the capture obviously belongs somewhere specific, say so in the report and offer /inbox process — do not route it unasked.


list — show what is unprocessed

Read only.

  1. inbox.list — every open capture.
  2. Print a numbered list, oldest first, headed with the inbox.header string ({n} captures, {days} the age of the oldest). Titles only, no descriptions.
  3. Strays. Not under TASKS = files (paths.md). List *.md in Inbox/ (filenames only, do not open them). If any exist, add one line, the inbox.strays string ({k} files).
  4. An empty inbox is a valid, good answer: say so plainly.

process — route the captures

The valve on the buffer. Interactive, one capture at a time — never dump the whole inbox with proposed destinations and ask the user to approve in bulk.

  1. List the inbox as above — backend captures first, oldest first, then strays from Inbox/ (under TASKS = files inbox.list has them all, paths.md). Say how many there are and start with the first.

  2. For each capture: show the title and the content (the description, or the file body for a stray) — briefly if it is long. Then give your read of what it is, and offer the routes. The route names are the inbox.route.* strings of lang/<LANG>.md; the left column below is the key:

    RouteWhat happens
    inbox.route.actiona to-do outside any project → the wording checked per tasks.md «What a task is» and a rewording proposed and agreed first, then task.move with the area the user picks (the names are those tasks.md gives for area) and the agreed title
    inbox.route.project_taska step of an existing project → the project found per find-target.md, the wording proposed per tasks.md «What a task is», then task.move with that project_ref and the new title; the task stays open, nothing is created or closed. Under TASKS = files a taken basename is a collision: note-format.md «Name collisions»
    inbox.route.projectan effort with an end state → hand off to /projects create
    inbox.route.areaongoing responsibility → /areas create, or append to an existing Area
    inbox.route.resourceknowledge worth keeping → /resources create
    inbox.route.keepnot ripe yet — stays in the inbox, no shame in it
    inbox.route.deletejunk → close it (see below)

    Recommend one, with a reason in a sentence. The user decides.

  3. Carry out the route, handing the capture's text to the skill that owns the destination — it builds the note from its own template. Never write a note here.

  4. Close the capture once its route is carried out:

    • Backend capture — routed into the vault, or junk → inbox.close — reversible (tasks.md), so Tier 1 (confirm.md). inbox.route.action and inbox.route.project_task move the task itself (task.move) and leave it open; inbox.route.keep leaves it where it is.
    • Stray file in Inbox/ — after /projects create, /areas create or /resources create has taken its content, remove the file via /remove; for inbox.route.delete, hand it to /remove directly. inbox.route.action turns it into a task with task.add and area, then remove the file the same way.
  5. Then go to the next capture. Do not batch the closing to the end.

  6. Stop when the user says stop, and report how many were processed and how many remain. Getting through the whole inbox in one sitting is not the goal.

Notes

  • The inbox is deliberately low-friction: add never asks a question it can avoid. process is where the thinking happens.
  • Everything in LANG, tasks included.

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

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

Related Skills