Digital Oracle
komako-workshop/digital-oracle
Answer prediction questions using market trading data, not opinions.
Monitor Polymarket and/or Kalshi prediction markets for 24h price moves, volume changes, fresh comments, and high-conviction alerts
$ npx skills add aeonfun/aeon --skill monitor-polymarket -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install aeonfun/aeon monitor-polymarket --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/aeonfun/aeon.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/monitor-polymarket .claude/skills/monitor-polymarket && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "monitor-polymarket" agent skill from https://github.com/aeonfun/aeon/tree/main/skills/monitor-polymarket into .claude/skills/monitor-polymarket/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monitor-polymarket", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/aeonfun/aeon/tree/main/skills/monitor-polymarketType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add aeonfun/aeon --skill monitor-polymarket -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install aeonfun/aeon monitor-polymarket --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aeonfun/aeon.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/monitor-polymarket .agents/skills/monitor-polymarket && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "monitor-polymarket" agent skill from https://github.com/aeonfun/aeon/tree/main/skills/monitor-polymarket into .agents/skills/monitor-polymarket/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monitor-polymarket", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aeonfun/aeon --skill monitor-polymarket -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install aeonfun/aeon monitor-polymarket --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aeonfun/aeon.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/monitor-polymarket .cursor/skills/monitor-polymarket && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "monitor-polymarket" agent skill from https://github.com/aeonfun/aeon/tree/main/skills/monitor-polymarket into .cursor/skills/monitor-polymarket/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monitor-polymarket", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/aeonfun/aeon.git --path skills/monitor-polymarket--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add aeonfun/aeon --skill monitor-polymarket -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install aeonfun/aeon monitor-polymarket --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aeonfun/aeon.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/monitor-polymarket .gemini/skills/monitor-polymarket && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "monitor-polymarket" agent skill from https://github.com/aeonfun/aeon/tree/main/skills/monitor-polymarket into .gemini/skills/monitor-polymarket/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monitor-polymarket", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install aeonfun/aeon monitor-polymarketInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add aeonfun/aeon --skill monitor-polymarket -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/aeonfun/aeon.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/monitor-polymarket .github/skills/monitor-polymarket && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "monitor-polymarket" agent skill from https://github.com/aeonfun/aeon/tree/main/skills/monitor-polymarket into .github/skills/monitor-polymarket/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monitor-polymarket", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aeonfun/aeon --skill monitor-polymarket -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install aeonfun/aeon monitor-polymarket --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aeonfun/aeon.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/monitor-polymarket .opencode/skills/monitor-polymarket && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "monitor-polymarket" agent skill from https://github.com/aeonfun/aeon/tree/main/skills/monitor-polymarket into .opencode/skills/monitor-polymarket/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monitor-polymarket", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
monitor-polymarketMonitor Polymarket and/or Kalshi prediction markets for 24h price moves, volume changes, fresh comments, and high-conviction alerts
Monitor Polymarket is an agent skill from aeonfun/aeon. Monitor Polymarket and/or Kalshi prediction markets for 24h price moves, volume changes, fresh comments, and high-conviction alerts
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `watchlist-kalshi.md` and `watchlist-polymarket.md`).
It sits in Business, Finance & HR. It works with Polymarket and Kalshi. The repository describes itself as: The most autonomous AI agent framework: runs unattended on GitHub Actions, self-healing skills, drives Claude Code, Grok, Codex & more. No approval loops. Configure once, forget… The licence is MIT.
Read from SKILL.md and the folder at commit c0cb7c4. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curljqFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.elections.kalshi.comgamma-api.polymarket.comclob.polymarket.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Monitor Polymarket loads about 4.4k tokens when it runs. Until then it costs about 38 tokens; SKILL.md has 1,620 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from aeonfun/aeon at commit c0cb7c4, republished under its MIT licence (© aeonfun). 1,620 words, ~4,361 tokens.
.claude/skills/monitor-polymarket/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.${var} — Platform selector with an optional single-market override:
- empty (
"") — run both platforms from their watchlists.polymarket— run Polymarket's whole watchlist (skills/monitor-polymarket/watchlist-polymarket.md).kalshi— run Kalshi's whole watchlist (skills/monitor-polymarket/watchlist-kalshi.md).polymarket:<event-slug>— one ad-hoc Polymarket event (e.g.polymarket:us-x-iran-ceasefire-by).kalshi:<event-ticker>— one ad-hoc Kalshi event (e.g.kalshi:KXGDP-26Q2).
Read memory/MEMORY.md for context.
Read the last 2 days of memory/logs/ to compare against previous readings and flag new movers (not repeats of yesterday's news).
A table of prices isn't useful. An operator reading this notification wants to answer: "is there a market worth forming a view on right now, and why?" Every rule below exists to push output toward that question — suppress noise, rank by decision value, and demand one line of reasoning per alert. This skill covers two venues — Polymarket (crypto-native, CLOB + comments) and Kalshi (regulated, liquidity-weighted signals) — and dispatches to the branch(es) the selector asks for.
Parse ${var} into a platform choice and an optional single-market override, then run the matching branch(es).
PLATFORM="both" # both | polymarket | kalshi
SINGLE="" # optional single event slug (Polymarket) or ticker (Kalshi)
case "${var}" in
"") PLATFORM="both" ;;
polymarket) PLATFORM="polymarket" ;;
kalshi) PLATFORM="kalshi" ;;
polymarket:*) PLATFORM="polymarket"; SINGLE="${var#polymarket:}" ;;
kalshi:*) PLATFORM="kalshi"; SINGLE="${var#kalshi:}" ;;
*) # unrecognised prefix — don't guess a venue; fall back to both watchlists
PLATFORM="both"; SINGLE=""
echo "unrecognised selector '${var}' — running both watchlists" ;;
esacPLATFORM=both → run the Polymarket branch and the Kalshi branch, each from its own watchlist, then emit a combined notification.PLATFORM=polymarket → run only the Polymarket branch (whole watchlist, or SINGLE if set).PLATFORM=kalshi → run only the Kalshi branch (whole watchlist, or SINGLE if set).Each branch below is independently executable — skip the one(s) the selector didn't ask for.
Data source: Polymarket gamma-api (events, comments) + clob (price history). All endpoints are public — no auth.
Watchlist: skills/monitor-polymarket/watchlist-polymarket.md. Each line is an event slug; add or remove slugs to change what's monitored.
if [ -n "$SINGLE" ]; then
SLUGS="$SINGLE"
else
# One slug per line, skip comments and blanks
SLUGS=$(grep -v '^#' skills/monitor-polymarket/watchlist-polymarket.md | grep -v '^$')
fiIf the watchlist is empty and no single slug was given, there's nothing to do on Polymarket — note it and move on (don't fabricate a report).
For each event slug in $SLUGS:
a) Get the event and its markets:
curl -s "https://gamma-api.polymarket.com/events?slug=$SLUG&limit=1"The response contains the event id, title, and a markets array. Each market has:
id, question, slug, closedoutcomePrices — JSON array, index 0 = YES price (0.0–1.0)volume24hr, volumeNum, liquidityNumclobTokenIds — JSON array, index 0 = YES token, index 1 = NO tokenSkip closed markets — they've already resolved.
b) Get 24h price history for each open market:
# YES token is index 0 of clobTokenIds
TOKEN_ID=$(echo "$CLOB_TOKEN_IDS" | jq -r '.[0]') # jq, not python3: python3 is not in the read-only tool allowlist
curl -s "https://clob.polymarket.com/prices-history?market=$TOKEN_ID&interval=1d&fidelity=60"Response: { "history": [{ "t": unix_timestamp, "p": "price_string" }, ...] }
c) Calculate 24h stats for each market:
volume24hr from the market dataFor each event, get top comments and latest comments:
EVENT_ID=... # from step P2a
# Top comments by reactions
curl -s "https://gamma-api.polymarket.com/comments?parent_entity_type=Event&parent_entity_id=$EVENT_ID&limit=10&order=reactionCount&ascending=false"
# Latest comments (last 24h chatter)
curl -s "https://gamma-api.polymarket.com/comments?parent_entity_type=Event&parent_entity_id=$EVENT_ID&limit=10&order=createdAt&ascending=false"Important: parent_entity_type must be Event (capital E).
Each comment has: body, profile.username (often null → use "anon"), reactionCount, createdAt.
From the combined results, pick the 3 most interesting comments per event:
For each event, produce a summary block:
**[Event Title]** (event_id: N)
| Market | YES | 24h Chg | High/Low | 24h Vol |
|--------|-----|---------|----------|---------|
| [question] | XX.X% | +X.Xpp ▲ | XX–XX% | $X.Xm |
| [question] | XX.X% | -X.Xpp ▼ | XX–XX% | $X.Xm |
...
Biggest mover: "[question]" — [direction] from X% to Y%
Comments:
- [user/anon]: "[comment excerpt]" (X upvotes)
- [user/anon]: "[comment excerpt]"
- [user/anon]: "[comment excerpt]"Flag any market that moved more than 5 percentage points in 24h — these are the ones worth paying attention to.
curl works — there is no network sandbox. Use WebFetch as a fallback for a flaky public GET:
WebFetch("https://gamma-api.polymarket.com/events?slug=SLUG&limit=1")WebFetch("https://clob.polymarket.com/prices-history?market=TOKEN_ID&interval=1d&fidelity=60")WebFetch("https://gamma-api.polymarket.com/comments?parent_entity_type=Event&parent_entity_id=EVENT_ID&limit=10&order=reactionCount&ascending=false")Data source: Kalshi trade-api v2 at https://api.elections.kalshi.com/trade-api/v2. Despite the "elections" subdomain, this provides access to ALL Kalshi markets (economics, climate, tech, politics, etc.). All endpoints are public — no auth required.
Watchlist: skills/monitor-polymarket/watchlist-kalshi.md. Each line is an event ticker; add or remove tickers to change what's monitored.
if [ -n "$SINGLE" ]; then
TICKERS="$SINGLE"
else
TICKERS=$(grep -v '^#' skills/monitor-polymarket/watchlist-kalshi.md | grep -v '^$')
fiIf the watchlist is empty and no single ticker was given, emit MONITOR_KALSHI_NO_CONFIG, notify with a one-line setup hint, and discover trending events for this run only:
curl -s "https://api.elections.kalshi.com/trade-api/v2/events?status=open&with_nested_markets=true&limit=10"Pick the 5 highest-volume events and monitor those.
For each event ticker:
a) Event + markets:
curl -s "https://api.elections.kalshi.com/trade-api/v2/events/$EVENT_TICKER?with_nested_markets=true"Fields used: event_ticker, title, category, mutually_exclusive, markets[] with ticker, title, subtitle, status, yes_bid, yes_ask, last_price, volume, volume_24h, open_interest, close_time, series_ticker.
Skip non-open markets (closed/settled are historical).
b) 24h candlesticks (batch where possible): Prefer the batch endpoint — one call per event, not per market:
END_TS=$(date -u +%s)
START_TS=$((END_TS - 86400))
# Batch: up to 10,000 candlesticks total across requested tickers
curl -s "https://api.elections.kalshi.com/trade-api/v2/markets/candlesticks?tickers=$COMMA_SEP_MARKET_TICKERS&start_ts=$START_TS&end_ts=$END_TS&period_interval=60"If the batch endpoint errors, fall back to the per-market endpoint:
curl -s "https://api.elections.kalshi.com/trade-api/v2/series/$SERIES_TICKER/markets/$MARKET_TICKER/candlesticks?start_ts=$START_TS&end_ts=$END_TS&period_interval=60"If both fail for a market, mark its source as SRC=price_only and use last_price vs yesterday's log entry.
c) Orderbook depth (liquidity / conviction signal):
curl -s "https://api.elections.kalshi.com/trade-api/v2/markets/$MARKET_TICKER/orderbook?depth=10"From the orderbook, compute:
spread_pp = yes_ask − yes_bid in percentage points. Wide spread = low conviction, thin book.depth_usd = sum over top-10 bid levels of price × size (approximation, both sides). This scales how much weight to give a price.If orderbook fails, mark SRC=no_book and skip the conviction column for that market.
For each open market:
last_price as a percentage (0.62 → 62%). Report this, not cents.close − open from candlesticks, in percentage points.volume_24h × avg(open, close) (Kalshi reports contract count — convert so readers can compare across markets).|chg_pp| × log10(max(vol_24h_usd, 100)). This is the key ranking signal — a 3pp move on a $200k market outranks a 5pp move on a $5k market. It prevents thin-book noise from dominating.Direction label (from chg_pp): surging (>+5pp), rising (+2 to +5), stable (−2 to +2), falling (−5 to −2), crashing (<−5).
Conviction label (from spread_pp): tight (<2pp), loose (2–5pp), thin (>5pp, treat price skeptically).
Before building the report, drop markets that fail ALL of these gates:
|chg_pp| >= 2 AND vol_24h_usd >= $1,000, ORvol_24h_usd >= $25,000 (large volume alone is signal even if price didn't move much), ORopen_interest grew >30% vs yesterday's log, if yesterday's log has the data.If a market appeared in yesterday's log with the same direction and a chg_pp within ±1pp of today's, treat it as "continued from yesterday" and demote it — mention once at the event level, don't re-alert.
Hard alert threshold: |chg_pp| >= 5 AND conviction != thin. These go to the ALERTS block and require a "why it matters" line.
Rank events by the max move_score of any market within them. Cap the report at the top 5 events. Markets within an event are listed in descending move_score order, capped at 3 per event (mention "+N more" if truncated).
*Kalshi monitor — ${today}*
verdict: [1 sentence — dominant theme or "all quiet"]
**[Event Title]** (EVENT_TICKER) — category
| Market | prob | Δ24h | range | vol | spread |
|--------|------|------|-------|-----|--------|
| [title] | 62% | +4.1pp ▲ | 56–65% | $82k | 1pp |
| [title] | 23% | −2.8pp ▼ | 22–28% | $14k | 3pp |
mover: [title] — rising on $82k vol, tight book
[next event ...]
**ALERTS** (moved >5pp on non-thin book)
- [event/market]: 34% → 51% — *why it matters:* [one sentence grounded in the move's volume, spread, or news context if obvious from titles]
- ...
**Trending (not tracked)**
- [event] — $Xk 24h vol, consider adding
- ...
sources: events=ok candlesticks=ok|degraded|fail orderbook=ok|degraded|failRules for the verdict line:
Rules for "why it matters":
curl -s "https://api.elections.kalshi.com/trade-api/v2/events?status=open&with_nested_markets=true&limit=50"Scan for events with high volume_24h (top 10) whose tickers are not in the watchlist. Mention 1–2 in the "Trending (not tracked)" block, only if their 24h volume exceeds the median volume of tracked events.
MONITOR_KALSHI_OK — ran fully, had data, at least one event processed.MONITOR_KALSHI_DEGRADED — partial data (some markets fell back to price_only or no_book); report still sent.MONITOR_KALSHI_NO_CONFIG — empty watchlist and no single ticker; discovered trending events and notified with setup hint.MONITOR_KALSHI_ERROR — events endpoint failed entirely or zero markets resolved; notify with the failure, don't fake a report.curl works — there is no network sandbox. Use WebFetch as a fallback for a flaky public GET:
WebFetch("https://api.elections.kalshi.com/trade-api/v2/events/EVENT_TICKER?with_nested_markets=true")WebFetch("https://api.elections.kalshi.com/trade-api/v2/markets/candlesticks?tickers=...&start_ts=...&end_ts=...&period_interval=60")WebFetch("https://api.elections.kalshi.com/trade-api/v2/markets/MARKET_TICKER/orderbook?depth=10")WebFetch("https://api.elections.kalshi.com/trade-api/v2/events?status=open&with_nested_markets=true&limit=50")Send via ./notify (under 4000 chars). Emit only the section(s) for the branch(es) that ran.
— — — divider, then the Polymarket report (P4). Lead with a one-line cross-venue verdict, e.g. prediction markets — ${today}: [dominant theme across both, or "all quiet both venues"].If the combined report exceeds the budget, trim in this order: (1) drop Kalshi's "Trending (not tracked)" block, (2) truncate Kalshi events from the bottom of the ranked list, (3) drop Polymarket comment lines, (4) truncate Polymarket events from the bottom.
Notify only on signal. If neither branch found anything worth flagging (no >5pp Polymarket moves, no Kalshi alerts, no themes), a one-line "all quiet" is acceptable signal — but a fully empty/no-change run should send nothing. An explicit all quiet — N events tracked, no moves is useful; an empty template is not.
This skill is read-only, so the workflow's read-only guard writes its ### monitor-polymarket log entry from your captured output; a self-written entry would be a duplicate. Don't append to memory/logs/ yourself - put this record in your final output, with a bullet group for each platform that ran:
### monitor-polymarket
- **Platform(s):** both | polymarket | kalshi (selector: `${var}`)
#### Polymarket (only if the Polymarket branch ran)
- **Events monitored:** N
- **Markets tracked:** N (M open, K closed)
- **Biggest mover:** "[question]" — X% → Y% (+/-Zpp)
- **Alert markets (>5pp move):** [list or "none"]
- **Top comment:** "[excerpt]"
#### Kalshi (only if the Kalshi branch ran)
- **Events monitored:** N (watchlist=W, discovered=D)
- **Markets tracked:** N (M open, K skipped)
- **Top mover:** "[title]" — X% → Y% (Δpp, move_score=S, vol=$V, spread=Sp)
- **Alerts (>5pp, non-thin):** [count; list titles or "none"]
- **Continued-from-yesterday (demoted):** [count]
- **Trending untracked:** [1–2 tickers or "none"]
- **Sources:** events=[status] candlesticks=[status] orderbook=[status]
- **Status:** MONITOR_KALSHI_OK | MONITOR_KALSHI_DEGRADED | MONITOR_KALSHI_NO_CONFIG | MONITOR_KALSHI_ERROR
- **Notification sent:** yes | noIf a market moved dramatically — Polymarket >5pp, or Kalshi >10pp on a non-thin book — or a new category/trend is heating up across multiple events, add a one-line note in memory/MEMORY.md (under a "Prediction market signals" section) for future reference.
Both branches only fetch public APIs (mode: read-only), so there are no secret-bearing calls. curl works - there is no network sandbox; use WebFetch as a fallback for a flaky public GET (per-platform endpoint lists are in the Polymarket Network note P5 and the Kalshi Network note K9). Never write to the repo beyond an optional memory/MEMORY.md note (the workflow writes memory/logs/ for you); produce all output via ./notify and your final output.
© aeonfun, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in skills/monitor-polymarket of aeonfun/aeon.
Open the folder on GitHubat commit c0cb7c4
Monitor Polymarket next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Monitor Polymarket this skillaeonfun/aeon | 767 | — | ~4.4k | Automated safety check: Pass | MIT | |
| Digital Oraclekomako-workshop/digital-oracle | 870 | — | ~5.9k | Automated safety check: Pass | MIT | |
| Dr Manhattanguzus/dr-manhattan | 204 | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Polymarket Tennislivetennisapi/livetennisapi-mcp | 152 | — | ~3k | Automated safety check: Pass | MIT | |
| Marketsmachina-sports/sports-skills | 242 | 1 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Feedsalsk1992/CloddsBot | 2.9k | — | ~1.8k | Automated safety check: Pass | MIT |
komako-workshop/digital-oracle
Answer prediction questions using market trading data, not opinions.
guzus/dr-manhattan
Trade prediction markets (Polymarket, Kalshi, Opinion, Limitless, Predict.fun) using a unified CCXT-style API.
livetennisapi/livetennisapi-mcp
Build observe-only Polymarket and Kalshi tennis market tooling on the polymarket-tennis Python package (MIT) plus the Live Tennis API free tier.
machina-sports/sports-skills
Markets orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets.
alsk1992/CloddsBot
Real-time market data feeds from 8 prediction market platforms
alsk1992/CloddsBot
Sync portfolio positions from Polymarket, Kalshi, and Manifold
aeonfun/aeon
Browses open tasks on the TaskMarket agent-worker market and, with explicit operator approval, creates tasks, tracks submissions and submits finished work.
aeonfun/aeon
Sets up and manages an Aeon agent instance that runs skills on a schedule through GitHub Actions: starting, rescheduling, debugging, editing skills and mining chat history.
aeonfun/aeon
Reads a Base Account's address, portfolio and transaction history through the Base MCP server, and stays strictly read-only in unattended Aeon runs, reporting only changes.
aeonfun/aeon
Audits every page of a site each day from its sitemap, scores on-page and technical SEO, checks duplicates across pages and reports what changed since the last run.
aeonfun/aeon
5 concrete real-life actions, leverage-scored against open loops with specificity and anti-fluff gates
aeonfun/aeon
Static linter for an Aeon instance's configuration that catches silent failures such as unquoted schedules, duplicate keys, unconfigured skills and broken MCP references.
Works with
Categories
Monitor Polymarket and/or Kalshi prediction markets for 24h price moves, volume changes, fresh comments, and high-conviction alerts. Monitor Polymarket is an agent skill from aeonfun/aeon.
Monitor Polymarket fits situations like: business, Finance & HR work in your project.
Run `npx skills add aeonfun/aeon --skill monitor-polymarket -a claude-code`. Or copy the skill folder (skills/monitor-polymarket in aeonfun/aeon) into .claude/skills/monitor-polymarket in your project. Claude Code loads it when a task matches its description.
Run `npx skills add aeonfun/aeon --skill monitor-polymarket -a codex`. Or copy the skill folder (skills/monitor-polymarket in aeonfun/aeon) into .agents/skills/monitor-polymarket in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aeonfun/aeon --skill monitor-polymarket -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/monitor-polymarket, .gemini/skills/monitor-polymarket, .github/skills/monitor-polymarket and .opencode/skills/monitor-polymarket in your project.
Going by SKILL.md and its folder, Monitor Polymarket needs the command-line tools its instructions call (curl and jq). Our summary lists: Python 3.
SKILL.md names 3 domains. In commands or code: api.elections.kalshi.com, gamma-api.polymarket.com and clob.polymarket.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Monitor Polymarket is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Monitor Polymarket: Digital Oracle (komako-workshop/digital-oracle, 870 stars), Dr Manhattan (guzus/dr-manhattan, 204 stars), Polymarket Tennis (livetennisapi/livetennisapi-mcp, 152 stars) and Markets (machina-sports/sports-skills, 242 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
aeonfun (a GitHub organization) maintains it in aeonfun/aeon, which has 767 GitHub stars. The repository holds 82 skills in this directory. The repository was last updated on October 8, 2026.
Source: aeonfun/aeon on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.