A local-first library of AI prompts for Obsidian. Each prompt is a plain Markdown note with YAML frontmatter, so the library stays readable, searchable, and portable even without the plugin. Nothing leaves the vault: no network calls, no accounts, no telemetry. Works on desktop and mobile.
Features
Library view
- Full-tab library with fuzzy search: a subsequence matcher scores and ranks results by title, use case, and body, independent of word order, and highlights the matched characters in the title.
- Filters for type, category, tags, quality, visibility, and date, plus sorting by title, date, usage recency, relevance, or favorites-first.
- Each card carries icon-button actions (copy with variables, copy raw, edit metadata, open as note, delete, toggle favorite) and, as of v1.2.0, a right-click (long-press on mobile) context menu with the same actions as text labels, a second way to reach them without cluttering the card further.
- A lint badge appears on any card with a warning; click it to open the full findings for that prompt.
Creating and editing
- Create and edit prompts from a modal. The frontmatter holds the metadata; the body lives in the note itself, so it opens in the normal Obsidian editor.
- Tag and category fields suggest values already used in the library, ranked by a local keyword-frequency scorer. The plugin never applies suggestions automatically, it only offers them as chips.
- The edit modal shows up to 5 related prompts, ranked by shared tags, category, and title or use-case tokens, so duplicate or near-duplicate prompts are easy to spot.
- An Info field holds free-form usage notes: what each placeholder expects, when to reach for the prompt, gotchas. Prompts that have one get an info button on their card, which opens the notes read-only.
Copying and reuse
- Copy with variables: prompts can declare
{{name}} placeholders, filled through a form before copying. Placeholders support a default value ({{name|default}}), a hint ({{name|default|hint}}), and a choice dropdown ({{tone|formal,casual|hint}}).
- Context variables resolve automatically at copy time:
{{@selection}} inserts the current editor selection, {{@title}} and {{@date}} pull from the active note, and {{@clipboard}} reads the system clipboard.
- A placeholder insertion palette (the "Insert placeholder" command, inline
{{ autocomplete while typing, and a button in the create/edit modal) lists context variables, names already used elsewhere in the library, and the raw syntax templates, so nothing needs to be memorized.
- Vault transclusion: a
[[wikilink]] inside a prompt body resolves to the linked note's content at copy time, one level deep. The resolver leaves heading (#) and block (^) references unresolved by design.
- The prompt's Info notes appear above the fields in the variable fill-in form, so placeholder guidance is there at the moment it is needed — from the library, the quick picker, and the launcher URI alike.
- Variable profiles: save a named set of placeholder values from the fill-in form and reapply it later from a dropdown, useful for prompts that are copied often with the same inputs.
Quick access outside the library
- A quick picker (fuzzy suggest modal) for reuse without opening the full library tab. Hold Ctrl or Cmd while selecting to copy the raw body instead of resolving variables.
- An
obsidian://promptbox launcher URI, callable from Raycast, Alfred, Shortcuts, or any other URI-aware tool. Pass path or title to jump straight to a prompt, raw=true to skip the variable form, or no parameters at all to open the picker.
Keeping the library healthy
- A linter flags common problems on demand: malformed or conflicting placeholder declarations, empty bodies, missing use case or category, near-duplicate titles, and notes that lost their type value after a type-key rename. It only reports, it never rewrites a note.
- JSON export and import, with a per-conflict diff preview (old value versus new, field by field) before anything gets overwritten.
- Curated packs bundle a set of prompts with pack-level metadata for sharing a themed collection as a single file; a plain export stays byte-identical for everyone else.
- A read-only statistics modal reports library size, tag and category distribution, and orphaned references, computed on demand.
- The plugin tracks usage locally (last-used date, copy count) to power the "recently used" sort. This lives in the plugin's local data, never in the notes themselves.
Commands
| Command |
Does |
| Open library |
Opens the library view |
| New prompt |
Opens the create modal |
| Edit prompt metadata |
Opens the edit modal for the active note, if it's a prompt |
| Insert placeholder |
Opens the placeholder insertion palette at the cursor |
| Copy prompt |
Copies the active note with variables resolved |
| Copy prompt (raw) |
Copies the active note's body unresolved |
| Export prompts (JSON) |
Exports the current filtered set |
| Import prompts (JSON) |
Opens the import flow with diff preview |
| Lint library |
Runs the linter over the whole library |
| Library statistics |
Opens the statistics modal |
None ship with a default hotkey; assign them under Settings, Hotkeys.
Settings
- Prompts folder: the vault folder that holds prompt notes (subfolders included). Changing it re-indexes immediately.
- Default type for new prompts: preselected in the create modal.
- Type frontmatter key: the frontmatter key used for a prompt's type, default
type. Change it to avoid a clash with another taxonomy using the same key; existing notes keep their old key until edited.
- Type and category values: add, rename, reorder, or remove; these feed the modal dropdowns and the library filters. Removing a value in use never touches existing notes, only the dropdown list.
- Variable profiles: rename or delete profiles saved from the copy-with-variables form.
Usage
- Open the library from the ribbon icon or the "Open library" command, and set the prompts folder in the plugin settings.
- Create a prompt with "New prompt". The frontmatter holds the metadata, the note body is the prompt text.
- Copy a prompt from a card action, the right-click menu, the quick picker, or the
obsidian://promptbox URI. A form opens for any placeholders; the result goes to the clipboard.
- While writing a prompt body, run "Insert placeholder" or type
{{ to insert a variable or a syntax template without memorizing the format.
Installation
Once the plugin is in the community list: Settings, Community plugins, Browse, search for "Promptbox".
Before then, install it with BRAT by adding the repository istefox/promptbox.
Documentation
The full planning package (specification, ADRs, tiered plan) lives in docs/: MVP spec, community-library spec, implementation plan, Architecture Decision Records.
License
MIT