extension-posting-to-x

Agent skill from caffeinelabs/skills.

caffeinelabs ↓ 7.9k Apache-2.0 updated 27d ago
Claude Code
View source ↗

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

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.

extension-posting-to-x on getagentictools
[![extension-posting-to-x on getagentictools](https://getagentictools.com/badge/skills/caffeinelabs-skills-extension-posting-to-x.svg)](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.