skills/x-scan/SKILL.md
Scan X (Twitter) for posts from a user, search results, or single-tweet fetches. Uses FXTwitter (no auth) for single tweets. Returns findings without vault persistence. Sibling to llm-wiki/ingest-tweet.
npx skillsauth add RonanCodes/ronan-skills x-scanInstall 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.
Pull posts from X / Twitter and return distilled findings. No file writes.
/ro:x-scan https://x.com/user/status/1234567890 # one tweet, full text
/ro:x-scan @karpathy --limit 20 # recent posts by user
/ro:x-scan "search:agent observability" # topic search
FXTwitter — free, no auth, returns full text including long "note tweets":
curl -s "https://api.fxtwitter.com/{user}/status/{id}"
Return: tweet.text, author (name @screen_name), created_at, likes/retweets/replies, quoted tweet if any, media URLs if any.
Strip ?s=46&t=... tracking params from the input URL before parsing.
@user)FXTwitter doesn't expose timelines without auth. Options in order of preference:
https://nitter.net/{user}/rsshttps://nitter.poast.org/{user}/rsshttps://nitter.privacyredirect.com/{user}/rsscurl ... | xmllint --xpath '//item' or a simple sed pipeline. Extract title (= tweet text preview), pubDate, and the tweet URL from <link>./ro:x-scan can fall back to the single-tweet fetch if the caller wants full content.If all mirrors fail, report that clearly and suggest the caller either paste specific tweet URLs or switch to /ro:hn-scan / /ro:linkedin-scan.
search:<topic>)Same Nitter fallback as above with /search?q={encoded-topic}&f=tweets — again, mirrors are flaky. If the caller has access to the paid X API, prefer that (check for X_API_BEARER env var and use https://api.x.com/2/tweets/search/recent if set).
# X scan: <target> (<N> results)
1. @<screen_name> (<likes>♥ <retweets>↻ · <time ago>)
<tweet text, stripped of t.co links>
https://x.com/<user>/status/<id>
2. ...
For single-tweet mode include the full text, not a truncation.
If Nitter is all down AND the caller needs timeline/search, the firefox-cookies skill can extract X session cookies for authenticated scraping. This is brittle (layout-dependent) — only fall back to it when the free paths are exhausted and the caller has explicitly opted in.
curl — alwaysxmllint (from libxml2) — for RSS parsing, optionalfirefox-cookies skill — optional last-resort fallbackllm-wiki/.claude/skills/ingest-tweet — persists single tweets into a vault. Use when you want to keep a tweet long-term./ro:trend-scan — orchestrator running x-scan alongside hn-scan, linkedin-scan, reddit-scan./ro:hn-scan, /ro:linkedin-scan, /ro:reddit-scan.development
Close the loop on a Linear ticket when its work ships - move the status and post a deploy comment with the PR link, what shipped, and a try-it link, mentioning the collaborator. Used as the tail of /ro:linear-nightshift for every merged mirror, or manually after an ad-hoc build. Triggers on "linear update", "update the linear ticket", "mark NUT-x done", "tell eoin it shipped", "/ro:linear-update".
devops
Run a night-shift against a collaborator's Linear board. Pulls the team's Grilled tickets (/ro:linear-grill moves a ticket to Grilled once its questions are answered), VERIFIES the questions were actually answered (unanswered → bounce the ticket to the "Question for <name>" state), mirrors verified tickets to ephemeral GitHub issues with ready-for-agent, then runs the standard /ro:night-shift machinery on GitHub. Tail-calls /ro:linear-update for everything that merged + deployed. Triggers on "linear nightshift", "nightshift linear", "drain the linear board", "run the shift off linear", "/ro:linear-nightshift".
development
Grill a collaborator's Linear tickets and move every processed ticket to where it belongs. Resolves the board from the repo's .ro-linear.json, reads the collaborator's Backlog / Ready-for-agent issues, then per ticket either posts 3-5 decision-extracting questions (state moves to "Question for <name>") or confirms it build-ready (state moves to "Grilled", the gate /ro:linear-nightshift consumes); shipped-and-confirmed tickets close as Done. The async-collaborator counterpart of /ro:day-shift for people who never touch GitHub. Triggers on "grill linear", "grill eoin's tickets", "linear grill", "add questions to the linear tickets", "/ro:linear-grill".
development
--- name: about-page description: Add a standard About page to any web app, what it is, the tech stack, and an FAQ, wired into a footer link with a sticky footer. Built with Spartan + Tailwind (the canonical component layer) and falls back to semantic HTML so it ships reliably. Use whenever building, polishing, or shipping an app, every app should have one. Triggers on "add an about page", "about page", "footer about link", or as a standard step in app build/polish. category: frontend argument-h