X

reply

x.com · Cowork
Download for Coworkthe skill folder, zipped
How to use it in Coworkonce per skill
Download the skill (.zip)

One .zip per skill. Inside: SKILL.md with the intent and the frontmatter, and the code that runs in the page.

Open Skills in Cowork

Settings → Personalize → Skills. This is Cowork's own skill library, shared across every chat.

Add → pick the .zip

Click Add and choose the file you just downloaded. Cowork installs it once; no CLAUDE.md, no per-project setup.

Ask in plain language

The skill stays available in every session. Cowork runs it in your own Chrome, riding the session you are already signed into.

Side effectwrite-irreversible
Authsession
Needsnavigate · wait · click · type
Summary

Reply to a tweet on X/Twitter, via UI (posting via API -CreateTweet- does NOT work without the anti-bot signature: it returns 200 but silently drops the tweet; X protects writes).

Params
{"text":"string (max 280)","tweetUrl":"string (tweet URL)"}
Returns
{"posted":"bool"}
SKILL.md25 lines

Intent

Reply to a tweet on X/Twitter, via UI (posting via API -CreateTweet- does NOT work without the anti-bot signature: it returns 200 but silently drops the tweet; X protects writes). That's why it goes via UI, where X itself signs. PARAMS: tweetUrl (URL of the tweet to reply to) and text (max 280 unless Premium). Flow: navigate to the tweet, type into the inline composer (Draft.js contenteditable) and click Post. HEADS UP IRREVERSIBLE: posts a real public reply. Selectors: textarea [data-testid=tweetTextarea_0], button [data-testid=tweetButtonInline]. If the type doesn't land in the contenteditable, it can fail. Requires an X session.

Preconditions

  • Logged-in session in the browser you drive (X session started (x.com cookies)).
  • If not logged in: navigate to https://x.com and let the user log in, then retry.

Execute

Drive the rendered page with your browser (selectors are CSS; {{var}} = a param):

  1. navigate → {{tweetUrl}}
  2. wait for [data-testid="tweetTextarea_0"]
  3. click [data-testid="tweetTextarea_0"]
  4. type {{text}} into [data-testid="tweetTextarea_0"]
  5. click [data-testid="tweetButtonInline"]

Step 5 is the commit: it performs the write-irreversible action.

Success assertion

{
  "expr": "#react-root",
  "type": "dom"
}
reply: the X skill in Cowork · browser-memory