Skip to content

Repository files navigation

Easy Prompts

A lightweight Manifest V3 browser extension that pastes your saved AI prompts into Claude, ChatGPT, Gemini, and any other text box with a single right-click. Your prompts live in your own Airtable base, so they stay in sync across every device and browser you use.

Stop digging through a notes file for that prompt you type ten times a day — save it once, then right-click to drop it in. Save time, stay consistent.

Manifest V3 License: MIT

The Easy Prompts popup showing saved prompts

Features

  • Right-click to paste — pick any saved prompt from the context menu and it's dropped straight into the focused input. No copy-pasting, no switching tabs.
  • Works where you do — one-click paste on Claude, ChatGPT, Gemini, and Perplexity, plus generic fallbacks for any textarea, text input, or contenteditable field.
  • Synced across devices & browsers — your prompts live in an Airtable base you control, so the same library shows up everywhere you install the extension. Full create / edit / delete from the popup.
  • Offline-friendly — prompts are cached in chrome.storage.local, so the right-click menu works instantly even when Airtable is unreachable (editing is disabled while offline).
  • Import, search & export — bulk-import prompts from a JSON file (exact duplicates are skipped), search your library instantly, and download a JSON backup anytime.

How it works

┌──────────┐   edits    ┌─────────────────┐   caches    ┌──────────────────────┐
│  Popup   │──────────▶ │    Airtable     │            │ chrome.storage.local │
│ (manager)│◀────────── │ (source of truth)│           │      (prompts)       │
└──────────┘   reads     └─────────────────┘            └──────────┬───────────┘
                                                                    │ reads
                                                         ┌──────────▼───────────┐
                                                         │   background.js      │
                                                         │ (builds context menu)│
                                                         └──────────┬───────────┘
                                                                    │ insertPrompt
                                                         ┌──────────▼───────────┐
                                                         │    content.js        │
                                                         │ (inserts into input) │
                                                         └──────────────────────┘
  • popup.js is the only component that talks to Airtable. On save/delete it updates Airtable, then writes a cached copy to chrome.storage.local and tells the background worker to rebuild the menu.
  • background.js reads only from the cache, so the right-click menu is ready instantly even when the service worker was just restarted by the browser.
  • content.js receives the chosen prompt and inserts it into the active field using several fallback strategies (execCommand → clipboard paste → manual DOM range).

Installation (from source)

Chrome / Edge / Brave / Arc / Opera (Chromium)

  1. Clone or download this repository.
  2. Open chrome://extensions (or edge://extensions).
  3. Enable Developer mode (top-right).
  4. Click Load unpacked and select this folder.
  5. The Easy Prompts icon appears in your toolbar.

Firefox

Firefox MV3 runs the background as an event page rather than a service worker, so it ships with its own manifest: manifest.firefox.json.

  1. Replace the default manifest with the Firefox one (keep a copy of the original):
    cp manifest.firefox.json manifest.json
  2. Open about:debugging#/runtime/this-firefox.
  3. Click Load Temporary Add-on… and select the manifest.json file.

Temporary add-ons are removed when Firefox restarts; for permanent installation the extension needs to be signed via addons.mozilla.org.

Setup (Airtable)

  1. Create an Airtable base with a table containing two fields:
    • Title — a short name for the prompt (shown in the context menu).
    • Description — the prompt text that gets inserted.
  2. Create an Airtable Personal Access Token with the data.records:read and data.records:write scopes, and grant it access to only the base you just created.
  3. Open the extension popup → Settings and enter:
    • Base ID — the app… id from your base URL or the API docs.
    • Table Name — e.g. Prompts.
    • API Key — the pat… token from step 2.
  4. Click Test & Save. Your prompts load into the Prompts tab.

The Settings tab with the Airtable connection form

If your table uses different field names, change AIRTABLE_FIELD_TITLE / AIRTABLE_FIELD_DESCRIPTION at the top of popup.js.

Usage

  • Click into any text box, then right-click → Easy Prompts → your prompt.
  • Manage prompts from the toolbar popup (Add / Edit / Delete / Search / Import / Export).

