Code Snippet Manager for Developers

A local code snippet manager lets you reuse boilerplate, CLI commands, review comments, and AI prompts across your editor, terminal, and browser. PhraseVault® stores that library on your machine: press Ctrl+. on Windows or Cmd+. on macOS, search for a snippet, and press Enter to paste it into the app you were using. You search for what you need instead of memorizing abbreviation triggers.

Why IDE snippets are not enough

VS Code snippets and JetBrains live templates stop at that editor. The moment you move to a terminal, a pull request, a browser tool, or an AI chat, those snippets are gone, and you either keep a second collection or retype the pattern. PhraseVault is one library for all of those windows.

Fuzzy search finds snippets from partial words in their names or unprotected contents, in any word order. Frequently used snippets appear near the top. Clear names, plus optional labels such as Git or Review, keep the library useful. There are no folders. PIN-protected snippets are searched by name only.

What is worth saving

The useful snippets are the boring text you type the same way several times a day:

  • Boilerplate — file headers, class skeletons, function signatures, import blocks, error handling
  • CLI commands — Docker, Git, SSH, kubectl, and the deploy lines you look up again
  • Documentation blocks — JSDoc, PHPDoc, Javadoc, and docstring templates with fields to fill
  • Review comments — the constructive notes you leave on pull requests
  • AI prompts — instructions you reuse in GitHub Copilot, Cursor, Claude, and ChatGPT
  • Config fragments — CI steps, Dockerfile lines, Nginx blocks, environment variables
  • Commit messages — the conventional format the team agreed on and nobody remembers

Snippets you can save as phrases

Save each snippet under a clear name and select Text for code and shell commands. The examples below are templates: adapt them to your language and your team's conventions before use. PhraseVault fills in dates and asks for the input fields when you insert; it doesn't execute the code.

File headers

MIT license header:

Copyright (c) {{date:YYYY}} {{input:Author or Company}}. All rights reserved.

Licensed under the MIT License. See LICENSE file in the project root for details.

JSDoc file header:

/**
 * @file {{input:filename}}
 * @description {{input:Brief description}}
 * @author {{input:Author}}
 * @date {{date:YYYY-MM-DD}}
 */

Functions and classes

TypeScript async function:

async function {{input:functionName}}({{input:params}}): Promise<{{input:ReturnType}}> {
  try {
    // TODO: implement
  } catch (error) {
    console.error('{{input:functionName}} failed:', error);
    throw error;
  }
}

Python class:

class {{input:ClassName}}:
    """{{input:Brief description of the class}}."""

    def __init__(self, {{input:params}}) -> None:
        """Initialize {{input:ClassName}}."""
        pass

React component:

interface {{input:ComponentName}}Props {
  {{input:props}}
}

export function {{input:ComponentName}}({ {{input:destructured}} }: {{input:ComponentName}}Props) {
  return (
    <div>
      {/* TODO: implement */}
    </div>
  );
}

Commands you look up

The Docker cleanup command below removes stopped containers, unused networks and images, build cache, and unused anonymous volumes. The -f flag skips confirmation, so check for data you need before running it.

Docker cleanup:

docker system prune -af --volumes

Interactive rebase of the last N commits:

git rebase -i HEAD~{{input:number of commits}}

Large blobs in Git history:

git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | sed -n 's/^blob //p' | sort -rnk2 | head -20

SSH tunnel:

ssh -L {{input:local_port}}:{{input:remote_host}}:{{input:remote_port}} {{input:user}}@{{input:server}}

Comments and docs

TODO with a pointer:

// TODO({{input:author}}): {{input:description}} — see {{input:ticket or link}}

Deprecation:

/**
 * @deprecated Since {{input:version}}. Use {@link {{input:replacement}}} instead.
 * Will be removed in {{input:target version}}.
 */

Endpoint note:

/**
 * {{select:Method=GET,POST,PUT,PATCH,DELETE}} {{input:/path}}
 *
 * {{input:Description}}
 *
 * @param {{input:paramName}} - {{input:description}}
 * @returns {{input:status code}} - {{input:response description}}
 * @throws {{input:error code}} - {{input:error description}}
 */

For formatted docs, store the phrase as Markdown or HTML. Formatted paste explains what the receiving app will keep.

Prompts you paste into Copilot, Cursor, and Claude

A prompt that already works is worth storing next to your code. Copy the diff or log first, then summon PhraseVault and insert the prompt; the clipboard placeholder puts that copied text into it for you. See the AI prompt manager guide for more on keeping a local prompt library.

