Wenlan
Wenlan은 소스 기반 AI 지식베이스·LLM 위키로, 문서·결정을 페이지화해 검색·검토·리뷰 가능
Prompt snippet manager for macOS: write AI prompt templates with variables in Markdown and paste them into any app
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A Markdown editor and prompt snippet manager for macOS. Write AI prompt templates with fill-in variables, keep them as plain .md files, and paste them into any app.
Prompt Code takes the parts of Obsidian that make writing pleasant — plain Markdown files in a folder you own, [[links]], backlinks, a graph, a command palette — and the parts of massCode that make reuse fast — folders, tags, favorites, one-click copy. On top of both it adds what prompts need: fill-in variables, reusable embedded fragments, and notes to yourself that never reach the model.
English · 日本語 · 简体中文 · 한국어 · Español · Deutsch · Français
{{topic}}, {{audience: engineers}} (default value) or {{tone: friendly | formal}} (choices). The Use panel turns them into fields and shows the finished prompt as you type. ⌘↵ copies it.![[Answer format]] pulls another note in when you copy. Keep a persona or an output contract in one place and embed it everywhere.<!-- like this --> stays in the file and is removed on copy.[[Note]] links with autocomplete, backlinks, #tags, and a graph view (⌘G). Renaming a note rewrites links to it.⌘K jumps to any note, > runs commands, ⇧⌘F searches every note's text..md files with YAML frontmatter (tags, favorite, description). Edit them with any other app — Prompt Code picks up the changes live. Deleted notes go to .trash/ inside the vault.⌥⌘V in any app to open a small window with your clipboard history and your prompts. Pick one and it is pasted straight into the app you were using. Prompts with variables let you fill them in right there first.Nothing leaves your Mac. Prompt Code has no account, no telemetry, and makes no network requests.
To paste into other apps, macOS asks you to allow Prompt Code under System Settings › Privacy & Security › Accessibility the first time. Without it, quick paste still copies the text for you to paste with ⌘V. Closing the window keeps Prompt Code in the menu bar; quit it from the menu bar menu or with ⌘Q.
| Key | Does |
|---|---|
⌘K | Jump to a note (type > for commands) |
⌘N / ⇧⌘N | New note / new folder |
⇧⌘F | Search every note |
⌘↵ | Fill variables; inside the panel, copy |
⇧⌘C | Copy the prompt with current values |
⌘E | Switch between write and read |
⌘\ | Hide or show the sidebars |
⌘G | Graph |
⌘D | Duplicate note |
⌘⌫ | Move note to trash (undo from the toast) |
⌘, | Settings |
⌥⌘V (anywhere) | Quick paste — change it in Settings |
↵ / ⌘↵ / ⌘1–⌘9 | In quick paste: paste / copy only / paste that row |
⌘-click | Follow a [[link]] in the editor |
Requirements: macOS 11+, Bun, and Rust (the toolchain in rust-toolchain.toml is installed automatically by rustup).
bun install
bun run app:build # src-tauri/target/release/bundle/macos/Prompt Code.app
bun run app:dmg # an unsigned DMG
bun run release:mac # signed and notarized DMGs (needs a Developer ID; see the script)
Develop in a browser:
bun run build:client && bun run dev:server # http://127.0.0.1:4721
bun run dev:client # Vite with hot reload on :5183 (proxies /api)
bun run check # typecheck, lint, format check, tests
dev:server accepts --vault <dir> to open a different folder. Settings live in ~/.config/prompt-code/ (override with PROMPT_CODE_HOME). The default vault is ~/PromptCode.
The app is small on purpose: about 12 MB on disk and about 40 MB of memory for the backend.
127.0.0.1 on a random port. Every API call needs a token that the app generates at launch.src/server/runtime/ hides the differences.scripts/build-server.ts bundles the server into one file and downloads a checksum-verified txiki.js binary as the Tauri sidecar.src/
shared/ frontmatter, prompt syntax, note metadata (used by both sides, unit-tested)
server/ vault (index, watch, search, trash), HTTP API, runtimes (Bun / txiki.js)
client/ React UI, CodeMirror extensions, Markdown preview
src-tauri/ the native shell: starts the sidecar and points the window at it
MIT