[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J4FZPW6CNDBK5F0AX2AQYF":3,"skill-same:01M6J4FZPW6CNDBK5F0AX2AQYF":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6J4FZPW6CNDBK5F0AX2AQYF","monitor-polymarket",null,"Monitor Polymarket and\u002For Kalshi prediction markets for 24h price moves, volume changes, fresh comments, and high-conviction alerts","MiroShark\u002Fmiroshark-aeon","MiroShark","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F304594232?v=4","01M6J466B8NNAZ4H6NNK3N3TT5","01M6J466FXNNWH622S3B9PC496",20,"MIT","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fmonitor-polymarket\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"monitor","monitor polymarket","polymarket","prediction","prediction markets","price","kalshi prediction","kalshi prediction markets","high","changes","research","crypto","comments","read-only","for","read","markets","alerts","fresh","only","volume","2026-11-10 10:12:30",false,"---\nname: monitor-polymarket\ndescription: Monitor Polymarket and\u002For Kalshi prediction markets for 24h price moves, volume changes, fresh comments, and high-conviction alerts\nmetadata:\n  title: Monitor Prediction Markets\n  mode: read-only\n  category: crypto\n  var: \"\"\n  tags:\n    - crypto\n    - research\n---\n> **${var}** — Platform selector with an optional single-market override:\n> - **empty** (`\"\"`) — run **both** platforms from their watchlists.\n> - `polymarket` — run Polymarket's whole watchlist (`skills\u002Fmonitor-polymarket\u002Fwatchlist-polymarket.md`).\n> - `kalshi` — run Kalshi's whole watchlist (`skills\u002Fmonitor-polymarket\u002Fwatchlist-kalshi.md`).\n> - `polymarket:\u003Cevent-slug>` — one ad-hoc Polymarket event (e.g. `polymarket:us-x-iran-ceasefire-by`).\n> - `kalshi:\u003Cevent-ticker>` — one ad-hoc Kalshi event (e.g. `kalshi:KXGDP-26Q2`).\n\nRead `memory\u002FMEMORY.md` for context.\nRead the last 2 days of `memory\u002Flogs\u002F` to compare against previous readings and flag *new* movers (not repeats of yesterday's news).\n\n## Why this skill exists\n\nA 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.\n\n## Dispatch\n\nParse `${var}` into a platform choice and an optional single-market override, then run the matching branch(es).\n\n**Shell shape.** Each Bash call is one allowed command (pipes are fine). The run refuses a call that sets a variable (`SLUGS=$(grep ...)`, `TOKEN_ID=$(...)`, `END_TS=$(date ...)`), uses `case` \u002F `if` \u002F `for` or `$(( ))`, or joins commands with `;`, `&&` or `||`, and each refusal costs a model turn. So parse `${var}` in your head (below), get the timestamp with a bare `date` call and work out the window yourself, and write every slug, ticker, id and timestamp into each `curl` literally (the `\u003CSLUG>`, `\u003CEVENT_ID>` style placeholders in the snippets), one call per event or market.\n\nWork the selector out in your head (`PLATFORM` is `both | polymarket | kalshi`; `SINGLE` is an optional single event slug for Polymarket or ticker for Kalshi, empty by default):\n- empty -> `PLATFORM=both`\n- `polymarket` -> `PLATFORM=polymarket`; `kalshi` -> `PLATFORM=kalshi`\n- `polymarket:\u003Cslug>` -> `PLATFORM=polymarket`, `SINGLE` = the text after `polymarket:`\n- `kalshi:\u003Cticker>` -> `PLATFORM=kalshi`, `SINGLE` = the text after `kalshi:`\n- anything else is an unrecognised prefix: don't guess a venue; fall back to both watchlists (`PLATFORM=both`, `SINGLE` empty) and note `unrecognised selector '\u003Cvar>' - running both watchlists` in your output.\n\n- `PLATFORM=both` → run the **Polymarket branch** and the **Kalshi branch**, each from its own watchlist, then emit a combined notification.\n- `PLATFORM=polymarket` → run only the Polymarket branch (whole watchlist, or `SINGLE` if set).\n- `PLATFORM=kalshi` → run only the Kalshi branch (whole watchlist, or `SINGLE` if set).\n\nEach branch below is independently executable — skip the one(s) the selector didn't ask for.\n\n---\n\n# Polymarket branch\n\nData source: Polymarket **gamma-api** (events, comments) + **clob** (price history). All endpoints are **public — no auth**.\n\nWatchlist: `skills\u002Fmonitor-polymarket\u002Fwatchlist-polymarket.md`. Each line is an event slug; add or remove slugs to change what's monitored.\n\n## P1. Load watchlist\n\nIf `SINGLE` is set, `SLUGS` is just that slug. Otherwise read the watchlist, one slug per line, skipping comments and blanks; the printed lines are `SLUGS`:\n```bash\ngrep -v '^#' skills\u002Fmonitor-polymarket\u002Fwatchlist-polymarket.md | grep -v '^$'\n```\n\nIf 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).\n\n## P2. For each event, fetch markets and price history\n\nFor each event slug in `SLUGS` (one call each, the slug written in literally):\n\n**a) Get the event and its markets:**\n```bash\ncurl -s \"https:\u002F\u002Fgamma-api.polymarket.com\u002Fevents?slug=\u003CSLUG>&limit=1\"\n```\n\nThe response contains the event `id`, `title`, and a `markets` array. Each market has:\n- `id`, `question`, `slug`, `closed`\n- `outcomePrices` — JSON array, index 0 = YES price (0.0–1.0)\n- `volume24hr`, `volumeNum`, `liquidityNum`\n- `clobTokenIds` — JSON array, index 0 = YES token, index 1 = NO token\n\n**Skip closed markets** — they've already resolved.\n\n**b) Get 24h price history for each open market:**\nThe YES token is index 0 of `clobTokenIds` (a JSON-encoded string in the event response); read it straight from the P2a output, as `TOKEN_ID`, and write it in literally, one call per open market:\n```bash\ncurl -s \"https:\u002F\u002Fclob.polymarket.com\u002Fprices-history?market=\u003CTOKEN_ID>&interval=1d&fidelity=60\"\n```\n\nResponse: `{ \"history\": [{ \"t\": unix_timestamp, \"p\": \"price_string\" }, ...] }`\n\n**c) Calculate 24h stats for each market:**\n- **Open \u002F Close** — first and last price in the history\n- **Change** — close minus open, in percentage points (e.g. +4.0pp)\n- **High \u002F Low** — intraday range\n- **Volume** — `volume24hr` from the market data\n- **Direction** — classify as: surging (>+5pp), rising (+2 to +5pp), stable (−2 to +2pp), falling (−5 to −2pp), crashing (\u003C−5pp)\n\n## P3. Fetch comments\n\nFor each event, get top comments and latest comments:\n\n`EVENT_ID` is the event `id` from step P2a, written in literally. Top comments by reactions:\n```bash\ncurl -s \"https:\u002F\u002Fgamma-api.polymarket.com\u002Fcomments?parent_entity_type=Event&parent_entity_id=\u003CEVENT_ID>&limit=10&order=reactionCount&ascending=false\"\n```\nLatest comments (last 24h chatter), as a separate call:\n```bash\ncurl -s \"https:\u002F\u002Fgamma-api.polymarket.com\u002Fcomments?parent_entity_type=Event&parent_entity_id=\u003CEVENT_ID>&limit=10&order=createdAt&ascending=false\"\n```\n\n**Important:** `parent_entity_type` must be `Event` (capital E).\n\nEach comment has: `body`, `profile.username` (often null → use \"anon\"), `reactionCount`, `createdAt`.\n\nFrom the combined results, pick the **3 most interesting comments** per event:\n- New comments from the last 24h get priority (they react to recent moves)\n- High-reaction comments that are still relevant\n- Contrarian takes, insider-sounding analysis, whale callouts, humor\n\n## P4. Build the Polymarket report\n\nFor each event, produce a summary block:\n\n```\n**[Event Title]** (event_id: N)\n\n| Market | YES | 24h Chg | High\u002FLow | 24h Vol |\n|--------|-----|---------|----------|---------|\n| [question] | XX.X% | +X.Xpp ▲ | XX-XX% | $X.Xm |\n| [question] | XX.X% | -X.Xpp ▼ | XX-XX% | $X.Xm |\n...\n\nBiggest mover: \"[question]\" - [direction] from X% to Y%\n\nComments:\n- [user\u002Fanon]: \"[comment excerpt]\" (X upvotes)\n- [user\u002Fanon]: \"[comment excerpt]\"\n- [user\u002Fanon]: \"[comment excerpt]\"\n```\n\nFlag any market that moved more than **5 percentage points** in 24h — these are the ones worth paying attention to.\n\n## P5. Polymarket Network note\n\n`curl` works — there is no network sandbox. Use **WebFetch** as a fallback for a flaky public GET:\n- `WebFetch(\"https:\u002F\u002Fgamma-api.polymarket.com\u002Fevents?slug=SLUG&limit=1\")`\n- `WebFetch(\"https:\u002F\u002Fclob.polymarket.com\u002Fprices-history?market=TOKEN_ID&interval=1d&fidelity=60\")`\n- `WebFetch(\"https:\u002F\u002Fgamma-api.polymarket.com\u002Fcomments?parent_entity_type=Event&parent_entity_id=EVENT_ID&limit=10&order=reactionCount&ascending=false\")`\n- All Polymarket gamma-api \u002F clob endpoints are public and need no auth headers.\n\n---\n\n# Kalshi branch\n\nData source: Kalshi **trade-api v2** at `https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2`. Despite the \"elections\" subdomain, this provides access to ALL Kalshi markets (economics, climate, tech, politics, etc.). All endpoints are **public — no auth required**.\n\nWatchlist: `skills\u002Fmonitor-polymarket\u002Fwatchlist-kalshi.md`. Each line is an event ticker; add or remove tickers to change what's monitored.\n\n## K1. Load watchlist\n\nIf `SINGLE` is set, `TICKERS` is just that ticker. Otherwise the printed lines of this call are `TICKERS`:\n```bash\ngrep -v '^#' skills\u002Fmonitor-polymarket\u002Fwatchlist-kalshi.md | grep -v '^$'\n```\n\nIf 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:\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents?status=open&with_nested_markets=true&limit=10\"\n```\nPick the 5 highest-volume events and monitor those.\n\n## K2. For each event, fetch markets, prices, and liquidity\n\nFor each event ticker (one call each, the ticker written in literally):\n\n**a) Event + markets:**\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents\u002F\u003CEVENT_TICKER>?with_nested_markets=true\"\n```\nFields 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`.\n\n**Skip non-open markets** (closed\u002Fsettled are historical).\n\n**b) 24h candlesticks (batch where possible):**\nPrefer the batch endpoint - one call per event, not per market. Get the window end once, as its own call:\n```bash\ndate -u +%s\n```\nIt prints END_TS; START_TS = END_TS minus 86400 (work it out yourself and write both in). Batch, up to 10,000 candlesticks total across the requested tickers, with the comma-separated market tickers written in literally:\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fmarkets\u002Fcandlesticks?tickers=\u003CCOMMA_SEP_MARKET_TICKERS>&start_ts=\u003CSTART_TS>&end_ts=\u003CEND_TS>&period_interval=60\"\n```\nIf the batch endpoint errors, fall back to the per-market endpoint, one call per market:\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fseries\u002F\u003CSERIES_TICKER>\u002Fmarkets\u002F\u003CMARKET_TICKER>\u002Fcandlesticks?start_ts=\u003CSTART_TS>&end_ts=\u003CEND_TS>&period_interval=60\"\n```\nIf both fail for a market, mark its source as `SRC=price_only` and use `last_price` vs yesterday's log entry.\n\n**c) Orderbook depth (liquidity \u002F conviction signal):**\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fmarkets\u002F\u003CMARKET_TICKER>\u002Forderbook?depth=10\"\n```\nFrom the orderbook, compute:\n- `spread_pp` = `yes_ask − yes_bid` in percentage points. Wide spread = low conviction, thin book.\n- `depth_usd` = sum over top-10 bid levels of `price × size` (approximation, both sides). This scales how much weight to give a price.\n\nIf orderbook fails, mark `SRC=no_book` and skip the conviction column for that market.\n\n## K3. Compute per-market signals\n\nFor each open market:\n\n- **implied_prob** = `last_price` as a percentage (0.62 → 62%). Report this, not cents.\n- **chg_pp** = `close − open` from candlesticks, in percentage points.\n- **high \u002F low** = intraday range.\n- **vol_24h_usd** ≈ `volume_24h × avg(open, close)` (Kalshi reports contract count — convert so readers can compare across markets).\n- **spread_pp** and **depth_usd** from step K2c.\n- **move_score** = `|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.\n\n**Direction label** (from chg_pp): surging (>+5pp), rising (+2 to +5), stable (−2 to +2), falling (−5 to −2), crashing (\u003C−5).\n\n**Conviction label** (from spread_pp): tight (\u003C2pp), loose (2–5pp), thin (>5pp, treat price skeptically).\n\n## K4. Decide what's worth saying — suppression rules\n\nBefore building the report, drop markets that fail ALL of these gates:\n- `|chg_pp| >= 2` AND `vol_24h_usd >= $1,000`, OR\n- `vol_24h_usd >= $25,000` (large volume alone is signal even if price didn't move much), OR\n- `open_interest` grew >30% vs yesterday's log, if yesterday's log has the data.\n\nIf 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.\n\n**Hard alert threshold:** `|chg_pp| >= 5` AND `conviction != thin`. These go to the ALERTS block and require a \"why it matters\" line.\n\n## K5. Global ranking\n\nRank 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).\n\n## K6. Build the Kalshi report\n\n```\n*Kalshi monitor - ${today}*\nverdict: [1 sentence - dominant theme or \"all quiet\"]\n\n**[Event Title]** (EVENT_TICKER) - category\n| Market | prob | Δ24h | range | vol | spread |\n|--------|------|------|-------|-----|--------|\n| [title] | 62% | +4.1pp ▲ | 56-65% | $82k | 1pp |\n| [title] | 23% | −2.8pp ▼ | 22-28% | $14k | 3pp |\nmover: [title] - rising on $82k vol, tight book\n\n[next event ...]\n\n**ALERTS** (moved >5pp on non-thin book)\n- [event\u002Fmarket]: 34% → 51% - *why it matters:* [one sentence grounded in the move's volume, spread, or news context if obvious from titles]\n- ...\n\n**Trending (not tracked)**\n- [event] - $Xk 24h vol, consider adding\n- ...\n\nsources: events=ok candlesticks=ok|degraded|fail orderbook=ok|degraded|fail\n```\n\nRules for the verdict line:\n- If no alerts AND no market moved >2pp: say \"all quiet — [N] events, [M] markets tracked, no moves worth flagging\".\n- If one theme dominates (most big moves in one category): name it. E.g. \"GDP markets repriced down after Q1 print; inflation markets unchanged\".\n- Never hedge. If you're not sure, say \"mixed signals\" and stop.\n\nRules for \"why it matters\":\n- Must reference at least one of: volume (is this real money?), spread (is this consensus?), prior log state (is this new?), or a plausible news trigger inferable from the market title.\n- Max 15 words. No filler like \"interesting move\" or \"worth watching\".\n\n## K7. Discover notable trends\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents?status=open&with_nested_markets=true&limit=50\"\n```\nScan 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.\n\n## K8. Kalshi status codes (end-of-run)\n\n- `MONITOR_KALSHI_OK` — ran fully, had data, at least one event processed.\n- `MONITOR_KALSHI_DEGRADED` — partial data (some markets fell back to `price_only` or `no_book`); report still sent.\n- `MONITOR_KALSHI_NO_CONFIG` — empty watchlist and no single ticker; discovered trending events and notified with setup hint.\n- `MONITOR_KALSHI_ERROR` — events endpoint failed entirely or zero markets resolved; notify with the failure, don't fake a report.\n\n## K9. Kalshi Network note\n\n`curl` works — there is no network sandbox. Use **WebFetch** as a fallback for a flaky public GET:\n- `WebFetch(\"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents\u002FEVENT_TICKER?with_nested_markets=true\")`\n- `WebFetch(\"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fmarkets\u002Fcandlesticks?tickers=...&start_ts=...&end_ts=...&period_interval=60\")`\n- `WebFetch(\"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fmarkets\u002FMARKET_TICKER\u002Forderbook?depth=10\")`\n- `WebFetch(\"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents?status=open&with_nested_markets=true&limit=50\")`\n- All Kalshi endpoints are public and need no auth headers.\n\n---\n\n# Notify\n\nSend via `.\u002Fnotify` (under 4000 chars). Emit only the section(s) for the branch(es) that ran. This skill cannot write a body file (read-only, no redirection), so send a multi-line report on a quoted heredoc as one call:\n```bash\n.\u002Fnotify -f - \u003C\u003C'NOTIFY'\n\u003Cthe report>\nNOTIFY\n```\n\n- **Polymarket only** — send the Polymarket report from P4.\n- **Kalshi only** — send the Kalshi report from K6.\n- **Both** — send one combined message: the Kalshi report (K6) first (it's the ranked, decision-oriented view), then a `— — —` 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\"]`.\n\nIf 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.\n\n**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\u002Fno-change run should send nothing. An explicit `all quiet — N events tracked, no moves` is useful; an empty template is not.\n\n# Log\n\nThis 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\u002Flogs\u002F` yourself - put this record in your **final output**, with a bullet group for **each platform that ran**:\n\n```\n### monitor-polymarket\n- **Platform(s):** both | polymarket | kalshi   (selector: `${var}`)\n\n#### Polymarket        (only if the Polymarket branch ran)\n- **Events monitored:** N\n- **Markets tracked:** N (M open, K closed)\n- **Biggest mover:** \"[question]\" - X% → Y% (+\u002F-Zpp)\n- **Alert markets (>5pp move):** [list or \"none\"]\n- **Top comment:** \"[excerpt]\"\n\n#### Kalshi            (only if the Kalshi branch ran)\n- **Events monitored:** N (watchlist=W, discovered=D)\n- **Markets tracked:** N (M open, K skipped)\n- **Top mover:** \"[title]\" - X% → Y% (Δpp, move_score=S, vol=$V, spread=Sp)\n- **Alerts (>5pp, non-thin):** [count; list titles or \"none\"]\n- **Continued-from-yesterday (demoted):** [count]\n- **Trending untracked:** [1-2 tickers or \"none\"]\n- **Sources:** events=[status] candlesticks=[status] orderbook=[status]\n- **Status:** MONITOR_KALSHI_OK | MONITOR_KALSHI_DEGRADED | MONITOR_KALSHI_NO_CONFIG | MONITOR_KALSHI_ERROR\n\n- **Notification sent:** yes | no\n```\n\nIf a market moved dramatically — Polymarket >5pp, or Kalshi >10pp on a non-thin book — or a new category\u002Ftrend is heating up across multiple events, add a one-line note in `memory\u002FMEMORY.md` (under a \"Prediction market signals\" section) for future reference.\n\n## Network note\n\nBoth 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\u002FMEMORY.md` note (the workflow writes `memory\u002Flogs\u002F` for you); produce all output via `.\u002Fnotify` and your final output.\n","> **${var}** — Platform selector with an optional single-market override:\n> - **empty** (`\"\"`) — run **both** platforms from their watchlists.\n> - `polymarket` — run Polymarket's whole watchlist (`skills\u002Fmonitor-polymarket\u002Fwatchlist-polymarket.md`).\n> - `kalshi` — run Kalshi's whole watchlist (`skills\u002Fmonitor-polymarket\u002Fwatchlist-kalshi.md`).\n> - `polymarket:\u003Cevent-slug>` — one ad-hoc Polymarket event (e.g. `polymarket:us-x-iran-ceasefire-by`).\n> - `kalshi:\u003Cevent-ticker>` — one ad-hoc Kalshi event (e.g. `kalshi:KXGDP-26Q2`).\n\nRead `memory\u002FMEMORY.md` for context.\nRead the last 2 days of `memory\u002Flogs\u002F` to compare against previous readings and flag *new* movers (not repeats of yesterday's news).\n\n## Why this skill exists\n\nA 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.\n\n## Dispatch\n\nParse `${var}` into a platform choice and an optional single-market override, then run the matching branch(es).\n\n**Shell shape.** Each Bash call is one allowed command (pipes are fine). The run refuses a call that sets a variable (`SLUGS=$(grep ...)`, `TOKEN_ID=$(...)`, `END_TS=$(date ...)`), uses `case` \u002F `if` \u002F `for` or `$(( ))`, or joins commands with `;`, `&&` or `||`, and each refusal costs a model turn. So parse `${var}` in your head (below), get the timestamp with a bare `date` call and work out the window yourself, and write every slug, ticker, id and timestamp into each `curl` literally (the `\u003CSLUG>`, `\u003CEVENT_ID>` style placeholders in the snippets), one call per event or market.\n\nWork the selector out in your head (`PLATFORM` is `both | polymarket | kalshi`; `SINGLE` is an optional single event slug for Polymarket or ticker for Kalshi, empty by default):\n- empty -> `PLATFORM=both`\n- `polymarket` -> `PLATFORM=polymarket`; `kalshi` -> `PLATFORM=kalshi`\n- `polymarket:\u003Cslug>` -> `PLATFORM=polymarket`, `SINGLE` = the text after `polymarket:`\n- `kalshi:\u003Cticker>` -> `PLATFORM=kalshi`, `SINGLE` = the text after `kalshi:`\n- anything else is an unrecognised prefix: don't guess a venue; fall back to both watchlists (`PLATFORM=both`, `SINGLE` empty) and note `unrecognised selector '\u003Cvar>' - running both watchlists` in your output.\n\n- `PLATFORM=both` → run the **Polymarket branch** and the **Kalshi branch**, each from its own watchlist, then emit a combined notification.\n- `PLATFORM=polymarket` → run only the Polymarket branch (whole watchlist, or `SINGLE` if set).\n- `PLATFORM=kalshi` → run only the Kalshi branch (whole watchlist, or `SINGLE` if set).\n\nEach branch below is independently executable — skip the one(s) the selector didn't ask for.\n\n---\n\n# Polymarket branch\n\nData source: Polymarket **gamma-api** (events, comments) + **clob** (price history). All endpoints are **public — no auth**.\n\nWatchlist: `skills\u002Fmonitor-polymarket\u002Fwatchlist-polymarket.md`. Each line is an event slug; add or remove slugs to change what's monitored.\n\n## P1. Load watchlist\n\nIf `SINGLE` is set, `SLUGS` is just that slug. Otherwise read the watchlist, one slug per line, skipping comments and blanks; the printed lines are `SLUGS`:\n```bash\ngrep -v '^#' skills\u002Fmonitor-polymarket\u002Fwatchlist-polymarket.md | grep -v '^$'\n```\n\nIf 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).\n\n## P2. For each event, fetch markets and price history\n\nFor each event slug in `SLUGS` (one call each, the slug written in literally):\n\n**a) Get the event and its markets:**\n```bash\ncurl -s \"https:\u002F\u002Fgamma-api.polymarket.com\u002Fevents?slug=\u003CSLUG>&limit=1\"\n```\n\nThe response contains the event `id`, `title`, and a `markets` array. Each market has:\n- `id`, `question`, `slug`, `closed`\n- `outcomePrices` — JSON array, index 0 = YES price (0.0–1.0)\n- `volume24hr`, `volumeNum`, `liquidityNum`\n- `clobTokenIds` — JSON array, index 0 = YES token, index 1 = NO token\n\n**Skip closed markets** — they've already resolved.\n\n**b) Get 24h price history for each open market:**\nThe YES token is index 0 of `clobTokenIds` (a JSON-encoded string in the event response); read it straight from the P2a output, as `TOKEN_ID`, and write it in literally, one call per open market:\n```bash\ncurl -s \"https:\u002F\u002Fclob.polymarket.com\u002Fprices-history?market=\u003CTOKEN_ID>&interval=1d&fidelity=60\"\n```\n\nResponse: `{ \"history\": [{ \"t\": unix_timestamp, \"p\": \"price_string\" }, ...] }`\n\n**c) Calculate 24h stats for each market:**\n- **Open \u002F Close** — first and last price in the history\n- **Change** — close minus open, in percentage points (e.g. +4.0pp)\n- **High \u002F Low** — intraday range\n- **Volume** — `volume24hr` from the market data\n- **Direction** — classify as: surging (>+5pp), rising (+2 to +5pp), stable (−2 to +2pp), falling (−5 to −2pp), crashing (\u003C−5pp)\n\n## P3. Fetch comments\n\nFor each event, get top comments and latest comments:\n\n`EVENT_ID` is the event `id` from step P2a, written in literally. Top comments by reactions:\n```bash\ncurl -s \"https:\u002F\u002Fgamma-api.polymarket.com\u002Fcomments?parent_entity_type=Event&parent_entity_id=\u003CEVENT_ID>&limit=10&order=reactionCount&ascending=false\"\n```\nLatest comments (last 24h chatter), as a separate call:\n```bash\ncurl -s \"https:\u002F\u002Fgamma-api.polymarket.com\u002Fcomments?parent_entity_type=Event&parent_entity_id=\u003CEVENT_ID>&limit=10&order=createdAt&ascending=false\"\n```\n\n**Important:** `parent_entity_type` must be `Event` (capital E).\n\nEach comment has: `body`, `profile.username` (often null → use \"anon\"), `reactionCount`, `createdAt`.\n\nFrom the combined results, pick the **3 most interesting comments** per event:\n- New comments from the last 24h get priority (they react to recent moves)\n- High-reaction comments that are still relevant\n- Contrarian takes, insider-sounding analysis, whale callouts, humor\n\n## P4. Build the Polymarket report\n\nFor each event, produce a summary block:\n\n```\n**[Event Title]** (event_id: N)\n\n| Market | YES | 24h Chg | High\u002FLow | 24h Vol |\n|--------|-----|---------|----------|---------|\n| [question] | XX.X% | +X.Xpp ▲ | XX-XX% | $X.Xm |\n| [question] | XX.X% | -X.Xpp ▼ | XX-XX% | $X.Xm |\n...\n\nBiggest mover: \"[question]\" - [direction] from X% to Y%\n\nComments:\n- [user\u002Fanon]: \"[comment excerpt]\" (X upvotes)\n- [user\u002Fanon]: \"[comment excerpt]\"\n- [user\u002Fanon]: \"[comment excerpt]\"\n```\n\nFlag any market that moved more than **5 percentage points** in 24h — these are the ones worth paying attention to.\n\n## P5. Polymarket Network note\n\n`curl` works — there is no network sandbox. Use **WebFetch** as a fallback for a flaky public GET:\n- `WebFetch(\"https:\u002F\u002Fgamma-api.polymarket.com\u002Fevents?slug=SLUG&limit=1\")`\n- `WebFetch(\"https:\u002F\u002Fclob.polymarket.com\u002Fprices-history?market=TOKEN_ID&interval=1d&fidelity=60\")`\n- `WebFetch(\"https:\u002F\u002Fgamma-api.polymarket.com\u002Fcomments?parent_entity_type=Event&parent_entity_id=EVENT_ID&limit=10&order=reactionCount&ascending=false\")`\n- All Polymarket gamma-api \u002F clob endpoints are public and need no auth headers.\n\n---\n\n# Kalshi branch\n\nData source: Kalshi **trade-api v2** at `https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2`. Despite the \"elections\" subdomain, this provides access to ALL Kalshi markets (economics, climate, tech, politics, etc.). All endpoints are **public — no auth required**.\n\nWatchlist: `skills\u002Fmonitor-polymarket\u002Fwatchlist-kalshi.md`. Each line is an event ticker; add or remove tickers to change what's monitored.\n\n## K1. Load watchlist\n\nIf `SINGLE` is set, `TICKERS` is just that ticker. Otherwise the printed lines of this call are `TICKERS`:\n```bash\ngrep -v '^#' skills\u002Fmonitor-polymarket\u002Fwatchlist-kalshi.md | grep -v '^$'\n```\n\nIf 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:\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents?status=open&with_nested_markets=true&limit=10\"\n```\nPick the 5 highest-volume events and monitor those.\n\n## K2. For each event, fetch markets, prices, and liquidity\n\nFor each event ticker (one call each, the ticker written in literally):\n\n**a) Event + markets:**\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents\u002F\u003CEVENT_TICKER>?with_nested_markets=true\"\n```\nFields 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`.\n\n**Skip non-open markets** (closed\u002Fsettled are historical).\n\n**b) 24h candlesticks (batch where possible):**\nPrefer the batch endpoint - one call per event, not per market. Get the window end once, as its own call:\n```bash\ndate -u +%s\n```\nIt prints END_TS; START_TS = END_TS minus 86400 (work it out yourself and write both in). Batch, up to 10,000 candlesticks total across the requested tickers, with the comma-separated market tickers written in literally:\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fmarkets\u002Fcandlesticks?tickers=\u003CCOMMA_SEP_MARKET_TICKERS>&start_ts=\u003CSTART_TS>&end_ts=\u003CEND_TS>&period_interval=60\"\n```\nIf the batch endpoint errors, fall back to the per-market endpoint, one call per market:\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fseries\u002F\u003CSERIES_TICKER>\u002Fmarkets\u002F\u003CMARKET_TICKER>\u002Fcandlesticks?start_ts=\u003CSTART_TS>&end_ts=\u003CEND_TS>&period_interval=60\"\n```\nIf both fail for a market, mark its source as `SRC=price_only` and use `last_price` vs yesterday's log entry.\n\n**c) Orderbook depth (liquidity \u002F conviction signal):**\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fmarkets\u002F\u003CMARKET_TICKER>\u002Forderbook?depth=10\"\n```\nFrom the orderbook, compute:\n- `spread_pp` = `yes_ask − yes_bid` in percentage points. Wide spread = low conviction, thin book.\n- `depth_usd` = sum over top-10 bid levels of `price × size` (approximation, both sides). This scales how much weight to give a price.\n\nIf orderbook fails, mark `SRC=no_book` and skip the conviction column for that market.\n\n## K3. Compute per-market signals\n\nFor each open market:\n\n- **implied_prob** = `last_price` as a percentage (0.62 → 62%). Report this, not cents.\n- **chg_pp** = `close − open` from candlesticks, in percentage points.\n- **high \u002F low** = intraday range.\n- **vol_24h_usd** ≈ `volume_24h × avg(open, close)` (Kalshi reports contract count — convert so readers can compare across markets).\n- **spread_pp** and **depth_usd** from step K2c.\n- **move_score** = `|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.\n\n**Direction label** (from chg_pp): surging (>+5pp), rising (+2 to +5), stable (−2 to +2), falling (−5 to −2), crashing (\u003C−5).\n\n**Conviction label** (from spread_pp): tight (\u003C2pp), loose (2–5pp), thin (>5pp, treat price skeptically).\n\n## K4. Decide what's worth saying — suppression rules\n\nBefore building the report, drop markets that fail ALL of these gates:\n- `|chg_pp| >= 2` AND `vol_24h_usd >= $1,000`, OR\n- `vol_24h_usd >= $25,000` (large volume alone is signal even if price didn't move much), OR\n- `open_interest` grew >30% vs yesterday's log, if yesterday's log has the data.\n\nIf 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.\n\n**Hard alert threshold:** `|chg_pp| >= 5` AND `conviction != thin`. These go to the ALERTS block and require a \"why it matters\" line.\n\n## K5. Global ranking\n\nRank 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).\n\n## K6. Build the Kalshi report\n\n```\n*Kalshi monitor - ${today}*\nverdict: [1 sentence - dominant theme or \"all quiet\"]\n\n**[Event Title]** (EVENT_TICKER) - category\n| Market | prob | Δ24h | range | vol | spread |\n|--------|------|------|-------|-----|--------|\n| [title] | 62% | +4.1pp ▲ | 56-65% | $82k | 1pp |\n| [title] | 23% | −2.8pp ▼ | 22-28% | $14k | 3pp |\nmover: [title] - rising on $82k vol, tight book\n\n[next event ...]\n\n**ALERTS** (moved >5pp on non-thin book)\n- [event\u002Fmarket]: 34% → 51% - *why it matters:* [one sentence grounded in the move's volume, spread, or news context if obvious from titles]\n- ...\n\n**Trending (not tracked)**\n- [event] - $Xk 24h vol, consider adding\n- ...\n\nsources: events=ok candlesticks=ok|degraded|fail orderbook=ok|degraded|fail\n```\n\nRules for the verdict line:\n- If no alerts AND no market moved >2pp: say \"all quiet — [N] events, [M] markets tracked, no moves worth flagging\".\n- If one theme dominates (most big moves in one category): name it. E.g. \"GDP markets repriced down after Q1 print; inflation markets unchanged\".\n- Never hedge. If you're not sure, say \"mixed signals\" and stop.\n\nRules for \"why it matters\":\n- Must reference at least one of: volume (is this real money?), spread (is this consensus?), prior log state (is this new?), or a plausible news trigger inferable from the market title.\n- Max 15 words. No filler like \"interesting move\" or \"worth watching\".\n\n## K7. Discover notable trends\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents?status=open&with_nested_markets=true&limit=50\"\n```\nScan 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.\n\n## K8. Kalshi status codes (end-of-run)\n\n- `MONITOR_KALSHI_OK` — ran fully, had data, at least one event processed.\n- `MONITOR_KALSHI_DEGRADED` — partial data (some markets fell back to `price_only` or `no_book`); report still sent.\n- `MONITOR_KALSHI_NO_CONFIG` — empty watchlist and no single ticker; discovered trending events and notified with setup hint.\n- `MONITOR_KALSHI_ERROR` — events endpoint failed entirely or zero markets resolved; notify with the failure, don't fake a report.\n\n## K9. Kalshi Network note\n\n`curl` works — there is no network sandbox. Use **WebFetch** as a fallback for a flaky public GET:\n- `WebFetch(\"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents\u002FEVENT_TICKER?with_nested_markets=true\")`\n- `WebFetch(\"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fmarkets\u002Fcandlesticks?tickers=...&start_ts=...&end_ts=...&period_interval=60\")`\n- `WebFetch(\"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fmarkets\u002FMARKET_TICKER\u002Forderbook?depth=10\")`\n- `WebFetch(\"https:\u002F\u002Fapi.elections.kalshi.com\u002Ftrade-api\u002Fv2\u002Fevents?status=open&with_nested_markets=true&limit=50\")`\n- All Kalshi endpoints are public and need no auth headers.\n\n---\n\n# Notify\n\nSend via `.\u002Fnotify` (under 4000 chars). Emit only the section(s) for the branch(es) that ran. This skill cannot write a body file (read-only, no redirection), so send a multi-line report on a quoted heredoc as one call:\n```bash\n.\u002Fnotify -f - \u003C\u003C'NOTIFY'\n\u003Cthe report>\nNOTIFY\n```\n\n- **Polymarket only** — send the Polymarket report from P4.\n- **Kalshi only** — send the Kalshi report from K6.\n- **Both** — send one combined message: the Kalshi report (K6) first (it's the ranked, decision-oriented view), then a `— — —` 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\"]`.\n\nIf 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.\n\n**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\u002Fno-change run should send nothing. An explicit `all quiet — N events tracked, no moves` is useful; an empty template is not.\n\n# Log\n\nThis 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\u002Flogs\u002F` yourself - put this record in your **final output**, with a bullet group for **each platform that ran**:\n\n```\n### monitor-polymarket\n- **Platform(s):** both | polymarket | kalshi   (selector: `${var}`)\n\n#### Polymarket        (only if the Polymarket branch ran)\n- **Events monitored:** N\n- **Markets tracked:** N (M open, K closed)\n- **Biggest mover:** \"[question]\" - X% → Y% (+\u002F-Zpp)\n- **Alert markets (>5pp move):** [list or \"none\"]\n- **Top comment:** \"[excerpt]\"\n\n#### Kalshi            (only if the Kalshi branch ran)\n- **Events monitored:** N (watchlist=W, discovered=D)\n- **Markets tracked:** N (M open, K skipped)\n- **Top mover:** \"[title]\" - X% → Y% (Δpp, move_score=S, vol=$V, spread=Sp)\n- **Alerts (>5pp, non-thin):** [count; list titles or \"none\"]\n- **Continued-from-yesterday (demoted):** [count]\n- **Trending untracked:** [1-2 tickers or \"none\"]\n- **Sources:** events=[status] candlesticks=[status] orderbook=[status]\n- **Status:** MONITOR_KALSHI_OK | MONITOR_KALSHI_DEGRADED | MONITOR_KALSHI_NO_CONFIG | MONITOR_KALSHI_ERROR\n\n- **Notification sent:** yes | no\n```\n\nIf a market moved dramatically — Polymarket >5pp, or Kalshi >10pp on a non-thin book — or a new category\u002Ftrend is heating up across multiple events, add a one-line note in `memory\u002FMEMORY.md` (under a \"Prediction market signals\" section) for future reference.\n\n## Network note\n\nBoth 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\u002FMEMORY.md` note (the workflow writes `memory\u002Flogs\u002F` for you); produce all output via `.\u002Fnotify` and your final output.\n",{"name":5,"metadata":44,"description":7},{"var":45,"mode":31,"tags":46,"title":47,"category":29},"",[29,28],"Monitor Prediction Markets","main","9c042aa1b6d79fd49679637374e88c5874cc3aae","skills\u002Fmonitor-polymarket",2,"https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon","https:\u002F\u002Ft.me\u002Fmiroshark_aeon","https:\u002F\u002Fgithub.com\u002FMiroShark","https:\u002F\u002Fwww.miroshark.xyz\u002F","Simulate anything, for $1 & less than 10 min.","2026-11-12 02:45:59",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add MiroShark\u002Fmiroshark-aeon --skill monitor-polymarket",{"tool":64,"command":65},"bunx","bunx skills add MiroShark\u002Fmiroshark-aeon --skill monitor-polymarket",{"tool":67,"command":68},"pnpm","pnpm dlx skills add MiroShark\u002Fmiroshark-aeon --skill monitor-polymarket","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fmonitor-polymarket\u002FSKILL.md",true,[72,78],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"watchlist-kalshi.md","REFERENCE","参考文档",155,"https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fmonitor-polymarket\u002Fwatchlist-kalshi.md",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"watchlist-polymarket.md",93,"https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fmonitor-polymarket\u002Fwatchlist-polymarket.md",[83,116,139,167,192,214],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":99,"publishedAt":39},"01M6J4P8XKB8RJ7PCYMZPZ0F6S","you-web-search","Web search using You.com Search API with high-quality, cited results — runs keyless out of the box; YDC_API_KEY unlocks higher limits and real-time web crawling","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fyou-web-search\u002FSKILL.md",[89,94],{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[100,101,102,103,104,105,37,106,107,33,31,108,109,110,111,28,112,26,113,114,115],"web search","search","you","you web search","web","time","api","web crawling","real-time","basics","keyless","with","results","quality","box","limits",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":39},"01M6J4P4H35WQG6RHGTTACSMVW","write-tweet","Multi-format tweet studio - standalone drafts (10 across 5 size tiers), a 5-10 tweet thread, or 10 remixes of past tweets, selected via ${var}","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-tweet\u002FSKILL.md",[],[123,124,125,126,127,106,128,129,130,131,109,132,133,134,135,136,137,138],"write","write tweet","standalone","social","studio","across","xai","past","drafts","twitter","thread","multi","size","via","format","content",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":148,"publishedAt":39},"01M6J4P11K7ZJ2PJDHDTTFZ1HY","weekly-aeoncard","Build a weekly token-consumption recap image from memory\u002Ftoken-usage.csv - this week + all-time totals, top skills, rendered as a shareable SVG card.","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fweekly-aeoncard\u002FSKILL.md",[145],{"categoryNo":146,"categoryName":147,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000016","图像与多媒体",[149,150,151,152,153,154,155,105,156,157,158,159,160,161,162,163,164,123,165,166],"weekly","weekly aeoncard","as","usage","SVG","memory","card","Meta","image","recap","csv","monitoring","notifications","productivity","top","build","token","aeon",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":39},"01M6J4NVJYQP5DNKSGXAXQW06B","vuln-tracker","One lifecycle poll over everything vuln-scanner produces - PR and advisory status, PVR triage transitions, and pending-disclosure aging, with a stars-secured impact headline and one action queue.","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fvuln-tracker\u002FSKILL.md",[],[174,175,156,176,177,123,165,178,179,180,181,182,183,184,185,186,187,111,188,189,190,191],"tracker","vuln tracker","impact","scanner","status","action","security","pr","stars","lifecycle","dev","gh","aging","advisory","github","transitions","triage","global",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":201,"publishedAt":39},"01M6J4NNQCHTKNGENAPJQ8KYHR","vuln-scanner","Audit trending repos for real security vulnerabilities and disclose responsibly - scan and route findings (PVR \u002F dependency PR), re-submit queued advisories, and send armed email disclosures","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fvuln-scanner\u002FSKILL.md",[198],{"categoryNo":199,"categoryName":200,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000005","邮件与沟通",[177,202,203,204,205,156,206,180,207,32,208,184,188,209,191,210,106,211,212,213],"vuln scanner","resend","re","trending","repos","email","scan","vulnerabilities","submit","route","audit","send",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":221,"publishedAt":39},"01M6J4NFBXTGG0R4M484T0KNYW","video-script","Turn a repo, product page, or update into a recording-ready video script in a receipts-first format - verifies every claim against live sources, then writes timestamped VO + on-screen direction with a plain-language glossary, assets checklist, anti-tells, and a verify-before-recording list","https:\u002F\u002Fgithub.com\u002FMiroShark\u002Fmiroshark-aeon\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-script\u002FSKILL.md",[220],{"categoryNo":146,"categoryName":147,"taxonomyType":92,"taxonomyTypeDesc":93},[222,223,224,225,226,227,228,229,230,109,231,232,233,111,234,235,236,237,238,137,239,240,241],"Video","video script","script","recording","sources","ready","direction","page","repo","claim","plain-language","glossary","first","verify","product","screen","update","list","live","receipts"]