Skip to content

ameer-pk/prose

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prose — AI Writing Assistant (Chrome Extension)

Polish what you write, everywhere on the web.

Select text in any input, textarea, or rich editor on any website. A floating toolbar appears with one-click actions to Improve, Fix grammar, Shorten, or change tone to Formal / Casual. The text is rewritten in place using your own AI API key.

  • No server. Calls go directly from your browser to your chosen provider.
  • Bring your own key. Gemini's free tier means $0/month for typical use.
  • Works on rich editors — Gmail, Notion, Twitter/X, LinkedIn, Slack web, etc. (anything contenteditable or shadow-DOM-based).
  • Personal style memory. A free-form notes field lets you tell the model about your voice, audience, and rules — applied to every rewrite.
  • One-click on/off. Toggle the extension from the popup without uninstalling.

Install (developer mode)

  1. Clone the repo:
    git clone https://github.com/ameer-pk/prose.git
  2. Open chrome://extensions (works in any Chromium browser: Edge, Brave, Arc).
  3. Enable Developer mode (top right).
  4. Click Load unpacked and pick the prose folder.
  5. The options page opens automatically. Pick a provider, paste your API key, click Save.

Models

Prose pins a single fast, low-cost model per provider — no model picker, no surprises.

Provider Primary model Fallback Endpoint
Google Gemini gemini-2.5-flash-lite gemini-3.1-flash-lite-preview generateContent (v1beta)
OpenAI gpt-5.4-nano Responses API (/v1/responses)

Gemini calls automatically retry once on rate-limit / overload errors, falling back to the preview model so your rewrite still goes through.

Get an API key

Each provider has its own key slot — switching the provider dropdown swaps the visible field, and your other key is preserved.

Usage

  1. Click into any text field on any website.
  2. Select the text you want to rewrite.
  3. A small toolbar appears above the selection. Click an action.
  4. The selected text is replaced with the rewrite — undo (⌘Z / Ctrl+Z) works.

Style & context notes

In the settings page there's a "Your writing style & context" textarea (up to 2,000 chars, autosaves). Anything you put there is woven into every rewrite as background context — without overriding the action. Examples:

I'm a backend engineer writing for non-technical PMs. Prefer plain English, short sentences, no exclamation marks. British spelling.

Brand voice: warm, slightly playful, never corporate. Avoid "leverage", "synergy", "delve".

Where it works (and doesn't)

  • ✅ Plain <input> / <textarea> on any page
  • contenteditable editors — Gmail, LinkedIn, Twitter/X, Notion, Slack, Discord web, ProseMirror / Lexical / Slate / TipTap
  • ✅ Editors mounted inside Shadow DOM and modal portals
  • Google Docs — uses a custom canvas-rendered editor with no real DOM text. No browser extension can rewrite Docs in place.

Project structure

manifest.json          MV3 service-worker manifest
src/
  background.js        Service worker — calls Gemini / OpenAI
  content.js           Injected on every page — selection + toolbar + replace
  shared/tokens.css    Design tokens shared by popup + options
  popup/               Browser-action popup (provider + enabled toggle)
  options/             Full settings page (key, style notes, privacy)
icons/                 16/32/48/128 PNGs (white feather on brand purple)
assets/                Source SVGs used to generate icons

Privacy

  • Your API key lives in chrome.storage.local — local to your browser, never synced or sent anywhere except the provider you chose.
  • Selected text is sent only to that provider, exactly when you click an action.
  • No analytics, no telemetry, no backend, no data collection.

Permissions

Permission Why
storage Persist your provider, API key(s), enabled toggle, and style notes locally
contextMenus Reserved for right-click actions
activeTab Read your current selection when you trigger an action
<all_urls> host access Inject the toolbar in any page where you select text

Roadmap

  • Custom "rewrite as…" free-form action
  • Per-site disable list
  • History of recent rewrites with diff/undo UI
  • Anthropic / Groq / OpenRouter providers
  • Keyboard shortcut (e.g. ⌘⇧K to improve selection)

Help

Need help or have feedback? → ameer.pk

Support the project

Prose is free and always will be. If it saves you time, a small tip is hugely appreciated and keeps the lights on:

hamzait2017.gumroad.com/l/prose-ai (pay-what-you-want)

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors