xurl — Claude Code skill: what it does, how to install
Skill for the xurl CLI tool. It lets your coding agent publish posts, inspect feeds, upload media files, and send raw X API requests directly from chat.
npx skills add openclaw/openclaw --skill xurl -a claude-codeWhat xurl does
This skill connects your coding agent to the xurl command-line tool. The agent uses shortcut commands to publish posts, look up mentions, or manage direct messages. Raw mode handles endpoints outside the standard shortcuts. Successful API calls return JSON output to stdout.
Running the skill requires the xurl binary. You can install it through Homebrew with the xdevplatform/tap/xurl formula or through npm via @xdevplatform/xurl. The CLI stores credentials in ~/.xurl. Check authentication with xurl auth status rather than reading token files manually. Pass secrets directly through prompts to keep credentials out of shell history. For video uploads, poll media status because processing takes time.
Install this skill if your workflow involves posting updates or reading data from X during coding sessions. Skip it if your terminal tasks never touch social media feeds.
What it helps with
- publish posts, replies, and quotes to X
- upload images and videos with media status checks
- inspect timelines, search mentions, and read direct messages
- verify authentication status and manage app accounts
Example prompts for the agent
- Post an update about the release to X
- Check xurl auth status
- Search recent mentions of our handle on X
How to install xurl
1Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill xurl -a claude-code2Manually: put the files in place
~/.claude/skills/xurl/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/xurl/
1Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill xurl -a codex2Manually: put the files in place
.agents/skills/xurl/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill xurl -a cursor2Manually: put the files in place
.cursor/skills/xurl/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install openclaw/openclaw xurl2Manually: put the files in place
.github/skills/xurl/SKILL.md1Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill xurl -a gemini-cli2Platform CLI
gemini skills install https://github.com/openclaw/openclaw --path skills/xurlManually: put the files in place
.devin/skills/xurl/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add openclaw/openclaw --skill xurl -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set45
The whole set →Similar
Questions about xurl
How to install xurl in Claude Code?
Install the skill using npx skills add openclaw/openclaw --skill xurl -a claude-code. You also need the xurl binary installed on your machine through Homebrew or npm.
What does xurl do?
The skill lets your coding agent run X CLI commands directly from chat. It handles posting, searching feeds, reading direct messages, and making raw API calls.
How does xurl handle authentication tokens?
Credentials live in ~/.xurl, and you can inspect their validity with xurl auth status. Pass secrets via prompt input to keep tokens out of shell command history.
Source text
SKILL.md · MIT
---
name: xurl
description: "xurl CLI for authenticated X posts, replies, reads/search, DMs, media upload, followers, auth status, or raw v2 API calls."
metadata:
{
"openclaw":
{
"emoji": "🐦",
"requires": { "bins": ["xurl"] },
"install":
[
{
"id": "brew",
"kind": "brew",
"formula": "xdevplatform/tap/xurl",
"bins": ["xurl"],
"label": "Install xurl (brew)",
},
{
"id": "npm",
"kind": "node",
"package": "@xdevplatform/xurl",
"bins": ["xurl"],
"label": "Install xurl (npm)",
},
],
},
}
---
# xurl
Use `xurl` for X API work. Shortcut commands return JSON; raw mode works for any v2 endpoint.
## Auth
- `~/.xurl` holds tokens; check auth with `xurl auth status` instead of reading it.
- Pass secrets to auth commands through the prompt, not inline, so they stay out of shell history.
- `--verbose` prints auth headers into tool output.
## Common shortcuts
```bash
xurl post "Hello world!"
xurl reply POST_ID "Nice."
xurl quote POST_ID "My take"
xurl delete POST_ID
xurl read POST_ID
xurl search "query" -n 20
xurl whoami
xurl user @handle
xurl timeline -n 20
xurl mentions -n 10
xurl like POST_ID
xurl unlike POST_ID
xurl repost POST_ID
xurl unrepost POST_ID
xurl bookmark POST_ID
xurl unbookmark POST_ID
xurl followers -n 20
xurl following -n 20
xurl follow @handle
xurl unfollow @handle
xurl block @handle
xurl unblock @handle
xurl mute @handle
xurl unmute @handle
xurl dm @handle "message"
xurl dms -n 10
```
`POST_ID` can be a full `https://x.com/<user>/status/<id>` URL.
## Media
```bash
xurl media upload image.jpg
xurl media upload clip.mp4
xurl media status MEDIA_ID
xurl post "caption" --media-id MEDIA_ID
```
Videos may need processing; poll `media status`.
## Auth/app management
```bash
xurl auth status
xurl auth apps list
xurl auth default
xurl auth default APP_NAME USERNAME
xurl auth apps remove APP_NAME
```
Per request:
```bash
xurl --app APP_NAME /2/users/me
xurl --auth oauth2 /2/users/me
```
## Raw API
```bash
xurl /2/users/me
xurl -X POST /2/tweets -d '{"text":"Hello world!"}'
xurl '/2/tweets/search/recent?query=openclaw&max_results=10'
```
Use raw mode when shortcuts do not cover the endpoint. Keep payloads in temp files for complex JSON.
## Output and errors
- JSON stdout on success.
- Non-zero exit on API/auth/network errors.
- 401/403: auth, scope, or app mismatch; check `xurl auth status`.
- 429: rate limited; back off.
- Media upload failures: check file type/size and media processing status.
© openclaw · MIT · openclaw/openclaw