Agent skill · cursor
X Chat
Read, summarize, or send encrypted X Chat (XChat) DMs via the X plugin MCP plus local chatxdk / xchat_lite.py. Use when the user mentions X Chat, xchat, encrypted DMs, Chat PIN, juicebox, inbox messages, or wants to reply in X Chat. Not for classic unencrypted DMs, posting tweets, or always-on daemons. If chat tools or dm.read/dm.write are missing, tell them to reconnect the X plugin — do not create an app or ask for Bearer tokens.
What it needs
About 5k tokens when loaded.
What this skill does
X Chat (X MCP + local xchatlite.py) Encrypted X Chat only. MCP holds OAuth and ciphertext. Local xchatlite.py unlocks Juicebox, decrypts, and encrypts. Never decrypt on the server. Never paste PIN, juicebox tokens, private keys, or raw key blobs into chat. Classic unencrypted DMs (/2/dmconversations/...) are a different product. If a peer has no Chat encryption (no usable public keys / no KeyChange history / addconversationkeys fails with UNAUTHORIZEDREQUESTINGUSER and events never decrypt), stop and tell the user — do not fake a classic DM send through sendchatmessage. Posting tweets is still not supported. If chat permission is missing Chat tools need dm.read and dm.write. Other X tools (timeline, search, getusersme) can work while Chat does not. When: chat tools missing (getchatconversations, sendchatmessage, getuserspublickey, …) while other X tools work; 403 / missing-scope on a Chat call; catalog looks stale but a real Chat call fails scopes. This is not account not ready (do not tell them to create a Project or App). Say: X Chat needs an extra sign-in. Reconnect the X plugin in this chat and approve access (including messages). Then I'll retry. Don't paste keys, tokens, or your Chat PIN here. Stop. After they reconnect, retry Chat. Do not invent a second OAuth / Bearer / xurl auth path. Local helper Clone and install on the bot computer (not in git with this plugin): xchatlite.py is in that repo. Typical paths: ./xchat-lite/ or $HOME/xchat-lite/. Chat PIN only. Request it via secret-request into CHATPIN. Never echo it. Never ask them to paste the PIN into the transcript. The helper also reads Grok Bot box-secrets.json → card.CHATPIN if env is empty. Do not ask for anything else (no Bearer token, no password, no juicebox dump). …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills cursor/x-chat