token-movers

Installation
SKILL.md

${var} — selects the scan. Two behavioral modes (movers, single-token) over two sources (coingecko, geckoterminal):

  • empty → movers scan on the default source (CoinGecko): top winners, losers, trending.
  • coingecko → same movers scan, CoinGecko source (explicit).
  • geckoterminal → movers scan on GeckoTerminal: on-chain "runners" across major chains.
  • geckoterminal:<chain> or a bare chain slug (solana, eth, ethereum, base, bsc, arbitrum, polygon, optimism, avalanche, avax) → GeckoTerminal runners scoped to that one chain.
  • category:<name> (e.g. category:layer-2, category:meme) — or a bare hyphen/space value like layer-2 / meme coins → CoinGecko movers scoped to that category.
  • <contract> or <contract>:<chain> (e.g. 0xabc…, 0xabc…:base) → single-token deep report on that contract.
  • <SYMBOL> (e.g. SOL, WIF) → single-token deep report; resolve the symbol to its top contract first.
  • token / single-token → single-token deep report on the token configured in memory/token-report.md.
  • deep-dive:<symbol|contract> (e.g. deep-dive:WIF, deep-dive:0xabc…:base) → single-token deep report — the shape the Telegram force-reply sends. Strips the deep-dive: prefix and resolves the remainder exactly like a bare symbol/contract.

Examples: "" (global movers), geckoterminal:base (Base runners), category:layer-2 (L2 movers), 0x4ed…:base or WIF (single-token report).

Preamble (every run)

  1. Read memory/MEMORY.md for context.
  2. Read the last 2 days of memory/logs/ to avoid repeating the same movers/trending/runner names unless the move is materially different — repeat runners across days are the real signal. (The single-token branch reads the last 30 days for its TOKEN_REPORT_STATE: delta lines — see that branch.)
  3. Parse ${var}source + mode (+ optional token/chain/category). Trim whitespace; evaluate the rules top-to-bottom, first match wins (fully deterministic):
Installs
8
Repository
aeonfun/aeon
GitHub Stars
715
First Seen
Aug 20, 2026
token-movers — aeonfun/aeon