extension-posting-to-x
Agent skill from caffeinelabs/skills.
What it does
- Admin Client ID (default, §4) — the canister owner registers
- Per-user Client ID (§10) — each user brings their own Client
- Fallback (§11) — accept both. Admin sets a default Client ID;
- A Map<Principal, XAuth> keyed by caller. Expose exactly the
- Internal reads (Map.get(xAuthByUser, ..., caller)) inside tweet /
- On upgrade the map preserves by default — drop it only if you also
- src/backend/main.mo — the actor: state + includes only.
Requirements & configuration
- Prerequisite for all variants: extension-authorization.
- X requires a signed-in caller for every meaningful endpoint: the
- variant: the bearer token belongs to the signed-in user, full stop.
- Unlike OpenAI's static API key, X uses per-user bearer tokens.
- All three variants share §3 (isreplicated = ?false), §6 (token
Configuration: JSON
Derived from the skill's own SKILL.md documentation · extracted 2026-07-23
Source
Repository: https://github.com/caffeinelabs/skills
extension-posting-to-x FAQ
What does the extension-posting-to-x skill do?
>- 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`. Admin Client ID (default, §4) — the canister owner registers Per-user Client ID (§10) — each user brings their own Client
What does extension-posting-to-x require?
Prerequisite for all variants: extension-authorization. X requires a signed-in caller for every meaningful endpoint: the variant: the bearer token belongs to the signed-in user, full stop. Unlike OpenAI's static API key, X uses per-user bearer tokens. All three variants share §3 (isreplicated = ?false), §6 (token Configuration keys: JSON.
How do I install extension-posting-to-x?
Run: npx -y skills add https://github.com/caffeinelabs/skills --skill extension-posting-to-x --agent claude-code — the source lives at github.com/caffeinelabs/skills.
Maintain extension-posting-to-x?
Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.
[](https://getagentictools.com/skills/caffeinelabs-skills-extension-posting-to-x?ref=badge) npx agentictools info skills/caffeinelabs-skills-extension-posting-to-x The second line is the CLI lookup for this page — handy in READMEs and docs.