Pull request review:

Review the code diff below with a production engineering mindset.

Focus on:

  • bugs and behavioral regressions
  • edge cases and failure handling
  • security/privacy concerns
  • performance risks
  • missing or weak tests

Return:

  1. Findings ordered by severity
  2. File/line references when possible
  3. Open questions or assumptions
  4. Short summary (max 5 bullets)

Diff: {{clipboard}}

Root cause from logs:

Analyze the logs/error output below and identify the most likely root causes.

Return:

  • Top hypotheses ordered by probability
  • Evidence supporting each hypothesis
  • What evidence is missing
  • Next diagnostic steps (fastest first)
  • A temporary mitigation if available

Logs: {{clipboard}}

Tests worth writing:

Generate a comprehensive test plan for the function below.

Include:

  • happy path cases
  • boundary conditions
  • invalid inputs
  • state and ordering issues
  • concurrency/timing issues if relevant

Return test case names and a short assertion intent for each.

Code: {{clipboard}}

A small refactor plan:

Create a low-risk refactor plan for the code below.

Constraints:

  • preserve external behavior
  • minimize churn
  • prefer incremental commits

Return:

  1. Refactor goal and scope
  2. Step-by-step plan
  3. Risks and regressions to watch for
  4. Validation/test plan after each step
  5. Rollback strategy

Code: {{clipboard}}

Short review comments belong in the same library. They keep feedback specific without rewriting the sentence on every pull request.

Missing test:

This changes the behavior of {{input:what}}, but I don't see a test covering {{input:edge case}}. Could we add one to lock this behavior before merging?

Clearer name:

Nit: {{input:current name}} is a bit ambiguous here — would {{input:suggested name}} make the intent clearer?

A starter set

PhraseVault
  • log - console.log('debug:', value);
  • func - function handleSubmit(params) { // TODO: implement }
  • header - /** * @file utils.js * @author Sarah Johnson * @date 2026-01-14 */
  • todo - // TODO: Add error handling

The editor, the terminal, and the browser

The same library can supply text for VS Code, JetBrains IDEs, Vim or Neovim, browser tools such as GitHub and GitLab, terminals such as Windows Terminal and iTerm2, and chats such as Slack or Teams. Put the cursor in an editable field first; in Vim, switch to Insert mode. PhraseVault uses Ctrl+V on Windows or Cmd+V on macOS to paste. If your terminal uses another shortcut, use Copy to clipboard in PhraseVault and paste with the terminal's own command.

PhraseVault runs on Windows 10 or later (x64) and on macOS 13 or later on Apple Silicon. It also runs on Linux (x86_64), built for Omarchy and Arch with Hyprland. Automatic paste and the summon shortcut need Hyprland. The AppImage is best-effort on other distributions. On a Mac, allow it under System Settings > Privacy & Security > Accessibility, or the snippet is only copied.

From a terminal or an AI agent

The optional phrasevault command can search, expand, and export the same snippets from a terminal or a script. It stays off until you turn it on under Settings → Security → Command line & AI agents.

With Access set to Read-only, an agent that runs shell commands can use:

phrasevault search "docker prune"
phrasevault expand name:review --set File=app.js
phrasevault export --label Git

Output is JSON when the command is piped. Prefer Read-only for agents. The command talks to PhraseVault on this computer. It runs on Windows, Apple Silicon Macs, and Linux (x86_64; Omarchy and Arch with Hyprland), and it needs the trial or a license. Setup is in the command line guide.

One library for the team

With team sharing, put the database file on a shared folder and everyone searches the same headers, prompts, and review lines. An update shows up the next time a teammate summons PhraseVault or searches. Coordinate edits to the same phrase: a later save can overwrite someone else's changes, and PhraseVault doesn't merge conflicts. Avoid editing cloud-synced copies on two computers while offline. New people get the team's patterns on day one, and the kubectl line one person finally got right is there for the rest.

You can read the code

PhraseVault stores your library in a database file on your computer or in a shared folder you choose. The app doesn't upload the library, send usage data, or require an account. When you paste text into an online service, that service handles it under its own policies. PhraseVault is source-available to license holders on request, under an NDA. The source-available terms explain how to ask.

Download PhraseVault and try the full app free for 14 days, no credit card. Put the commands and prompts you retype into the library and use them from the next terminal, editor, and review.

Back to Help Center

Still need help?

Can't find what you're looking for? Our support team is here to help.