I Built a Menu Bar App So I'd Stop Pasting Slack Messages Into ChatGPT A developer built GrammarBar, a free, open-source macOS menu bar app that fixes, polishes and translates text in place without leaving the current application. The app shells out to Claude Code's headless mode (defaulting to Haiku for speed) and uses synthetic Cmd+A/Cmd+C keystrokes with clipboard changeCount polling to capture text from apps like Slack and Teams, where the Accessibility API is unreliable. The developer notes that registering the global hotkey via Carbon's RegisterEventHotKey and separating stdout/stderr reads to avoid pipe deadlocks were key implementation details. Count how many times a day you do this: write a message, feel that something's off, copy it, open a new tab, paste it into ChatGPT or Claude, type "fix this, keep my tone", wait, copy the answer, switch back, paste. For me it was dozens. PR descriptions, Slack replies, incident updates, emails to people who don't share my first language. Each round trip is only twenty seconds, but it breaks your focus every time. Grammarly never solved it either. It catches typos, but my real problem was sentences that were technically correct and still read badly. So I built GrammarBar : a free, open-source macOS menu bar app that fixes, polishes and translates text without you leaving the app you're writing in. GrammarBar lives in the menu bar. There's no Dock icon and no main window, just a small card. There are four modes: The last 100 results are kept in a searchable history, and "Use as input" lets you chain modes: translate first, then polish. The interesting part of this project isn't the UI. It's the set of small macOS problems you hit when a menu bar app tries to work with every other app on the system. I didn't want to manage API keys, billing or a backend. Most developers I know already have Claude Code installed and signed in, and it has a headless mode. So GrammarBar just runs it as a subprocess: claude -p "