A native macOS menu-bar prompt launcher. Hit ⌥Space in any text field, fuzzy-find a template, press ↵ — and the fully assembled prompt drops in right where your cursor was. Focus never leaves the app you're in.
You reach for the same prompts everywhere — code reviews, commit messages, standups, cold emails. Promptly puts them one keystroke away, in any app, without ever stealing focus or leaving your clipboard changed.
![]() Pinned cards on ⌘1–⌘9, then your most-used prompts. | ![]() The Library — folders, pins, hotkeys, and the prompt body. |
- It never takes focus. A Carbon global hotkey opens a non-activating panel over whatever you're using — the app underneath stays active the whole time, caret and all.
- Your prompts are just files. Every prompt is a
.mdfile in~/Prompts. Edit them in any editor and Promptly live-reloads; folders become categories. Nothing is locked in a database. - Ranked by how you actually work. Fuzzy search over names, keywords and bodies, ordered by how often and how recently you fire each prompt.
- Your clipboard comes back exactly as it was. Promptly snapshots and restores it around every paste, and confirms the text really landed by reading it back — not by trusting a return code.
Note
Promptly is ad-hoc signed (free, unnotarized), so macOS Gatekeeper needs a one-time nudge the first time you open it. The steps below handle it.
- Download the latest
Promptly-x.y.z.zipfrom the Releases page. - Unzip it and drag Promptly.app into your Applications folder.
- Open it once with a right-click: right-click Promptly.app → Open → Open.
If Gatekeeper still refuses, or you'd rather use Terminal
xattr -dr com.apple.quarantine /Applications/Promptly.appThen double-click as normal.
Important
Promptly needs Accessibility permission to type into other apps. On first launch it opens System Settings for you — enable Promptly under Privacy & Security → Accessibility. Without it, the paste step can't run.
Requires macOS 12 (Monterey) or later. The download is a Universal binary and runs natively on both Apple Silicon and Intel Macs.
| Action | How |
|---|---|
| Open the palette | ⌥Space in any text field |
| Filter prompts | start typing a fragment |
| Paste the selection | ↵ |
| Paste a pinned/numbered prompt | ⌘1–⌘9 |
| Preview the full body | ⇥ |
| Dismiss | Esc |
| Manage prompts | menu-bar icon → Library… |
| Open your prompts folder | menu-bar icon → Open prompts folder… |
| Rebind the hotkey | menu-bar icon → Rebind Hotkey… |
A prompt is a Markdown file in ~/Prompts with optional YAML frontmatter:
---name: PR description # display name (defaults to the filename)keywords: [pull request, diff] # extra fuzzy-search termspinned: true # keep it at the tophotkey: 1# paste instantly with ⌘1–⌘9description: Summarize a diff # shown in the Library---
Summarize this diff as a PR description.
**What changed:** {{cursor}}
**Why:****Risk:**The folder a prompt lives in becomes its category. Tokens ({{clipboard}}, {{date}},
{{cursor}}, {{ask:label}}) expand when the prompt is pasted; unknown tokens stay literal so
typos are easy to spot. See docs/example-prompts/ for ready-to-use
templates and the full format reference.
The whole product is one tight loop, proven before anything was built around it:
⌥Space (Carbon global hotkey)
→ capture the frontmost app BEFORE any UI appears
→ show a non-activating NSPanel + fuzzy filter
→ paste service: AX direct write, with a clipboard-paste fallback
→ verify the text actually landed by reading it back
→ clipboard restored to exactly what it was
Promptly writes text through the Accessibility API when it can, and falls back to a snapshot-restore clipboard paste when it can't — always confirming success by read-back rather than trusting a return code.
Build from source
Promptly builds with swiftc directly — no Xcode project required.
# Dev loop: compile (native arm64) → bundle → install to /Applications → relaunch → tail logs
./run.sh
# Release build: Universal (arm64 + x86_64), ad-hoc signed, zipped to ./dist
./scripts/release.sh 0.1.0[!NOTE] A rebuild can silently revoke Accessibility permission (macOS keys it on signature + bundle id + path). If paste stops working after a rebuild, run
tccutil reset Accessibility com.promptly.appand re-grant.
| Doc | What's inside |
|---|---|
| docs/getting-started.md | Tutorial: from install to your first paste |
| docs/how-to.md | Task recipes: pins, hotkeys, folders, tokens, fill-ins |
| docs/reference.md | Every frontmatter field, token, and shortcut |
| docs/PRD.md | Product vision, the feeling, success gates, non-goals |
| docs/FEATURES.md | UX and interaction spec, with mockups |
| docs/DESIGN.md | Technical design: paste service, hotkey, permissions, modules |
| docs/TASKS.md | Gated build checklist |
| docs/FEATURE-CATALOG.md | Index of every feature (committed, candidate, non-goal) |
| docs/example-prompts/ | A gallery of starter prompts |
Working on the code with an AI assistant? CLAUDE.md captures the architecture, boundaries, and the gotchas most likely to bite.



