Agent skill

Social CLI

by letta-ai in letta-ai/skills

Agent-optimized CLI for Bluesky (ATProto) and X (Twitter). An agent skill from letta-ai/skills.

MITAuto-check: notesAgent Workflows

Install Social CLI

skills CLI
$ npx skills add letta-ai/skills --skill social-cli -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install letta-ai/skills social-cli --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/letta-ai/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/tools/social-cli .claude/skills/social-cli && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
social-cli
GitHub stars
149
Token cost
~1.6k tokens
SKILL.md length
354 words
Files
7 (incl. references, assets)
Skills in repo
22
Repo updated
First seen
Licence
MIT

At a glance

Agent-optimized CLI for Bluesky (ATProto) and X (Twitter). An agent skill from letta-ai/skills.

  • Works in 3 steps: Install → Credentials → Verify
  • The task involves posting
  • SKILL.md covers Setup, Agent loop (sync → check →…, Quick commands and Annotations (Bluesky only), plus 8 more sections
  • Calls pnpm, git and node; reaches github.com and bsky.social; needs ATPROTO_APP_PASSWORD and X_API_KEY

What it does

Social CLI is an agent skill from letta-ai/skills. Agent-optimized CLI for Bluesky (ATProto) and X (Twitter). YAML in, YAML out, exit codes for automation. Use when the task involves posting, replying, reading feeds, searching, annotating URLs, or running a sync/check/dispatch agent loop across social platforms.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files and assets (for example `references/agent-loop.md`, `references/commands.md` and `references/outbox-schema.md`).

It sits in Agent Workflows, covering Subagents and Email management. It works with Bluesky and X (Twitter). The repository describes itself as: A shared repository for skills. Intended to be used with Letta Code, Claude Code, Codex CLI, and other agents that support skills. The licence is MIT.

When your agent uses it

  • The task involves posting
  • Annotating URLs
  • Running a sync/check/dispatch agent loop across social platforms

Example prompts

  • “/social-cli”

Requirements

  • A credential in X_API_KEY
  • A credential in X_API_SECRET

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Install
  2. Credentials
  3. Verify

What it can do on your machine

Read from SKILL.md and the folder at commit 6785511. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • git
    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com
    • bsky.social

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • ATPROTO_APP_PASSWORD
    • X_API_KEY
    • X_API_SECRET
    • X_ACCESS_TOKEN
    • X_ACCESS_TOKEN_SECRET
    • X_BEARER_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Social CLI loads about 1.6k tokens when it runs, and up to ~3.4k if it reads all its reference files. Until then it costs about 68 tokens; SKILL.md has 354 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~68
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:27
    Create a `.env` in the working directory where you run `social-cli`:
  • NoteMentions a .env fileSKILL.md:205
    ├── .env

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from letta-ai/skills at commit 6785511, republished under its MIT licence (© letta-ai). 354 words, ~1,626 tokens.

Download SKILL.mdSave it as .claude/skills/social-cli/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
social-cli
description
Agent-optimized CLI for Bluesky (ATProto) and X (Twitter). YAML in, YAML out, exit codes for automation. Use when the task involves posting, replying, reading feeds, searching, annotating URLs, or running a sync/check/dispatch agent loop across social platforms.

social-cli

Agent-optimized social CLI. Bluesky + X. YAML in, YAML out, exit codes for automation.

Repo: https://github.com/letta-ai/social-cli

Setup

1. Install
bash
git clone https://github.com/letta-ai/social-cli.git
cd social-cli
pnpm install
pnpm build

Link the binary globally or invoke via node dist/cli.js / pnpm start from the repo directory.

2. Credentials

Create a .env in the working directory where you run social-cli:

bash
# Bluesky / ATProto
ATPROTO_HANDLE=you.bsky.social
ATPROTO_APP_PASSWORD=xxxx-xxxx-xxxx-xxxx
ATPROTO_PDS=https://bsky.social          # optional, defaults to bsky.social

# X / Twitter (OAuth 1.0a)
X_API_KEY=...
X_API_SECRET=...
X_ACCESS_TOKEN=...
X_ACCESS_TOKEN_SECRET=...
X_BEARER_TOKEN=...                       # optional, for app-only endpoints

Only credentials for platforms you actually use are required.

3. Verify
bash
social-cli whoami
social-cli rate-limits

Agent loop (sync → check → dispatch)

The canonical automation workflow. Each phase reads/writes YAML files in the working directory.

bash
social-cli sync                    # pull notifications → inbox-{platform}.yaml
social-cli check || exit 0         # anything actionable? exit 1 = nothing to do
# read inbox, decide, write outbox-{platform}.yaml
social-cli dispatch                # execute outbox, archive results
  • sync: deduplicates against sent_ledger-{platform}.yaml and caps inbox size.
  • check: exits 0 if inbox has actionable items, 1 otherwise. Wrap with || exit 0 in cron loops.
  • dispatch: executes the outbox atomically. Writes dispatch_result-{platform}.yaml and appends to sent_ledger-{platform}.yaml for replay protection.

Quick commands

bash
# Post / reply / thread
social-cli post "Hello world" -p bsky
social-cli reply "Thanks" --id "at://did:plc:.../app.bsky.feed.post/abc" -p bsky
social-cli thread "p1" "p2" "p3" -p bsky

# Engagement
social-cli like "at://..." -p bsky
social-cli delete "at://..." -p bsky
social-cli follow "handle.bsky.social" -p bsky

# Reading
social-cli search "query" -p bsky -n 10              # → stdout YAML
social-cli feed -p bsky -n 20                        # → feed.yaml (or -o - for stdout)
social-cli feed --feed "at://did:.../app.bsky.feed.generator/name" -n 10  # custom feed
social-cli profile "handle.bsky.social" -p bsky
social-cli whoami
social-cli rate-limits

Annotations (Bluesky only)

Uses the at.margin.note lexicon (W3C Web Annotation model). Annotations work on any URL, not just ATProto posts. They appear in margin.at and Semble.

bash
# Annotate a web page
social-cli annotate "Note about this article" --target https://example.com

# Anchor to an exact passage
social-cli annotate "Key insight" --target https://example.com \
  --quote "exact passage from the page" --motivation highlighting

Motivations: commenting, highlighting, questioning, describing, linking.

Inbox format (inbox-{platform}.yaml)

yaml
notifications:
  - id: "at://did:plc:xxx/app.bsky.feed.post/abc"
    platform: bsky
    type: mention          # mention, reply, like, follow, repost, quote
    author: someone.bsky.social
    authorId: "did:plc:xxx"
    postId: "at://..."
    text: "Hey, what do you think?"
    timestamp: "2026-03-25T12:00:00Z"
    parentPostId: "at://..."     # for replies
    parentPostText: "..."        # context
    rootPostId: "at://..."       # thread root
    rootPostText: "..."

Outbox format (outbox-{platform}.yaml)

Write decisions as a dispatch list. Each entry is a single action.

yaml
dispatch:
  - reply:
      platform: bsky
      id: "at://did:plc:xxx/app.bsky.feed.post/abc"
      text: "Thanks for the mention"

  - post:
      text: "Hello from my agent"
      platforms: [bsky, x]          # post to both

  - thread:
      platform: bsky
      posts:
        - "Thread post 1"
        - "Thread post 2"

  - like:
      platform: bsky
      id: "at://..."

  - annotate:
      platform: bsky
      id: "https://example.com/article"
      text: "Key observation"
      motivation: commenting
      quote: "exact text to anchor to"

  - ignore:
      id: "notif_003"
      reason: "spam"

Dispatch results and exit codes

dispatch_result-{platform}.yaml is written after every dispatch. Exit codes:

CodeMeaning
0All actions succeeded
1Invalid outbox (schema error, missing creds)
2Partial failure (some succeeded, some failed)

Thread failures include a resumeFrom field with the index and remaining posts so you can retry just the tail.

Show full SKILL.md (135 more words)Show less

Character limits

PlatformLimit
Bluesky300 chars
X280 chars

The CLI rejects over-limit posts before hitting the API.

Platform differences

FeatureBlueskyX
Annotations (at.margin.note)YesNo
SearchYesYes
FeedYes (custom feeds)Yes (home/user)
ThreadsYesYes
Notificationsmention, reply, like, follow, repost, quotementions only
Quote post contextYesYes

Resilience

  • Retries 3x with exponential backoff on 429s, 5xx, and network errors. Respects Retry-After.
  • Bluesky session auto-refreshes on token expiry.
  • Atomic file writes (tmp + rename) — no partial inbox/outbox corruption.
  • Thread resume on partial failure via resumeFrom.
  • sent_ledger-{platform}.yaml prevents duplicate dispatch across runs.

Working directory layout

Everything is scoped to your current working directory, so you can run multiple agents with isolated state:

./
├── .env
├── inbox-bsky.yaml          # sync output
├── inbox-x.yaml
├── outbox-bsky.yaml         # your decisions
├── outbox-x.yaml
├── dispatch_result-bsky.yaml  # last dispatch outcome
├── dispatch_result-x.yaml
├── sent_ledger-bsky.yaml      # replay protection
├── sent_ledger-x.yaml
└── feed.yaml                  # optional feed snapshots

References

  • references/commands.md: full command map with all flags
  • references/outbox-schema.md: complete outbox YAML schema
  • references/agent-loop.md: patterns for cron/systemd automation loops

© letta-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (references, assets) in tools/social-cli of letta-ai/skills.

  • SKILL.md
  • LICENSE
  • assets/social-cli-small.svg
  • assets/social-cli.png
  • references/agent-loop.md
  • references/commands.md
  • references/outbox-schema.md

Open the folder on GitHubat commit 6785511

Compare with similar skills

Social CLI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Social CLI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Social CLI this skillletta-ai/skills149—~1.6kAutomated safety check: NotesMIT
Clawteamwin4r/ClawTeam-OpenClaw1.5k—~3.1kAutomated safety check: PassMIT
Multi Agent RoomGoldziher/basemind108—~1.8kAutomated safety check: PassMIT
WebGPTNhahan/WebGPT120—~1.4kAutomated safety check: PassMIT
PrepAIOSAI/AIPass288—~880Automated safety check: PassMIT
External Context ResearchYeachan-Heo/oh-my-claudecode40k—~545Automated safety check: PassMIT

Similar skills

  • Clawteam

    win4r/ClawTeam-OpenClaw

    Multi-agent swarm orchestration. An agent skill from win4r/ClawTeam-OpenClaw.

    1.5k GitHub stars~3.1k tokensUpdated 3 mo ago
    Agent WorkflowsAuto-check passed
  • Multi Agent Room

    Goldziher/basemind

    Orchestrate a team of named subagents in shared threads. An agent skill from Goldziher/basemind.

    108 GitHub stars~1.8k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • WebGPT

    Nhahan/WebGPT

    Hands bounded tasks from Codex to a signed-in ChatGPT web session at a chosen reasoning level, or opens a terminal chat in your project that you control.

    120 GitHub stars~1.4k tokensUpdated 16 days ago
    Agent WorkflowsAuto-check passed
  • Prep

    AIOSAI/AIPass

    Session wrap-up. An agent skill from AIOSAI/AIPass.

    288 GitHub stars~880 tokensUpdated 4 days ago
    Agent WorkflowsAuto-check passed
  • External Context Research

    Yeachan-Heo/oh-my-claudecode

    Breaks a research question into two to five facets and sends parallel document-specialist agents to search the web and documentation, then merges the results.

    40k GitHub stars~545 tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Using Agent Relay

    AgentWorkforce/relay

    A skill your agent uses when you are a registered relay agent (a spawned worker, or a lead that called registeragent) coordinating with peers in real time over current Agent Relay MCP tools -…

    867 GitHub starsUsed in 1 repo~2k tokens
    Agent WorkflowsAuto-check passed

More from letta-ai/skills

All 22 skills in this repo
  • Visual Identity

    letta-ai/skills

    Build and maintain a persistent visual identity for your agent using Flux Kontext Pro.

    149 GitHub stars~2.6k tokensUpdated 7 days ago
    Auto-check passed
  • AI News

    letta-ai/skills

    Fetch and summarize recent AI news from curated RSS feeds (Hugging Face, VentureBeat, The Verge, OpenAI, Anthropic, DeepMind, etc.) and YouTube channels (Yannic Kilcher, Two Minute Papers, AI…

    149 GitHub stars~582 tokensUpdated 7 days ago
    Auto-check passed
  • Builds and debugs Letta Code channels, including first-party channel adapters and dynamic user channel plugins under ~/.letta/channels.

    149 GitHub stars~1.1k tokensUpdated 7 days ago
    Auto-check passed
  • Letta Configuration

    letta-ai/skills

    Configure LLM models and providers for Letta agents and servers.

    149 GitHub stars~1.3k tokensUpdated 7 days ago
    Auto-check: notes
  • Migrates deprecated Letta Filesystem folders/files to MemFS using markdown document corpora, chunking, local lexical search, and QMD semantic search via the memfs-search skill.

    149 GitHub stars~1.3k tokensUpdated 7 days ago
    Auto-check passed
  • Memfs Search

    letta-ai/skills

    Semantic search over agent memory files. An agent skill from letta-ai/skills.

    149 GitHub stars~901 tokensUpdated 7 days ago
    Auto-check passed

Questions about Social CLI

What does Social CLI do?

Agent-optimized CLI for Bluesky (ATProto) and X (Twitter). An agent skill from letta-ai/skills. Social CLI is an agent skill from letta-ai/skills. Agent-optimized CLI for Bluesky (ATProto) and X (Twitter).

When should I use Social CLI?

Social CLI fits situations like: the task involves posting; annotating URLs; running a sync/check/dispatch agent loop across social platforms.

How do I install Social CLI in Claude Code?

Run `npx skills add letta-ai/skills --skill social-cli -a claude-code`. Or copy the skill folder (tools/social-cli in letta-ai/skills) into .claude/skills/social-cli in your project. Claude Code loads it when a task matches its description.

How do I install Social CLI in Codex?

Run `npx skills add letta-ai/skills --skill social-cli -a codex`. Or copy the skill folder (tools/social-cli in letta-ai/skills) into .agents/skills/social-cli in your project. Codex loads it when a task matches its description.

Can I use Social CLI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add letta-ai/skills --skill social-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/social-cli, .gemini/skills/social-cli, .github/skills/social-cli and .opencode/skills/social-cli in your project.

What does Social CLI need to run?

Going by SKILL.md and its folder, Social CLI needs the command-line tools its instructions call (pnpm, git and node) and credentials named ATPROTO_APP_PASSWORD, X_API_KEY, X_API_SECRET and X_ACCESS_TOKEN. Our summary lists: A credential in X_API_KEY; A credential in X_API_SECRET.

Does Social CLI access the network?

SKILL.md names 2 domains. In commands or code: github.com and bsky.social; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Social CLI safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Social CLI use?

Social CLI is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Social CLI use?

About 1.6k tokens (SKILL.md is roughly 6.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.8k tokens, read only when the agent opens those files.

What are the alternatives to Social CLI?

Skills that share tags, products or a category with Social CLI: Clawteam (win4r/ClawTeam-OpenClaw, 1.5k stars), Multi Agent Room (Goldziher/basemind, 108 stars), WebGPT (Nhahan/WebGPT, 120 stars) and Prep (AIOSAI/AIPass, 288 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Social CLI?

letta-ai (a GitHub organization) maintains it in letta-ai/skills, which has 149 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 1, 2026.

Source: letta-ai/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.