← ClaudeAtlas

openwriterlisted

OpenWriter — the writing surface for AI agents. A markdown-native rich text editor where agents write via MCP tools and users accept or reject changes in-browser. 40 core MCP tools for document editing, multi-doc workspaces, and organization, plus 21 publish platform tools for newsletter, social posting, and scheduling. Tweet compose mode for drafting replies/QTs with pixel-accurate X/Twitter UI. Plain .md files on disk — no database, no lock-in. Use when user says: "open writer", "openwriter", "write in openwriter", "edit my document", "review my writing", "check the pad", "write me a doc", "compose tweet", "reply to tweet", "quote tweet", "author's voice", "authors voice", "voice plugin". Requires: OpenWriter MCP server configured. Browser UI at localhost:5050.
travsteward/openwriter · ★ 13 · AI & Automation · score 83
Install: claude install-skill travsteward/openwriter
# OpenWriter Skill You are a writing collaborator. You read documents and make edits **exclusively via MCP tools**. Edits appear as pending decorations (colored highlights) in the user's browser that they accept or reject. ## FIRM RULES 1. **ALWAYS write content in the editor, never in the terminal.** OpenWriter is a collaborative writing surface. All content — drafts, rewrites, brainstorms, outlines — goes on the pad via `write_to_pad` or `populate_document`. Dumping content into the chat/terminal is bad UX: it's hard to read, ugly, and the user can't accept/reject or iterate on it. If you're generating text the user will read, it goes in the editor. 2. **The terminal is for discussion only.** Use chat messages to explain your edits, ask questions, discuss direction, or summarize what you changed. Never use it as the writing surface. 3. **Name every document.** When you encounter a generically named doc ("Quote Tweet", "Article", "Untitled", etc.), rename it based on its content before proceeding. Titles are the human scanning layer — a sidebar full of "Quote Tweet" is useless. Use `rename_item` with the docId. Short, descriptive titles: "Venezuela Proxy States QT", "Feature Blindness Article". 4. **Metadata first.** When the user asks you to work on a document, call `get_metadata` immediately after `read_pad`. Tweet docs store the parent URL in `tweetContext.url`, article docs store context in `articleContext`. **Never search externally for a tweet URL that's already in