ct-alpha — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ct-alpha (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Turn X/Twitter into an actionable crypto intelligence layer. Search CT for narratives, alpha, strategies, and sentiment, then rank results using TweetRank (a PageRank-inspired credibility scoring system), extract tokens/CAs from multiple signals, detect coordinated raids, and suggest execution steps using available tools.
# Clone the skill
git clone https://github.com/yashhsm/skills.git
cd skills/skills/ct-alpha
# Run the installer (configures token, watchlist, cache)
bun run install.ts# Set your X API Bearer Token
export X_BEARER_TOKEN="your_token_here"
# Or save to persistent env file
mkdir -p ~/.config/env
echo 'export X_BEARER_TOKEN="your_token_here"' >> ~/.config/env/global.env
source ~/.config/env/global.env# Search for alpha on a token
bun run ct-search.ts search "$SOL alpha" --quick
# Detect trending tokens
bun run ct-search.ts trending --window 6h --solana-only
# Monitor watchlist accounts
bun run ct-search.ts watchlist --since 24h
# Read a specific tweet or article
bun run ct-search.ts read https://x.com/user/status/123456
# Check API spending
bun run ct-search.ts costbun run ct-search.ts search "<query>" [flags]| Flag | Description | Default |
|---|---|---|
--quick | 20 tweets, 1hr cache, ~$0.10 | Default mode |
--full | Up to 100 tweets, 15min cache, ~$0.50 | Confirm cost first |
--limit N | Max total tweets | 20 (quick), 100 (full) |
--sort <field> | likes, recency, relevancy | relevancy |
--since <duration> | 1h, 6h, 24h, 7d | 24h |
--min-likes N | Engagement filter | 3 (quick) |
--from user1,user2 | Restrict to specific accounts | — |
--extract-tickers | Show extracted tickers | — |
--extract-cas | Show contract addresses and crypto URLs | — |
--raw | JSON output | — |
bun run ct-search.ts trending [flags]| Flag | Description | Default |
|---|---|---|
--window <duration> | 1h, 6h, 24h | 6h |
--min-mentions N | Minimum mention count | 3 |
--solana-only | Solana ecosystem only | — |
--top N | Top N results | 20 |
bun run ct-search.ts watchlist [flags]| Flag | Description | Default |
|---|---|---|
--category <cat> | Filter by category | all |
--since <duration> | Time window | 24h |
bun run ct-search.ts read <tweet_url_or_id> [--thread] [--raw]Accepts x.com URLs, twitter.com URLs, or raw tweet IDs. Articles (long-form posts) are fetched in full.
bun run ct-search.ts thread <tweet_id>bun run ct-search.ts cost [--reset]Every tweet is scored by three factors multiplied together:
1 / (1 + hoursAgo / 24) — newer tweets score higher.TweetRank = AuthorCred × EngagementQuality × RecencyBoostEach tweet receives a source label:
[WATCHLIST] — Author is on your watchlist (highest trust)[HIGH-CRED] — AuthorCred ≥ 5[UNKNOWN] — Unverified author[SUSPICIOUS] — Bot-like patterns detectedCashtag-only detection misses how tokens actually spread on CT. This extracts from four signal types:
| Signal | Example | Confidence |
|---|---|---|
| Cashtag | $SOL, $JTO | High |
| Name-phrase | "pendle" + crypto context | High/Medium |
| Crypto URL | pump.fun, dexscreener, birdeye, jup.ag | High |
| Contract Address | Base58 (Solana) / 0x (Ethereum) with context | High/Low |
Supported crypto URL domains: pump.fun, dexscreener.com, birdeye.so, jup.ag, raydium.io, solscan.io, etherscan.io.
Detects coordinated pump campaigns by analyzing author credibility distribution per ticker:
Every search auto-appends crypto noise filters:
-is:retweet (removes retweets)-"airdrop", -"giveaway", -"whitelist" (spam removal)-"follow and RT", -"follow & RT", -"free mint", -"dm to claim" (engagement bait)-is:replyAggressive caching prevents redundant API calls:
| Cache Type | TTL | Use Case |
|---|---|---|
| Quick search | 1 hour | Default searches |
| Full search | 15 minutes | Deep dives |
| Thread | 2 hours | Conversation threads |
| Profile | 24 hours | User lookups |
| Watchlist | 4 hours | Account monitoring |
Cache is file-based (JSON) with auto-pruning on startup (24h hard limit).
Follow this 6-step loop for every research request:
Break the user's question into 1-3 targeted search queries.
$TICKER and plain name with ORBefore any API call:
Execute with --quick mode first (always):
bun run ct-search.ts search "$TOKEN alpha" --quick --extract-tickersAnalyze TweetRank scores and trust labels. Look for extracted tickers, contract addresses, and crypto URLs.
bun run ct-search.ts thread <id>--from author1,author2--full only if quick was insufficientCombine findings into actionable intelligence:
The query argument supports X API v2 operators:
| Operator | Example | Description |
|---|---|---|
| keyword | solana alpha | Both words |
"exact" | "yield strategy" | Exact phrase |
OR | $SOL OR solana | Either term |
- | -airdrop | Exclude term |
from: | from:username | Tweets by user |
has:links | has:links | Tweets with URLs |
lang: | lang:en | Language filter |
$ | $SOL | Cashtag |
Do NOT use these v1.1 operators (they cause 400 errors on v2 pay-per-use):
min_faves:N, min_retweets:N — use --min-likes CLI flag insteadplace:, bio:, sample: — not available on v2Do NOT manually include noise filters in the query — the CLI auto-appends them.
After completing research, suggest execution steps using available MCP tools:
| Tool Prefix | Use Case | Example |
|---|---|---|
mcp__defillama__* | TVL, yields, fees, prices | get_protocol_tvl("pendle") |
mcp__backpack__* | Exchange price, depth, trades | backpack_get_ticker("SOL_USDC") |
mcp__polymarket__* | Prediction markets | search_polymarket("solana ETF") |
mcp__coingecko__* | Token data, market charts | get_id_coins("solana") |
Always frame suggestions as "verify" not "confirm" — encourage skepticism about CT alpha.
--limit if 20 results are genuinely insufficient.--full mode.cost command to monitor API usage~/.config/env/global.env — ensure proper file permissionsct-alpha/
├── SKILL.md # This file — agent instructions
├── ct-search.ts # Main CLI entry point
├── setup.ts # Interactive setup script
├── install.ts # Full installer
├── lib/
│ ├── api.ts # X API v2 integration, pagination, caching
│ ├── extract.ts # Multi-signal token extraction
│ ├── tweetrank.ts # TweetRank scoring and raid detection
│ ├── format.ts # Output formatting with trust labels
│ ├── cache.ts # File-based caching layer
│ ├── cost.ts # API cost tracking
│ └── filters.ts # Noise filtering, engagement filtering
├── resources/
│ ├── x-api.md # X API v2 reference
│ ├── query-templates.md # Pre-built search patterns
│ └── tool-discovery.md # Dynamic tool suggestion map
├── data/
│ ├── known-tokens.json # Token name → ticker mappings
│ └── watchlist.default.json # Default watchlist categories
└── examples/
└── basic-search.ts # Quick start example~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.