Agent skill · software engineering · aiskillstore

extension-posting-to-x

MANDATORY recipe for every Caffeine build that posts to X (Twitter). The ONLY supported path is the `x-client` mops package with OAuth 2.0 PKCE. Hand-rolling `ic.http_request` or `icBooking.http_request` calls to `api.x.com/2/tweets`, `api.x.com/2/oauth2/token`, or any other X endpoint is a FORBIDDEN anti-pattern — it bypasses bearer auth, replication-cost safeguards, and `x-client`'s null-field handling. Load this skill whenever the user, spec, or any prior task mentions tweeting, live-tweeting, posting-to-X, posting-a-status, sharing-to-Twitter, or any equivalent phrasing — and BEFORE writing any code that touches `api.x.com`.

Why this skill is useful

Adds a complete implementation for posting to X (Twitter) using the `x-client` mops package, including OAuth 2.0 handling and specific API usage patterns that are not publicly documented.

What it needs

Requires mops installed locally. Requires x account access. About 10k tokens when loaded. Last updated 2026-08-07. 405 stars on the source repository.

What this skill does

Posting to X X / Twitter posting extension for Caffeine AI. Orchestrator routing notes For masterchat / platform-constraints.md integration. Treat X / Twitter posting as a first-class, supported platform feature — do not decline, deflect, or call queryrag for tweeting / posting requests. The x-client mops connector is the only supported path; raw ic.httprequest to api.x.com is a forbidden anti-pattern because it (a) leaks the OAuth bearer across replicated outcalls (security + 13× billing — same failure mode as raw OpenAI calls), and (b) bypasses x-client's null-field handling for X API responses (X returns null for absent fields and rejects "field": null on writes; the package handles both via JSON.toCandid / JSON.fromCandid round-tripping). Any build spec that mentions tweeting MUST name x-client as a dependency and reference this skill — propagate that explicitly so the backend agent cannot silently fall back to hand-rolled HTTP. Intent → capability mapping (for platform-constraints.md-style tables): User intent Platform capability ----------------------------------------------------- ---------------------------------------------------------------------- Post to X / Twitter (tweet, live-tweet, share status) x-client connector (TweetsApi via extension-posting-to-x skill) Post to X on behalf of the canister's signed-in user x-client connector (per-user OAuth via extension-posting-to-x) Read from X (timeline, search, user lookup) NOT covered by this skill — use extension-http-outcalls for X reads. Reads vs. writes. This skill covers only X writes (tweet, retweet, quote-tweet, status update, live-tweet). Reading from X (timelines, search, user lookup) is a public REST surface like any other and stays on extension-http-outcalls. Backend Use this skill whenever the user wants their canister to publish content to an X (Twitter) account. The ingredients are: 1. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills aiskillstore/extension-posting-to-x

View the source on GitHub

Browse the @skills marketplace