x-twitter

x-twitter is a skill for Claude Code, Codex from sonichi/sutando. It costs 31 tokens per session (1,450 once invoked), scanned A, original, MIT.

A skill for reading, searching, monitoring, and posting on X, formerly called Twitter, through an authenticated browser session or the X API. An API is a programmatic way for software to access a service.

In plain words
What is it for?
Use it to publish posts or threads, reply, search recent posts, check mentions or timelines, and retrieve engagement for a known post.
Why use it?
It provides one workflow for common X tasks and documents authentication and rate-limit problems that can prevent requests from working.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to publish posts or threads, reply, search recent posts, check mentions or timelines, and retrieve engagement for a known post.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/sonichi/sutando/x-twitter
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add sonichi/sutando --skill x-twitter
Clone the repo
git clone --depth 1 https://github.com/sonichi/sutando

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for x-twitter

README.md
[![agentmods](https://agentmods.dev/badge/skills/sonichi/sutando/x-twitter.svg)](https://agentmods.dev/skills/sonichi/sutando/x-twitter)
Your own site
<a href="https://agentmods.dev/skills/sonichi/sutando/x-twitter"><img src="https://agentmods.dev/badge/skills/sonichi/sutando/x-twitter.svg" alt="Measured on agentmods" height="20"></a>
Per session 31 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,450 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to high

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • high Privilege Escalation · line 17
    Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
    Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00031 $0.01450
Opus 5 $0.00015 $0.00725
Sonnet 5 $0.00006 $0.00290
Haiku 4.5 $0.00003 $0.00145

Measured 4d ago against content hash 84b674f8c86b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

x-twitter scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

The scan reads SKILL.md. This mod also ships 6 executable files (composer-text.mjs, manifest-config.mjs, profile-dir.mjs, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

urllib, no `requests`/`requests_oauthlib` install. `post`, `mentions` and `timeline` need the
skills/x-twitter/SKILL.md · 124 lines

How it starts

The opening of the file, as written. The whole thing — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.

X (Twitter)

Post, search, read, and monitor X from the command line.

When to use

The user wants to post to / read from X (Twitter) — publish a tweet or thread, reply, search recent tweets, check mentions/timeline, or pull engagement on a known tweet id. Not for other social platforms.

Failure modes

  • 403 / "not permitted" on post → the X API tier doesn't allow writes, or the app lacks Read+Write permission (regenerate the access token AFTER setting RW).
  • 429 rate-limited → API v2 free tier has low write/read caps; back off and retry later, don't loop.
  • 401 → a key in .env is missing or stale. The skill uses five: X_API_KEY, X_API_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET, and X_BEARER_TOKEN. Reads authenticate with the bearer token, so a 401 on search/mentions/timeline is most often a stale X_BEARER_TOKEN, not the OAuth pair.
  • Done = the command prints the new tweet id / the result rows; a post with no id back did not publish.

Usage

Posting — use the browser session (live method)

The OAuth1 API post path below is NOT wired on this fleet: posting needs 4 write keys (X_API_KEY/SECRET + X_ACCESS_TOKEN/SECRET) that are not in the vault. Posting is NOT credit-gated — it just needs those keys, which we don't have. Do not conclude "X is blocked." The working path is a signed-in Chrome-for-Testing browser session:

# Is the profile signed in?  (headless, exit 0 = yes, 2 = no)
node skills/x-twitter/x-post-browser.mjs check

# Owner signs in once (headed GUI window; email/phone — Google/Apple OAuth stay blocked)
node skills/x-twitter/x-post-browser.mjs login

# Compose only, screenshot, DO NOT publish  (always run this first)
node skills/x-twitter/x-post-browser.mjs post "Your tweet text" --dry-run

# Publish  (only after owner OKs the dry-run)
node skills/x-twitter/x-post-browser.mjs post "Your tweet text"
  • Profile: <workspace>/data/x-browser-profile, resolved through scripts/sutando-config.sh workspace (override with $X_BROWSER_PROFILE, declared in this skill's manifest.json). Per-host, holds live session cookies, and never synced — data/ is in the vault exclude list. A profile still sitting at the pre-#2133 location is used with a one-line notice until you move it, so upgrading does not cost you a fresh sign-in. $X_LOGIN_DONE_SENTINEL and $X_LOGIN_TIMEOUT_ITERS are declared alongside it but are test/CI controls — there is no reason to set them by hand. Sign-in survives ONLY because check/post strip Playwright's --use-mock-keychain so cookies decrypt with the real login keychain — see memory/reference_x_browser_signin_oauth_blocked_use_email_phone.md.
  • Always --dry-run first and confirm with the owner before publishing. Nothing posts without an explicit OK.

Read the full file on GitHub · 124 lines

Files

What ships with it

7 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 124 lines · 31 tokens per session scan A 84b674f8c86b

Subscribe to this mod's changes

x-twitter is a skill published in the GitHub repository sonichi/sutando (393 stars, last pushed today), licensed MIT. It adds 31 tokens to every session and 1,450 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.