AGENTS.md · nirholas/XActions
AGENTS.md from nirholas/XActions: 420 lines covering Two lanes into the same engine, The CLI lane, The MCP lane, Straight to the file and more.
Template by nirholas
Chalk Labs
Need help deploying AGENTS.md · nirholas/XActions?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code. Read the repository before you give any tool access to your data.
curl -fsSL https://raw.githubusercontent.com/nirholas/XActions/main/AGENTS.md -o AGENTS.md
Read it and adapt it to your project before use.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: code-generation, social-media
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
What's in it
An AGENTS.md file: instructions coding agents (Codex, Cursor, Copilot, Gemini CLI and others) read before working in a repo.
- For
- Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code
- Length
- 420 lines
- File
AGENTS.md
Sections
- Two lanes into the same engine
- The CLI lane
- The MCP lane
- Straight to the file
- Skills
- Where things live
- Things that will bite you
- House style
First lines (shown under the repo's Apache-2.0 license)
# XActions for agents
X/Twitter automation with no X API key: a 56-command CLI, a Node library, 152
MCP tools, 50 agent skills, 95 browser console scripts, and a web dashboard.
Apache-2.0, by nichxbt.
This file is for the agent, not the human. It answers one question first,
because getting it wrong costs the whole session: **do you shell out to the
CLI, or do you load the MCP server?**
---
## Two lanes into the same engine
XActions ships both lanes from one install, and they call the same code. The
difference is what each costs you before you have read a single tweet.
| | CLI lane | MCP lane |
|---|---|---|
| How you call it | one Bash call, `xactions <cmd> --compact` | a tool call, after the client connects the server |
| What loads into context up front | nothing | the whole tool list |
| What comes back | the rows you asked for, one per line | a JSON result object |
| Writes | reads, plus `engage` and `bulk` | every write tool, with an approval gate |
| Usable without client configuration | yes, it is just a process | no, the client must be configured first |
The tool list is not small. The server advertises 152 tools, and the
`tools/list` payload it serves is about 60 KB of JSON before you have done any
work at all. Measure it yourself:
```bash
node -e "import('./src/mcp/server.js').then(m => console.log(JSON.stringify(m.TOOLS).length, 'bytes,', m.TOOLS.length, 'tools'))"
```
That cost is worth paying when you are going to make many calls in a session,
keep state between them, or write. It is not worth paying to answer "how many
followers does this account have."
### The rule
**Reading a handful of things? Shell out. Working a long session, or writing?
Load the server.**
Concretely, prefer the CLI when:
- You need one or two facts and then you are done.
- You are inside a larger task where X is a detail, not the subject.
- You want to pipe, filter, or count the result with `jq`, `grep`, `sort`,
`wc`, or feed it to another command in the same Bash call.
- The client has no MCP configuration and you are not going to add one.
Prefer the MCP server when:
- You are posting, replying, following, muting, or deleting, and you want the
draft-approval gate to hold each write for a human.
- The session will make many calls and the per-call schema cost amortises.
- You want the structured error objects and the session state the server keeps
across calls.
Nothing stops you from using both. `xactions mcp-config` writes the client
config, and the CLI keeps working next to it.
---
## The CLI lane
### The output contract
Two flags, and they are global, so every read command takes them:
- `--compact` prints one record per line as tab-separated `key=value` pairs,
essential fields only, no colours and no spinners.
- `--fields <list>` narrows that to exactly the columns you name, in the order
you name them.
`--json` is per command and prints the full structured object.
**`--compact` wins when both are passed.** They are alternatives, not a pair:
pick `--compact` when you are going to read the answer yourself, and `--json`
when you are going to pipe it into `jq`.
Field names are shared across commands, so `--fields likes` means the same
thing everywhere. The defaults per record kind:
| Record kind | Default columns |
|---|---|
| tweet | `id username date likes retweets replies views text` |
| profile | `id username name followers following tweets verified bio` |
| user | `id username name followers verified bio` |
| media | `type url tweetUrl` |
| report | `username followers following postsPerDay engagementRate medianEngagement mediaShare bestHourUTC bestWeekday` |
Anything else the record carried can still be named in `--fields`.
### Recipes
Read a profile:
```bash
xactions profile NASA --compact
xactions profile NASA --fields username,followers,verified --compact
```
Read someone's posts:
```bash
xactions tweets NASA --limit 50 --compact
xactions tweets NASA --limit 200 --fields id,date,likes,text --compact
xactions tweets NASA --limit 50 --json | jq '[.[] | select(.likes > 1000)] | length'
```
Search:
```bash
xactions search "agent skills" --limit 40 --compact
xactions search "mcp server" --filter top --limit 25 --fields username,likes,text --compact
```
`--filter` takes `latest` (the default), `top`, `people`, `photos`, `videos`.
Followers, and who does not follow back:
```bash
xactions followers nichxbt --limit 500 --compact
xactions following nichxbt --limit 500 --fields username,followers --compact
xactions non-followers nichxbt --limit 500 --compact
```
Account report, and comparisons:
```bash
xactions analyze NASA --compact
xactions analyze NASA SpaceX --fields username,followers,engagementRate,bestHourUTC --compact
```
`analyze` takes several usernames and samples `--limit` posts from each
(default 50, clamped to the 5 to 200 range).
The rest of the read surface, same flags:
```bash
xactions hashtag ai --limit 50 --compact
xactions thread https://x.com/NASA/status/1234567890 --compact
xactions media NASA --limit 30 --compact
```
### One Bash call, whole answer
The point of the lane is that the shell does the second half of the work, so
nothing intermediate has to pass through the context window:
```bash
# Top five posts by likes, text only
xactions tweets NASA --limit 200 --json | jq -r 'sort_by(-.likes) | .[:5] | .[] | "\(.likes)\t\(.text)"'
# How many of the accounts I follow do not follow back
xactions non-followers nichxbt --limit 1000 --compact | wc -l
# Accounts above 100k followers, from a follower list
xactions followers nichxbt --limit 1000 --json | jq -r '.[] | select(.followers > 100000) | .username'
```Signals
- Stars
- 620
- Forks
- 113
- Open issues
- 5
- Contributors
- 11
- Last commit (this folder)
- Sep 30, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/nirholas/XActions
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from nirholas
- 0.776score
Claude Code Explorer MCP
nirholas
Explore the Claude Code CLI source — browse tools, commands, search code, and more.
ConnectorAFreshness: ALocal★ 6.2KClaude Code +5 - 0.754score

XActions
nirholas
X/Twitter automation MCP: scrape, post, schedule, analyze, engage.
ConnectorAFreshness: ALocal★ 620Claude Code +5 - 0.742score
Alibaba Cloud DashScope — Qwen
nirholas
Alibaba Cloud DashScope MCP: Qwen chat, embeddings, and model discovery on your own account.
ConnectorAFreshness: ALocal★ 247Claude Code +5 - 0.742score
three.ws Tutor
nirholas
Read a Pay-As-You-Learn tutoring session's itemized tab and close it for an attested invoice.
ConnectorAFreshness: ALocal★ 247Claude Code +5 - 0.742score
three.ws Alerts
nirholas
Create, update, and delete pump.fun alert rules and read fired-alert history across channels.
ConnectorAFreshness: ALocal★ 247Claude Code +5 - 0.742score
three.ws AgenC
nirholas
Browse the AgenC on-chain task marketplace, query the agent registry, and link identities.
ConnectorAFreshness: ALocal★ 247Claude Code +5
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get AGENTS.md · nirholas/XActions running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
AGENTS.md · nirholas/XActions. Agent Mart. https://agentmart.dev/templates/nirholas-xactions-agents-md (last updated 2026-10-24)