Source profileQuality 93/100

tomcounsell/ai/.claude/skills/x-com/SKILL.md

x-com

Use when browsing x.com (Twitter), reading the timeline, posting, replying, liking, or checking DMs. Triggered by requests to post on X, browse the X feed, comment on tweets, or read/reply to X DMs.

Source repository stars
22
Declared platforms
0
Static risk flags
0
Last source update
2026-08-25
Source checked
2026-08-25

Decision brief

What it does: where it fits

Drives the user's logged-in Chrome via BYOB. User handle: @ValorEngels.

Best for

  • Use when browsing x.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/tomcounsell/ai --skill ".claude/skills/x-com"
Safe inspection promptEditorial

Inspect the Agent Skill "x-com" from https://github.com/tomcounsell/ai/blob/0a092490b991ac87d3c2acd8a72961f8c98c64e7/.claude/skills/x-com/SKILL.md at commit 0a092490b991ac87d3c2acd8a72961f8c98c64e7. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    The byob:idx workflow

    1. browserread(url, reuseTab=true, screens=N) returns interactiveElements: [{idx, tag, role, name, bounds}, ...]. 2. Find your target by name. On X the post text is captured directly in the 's name attribute. This is a big advantage over LinkedIn (post bodies are readable from t…

    browserread(url, reuseTab=true, screens=N) returns interactiveElements: [{idx, tag, role, name, bounds}, ...].Find your target by name. On X the post text is captured directly in the 's name attribute. This is a big advantage over LinkedIn (post bodies are readable from the IE list).Click with browserclick(tabId, selector="byob:idx=").
  2. 02

    Default Behavior (no arguments)

    Run all three tasks in order:

    Check DMs. Reply to any messages that need attentionWrite a post. About recent work from git history. A second post in the same day is fine if there's a real second angle.Browse timeline (For You). Like 20-50 posts, reply to up to 15, follow new people you haven't seen before. Curate the feed actively.
  3. 03

    Task guides (load on demand)

    Each task's full procedure lives in a reference file. Load only what the current run needs:

    Each task's full procedure lives in a reference file. Load only what the current run needs:
  4. 04

    Prerequisites

    Same BYOB setup as /linkedin (see that skill for the full preconditions). Verify with:

    Same BYOB setup as /linkedin (see that skill for the full preconditions). Verify with:Then sanity-check from inside the agent:User must be logged into X in that Chrome session.
  5. 05

    Real-Chrome scheduler gate (requiresrealchrome=True)

    X driving real Chrome must be serialized against other real-Chrome sessions. Bridge-spawned sessions get the flag automatically via agent.byobskilltriggers (the registry includes X triggers). CLI-spawned sessions must pass --needs-real-chrome:

    X driving real Chrome must be serialized against other real-Chrome sessions. Bridge-spawned sessions get the flag automatically via agent.byobskilltriggers (the registry includes X triggers). CLI-spawned sessions must p…

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars22SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
tomcounsell/ai
Skill path
.claude/skills/x-com/SKILL.md
Commit
0a092490b991ac87d3c2acd8a72961f8c98c64e7
License
GPL-3.0
Collected
2026-08-25
Default branch
main
View the original SKILL.md

X (Twitter) Activity

Drives the user's logged-in Chrome via BYOB. User handle: @ValorEngels.

Default Behavior (no arguments)

Run all three tasks in order:

  1. Check DMs. Reply to any messages that need attention
  2. Write a post. About recent work from git history. A second post in the same day is fine if there's a real second angle.
  3. Browse timeline (For You). Like 20-50 posts, reply to up to 15, follow new people you haven't seen before. Curate the feed actively.

If arguments are given, interpret them and do only what's asked.

Nothing goes live — post, reply, or comment — without passing both gates in order: first Skill('de-slop') (fresh-context review of the draft file only — removes AI-writing tells, blocks hollow drafts), then Skill('authenticity-pass'); the full gate procedure is in references/posting.md.

Execute, don't pause. Render drafts inline and continue to publish in the same turn. Only stop on hard tool failure with no fallback, or a finding that contradicts the skill's premise (e.g. "no DMs need replies" → skip Task 1).

Task guides (load on demand)

Each task's full procedure lives in a reference file. Load only what the current run needs:

Load...When...
references/dms.mdTask 1: reading the DM inbox, opening threads, drafting and sending replies, updating the knowledge base
references/posting.mdTask 2: what works/dies on this feed, voice rules, the receipt self-reply, subagent drafting, persona cold-read loop, authenticity gate, publish
references/timeline-engagement.mdTask 3: volume targets, For You curation, liking, following, reply screening and drafting loop — plus editing/deleting posts

Prerequisites

Same BYOB setup as /linkedin (see that skill for the full preconditions). Verify with:

cd ~/.byob && bun run doctor

Then sanity-check from inside the agent:

mcp__byob__browser_list_tabs    # must return at least one tab

User must be logged into X in that Chrome session.

Real-Chrome scheduler gate (requires_real_chrome=True)

X driving real Chrome must be serialized against other real-Chrome sessions. Bridge-spawned sessions get the flag automatically via agent.byob_skill_triggers (the registry includes X triggers). CLI-spawned sessions must pass --needs-real-chrome:

valor-session create --role eng --project-key valor --needs-real-chrome --message "check my X DMs"

Tab discovery (do this first)

browser_list_tabs   →   look for any tab whose URL contains "x.com" (or "twitter.com")

Pick the first match → that's your tabId. If no tab, browser_navigate(url="https://x.com/home").

DOM model

X uses a stable accessibility tree. Element names like "Reply", "Like", "Liked", "Repost", "Reposted", "Post text", "Direct Messages" are reliable. Hashed CSS classes change frequently; do not rely on them. Use data-byob-idx via the selector: "byob:idx=N" workflow.

The byob:idx workflow

  1. browser_read(url, reuseTab=true, screens=N) returns interactiveElements: [{idx, tag, role, name, bounds}, ...].
  2. Find your target by name. On X the post text is captured directly in the <article>'s name attribute. This is a big advantage over LinkedIn (post bodies are readable from the IE list).
  3. Click with browser_click(tabId, selector="byob:idx=<idx>").
  4. Re-read after every DOM-mutating click. The interactiveSessionTag changes and old indices invalidate.

When multiple IEs map to the same logical control, prefer tag: "button".

X-specific gotchas (verified live)

  • Prefer data-testid selectors over byob:idx on X. The home timeline easily blows past 1000 IEs and byob:idx=N clicks fail with selector_not_found even right after a fresh read. The reliable handles are:
    • [data-testid="tweetTextarea_0"]. The compose / reply textbox (works on /home, /compose/post, and any post page reply box)
    • [data-testid="tweetButtonInline"]. The submit button. Same testid for posts and replies (button text is "Post" on /home, "Reply" on a post page; testid doesn't change).
    • [data-testid="like"]. The like button. Often reports element_not_visible because the action bar overlay covers the click point. Pass force: true.
    • article[data-testid="tweet"]. Full tweet container; child a[href*="/status/"] is the permalink.
  • <article> IEs include the full post text in name. Useful for cheap triage from the IE list before navigating into individual posts.
  • Best path to read a post body in full: extract /handle/status/<id> URLs from the timeline HTML (grep -oE 'href="/[^/]+/status/[0-9]+"'), then browser_navigate to each. The post text shows up in the page title ("(N) Author on X: "...full text..." / X"). Fastest way to read the body.
  • "Want more people to see your reply?" Premium upsell modal appears after every successful reply submit. Dismiss with browser_press_key(key="Escape") before the next click. Otherwise subsequent selectors get blocked.
  • Inline composer on /home - data-testid="tweetTextarea_0" is live and editable right on the home timeline. Much easier than LinkedIn's broken portal modal.
  • Action button names carry counts in IE-list name fields (e.g. "977 Likes. Like", "977 Likes. Liked"). If you do fall back to byob:idx, match on the suffix (Like/Liked, Repost/Reposted).
  • "See new posts" banner at top of feed. Click to refresh the For You tab when timeline returns empty (occasionally happens after navigation).

Notes

  • Reuse the same tabId across the session. Discover once at the start.
  • Screenshots over 1MB fail. Use format="jpeg" and quality=50-60.
  • No fallback browser surface. If BYOB transport errors mid-session: cd ~/.byob && bun run doctor to repair, then retry.

Frequently asked questions

What to verify before installation and use

What does the x-com source document cover?

Drives the user's logged-in Chrome via BYOB. User handle: @ValorEngels.

How do I install x-com?

The source record exposes this install command: npx skills add https://github.com/tomcounsell/ai --skill ".claude/skills/x-com". Inspect the command and pinned source before running it.

Alternatives

Compare before choosing

Computed 10029,034

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10024,921

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 10015,122

wanshuiyin/Auto-claude-code-research-in-sleep

citation-audit

Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.

Computed 10014,671

prowler-cloud/prowler

postgresql-indexing

PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance