About trump-truthsocial-catalyst
A reusable analysis skill that evaluates Donald Trump's public Truth Social and X posts alongside disclosed holdings to identify short-term US stock and sector catalysts. It emphasizes calibrated reliability and historical hit rates, and is explicitly not financial advice or an auto-trader.
Key features
- 01Classifies post-based market catalysts
- 02Maps themes to stocks and sectors
- 03Checks disclosed holdings for overlap
- 04Calibrates signals against a track record
- 05Refreshes post sources and reference data
Use cases
- 01Assessing the likely market effect of a new post
- 02Building a watchlist from disclosed holdings
- 03Comparing catalyst reliability and durability
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ yan-labs/ trump-truthsocial-catalyst --skill trump-truthsocial-catalystAfter installing, type/trump-truthsocial-catalystin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
README.md.gitignoreskills.sh.jsondata/sync_state.jsonreferences/maintenance.mdholdings-watchlist.mdtheme-ticker-map.mdmethodology.mdx-source-notes.mdtrack-record.mdscripts/fetch_x.pypublic_x_profile.pytests/test_public_x_profile.pyDetails
From the project READMETrump Truth Social Catalyst Lens
A reusable lens for turning Donald Trump's public Truth Social posts, @realDonaldTrump X posts, and his own disclosed stock holdings into a short list of US stocks/sectors likely to move, with an honest read on how reliably each pattern actually pumps a stock. Built to be paired with a periodic timer that re-fetches and re-scores, accumulating a real hit-rate over time.
Decision-support lens, NOT financial advice and NOT an auto-trader. This only analyzes publicly available posts and public financial disclosures to anticipate market reactions. It never places, cancels, or sizes orders. Always confirm current price/news yourself — these moves are fast, often fade, and several are pump-and-fade traps (see
references/track-record.md).
STEP 0 — ALWAYS REFRESH FIRST (this skill is useless on stale data)
Two things go stale: the skill itself (the ledger / holdings / calibration in
references/ are grown by a periodic timer and pushed to GitHub) and the posts
(Trump posts many times a day; a market-moving one can be minutes old, and there
is no local post archive). Refresh both, in order, before doing anything else:
# 0a. Pull the latest version of this skill (updated ledger, holdings, calibration).
# Best-effort: auto-detects project vs global scope. If it fails, keep going.
skills update trump-truthsocial-catalyst -y
# 0b. Fetch the primary Truth Social archive: text + timestamps + permalinks.
# trumpstruth.org is a third-party archive; keep its numeric archive ids as
# the canonical ids for the existing ledger.
curl -sS --fail-with-body --retry 2 --retry-delay 1 --retry-connrefused -A "Mozilla/5.0" "https://www.trumpstruth.org/feed" -o /tmp/trump_feed.xml
# 0b-alt. Fetch an independent Truth Social archive for freshness checks and
# fallback when the primary archive is unavailable.
curl -sS --fail-with-body --retry 2 --retry-delay 1 --retry-connrefused -A "Mozilla/5.0" "https://trump.fm/rss/truth.xml" -o /tmp/trump_alt_feed.xml
# 0c. Fetch the latest @realDonaldTrump X posts.
# The wrapper rejects a successful-but-old xreach timeline and tries an
# RSS-Bridge Atom timeline, then parses exact ids, text, and created_at_ms
# from the public X profile HTML and uses Jina only for profile gaps. It
# does not require browser cookies or login state.
python3 scripts/fetch_x.py --state data/sync_state.json > /tmp/trump_x.json
Then re-read the refreshed references/*.md (don't rely on a copy you read
before 0a) and parse both Truth feeds (see references/methodology.md for ready
parsers). Use trumpstruth.org for the existing truth:<archive_id> ledger ids;
use trump.fm as an independent freshness check and as a fallback capture source.
The archive ids identify posts but are not a monotonic time cursor: sort by
parsed publication time and use last_update_time as the watermark, with the
post id only as a dedupe key/tie-breaker. Compare the newest post timestamp and,
when available, the official Truth platform id. If both feeds agree, an
unchanged newest post is a confirmed no_new_posts result, not a fetch failure.
If they disagree, mark the primary as stale and preserve both source
observations; do not advance the primary cursor from an unverified guess. When
a fallback-only item must be logged, use truthsocial:<platform_id> plus its
canonical Truth permalink and cross-dedupe it against a later
truth:<archive_id> by normalized text and time.
For X, fetch_x.py reports available for a fresh direct timeline,
available_fallback for a newer post verified through RSS-Bridge or the public
X profile HTML/Jina path,
verified_no_new_posts when the public profile HTML, Jina, or an authenticated browser profile confirms
that the visible top post has not changed, stale_unverified with
freshness: exact_status_only when
FxTwitter/VxTwitter can only re-check the saved status, and plain
stale_unverified when no public path responds. The fallback is a
freshness/latest-post check, not a complete historical timeline; never advance
last_tweet_id from an old direct response or an exact-status-only result. If 0a fails, proceed on the cached
skill but note it may be stale; if a source fails (offline / 403 / site down),
say so explicitly and use the other Truth feed plus whatever the user pasted —
never pretend you have fresh data. The official truthsocial.com page/API
remains a browser-or-login fallback only when the Cloudflare challenge can be
legitimately completed; do not substitute an unverified HTML mirror.
What this lens is for
Trump's posts move stocks through a few repeatable mechanisms: he names a company favorably, announces or hints at policy he controls (tariffs, contracts, executive orders), or champions a theme (crypto, energy, AI infrastructure, defense, reshoring). The edge is recognizing which features of a post reliably pump a stock versus which produce a one-day spike that fades — and cross-referencing against what he personally owns, because "he owns it → he boosts it → a government tailwind follows" is his single most repeatable money-making pattern (the Dell playbook).
This is explicitly a short-horizon catalyst lens, not a fundamentals lens. The biggest caveat in the whole skill: his posts can pump a stock that is a terrible long-term hold — his own DJT is down ~77% from its 2024 high and his memecoins are down 97–99%, yet they still spike when he posts. Separate "will it pop this week" from "is it a good investment."
How the reference files are organized
Read progressively — pull in only what the task needs.
| File | What it is | Read it when |
|---|---|---|
references/methodology.md | The tiered "what reliably pumps a stock" playbook: Tier 1–3 patterns, amplifier features, anti-patterns, durability, a per-post classification checklist, and Truth Social / X fetch-parse recipes | Classifying any post, or judging how strong a signal is |
references/theme-ticker-map.md | Trump's recurring themes → the tickers/sectors that typically react | Mapping a topic (tariffs, crypto, energy, AI infra, defense…) to tradable names |
references/holdings-watchlist.md | Companies Trump's trust disclosed buying in 2026 + his personal/family holdings, flagged for "not-yet-popped" breakout potential; includes the official OGE search/API source for updates | Building a watchlist, or asking "what does he own / what might pop next" |
references/track-record.md | The accumulating hit-rate ledger (seeded with documented wins and failures) + a calibration note on what actually has edge | Deciding how much to weight a given pattern; this is what the timer grows |
references/x-source-notes.md | @realDonaldTrump X source behavior, cross-source dedupe notes, and historical X seed candidates | When using or maintaining the X source |
references/maintenance.md | Rules for the periodic timer: fetch → dedupe → classify → log prediction → score outcome → recalibrate | Running or wiring up the scheduled refresh |
Workflows
(a) Read one post (or a batch) for tradable signals
- Refresh (Step 0). Identify the newest Truth Social and X posts; dedupe
against anything already in
references/track-record.mdby source id and cross-source normalized text/time. - For each post, run the classification checklist in
references/methodology.md: is it market-relevant? Which Tier (1 named-stock / 2 policy-sector / 3 macro)? Which amplifier features are present (named public company, explicit "BUY", policy he controls, he personally owns it, posted intraday, repeated)? - Map topic → candidate tickers via
references/theme-ticker-map.md, and checkreferences/holdings-watchlist.mdfor an ownership overlap (raises conviction). - Output, per signal: the post (date + permalink), the implicated ticker(s), direction, a reliability tier, expected magnitude & durability (intraday-fade vs. can-hold), and what would invalidate it.
- Weight using
references/track-record.md— favor patterns with a real accumulated hit-rate over plausible-sounding one-offs. Always frame as analysis, never as an order.
(b) Build / refresh a Trump-catalyst watchlist
- Pull his disclosed holdings from
references/holdings-watchlist.md. If the question depends on freshness, check the OGE source listed there for newerTrump, Donald J278-T PDFs before treating the watchlist as current. - Bucket: already popped (Dell-style, catalyst spent) vs. owns-but-quiet (breakout candidates if the Dell template repeats: ownership + an admin tailwind like a contract, tariff carve-out, or public praise).
- For each quiet name, note the specific catalyst that would trigger it and a rough 1–2 month watch window. Keep it advisory.
(c) Judge a single "will this pump X?" question
- Refresh, find the relevant post(s).
- Score the pattern against
references/methodology.mdtiers + amplifiers and the historical analogs inreferences/track-record.md. - Give a calibrated answer: likely direction, reliability, magnitude, durability, and the honest base-rate (e.g., "named-company endorsements pop reliably intraday; crypto-reserve posts spike then fade next day").
Risk & disclaimer framing (state this when giving any view)
- Short-horizon catalyst, not a thesis. A pop is not a reason to hold. His own assets (DJT, $TRUMP, $MELANIA) show posts can pump structurally weak names.
- Many signals fade fast. Crypto-reserve and tariff-relief posts often spike for a day and give it back; size and timing matter, and this skill does not set either — the user does.
- Conflict-of-interest is a feature of the data, not an endorsement. He has bought stocks (Dell, Palantir, Nvidia, media names) that his administration then affected. We note the overlap as a signal, while flagging the obvious manipulation/legal scrutiny around it. Do not act illegally on it.
- Disclosures are ranges and self-reported. Holding figures come from OGE periodic transaction reports (dollar ranges, not exact amounts) and may lag.
- This is a lens, not a signal feed. It surfaces better questions about a Trump headline. It is NOT auto-trading, NOT a recommendation, NOT financial advice. Every order is the reader's own manual, confirmed decision.