Replies
SkillDev toolsFind posts where @[your-handle] tags @builtwithjules, draft replies, post approved ones as @builtwithjules.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Replies skill
What this skill tells your AI
The instructions your AI receives, as published by jonathanmalkin/jules in .claude/skills/reply-x/SKILL.md and read by ahel’s review.
Find posts where @[your-handle] tags @builtwithjules, draft a reply for each, post after approval.
Voice: Jules — warm, direct, opinionated. Practitioner, not guru. Specific, not generic.
Step 1: Load State
Read the tracking file: Documents/Content-Pipeline/X-Mentions-Jules.md
Extract:
Last seen tweet ID— for filtering (not used in query — see note below)- Existing tweet IDs — to avoid re-presenting anything already shown
Step 2: Search
2a. Text search
xurl search "@builtwithjules from:[your-handle]" -n 20 -u builtwithjules
Filter results against the tracking file (skip any tweet ID already present).
2b. Mentions fetch (catches quote tweets)
Text search misses quote reposts where @builtwithjules appears in the quoted tweet but not in the quoting text. To catch these, fetch Jules's mentions directly:
xurl mentions -n 20 -u builtwithjules
If mentions doesn't surface quote tweets, fall back to raw API:
xurl /2/users/by/username/[your-handle] -u builtwithjules # get user_id
xurl "/2/users/{user_id}/tweets?expansions=referenced_tweets.id&max_results=20" -u builtwithjules
Skip any tweet ID already in the tracking file.
2c. Merge and deduplicate
Combine results from 2a and 2b. Deduplicate by tweet ID.
Reply + standalone pairs: [Your Name] often posts the same content as both a reply and a standalone/quote tweet. When detected (same text or near-identical), group them and present as a single item. Default to replying to the conversational thread version.
If no new results after filtering, say so and stop. Do NOT update "Last processed" timestamp.
Step 3: Draft
For each new tweet, draft a reply:
- Check reply eligibility first. Fetch the target post and inspect
reply_settings:
xurl "/2/tweets/{tweet_id}?tweet.fields=reply_settings,conversation_id,author_id,created_at,public_metrics"
Do not assume "not tagged means blocked." If the post allows broad replies, Jules may be able to reply even when not explicitly tagged. If the post is limited (followers/mentioned users) and Jules is not eligible, then flag it: "Jules isn't eligible to reply here — tag Jules first or skip." Don't draft a reply for truly ineligible tweets.
- Be specific and useful — no generic "great point!" responses
- Keep under 280 characters when possible
- Apply outbound sanitization (no sensitive data)
Present each for approval:
**Original** (@[your-handle]): [tweet text]
**Reply:** [draft]
**Action:** approve / edit / skip
Add all new tweets to the tracking file immediately with presented: yes, action: pending.
Wait for [Your Name]'s approval before posting anything.
Step 4: Post
For each approved reply:
xurl reply [TWEET_ID] "[reply text]" -u builtwithjules
Step 5: Update State
After [Your Name] responds with approve/skip decisions:
- Update each tweet's
ActionandReply IDin the tracking file - Update
Last seen tweet IDto the highest tweet ID seen this run - Update
Last processedtimestamp to now (CT)
Report: N new found, N posted, N skipped.
Auth Notes
Posts as @builtwithjules via -u builtwithjules using OAuth2 credentials stored in ~/.xurl.
xurl has two OAuth2 users under the [your-handle] app:
builtwithjules— used by /reply-x (-u builtwithjules)[your-handle]— used by /watch-contacts (default, no flag needed)
If posting fails with 401: run xurl auth oauth2 outside the Claude session,
log in as @builtwithjules in the browser.
If posting fails with 403 "not engaged" or equivalent restrictions after the eligibility check: the post is effectively closed to Jules. Ask [Your Name] to tag @builtwithjules on the tweet first, then retry.
Signals
- GitHub stars
- 65
- Forks
- 9
- Last commit
- May 2026
Advanced
- Catalog kind
- skill
- Gateway key
reply-x- Source
- github.com/jonathanmalkin/jules