Starter prompts

Not sure what to add first? Five ready-to-use prompts live in prompts/starter-prompts.json. The fastest way to add them: open Add New → Import Prompts (at the bottom of the tab) and select that file — all five load in one click (exact duplicates are skipped). Or copy an individual Title and Description into the same tab.

Title What it does
Senior Software Engineer Reviews code/problems for correctness, edge cases, and performance
Explain Simply (ELI5) Explains any topic in plain language with a quick analogy
Proofread & Polish Fixes grammar and improves clarity while keeping your voice
Summarize the Key Points Gives a TL;DR plus the 3–5 most important bullets
Professional Email Turns rough notes into a clear, polite, well-structured email

The file is stored in the same { "title", "description" } shape the extension uses — the same shape Export produces — so exported backups re-import cleanly too. Contributions of new starter prompts are welcome!

Importing prompts

Bulk-add prompts from a JSON file — great for the starter prompts, restoring a backup, or moving your library to a new Airtable base.

The Import Prompts button at the bottom of the Add New tab

To import:

  1. Open the popup → Add NewImport Prompts (at the bottom of the tab).
  2. Choose a .json file (e.g. prompts/starter-prompts.json).
  3. Confirm the count in the prompt that appears.

The file must be a JSON array of objects, each with a title and a description:

[
  { "title": "Explain Simply (ELI5)", "description": "Explain the following topic…" },
  { "title": "Summarize the Key Points", "description": "Summarize the following…" }
]

Any extra fields (such as the id that Export includes) are ignored, so exported backups re-import without edits.

How it works

Because Airtable is the source of truth, importing writes to Airtable and then updates the local cache — you must be configured and online to import. Under the hood:

  1. Read & parse — the file is read and parsed as JSON. Anything that isn't a JSON array is rejected with a clear message.
  2. Validate — only entries with a non-empty title and description are kept; incomplete entries are dropped and any id field is discarded.
  3. De-duplicate — entries whose title + description already exist in your library (or repeat within the file) are skipped, so re-importing is safe.
  4. Confirm — you're shown how many prompts will be added (and how many duplicates will be skipped) before anything is written.
  5. Create in batches — records are sent to Airtable in batches of 10 (Airtable's per-request limit), paced to stay within its rate limit.
  6. Sync — on success the new prompts are cached in chrome.storage.local and the right-click menu is rebuilt. If a batch fails partway through, the extension re-fetches from Airtable so the popup, cache, and menu all reflect what was actually saved.

A summary toast reports how many prompts were imported and how many duplicates were skipped.

Privacy & security

  • Your Airtable Personal Access Token is stored in chrome.storage.local in plaintext (standard for extensions — it never leaves your machine except in requests to api.airtable.com). Scope your token to a single base so a leaked token can't reach the rest of your Airtable account.
  • The extension requests <all_urls> host access so it can insert prompts into text boxes on any site. It only reads/writes the field you click into; it does not collect or transmit page content anywhere.
  • No analytics, no third-party servers other than Airtable.

Project structure

File Purpose
build.js Generates both manifests from a single source (node build.js)
package.json Package metadata + build / check-manifests scripts (no runtime deps)
manifest.json Generated MV3 manifest for Chromium browsers — do not edit by hand
manifest.firefox.json Generated MV3 manifest for Firefox (event-page background + gecko settings) — do not edit by hand
background.js Service worker: builds the context menu, injects the content script
content.js Inserts prompt text into the focused input
popup.html / popup.css / popup.js Popup manager UI + Airtable client
icons/ Toolbar / store icons (16, 32, 48, 128px)
prompts/ Starter prompts you can copy into the extension (starter-prompts.json)

Contributing

Issues and pull requests are welcome — see CONTRIBUTING.md for how to set up, test, and submit changes. Some good starting points:

  • Storing prompts locally without Airtable as an option.
  • Higher-resolution source icons.

License

MIT © 2026 @ksh7

About

A browser extension for ChatGPT, Claude, Gemini, etc., that manages your frequently-used prompts and auto-pastes them. Airtable integration that syncs your prompts across all devices.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages