Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when monitoring or interpreting Donald Trump's Truth Social posts for market-moving events — tariff announcements, sanctions, deals with countries (China / Mexico / Canada / EU / Japan / Korea / Taiwan), specific company / CEO mentions, Fed pressure, energy / oil commentary, crypto policy, or geopolitical escalation. Triggers on "trump 发了什么", "check trump", "trump 关税", "盘前 trump 推", "trump truth social", "trump tweet impact", "trump 对 X 说了什么", or whenever a pre-market gap / intraday spike on
.claude/skills/kansoku-trade-trump-truth-monitor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 104% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 270% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 131% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 72% | 0% |
Pulls Donald Trump's Truth Social feed via the trumpstruth.org RSS mirror, classifies posts into market-relevant topic buckets, and hands the candidate list off for LLM-level market-impact grading.
stock-deep-dive for a name with policy exposure (TSM, NVDA, AAPL, F, GM, XOM, BAC, RTX, LMT)market-session-tracker pre-market protocol — add a Trump-feed passIf the user wants tweet history beyond ~5 days, this skill is insufficient — the RSS mirror only exposes the latest ~100 posts. Route to Factba.se / Roll Call (paid) or note the limitation explicitly.
trumpstruth.org/feed — a public third-party mirror of @realDonaldTrump on Truth Social. RSS 2.0 XML with these fields per item:
| Field | Meaning | | --------------------- | -------------------------------------------------------------------- | | <pubDate> | RFC 2822, original Truth Social post timestamp | | <link> | trumpstruth.org/statuses/{mirror_id} | | <truth:originalUrl> | truthsocial.com/@realDonaldTrump/{truth_id} — the primary source | | <description> | Full post body with HTML (links + ellipsis spans) |
The mirror typically lags the original by ≤2 minutes. Single feed pull returns ~100 most recent posts, covering ~5 days at Trump's typical cadence.
fetch.pybash# Default: last 24h, keyword-filtered, markdown python3 .claude/skills/trump-truth-monitor/scripts/fetch.py # Wider window python3 .claude/skills/trump-truth-monitor/scripts/fetch.py --hours 72 # All posts in feed regardless of keyword python3 .claude/skills/trump-truth-monitor/scripts/fetch.py --hours 72 --all # Single topic python3 .claude/skills/trump-truth-monitor/scripts/fetch.py --topic tariff_trade # JSON output (for chaining) python3 .claude/skills/trump-truth-monitor/scripts/fetch.py --json
Topic buckets defined in script: tariff_trade, semi_tech, energy, fed_macro, crypto, geopolitical.
archive.pybash# Append new posts to journal/trump-feed/YYYY-MM-DD.md (idempotent) python3 .claude/skills/trump-truth-monitor/scripts/archive.py # Custom output dir python3 .claude/skills/trump-truth-monitor/scripts/archive.py --out /path/to/dir # Silent unless something new was added python3 .claude/skills/trump-truth-monitor/scripts/archive.py --quiet
The archive de-dupes by mirror status_id — re-running on the same feed is a no-op. Designed to be scheduled (see launchd/README.md). Once archived, posts persist locally even if trumpstruth.org goes down.
--all when context-grazing.--topic. If user names a domain (关税 / 半导体 / 油 / 加密) → pass --topic.fetch.py with chosen flags. Always include --hours — never default to "all of feed" silently.high / med / low / noisetruth:originalUrl (the truthsocial.com link), not the mirror.# Trump's Truth — {WINDOW}
## High-impact (potential market mover)
- [{utc_time}] {one-line summary} — `tier: high` · {topic tags}
> "{verbatim short quote ≤2 sentences}"
- Original: {truthsocial.com URL}
- Possible market read: {sector / ticker level expectation, anchored}
## Medium-impact (directional, no specifics)
- [{utc_time}] {one-line summary}
- Original: {URL}
## Noise (matched keyword, low signal)
- {N} posts ({topic distribution}) — endorsements / personal — not enumerated
⚠ Trump may delete or contradict within hours. Position decisions should require independent confirmation (sector ETF tape, peer reaction, official release).| Mistake | Reality | | ---------------------------------------------- | ---------------------------------------------------------------------------------------------- | | Treating script output as "market signal" | Script is a keyword filter. LLM must read each post and tier. | | Quoting a mirror URL as the source | Always link truth:originalUrl (truthsocial.com). Mirror is a convenience. | | Reporting Senate endorsements as "policy news" | Politics-only posts with military / energy keywords are noise — filter at tier=noise. | | "Trump said X about Y" with no link | Always include the truthsocial.com link. User must be able to verify. | | Pretending tweets are durable | Trump posts can be deleted or retracted within hours. If consulted >12h after, note staleness. |
market-session-tracker pre-market protocol: insert a Trump-feed --hours 14 pull as step 0 (covers post-prev-close to pre-market). If high-tier post exists touching watchlist sectors, escalate to the explanation slot for any gap.stock-deep-dive lens 4 (Catalysts): when the symbol has policy exposure (semis / China ADR / auto / energy / defense / bank), run a Trump-feed --hours 168 and surface high-tier hits.gdelt can confirm market has already picked the post up (i.e. major outlets are reporting it). Trump feed = original; GDELT = market-validated.fetch.py fails — but the archived posts under journal/trump-feed/ remain readable.archive.py (see launchd/) to grow a permanent local record.Once archive.py has been running, journal/trump-feed/YYYY-MM-DD.md accumulates a complete record. To investigate a past day or query historically:
bash# All tariff-related posts ever archived grep -l "tariff" journal/trump-feed/*.md # Specific company mention grep -B2 -A8 -i "nvidia\|tsmc" journal/trump-feed/*.md # Posts on a specific date cat journal/trump-feed/2026-05-26.md
The archive is plain markdown — grep-friendly, git-trackable.
gdelt — market-validated news coverage of a Trump poststock-deep-dive — caller for catalyst-lens enrichmentmarket-session-tracker — caller for pre-market protocolsec-edgar — confirm whether a tweet translates into an actual filing (rare but does happen for trade-policy items affecting specific companies)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-15 | fail→pass | 17,703 | 4,502 | -75% | 1 | 1 | 0% | 3,430 | 2,940 | -14% | 0 | 0 | — |
case-20 | fail→pass | 9,113 | 3,953 | -57% | 1 | 1 | 0% | 1,412 | 2,880 | +104% | 0 | 0 | — |
case-01 | fail→fail | 7,314 | 9,972 | +36% | 1 | 1 | 0% | 1,135 | 2,447 | +116% | 0 | 0 | — |
case-02 | fail→fail | 14,694 | 5,640 | -62% | 1 | 1 | 0% | 2,162 | 2,453 | +13% | 0 | 0 | — |
case-03 | fail→fail | 6,941 | 5,515 | -21% | 1 | 1 | 0% | 1,032 | 2,424 | +135% | 0 | 0 | — |
case-04 | fail→fail | 6,046 | 10,885 | +80% | 1 | 1 | 0% | 823 | 2,461 | +199% | 0 | 0 | — |
case-05 | fail→pass | 7,139 | 15,111 | +112% | 1 | 1 | 0% | 1,079 | 3,996 | +270% | 0 | 0 | — |
case-06 | fail→fail | 4,892 | 10,836 | +122% | 1 | 1 | 0% | 746 | 3,538 | +374% | 0 | 0 | — |
case-07 | fail→pass | 8,441 | 6,368 | -25% | 1 | 1 | 0% | 1,379 | 3,189 | +131% | 0 | 0 | — |
case-08 | fail→fail | 3,754 | 6,034 | +61% | 1 | 1 | 0% | 531 | 2,430 | +358% | 0 | 0 | — |
case-09 | fail→fail | 6,969 | 5,403 | -22% | 1 | 1 | 0% | 1,051 | 2,398 | +128% | 0 | 0 | — |
case-10 | pass→pass | 11,796 | 5,247 | -56% | 1 | 1 | 0% | 1,857 | 2,568 | +38% | 0 | 0 | — |
case-11 | fail→pass | 10,340 | 4,724 | -54% | 1 | 1 | 0% | 1,741 | 2,994 | +72% | 0 | 0 | — |
case-12 | pass→pass | 8,772 | 5,222 | -40% | 1 | 1 | 0% | 1,324 | 2,994 | +126% | 0 | 0 | — |
case-13 | pass→pass | 8,920 | 3,787 | -58% | 1 | 1 | 0% | 1,119 | 2,788 | +149% | 0 | 0 | — |
case-14 | pass→pass | 6,287 | 2,138 | -66% | 1 | 1 | 0% | 1,039 | 2,465 | +137% | 0 | 0 | — |
case-16 | fail→pass | 9,313 | 2,812 | -70% | 1 | 1 | 0% | 1,674 | 2,586 | +54% | 0 | 0 | — |
case-17 | pass→pass | 5,575 | 3,624 | -35% | 1 | 1 | 0% | 1,043 | 2,674 | +156% | 0 | 0 | — |
case-18 | fail→pass | 16,280 | 4,777 | -71% | 1 | 1 | 0% | 2,585 | 2,946 | +14% | 0 | 0 | — |
case-19 | fail→pass | 15,671 | 5,487 | -65% | 1 | 1 | 0% | 2,487 | 3,009 | +21% | 0 | 0 | — |
case-21 | pass→pass | 7,964 | 1,965 | -75% | 1 | 1 | 0% | 1,003 | 2,431 | +142% | 0 | 0 | — |
case-22 | pass→pass | 10,204 | 3,907 | -62% | 1 | 1 | 0% | 1,529 | 2,812 | +84% | 0 | 0 | — |
case-23 | fail→pass | 5,220 | 2,246 | -57% | 1 | 1 | 0% | 837 | 2,528 | +202% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 16 counted toward the lift figure. The other 7 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +39 percentage points is the difference between those two pass rates over the 16 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.