AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Reply X

skill-jonathanmalkin-jules-reply-x · by jonathanmalkin

Find posts where @[your-handle] tags @builtwithjules, draft replies, post approved ones as @builtwithjules.

No reviews yet
0 installs
42 views
0.0% view→install

Install

$ agentstack add skill-jonathanmalkin-jules-reply-x

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-jonathanmalkin-jules-reply-x)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Reply X? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Replies

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:

  1. Update each tweet's Action and Reply ID in the tracking file
  2. Update Last seen tweet ID to the highest tweet ID seen this run
  3. Update Last processed timestamp 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.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.