skills/bird-fast/SKILL.md
Post tweets, read threads, search X/Twitter from the terminal using the bird CLI. Use when automating Twitter/X, posting from scripts, analyzing tweet threads, monitoring mentions, or working with the Twitter API without OAuth setup.
npx skillsauth add ckorhonen/claude-skills bird-fastInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A command-line interface for X/Twitter that authenticates via your existing browser session — no API keys or OAuth setup required.
bird is a TypeScript-based CLI that uses Twitter's internal GraphQL API with automatic query ID management. It extracts authentication cookies from Safari, Chrome, or Firefox.
Key Features:
# npm
npm install -g @steipete/bird
# pnpm
pnpm add -g @steipete/bird
# bun
bun add -g @steipete/bird
# Homebrew (macOS — standalone binary, no Node.js required)
brew install steipete/tap/bird
# One-shot execution (no install)
bunx @steipete/bird whoami
npx @steipete/bird whoami
bird uses a three-tier priority chain:
| Priority | Source | How to Set |
|----------|--------|-----------|
| 1 (highest) | CLI flags | --auth-token, --ct0 |
| 2 | Environment variables | AUTH_TOKEN, CT0 (or TWITTER_AUTH_TOKEN, TWITTER_CT0) |
| 3 (default) | Browser cookies | Auto-extracted from Safari → Chrome → Firefox |
Verify authentication:
bird whoami # Shows authenticated user
bird check # Shows credential source
# Post a tweet
bird tweet "Hello from the terminal!"
# Read a tweet
bird read https://x.com/user/status/1234567890123456789
# Reply to a tweet
bird reply 1234567890123456789 "Great point!"
# Search tweets
bird search "from:elonmusk" -n 20
# View your mentions
bird mentions
Post a new tweet with optional media.
bird tweet "<text>" [options]
# Options
--media <path> Attach media file (repeatable, up to 4 images/GIFs or 1 video)
--alt <text> Alt text for corresponding --media (repeatable)
# Examples
bird tweet "Check this out!"
bird tweet "Photo gallery" --media img1.jpg --alt "First photo" --media img2.jpg --alt "Second"
bird tweet "Demo video" --media demo.mp4
Reply to an existing tweet.
bird reply <tweet-id-or-url> "<text>" [options]
# Examples
bird reply 1234567890123456789 "I agree!"
bird reply https://x.com/user/status/1234567890123456789 "Great thread!"
bird reply 1234567890123456789 "Here's a screenshot" --media shot.png --alt "Screenshot"
Fetch a single tweet. Handles standard tweets, Notes (long-form), and Articles.
bird read <tweet-id-or-url>
# Shorthand: just provide the ID or URL
bird 1234567890123456789
bird https://x.com/user/status/1234567890123456789
bird replies <tweet-id-or-url> # All replies to a tweet
bird thread <tweet-id-or-url> # Full conversation thread
bird search "<query>" [-n <count>]
# Examples
bird search "claude ai" -n 20
bird search "from:anthropic"
bird search "@username"
Supports Twitter's advanced search syntax: from:, to:, since:, until:, filter:links, etc.
bird mentions [-u <handle>] [-n <count>] # Mentions of a user (defaults to you)
bird bookmarks [-n <count>] # Your bookmarked tweets
bird whoami # Show authenticated user
bird check # Verify credentials and show source
bird query-ids [--fresh] [--json] # Inspect/refresh GraphQL query ID cache
bird help [command] # Show help
| Option | Description |
|--------|-------------|
| --auth-token <token> | Twitter auth_token cookie |
| --ct0 <token> | Twitter ct0 cookie |
| --cookie-source <source> | Browser priority: safari, chrome, firefox (repeatable) |
| --chrome-profile <name> | Chrome profile name |
| --firefox-profile <name> | Firefox profile name |
| --timeout <ms> | Request timeout in milliseconds |
| --plain | Stable output: disable emoji and color (good for scripts) |
| --no-emoji | Disable emoji in output |
| --no-color | Disable ANSI colors |
| --json | Output as JSON (command-specific) |
| Type | Extensions | Limit |
|------|------------|-------|
| Images | .jpg, .jpeg, .png, .webp | Up to 4 |
| GIFs | .gif | Up to 4 |
| Videos | .mp4, .m4v, .mov | 1 only |
Cannot mix videos with images/GIFs.
# Alt text for accessibility
bird tweet "Three photos" \
--media photo1.jpg --alt "Beach sunset" \
--media photo2.jpg --alt "Mountain view" \
--media photo3.jpg --alt "City skyline"
| Format | Flag | Use Case |
|--------|------|----------|
| Human-readable | (default) | Interactive terminal |
| Plain | --plain | Scripting (no emoji/color) |
| JSON | --json | Programmatic parsing |
# Parse tweet data in a script
bird read 1234567890123456789 --json | jq '.text'
# Mention monitoring
bird mentions -n 50 --json | jq '.[] | {user: .user.screen_name, text: .text}'
Optional JSON5 config files:
| Location | Scope |
|----------|-------|
| ~/.config/bird/config.json5 | Global |
| ./.birdrc.json5 | Project-specific |
// Example config
{
cookieSource: ["firefox", "safari"],
firefoxProfile: "default-release",
timeoutMs: 20000
}
#!/bin/bash
DATE=$(date +"%B %d, %Y")
bird tweet "Daily status for $DATE: All systems operational. #status"
# Get all replies to a viral tweet as JSON
bird replies https://x.com/user/status/1234567890123456789 --json | \
jq '.[] | {user: .user.screen_name, text: .text, likes: .favorite_count}'
bird tweet "Product launch gallery 🚀" \
--media hero.png --alt "Product hero shot" \
--media feature1.png --alt "Feature overview" \
--media feature2.png --alt "Technical specs" \
--media pricing.png --alt "Pricing table"
#!/bin/bash
bird mentions -n 20 --json | jq -r '.[] | "\(.id) \(.user.screen_name): \(.text)"'
--json for scripting — always when parsing output programmatically--plain in CI/CD — avoids emoji/color issues in logs--alt when attaching imagesbird query-ids --fresh if bird hasn't been used in a few daysAUTH_TOKEN / CT0 instead of browser cookies in scriptssleep) in bulk automation scripts# Verify you're logged into x.com in your browser
# Try specifying the browser explicitly
bird whoami --cookie-source safari
# Or set credentials via environment
export AUTH_TOKEN="your-auth-token"
export CT0="your-ct0-token"
bird whoami
Query IDs may be stale. Refresh the cache:
bird query-ids --fresh
bird automatically falls back to the REST API. If it persists, wait a few minutes and retry.
# Multiple browser profiles may have different sessions
bird whoami --cookie-source chrome --chrome-profile "Profile 1"
| Code | Meaning | |------|---------| | 0 | Success | | 1 | Runtime error (network, auth, API) | | 2 | Invalid usage (unknown command, bad arguments) |
~/.config/bird/query-ids-cache.json (24-hour TTL)statuses/update.json) for error 226documentation
Create or expand an Idea.md / IDEA.md file from a rough description, existing repo, conversation history, notes, or other early-stage product inputs. Use when the user asks to "write an Idea.md", "turn this into an idea file", "capture this product idea", "expand this concept", or wants a repo-grounded concept brief before validation, PRD, or implementation work.
development
Write structured implementation plans from specs or requirements before touching code. Use when given a spec, requirements doc, or feature description, when user says "plan this out", "write a plan for", "how should we implement", or before starting any multi-step coding task.
testing
Expert guidance for video editing with ffmpeg, encoding best practices, and quality optimization. Use when working with video files, transcoding, remuxing, encoding settings, color spaces, or troubleshooting video quality issues.
development
Opinionated constraints for building better interfaces with agents. Use when building UI components, implementing animations, designing layouts, reviewing frontend accessibility, or working with Tailwind CSS, motion/react, or accessible primitives like Radix/Base UI.