{"id":"5287e067-6719-4abc-8124-74b3503f0ef2","entityType":"agent","slug":"clawhub-simmer-polymarket-signal-sniper","name":"polymarket-signal-sniper","canonicalUrl":"https://www.xpersona.co/agent/clawhub-simmer-polymarket-signal-sniper","canonicalPath":"/agent/clawhub-simmer-polymarket-signal-sniper","generatedAt":"2026-10-10T04:17:45.496Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:20:38.534Z","emptyReason":null},"description":"Monitor RSS feeds for news that may move Polymarket markets, configure custom signal sources and keywords, and get article + market pairs with safeguard warnings. Never trades; your agent decides whether and how to trade.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 3K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17eez0vajry6hjb97y9mbtv2s85wekv:polymarket-signal-sniper","sourceUrl":"https://clawhub.ai/simmer/polymarket-signal-sniper","homepage":"https://clawhub.ai/simmer/skills/polymarket-signal-sniper","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/simmer/polymarket-signal-sniper","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/simmer/skills/polymarket-signal-sniper","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":70,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"polymarket-signal-sniper technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:20:38.534Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:20:38.534Z","emptyReason":null},"stars":null,"forks":null,"downloads":2995,"packageName":null,"latestVersion":"2.0.0","tractionLabel":"3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:20:38.533Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T10:20:38.534Z","lastCrawledAt":"2026-10-09T10:20:38.533Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T10:20:38.534Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.0","createdAt":"2026-09-18T10:31:22.714Z","changelog":"**Polymarket Signal Sniper 2.0.0 – Major Change: Skill never trades, now hands off all judgment and trade actions to your agent.** - All order execution is removed; the skill no longer places trades or infers trade direction. - Now emits only article + market pairs (signals), with related context warnings for agent review. - Legacy flags (`--live`, `--dry-run`, `--scan-only`) are still accepted for compatibility but have no effect. - Wallet/private key is no longer required for skill operation. - Output available as JSON for agent consumption; your agent must evaluate and initiate trades directly if desired.","fileCount":7,"zipByteSize":18808},{"version":"1.5.4","createdAt":"2026-09-06T01:15:30.455Z","changelog":"- Version bump to 1.5.4. - Documentation updates in SKILL.md. - Removed obsolete skill-card.md file. - No user-facing functional changes.","fileCount":7,"zipByteSize":22295},{"version":"1.5.3","createdAt":"2026-05-24T03:03:00.004Z","changelog":"SIM-2374: align tunable env-var names between clawhub.json and CONFIG_SCHEMA","fileCount":7,"zipByteSize":21984},{"version":"1.5.2","createdAt":"2026-04-24T10:07:03.901Z","changelog":"- Update to version 1.5.2 with minor maintenance changes. - Updated version metadata in SKILL.md. - Updated configuration in clawhub.json. - No changes to core functionality or CLI.","fileCount":5,"zipByteSize":19358},{"version":"1.5.1","createdAt":"2026-04-23T05:56:53.311Z","changelog":"V2 migration (2026-04-28): updated troubleshooting copy to point users at the Wrap USDC.e → pUSD flow at simmer.markets/dashboard + docs.simmer.markets/v2-migration. Also refines clawhub.json envVars schema (WALLET_PRIVATE_KEY now correctly optional for managed-wallet users).","fileCount":5,"zipByteSize":18935},{"version":"1.4.7","createdAt":"2026-04-22T09:15:38.393Z","changelog":"Schema fix: primaryEnv + envVars with required:false for optional credentials. Clears OpenClaw 'disproportionate requirements' verdict.","fileCount":5,"zipByteSize":18883},{"version":"1.4.6","createdAt":"2026-04-22T08:25:31.627Z","changelog":"Declare WALLET_PRIVATE_KEY in requires.env for OpenClaw moderation alignment.","fileCount":5,"zipByteSize":18732},{"version":"1.4.5","createdAt":"2026-04-16T10:05:52.984Z","changelog":"Add Setup Flow section with pip install simmer-sdk","fileCount":5,"zipByteSize":18718}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17eez0vajry6hjb97y9mbtv2s85wekv:polymarket-signal-sniper","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17eez0vajry6hjb97y9mbtv2s85wekv:polymarket-signal-sniper` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/simmer/polymarket-signal-sniper before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T04:17:45.493Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-simmer-polymarket-signal-sniper/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:20:38.534Z","emptyReason":null},"readme":"Skill: polymarket-signal-sniper\n\nOwner: simmer\n\nSummary: Monitor RSS feeds for news that may move Polymarket markets, configure custom signal sources and keywords, and get article + market pairs with safeguard warnings. Never trades; your agent decides whether and how to trade.\n\nTags: latest:2.0.0\n\nVersion history:\n\nv2.0.0 | 2026-09-18T10:31:22.714Z | auto\n\n**Polymarket Signal Sniper 2.0.0 – Major Change: Skill never trades, now hands off all judgment and trade actions to your agent.**\n\n- All order execution is removed; the skill no longer places trades or infers trade direction.\n- Now emits only article + market pairs (signals), with related context warnings for agent review.\n- Legacy flags (`--live`, `--dry-run`, `--scan-only`) are still accepted for compatibility but have no effect.\n- Wallet/private key is no longer required for skill operation.\n- Output available as JSON for agent consumption; your agent must evaluate and initiate trades directly if desired.\n\nv1.5.4 | 2026-09-06T01:15:30.455Z | auto\n\n- Version bump to 1.5.4.\n- Documentation updates in SKILL.md.\n- Removed obsolete skill-card.md file.\n- No user-facing functional changes.\n\nv1.5.3 | 2026-05-24T03:03:00.004Z | user\n\nSIM-2374: align tunable env-var names between clawhub.json and CONFIG_SCHEMA\n\nv1.5.2 | 2026-04-24T10:07:03.901Z | auto\n\n- Update to version 1.5.2 with minor maintenance changes.\n- Updated version metadata in SKILL.md.\n- Updated configuration in clawhub.json.\n- No changes to core functionality or CLI.\n\nv1.5.1 | 2026-04-23T05:56:53.311Z | user\n\nV2 migration (2026-04-28): updated troubleshooting copy to point users at the Wrap USDC.e → pUSD flow at simmer.markets/dashboard + docs.simmer.markets/v2-migration. Also refines clawhub.json envVars schema (WALLET_PRIVATE_KEY now correctly optional for managed-wallet users).\n\nv1.4.7 | 2026-04-22T09:15:38.393Z | user\n\nSchema fix: primaryEnv + envVars with required:false for optional credentials. Clears OpenClaw 'disproportionate requirements' verdict.\n\nv1.4.6 | 2026-04-22T08:25:31.627Z | user\n\nDeclare WALLET_PRIVATE_KEY in requires.env for OpenClaw moderation alignment.\n\nv1.4.5 | 2026-04-16T10:05:52.984Z | user\n\nAdd Setup Flow section with pip install simmer-sdk\n\nv1.4.4 | 2026-04-03T02:47:12.812Z | user\n\nAdd auto_redeem() call at start of each cycle for external wallet support\n\nv1.4.3 | 2026-03-25T08:48:53.167Z | auto\n\nPolymarket Signal Sniper v1.4.3\n\n- Added support for configuration via config.json file.\n- Introduced state tracking of processed signals using state/processed.json to prevent duplicate actions.\n- Updated signal_sniper.py for integration with new config and state files.\n\nv1.4.2 | 2026-03-17T09:41:09.417Z | auto\n\n- Bug fix release improving reliability in signal_sniper.py\n- Minor code adjustments; no changes to SKILL.md or user-facing functionality\n- Version bump to 1.4.2\n\nv1.4.1 | 2026-03-16T11:32:08.161Z | auto\n\nPolymarket Signal Sniper 1.4.1\n\n- Updated version metadata in SKILL.md to 1.4.0.\n- Minor documentation and metadata consistency updates.\n\nv1.4.0 | 2026-03-16T06:47:08.273Z | user\n\nFix: add missing skill_slug param to execute_trade — was crashing on real trade execution\n\nv1.3.12 | 2026-03-03T02:53:11.578Z | user\n\nAgentSkills format — moved platform config to clawhub.json for cross-agent compatibility\n\nv1.3.11 | 2026-02-27T10:15:32.102Z | auto\n\n- Added \"difficulty: intermediate\" metadata to SKILL.md.\n- No other functional or user-facing changes included in this version.\n\nv1.3.10 | 2026-02-27T06:04:09.991Z | auto\n\nVersion 1.3.10\n\n- Updated core logic in signal_sniper.py (details not specified)\n- No user-facing documentation or configuration changes\n- Maintains existing features for RSS signal trading on Polymarket\n\nv1.3.9 | 2026-02-27T03:58:55.175Z | user\n\nAdd is_live_now filter for not-yet-open market guard\n\nv1.3.8 | 2026-02-24T13:21:31.866Z | auto\n\n**Adds managed automaton mode and improves market discovery**\n\n- Added metadata for automaton management and specified entrypoint (signal_sniper.py) to enable managed/automated operation.\n- Auto-discovers markets from keywords if no specific markets configured, making setup easier.\n- Updated environment variable documentation to reflect new auto-discovery behavior.\n- Minor version bump and documentation updates.\n\nv1.3.7 | 2026-02-17T12:54:14.614Z | auto\n\n- Updated documentation to remove `WALLET_PRIVATE_KEY` as a required environment variable in metadata.\n- Version bump from 1.3.5 to 1.3.6.\n- No logic or feature changes; documentation/metadata update only.\n\nv1.3.6 | 2026-02-17T07:53:37.282Z | auto\n\n- Added troubleshooting guidance for \"Balance shows $0 but I have USDC on Polygon,\" clarifying the difference between USDC.e and native USDC on the platform.\n- No other changes to functionality or features.\n\nv1.3.5 | 2026-02-17T06:36:09.023Z | auto\n\n- Adds support for `WALLET_PRIVATE_KEY` as a required environment variable for order signing.\n- Updates documentation to clarify SDK handles signing and eliminates need for manual signature code.\n- Provides troubleshooting guidance for external wallet signing errors.\n- Bumps version to 1.3.5.\n\nv1.3.4 | 2026-02-17T04:01:41.981Z | auto\n\n- Added simmer-sdk to required pip dependencies in SKILL.md metadata.\n- Updated version to 1.3.4.\n- Added a template note in the documentation encouraging users to remix the skill with different data sources, not just RSS feeds.\n\nv1.3.3 | 2026-02-14T14:28:39.617Z | auto\n\nPolymarket Signal Sniper v1.3.3\n\n- Clarified setup and usage instructions for both ad-hoc and persistent monitoring of trading signals via RSS feeds.\n- Expanded examples for common user scenarios and signal analysis, making it easier to interpret context warnings and trade safely.\n- Provided detailed troubleshooting guidance and best practices for feed selection.\n- Documented environment variables and command-line options for comprehensive configuration.\n- Outlined safeguards and trade logic, including position awareness, flip-flop detection, slippage, and market resolution criteria.\n\nArchive index:\n\nArchive v2.0.0: 7 files, 18808 bytes\n\nFiles: clawhub.json (486b), DISCLAIMER.md (1967b), scripts/status.py (5443b), signal_sniper.py (30163b), skill-card.md (2490b), SKILL.md (8398b), _meta.json (143b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Monitor RSS feeds for news that may move Polymarket markets, configure custom signal sources and keywords, and get article + market pairs with safeguard warnings. Never trades; your agent decides whether and how to trade.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"2.0.0\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's market safeguards, your agent's judgment.\n\n> 🚨 **The skill never trades.** It hands your agent article + market pairs. Your agent decides whether the article bears on the market, which side, and how much. Read [DISCLAIMER.md](./DISCLAIMER.md) before your agent trades with real funds.\n\n> **This is a template.** The default signal source is RSS feeds. Remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles the plumbing (feed polling, market matching, safeguards, dedup). Your agent provides the judgment.\n\n**Changed in 2.0.0:** earlier versions guessed the trade side from keyword sentiment and could place orders with `--live`. Keyword sentiment cannot tell whether a headline is about a market, so that path is gone. `--live`, `--dry-run` and `--scan-only` are still accepted so old cron lines keep working, but they have no effect.\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\nThe skill needs no wallet key, because it never trades. If your agent will act on signals, set up trading separately with the `simmer-wallet-setup` skill.\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Tell me about any trump news from this feed that could move my markets\"\n```\n\n→ Run with `--feed`, `--market` and `--json`:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --json\n```\n\n## Persistent Setup (Optional)\n\nFor recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Picks target markets (auto-discovers from keywords if no markets configured)\n4. Calls the SDK context endpoint for each market's safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. Pairs each new article with each market that passes the safeguards\n6. Prints the pairs, or emits them as JSON with `--json`\n7. Tracks processed articles to avoid duplicates. A market whose context fetch failed is retried on the next scan.\n\nIt places no trades and changes nothing on your wallet or account. (If `OWS_WALLET` is set, the SDK still looks the wallet up at startup, so a stale wallet name stops the scan.)\n\n## Running the Skill\n\n**Run a scan:**\n```bash\npython signal_sniper.py\n```\n\n**Get signals as JSON for your agent** (logs go to stderr, JSON to stdout):\n```bash\npython signal_sniper.py --json\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n### JSON output\n\n```json\n{\n  \"signals\": [\n    {\n      \"article\": {\"title\": \"...\", \"url\": \"...\", \"summary\": \"...\", \"published\": \"...\"},\n      \"market\": {\"id\": \"...\", \"question\": \"...\", \"resolution_criteria\": \"...\",\n                 \"current_price\": 0.42, \"time_to_resolution\": \"5d 3h\"},\n      \"warnings\": [\"Moderate slippage (11.0%)\"]\n    }\n  ],\n  \"error\": null\n}\n```\n\nA pair means the article matched a keyword (every article matches when no keywords are set) and the market passed the safeguards. It does not mean the article is about the market.\n\n## Interpreting Context Warnings\n\nThe `warnings` list on each signal comes from the market's context:\n\n| Warning | Action |\n|---------|--------|\n| `Market resolves in Xh - elevated risk` | Consider if signal is timely enough |\n| `Mild flip-flop warning` | Proceed carefully, need strong signal |\n| `High slippage` / `Moderate slippage` | Reduce position size or skip |\n| `Edge ... below threshold` | The market may already reflect this |\n\nMarkets that are resolved, resolve within 2 hours, have a severe flip-flop warning or a spread above 10% are dropped before pairing.\n\n## Analyzing Signals\n\nFor each signal, your agent should:\n\n1. **Read the headline and summary.** What is the actual news?\n\n2. **Check resolution_criteria.** What ACTUALLY resolves this market?\n   - Example: \"greenland\" in a headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this article move the needle on THAT specific criterion? Most pairs will not.\n\n3. **Ask whether it is priced in.** Compare `published` with recent price movement. News on a public RSS feed has often moved the price already.\n\n4. **Only trade if** the article bears on the resolution criteria, it is not priced in, and no warning argues against it. If it trades, pass `source=\"sdk:signalsniper\"` so the trade is attributed to this skill:\n   ```python\n   client.trade(market_id=..., side=\"yes\", amount=10.0, source=\"sdk:signalsniper\",\n                skill_slug=\"polymarket-signal-sniper\")\n   ```\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans, and read the JSON each run\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --json`\n→ Assess each pair and report the ones that bear on resolution\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show relevant pairs and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and the markets they were paired with\n\n## Example Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Market \"greenland-acquisition-2027\" passes safeguards → signal emitted\n4. Agent reads resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n5. Agent's view: \"preliminary agreement\" ≠ \"formally acquires\"; price already up 4% today\n6. Agent decides: no trade, report to user\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n\n**\"Skipping: safeguards failed\"**\n- The market is resolved, resolving within 2 hours, illiquid, or you have been reversing on it\n- Working as intended\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"--live has no effect\"**\n- Since 2.0.0 the skill never trades. Your agent places any trade itself.\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1789727482714\n}\n\nFile v2.0.0:DISCLAIMER.md\n\n# Disclaimer\n\nThis skill is a **framework**, not a production trading system. Read this\nin full before connecting it to a wallet with real funds.\n\n## No financial advice\n\nNothing in this skill constitutes financial, investment, or trading\nadvice. The default strategy implemented here is a starting point, not a\ntested edge. Suitability for any account size or risk tolerance is your\nresponsibility to assess.\n\n## Default feeds and keywords are not validated\n\nThe skill ships with no default feeds, and nothing here has been validated\nto find news that moves markets before the price does. If your agent trades\non these signals, run it in paper mode for an extended period first.\n\n## This skill does not trade; your agent does\n\nSince 2.0.0 the skill only surfaces article and market pairs. It places no\norders, and `--live` has no effect. Any trade comes from your agent acting\non a signal. On-chain trades cannot be recalled. Strategy errors, signal\nlag, market regime shifts, and operator misconfiguration can produce losses\nexceeding any specific position size.\n\n## A signal is not an edge\n\nKeyword matching says an article mentions a topic. It does not say the\narticle bears on the market's resolution criteria, and news that reaches an\nRSS feed is often priced in already. Have your agent check both before it\ntrades.\n\n## Use of this skill is at your own risk\n\nBy installing and running this skill you agree that the authors are not\nliable for any losses, direct or indirect, that arise from its use. This\napplies regardless of skill provenance — official Simmer skills,\ncommunity skills, and skills imported from external repositories all\ncarry this same disclaimer.\n\n## Where to learn more before going live\n\n- The skill's own `SKILL.md` documents the strategy and parameters\n- Your trading venue's documentation covers fee structure, order types,\n  and resolution rules\n- Simmer SDK documentation covers paper mode, dry-run flags, and\n  position monitoring\n\nFile v2.0.0:skill-card.md\n\n## Description:\n\nMonitor RSS feeds for news that may move Polymarket markets, configure custom signal sources and keywords, and get article + market pairs with safeguard warnings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[simmer](https://clawhub.ai/user/simmer)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agent developers use this skill to monitor configured RSS sources, match news against Polymarket markets, and pass article and market pairs with safeguards to an agent for review. It is intended for signal discovery and analysis, not autonomous trading.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The account-status script can read sensitive Simmer portfolio and position data.\n\nMitigation: Use a least-privilege Simmer API key where available, and avoid or remove scripts/status.py unless account reporting is intended.\n\nRisk: Article and market pairs are signals, not validated trading recommendations, and RSS news may already be priced in.\n\nMitigation: Require agent or human review of the article, market resolution criteria, current price movement, and warnings before any trade is placed.\n\nRisk: Real-money prediction market actions can produce irreversible losses if an agent acts on weak, stale, or misconfigured signals.\n\nMitigation: Run in paper mode first, configure trusted feeds and specific keywords, and keep any trading capability outside this read-only skill.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/simmer/skills/polymarket-signal-sniper)\n- [Publisher profile](https://clawhub.ai/user/simmer)\n- [Simmer dashboard](https://simmer.markets/dashboard)\n- [Simmer Signal Sniper docs](https://docs.simmer.markets/skills/signal-sniper)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Plain text status output or a JSON object containing signals and an error field when run with --json.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Signals contain article, market, and warning fields; the skill does not place trades.]\n\n## Skill Version(s):\n\n2.0.0 (source: frontmatter and server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.0.0:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"primaryEnv\": \"SIMMER_API_KEY\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk>=0.24.0\"\n    ]\n  },\n  \"envVars\": [\n    {\n      \"name\": \"SIMMER_API_KEY\",\n      \"required\": true,\n      \"description\": \"Your Simmer SDK API key \\u2014 get from simmer.markets/dashboard\"\n    }\n  ],\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": []\n}\n\nArchive v1.5.4: 7 files, 22295 bytes\n\nFiles: clawhub.json (1304b), DISCLAIMER.md (1925b), scripts/status.py (5443b), signal_sniper.py (40639b), skill-card.md (2683b), SKILL.md (8986b), _meta.json (143b)\n\nFile v1.5.4:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.5.4\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> 🚨 **Framework, not a production trading system.** Read [DISCLAIMER.md](./DISCLAIMER.md) before connecting to a wallet with real funds.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n3. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n   - Not needed for $SIM paper trading on the Simmer venue\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE_THRESHOLD` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES_PER_RUN` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have funds on Polygon\"**\n- Polymarket V2 (live 2026-04-28) uses **pUSD** (PolyUSD, 1:1 backed by USDC.e). If your wallet holds USDC.e, migrate at [simmer.markets/dashboard](https://simmer.markets/dashboard?ref=sdk-skill&utm_campaign=sdk-skill) with one click (~30s)\n- If you bridged native USDC (Circle), swap to USDC.e first, then migrate to pUSD\n- Full migration guide: [docs.simmer.markets/v2-migration](https://docs.simmer.markets/v2-migration)\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.5.4:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.5.4\",\n  \"publishedAt\": 1788657330455\n}\n\nFile v1.5.4:DISCLAIMER.md\n\n# Disclaimer\n\nThis skill is a **framework**, not a production trading system. Read this\nin full before connecting it to a wallet with real funds.\n\n## No financial advice\n\nNothing in this skill constitutes financial, investment, or trading\nadvice. The default strategy implemented here is a starting point, not a\ntested edge. Suitability for any account size or risk tolerance is your\nresponsibility to assess.\n\n## Default parameters are not validated\n\nDefault parameters are calibrated for testing the plumbing, not for live\nprofit. They have not been validated to produce positive returns under\ncurrent market conditions. Run paper mode for an extended period before\nscaling beyond default position sizes.\n\n## Automated trading carries irreversible risk\n\nWhen this skill runs with `--live`, it places real on-chain orders.\nOn-chain trades cannot be recalled. Strategy errors, signal lag, market\nregime shifts, and operator misconfiguration can produce losses\nexceeding any specific position size.\n\n## Risk monitoring may not apply to all market types\n\nStop-loss and take-profit monitors run on a fixed schedule. Markets that\nresolve faster than the monitor cycle cannot be exited automatically.\nPosition sizing is the only risk control on these markets — set it\nconservatively.\n\n## Use of this skill is at your own risk\n\nBy installing and running this skill you agree that the authors are not\nliable for any losses, direct or indirect, that arise from its use. This\napplies regardless of skill provenance — official Simmer skills,\ncommunity skills, and skills imported from external repositories all\ncarry this same disclaimer.\n\n## Where to learn more before going live\n\n- The skill's own `SKILL.md` documents the strategy and parameters\n- Your trading venue's documentation covers fee structure, order types,\n  and resolution rules\n- Simmer SDK documentation covers paper mode, dry-run flags, and\n  position monitoring\n\nFile v1.5.4:skill-card.md\n\n## Description:\n\nSnipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[simmer](https://clawhub.ai/user/simmer)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to monitor configured RSS feeds, match news signals to Polymarket markets, review safeguard context, and optionally execute small prediction-market trades through the Simmer SDK.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The security review reports that non-live modes still invoke an account redemption method.\n\nMitigation: Review the redemption path before installation with real funds, keep live trading disabled during evaluation, and require explicit opt-in before relying on dry-run or scan-only as non-mutating modes.\n\nRisk: RSS fetching has weak network scoping.\n\nMitigation: Configure only trusted RSS feed URLs and review feed sources before enabling automated recurring scans.\n\nRisk: Automated on-chain trading can create irreversible losses from strategy errors, stale signals, market changes, or misconfiguration.\n\nMitigation: Use paper mode first, run with a dedicated low-balance account, set conservative position limits, and check market resolution criteria and safeguard warnings before live execution.\n\nRisk: Wallet private keys may be needed for external-wallet live trading.\n\nMitigation: Avoid putting private keys in chat or shell history; use environment secrets and prefer a dedicated wallet with limited funds.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/simmer/skills/polymarket-signal-sniper)\n- [Simmer API](https://api.simmer.markets)\n- [Simmer dashboard](https://simmer.markets/dashboard)\n- [Polymarket V2 migration guide](https://docs.simmer.markets/v2-migration)\n- [Disclaimer](DISCLAIMER.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, API calls, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON status output for managed automation]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May query RSS feeds and Simmer APIs; live mode can submit trades when explicitly enabled and credentials are configured.]\n\n## Skill Version(s):\n\n1.5.4 (source: frontmatter and server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.5.4:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"primaryEnv\": \"SIMMER_API_KEY\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk>=0.11.1\"\n    ]\n  },\n  \"envVars\": [\n    {\n      \"name\": \"SIMMER_API_KEY\",\n      \"required\": true,\n      \"description\": \"Your Simmer SDK API key \\u2014 get from simmer.markets/dashboard\"\n    },\n    {\n      \"name\": \"WALLET_PRIVATE_KEY\",\n      \"required\": false,\n      \"description\": \"Only needed for external-wallet self-custody trading. Not required when using managed wallets.\"\n    }\n  ],\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nArchive v1.5.3: 7 files, 21984 bytes\n\nFiles: clawhub.json (1304b), DISCLAIMER.md (1925b), scripts/status.py (5110b), signal_sniper.py (40639b), skill-card.md (2614b), SKILL.md (8949b), _meta.json (143b)\n\nFile v1.5.3:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.5.3\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> 🚨 **Framework, not a production trading system.** Read [DISCLAIMER.md](./DISCLAIMER.md) before connecting to a wallet with real funds.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n3. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n   - Not needed for $SIM paper trading on the Simmer venue\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE_THRESHOLD` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES_PER_RUN` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have funds on Polygon\"**\n- Polymarket V2 (live 2026-04-28) uses **pUSD** (PolyUSD, 1:1 backed by USDC.e). If your wallet holds USDC.e, migrate at [simmer.markets/dashboard](https://simmer.markets/dashboard) with one click (~30s)\n- If you bridged native USDC (Circle), swap to USDC.e first, then migrate to pUSD\n- Full migration guide: [docs.simmer.markets/v2-migration](https://docs.simmer.markets/v2-migration)\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.5.3:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.5.3\",\n  \"publishedAt\": 1779591780004\n}\n\nFile v1.5.3:DISCLAIMER.md\n\n# Disclaimer\n\nThis skill is a **framework**, not a production trading system. Read this\nin full before connecting it to a wallet with real funds.\n\n## No financial advice\n\nNothing in this skill constitutes financial, investment, or trading\nadvice. The default strategy implemented here is a starting point, not a\ntested edge. Suitability for any account size or risk tolerance is your\nresponsibility to assess.\n\n## Default parameters are not validated\n\nDefault parameters are calibrated for testing the plumbing, not for live\nprofit. They have not been validated to produce positive returns under\ncurrent market conditions. Run paper mode for an extended period before\nscaling beyond default position sizes.\n\n## Automated trading carries irreversible risk\n\nWhen this skill runs with `--live`, it places real on-chain orders.\nOn-chain trades cannot be recalled. Strategy errors, signal lag, market\nregime shifts, and operator misconfiguration can produce losses\nexceeding any specific position size.\n\n## Risk monitoring may not apply to all market types\n\nStop-loss and take-profit monitors run on a fixed schedule. Markets that\nresolve faster than the monitor cycle cannot be exited automatically.\nPosition sizing is the only risk control on these markets — set it\nconservatively.\n\n## Use of this skill is at your own risk\n\nBy installing and running this skill you agree that the authors are not\nliable for any losses, direct or indirect, that arise from its use. This\napplies regardless of skill provenance — official Simmer skills,\ncommunity skills, and skills imported from external repositories all\ncarry this same disclaimer.\n\n## Where to learn more before going live\n\n- The skill's own `SKILL.md` documents the strategy and parameters\n- Your trading venue's documentation covers fee structure, order types,\n  and resolution rules\n- Simmer SDK documentation covers paper mode, dry-run flags, and\n  position monitoring\n\nFile v1.5.3:skill-card.md\n\n## Description: <br>\nSnipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[simmer](https://clawhub.ai/user/simmer) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nTraders and agent operators use this skill to monitor RSS feeds for Polymarket-relevant signals, match articles to target markets, inspect context warnings, and optionally run dry-run or live trade flows through Simmer. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can inspect a Simmer trading account and potentially place real Polymarket trades. <br>\nMitigation: Use dry-run or paper mode first, set conservative trade caps, and run live mode only when the operator accepts the financial risk. <br>\nRisk: Live trading may use high-impact wallet or account authority, including sensitive credentials. <br>\nMitigation: Prefer a dedicated low-balance wallet, avoid production private keys, and provide credentials through environment variables or a secret store. <br>\nRisk: The security review notes automatic account-level behavior and no per-trade confirmation for unattended live runs. <br>\nMitigation: Do not run --live unattended unless the operator has reviewed and accepted the auto-redeem behavior and missing per-trade confirmation. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/simmer/polymarket-signal-sniper) <br>\n- [Disclaimer](DISCLAIMER.md) <br>\n- [Simmer API Base](https://api.simmer.markets) <br>\n- [Simmer Dashboard](https://simmer.markets/dashboard) <br>\n- [Simmer V2 Migration Guide](https://docs.simmer.markets/v2-migration) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown guidance with shell command examples, configuration variables, trading status output, and risk warnings] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May produce commands that inspect a Simmer account or run dry-run, scan-only, or live Polymarket trading flows using user-provided credentials.] <br>\n\n## Skill Version(s): <br>\n1.5.3 (source: server release metadata and skill frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.5.3:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"primaryEnv\": \"SIMMER_API_KEY\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk>=0.11.1\"\n    ]\n  },\n  \"envVars\": [\n    {\n      \"name\": \"SIMMER_API_KEY\",\n      \"required\": true,\n      \"description\": \"Your Simmer SDK API key \\u2014 get from simmer.markets/dashboard\"\n    },\n    {\n      \"name\": \"WALLET_PRIVATE_KEY\",\n      \"required\": false,\n      \"description\": \"Only needed for external-wallet self-custody trading. Not required when using managed wallets.\"\n    }\n  ],\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nArchive v1.5.2: 5 files, 19358 bytes\n\nFiles: clawhub.json (1304b), scripts/status.py (5110b), signal_sniper.py (40377b), SKILL.md (8790b), _meta.json (143b)\n\nFile v1.5.2:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.5.2\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n3. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n   - Not needed for $SIM paper trading on the Simmer venue\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have funds on Polygon\"**\n- Polymarket V2 (live 2026-04-28) uses **pUSD** (PolyUSD, 1:1 backed by USDC.e). If your wallet holds USDC.e, migrate at [simmer.markets/dashboard](https://simmer.markets/dashboard) with one click (~30s)\n- If you bridged native USDC (Circle), swap to USDC.e first, then migrate to pUSD\n- Full migration guide: [docs.simmer.markets/v2-migration](https://docs.simmer.markets/v2-migration)\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.5.2:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.5.2\",\n  \"publishedAt\": 1777025223901\n}\n\nFile v1.5.2:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"primaryEnv\": \"SIMMER_API_KEY\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk>=0.11.1\"\n    ]\n  },\n  \"envVars\": [\n    {\n      \"name\": \"SIMMER_API_KEY\",\n      \"required\": true,\n      \"description\": \"Your Simmer SDK API key \\u2014 get from simmer.markets/dashboard\"\n    },\n    {\n      \"name\": \"WALLET_PRIVATE_KEY\",\n      \"required\": false,\n      \"description\": \"Only needed for external-wallet self-custody trading. Not required when using managed wallets.\"\n    }\n  ],\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nArchive v1.5.1: 5 files, 18935 bytes\n\nFiles: clawhub.json (1296b), scripts/status.py (5110b), signal_sniper.py (39005b), SKILL.md (8790b), _meta.json (143b)\n\nFile v1.5.1:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.5.1\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n3. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n   - Not needed for $SIM paper trading on the Simmer venue\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have funds on Polygon\"**\n- Polymarket V2 (live 2026-04-28) uses **pUSD** (PolyUSD, 1:1 backed by USDC.e). If your wallet holds USDC.e, migrate at [simmer.markets/dashboard](https://simmer.markets/dashboard) with one click (~30s)\n- If you bridged native USDC (Circle), swap to USDC.e first, then migrate to pUSD\n- Full migration guide: [docs.simmer.markets/v2-migration](https://docs.simmer.markets/v2-migration)\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.5.1:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.5.1\",\n  \"publishedAt\": 1776923813311\n}\n\nFile v1.5.1:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"primaryEnv\": \"SIMMER_API_KEY\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk\"\n    ]\n  },\n  \"envVars\": [\n    {\n      \"name\": \"SIMMER_API_KEY\",\n      \"required\": true,\n      \"description\": \"Your Simmer SDK API key \\u2014 get from simmer.markets/dashboard\"\n    },\n    {\n      \"name\": \"WALLET_PRIVATE_KEY\",\n      \"required\": false,\n      \"description\": \"Only needed for external-wallet self-custody trading. Not required when using managed wallets.\"\n    }\n  ],\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nArchive v1.4.7: 5 files, 18883 bytes\n\nFiles: clawhub.json (1296b), scripts/status.py (5110b), signal_sniper.py (39005b), SKILL.md (8637b), _meta.json (143b)\n\nFile v1.4.7:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.4.7\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n3. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n   - Not needed for $SIM paper trading on the Simmer venue\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have USDC on Polygon\"**\n- Polymarket uses **USDC.e** (bridged USDC, contract `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`) — not native USDC\n- If you bridged USDC to Polygon recently, you likely received native USDC\n- Swap native USDC to USDC.e, then retry\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.4.7:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.4.7\",\n  \"publishedAt\": 1776849338393\n}\n\nFile v1.4.7:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"primaryEnv\": \"SIMMER_API_KEY\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk\"\n    ]\n  },\n  \"envVars\": [\n    {\n      \"name\": \"SIMMER_API_KEY\",\n      \"required\": true,\n      \"description\": \"Your Simmer SDK API key \\u2014 get from simmer.markets/dashboard\"\n    },\n    {\n      \"name\": \"WALLET_PRIVATE_KEY\",\n      \"required\": false,\n      \"description\": \"Only needed for external-wallet self-custody trading. Not required when using managed wallets.\"\n    }\n  ],\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nArchive v1.4.6: 5 files, 18732 bytes\n\nFiles: clawhub.json (922b), scripts/status.py (5110b), signal_sniper.py (39005b), SKILL.md (8637b), _meta.json (143b)\n\nFile v1.4.6:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.4.6\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n3. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n   - Not needed for $SIM paper trading on the Simmer venue\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have USDC on Polygon\"**\n- Polymarket uses **USDC.e** (bridged USDC, contract `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`) — not native USDC\n- If you bridged USDC to Polygon recently, you likely received native USDC\n- Swap native USDC to USDC.e, then retry\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.4.6:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.4.6\",\n  \"publishedAt\": 1776846331627\n}\n\nFile v1.4.6:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\",\n      \"WALLET_PRIVATE_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk\"\n    ]\n  },\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nArchive v1.4.5: 5 files, 18718 bytes\n\nFiles: clawhub.json (894b), scripts/status.py (5110b), signal_sniper.py (39005b), SKILL.md (8637b), _meta.json (143b)\n\nFile v1.4.5:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.4.0\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\n3. **Ask for wallet private key** (required for live trading)\n   - This is the private key for their Polymarket wallet (the wallet that holds USDC)\n   - Store in environment as `WALLET_PRIVATE_KEY`\n   - The SDK uses this to sign orders client-side automatically — no manual signing needed\n   - Not needed for $SIM paper trading on the Simmer venue\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have USDC on Polygon\"**\n- Polymarket uses **USDC.e** (bridged USDC, contract `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`) — not native USDC\n- If you bridged USDC to Polygon recently, you likely received native USDC\n- Swap native USDC to USDC.e, then retry\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.4.5:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.4.5\",\n  \"publishedAt\": 1776333952984\n}\n\nFile v1.4.5:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk\"\n    ]\n  },\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nArchive v1.4.4: 5 files, 18492 bytes\n\nFiles: clawhub.json (894b), scripts/status.py (5110b), signal_sniper.py (39005b), SKILL.md (8004b), _meta.json (143b)\n\nFile v1.4.4:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.4.0\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have USDC on Polygon\"**\n- Polymarket uses **USDC.e** (bridged USDC, contract `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`) — not native USDC\n- If you bridged USDC to Polygon recently, you likely received native USDC\n- Swap native USDC to USDC.e, then retry\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.4.4:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.4.4\",\n  \"publishedAt\": 1775184432812\n}\n\nFile v1.4.4:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk\"\n    ]\n  },\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nArchive v1.4.3: 7 files, 631664 bytes\n\nFiles: clawhub.json (894b), config.json (238b), scripts/status.py (5110b), signal_sniper.py (38085b), SKILL.md (8004b), state/processed.json (1358885b), _meta.json (143b)\n\nFile v1.4.3:SKILL.md\n\n---\nname: polymarket-signal-sniper\ndescription: Snipe Polymarket opportunities from your own signal sources. Monitors RSS feeds with Trading Agent-grade safeguards.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"1.4.0\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's trading intelligence.\n\n> **This is a template.** The default signal source is RSS feeds — remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles all the plumbing (market matching, safeguards, trade execution). Your agent provides the alpha.\n\n## When to Use This Skill\n\nUse this skill when the user wants to:\n- Monitor RSS feeds for trading opportunities\n- Trade on breaking news before markets react\n- Configure their own signal sources and keywords\n- Get Trading Agent-grade safeguards on their trades\n\n## Quick Commands\n\n```bash\n# Check account balance and positions\npython scripts/status.py\n\n# Detailed position list\npython scripts/status.py --positions\n```\n\n**API Reference:**\n- Base URL: `https://api.simmer.markets`\n- Auth: `Authorization: Bearer $SIMMER_API_KEY`\n- Portfolio: `GET /api/sdk/portfolio`\n- Positions: `GET /api/sdk/positions`\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Snipe any news about trump from this feed\"\n```\n\n→ Run with `--feed` and `--market` flags:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --dry-run\n```\n\n## Persistent Setup (Optional)\n\nFor automated recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n| Confidence | `SIMMER_SNIPER_CONFIDENCE` | 0.7 | Min confidence to trade (0.0-1.0) |\n| Max USD | `SIMMER_SNIPER_MAX_USD` | 25 | Max per trade |\n| Max trades/run | `SIMMER_SNIPER_MAX_TRADES` | 5 | Maximum trades per scan cycle |\n\n**Polymarket Constraints:**\n- Minimum 5 shares per order\n- Trades below this threshold are rejected with an error message\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Matches articles to target markets (auto-discovers from keywords if no markets configured)\n4. For each match, calls SDK context endpoint for safeguards:\n   - Position awareness (already holding?)\n   - Flip-flop detection (recently changed direction?)\n   - Slippage estimates (is market liquid?)\n   - Time decay (resolving soon?)\n   - Resolution criteria (what actually resolves this market?)\n5. If safeguards pass, infers trade direction from article sentiment\n6. Executes trade via SDK (with max trades per run cap)\n7. Tracks processed articles to avoid duplicates\n\n## Running the Skill\n\n**Run a scan (dry run by default — no trades):**\n```bash\npython signal_sniper.py\n```\n\n**Execute real trades:**\n```bash\npython signal_sniper.py --live\n```\n\n**Check for signals without trading:**\n```bash\npython signal_sniper.py --scan-only\n```\n\n**View current config:**\n```bash\npython signal_sniper.py --config\n```\n\n**Override for one run:**\n```bash\npython signal_sniper.py --feed \"https://...\" --keywords \"trump,greenland\" --market \"abc123\"\n```\n\n**Show processed articles:**\n```bash\npython signal_sniper.py --history\n```\n\n## Interpreting Context Warnings\n\nBefore trading, ALWAYS check the context warnings. The skill will show you:\n\n| Warning | Action |\n|---------|--------|\n| `MARKET RESOLVED` | Do NOT trade |\n| `HIGH URGENCY: Resolves in Xh` | Consider if signal is timely enough |\n| `flip_flop_warning: SEVERE` | Skip - you've been reversing too much |\n| `flip_flop_warning: CAUTION` | Proceed carefully, need strong signal |\n| `Wide spread (X%)` | Reduce position size or skip |\n| `Simmer AI signal: X% more bullish/bearish` | Consider Simmer's oracle opinion |\n\n## Analyzing Signals\n\nWhen you find a matching article, analyze it carefully:\n\n1. **Read the headline and summary** - What is the actual news?\n\n2. **Check resolution_criteria** - What ACTUALLY resolves this market?\n   - Example: \"greenland\" in headline doesn't mean \"acquisition complete\"\n   - The resolution might be \"US formally acquires Greenland by 2027\"\n   - Does this signal move the needle on THAT specific criteria?\n\n3. **Assess confidence** (0.0-1.0):\n   - How directly does this signal relate to resolution criteria?\n   - Is the source credible?\n   - Is this news likely already priced in?\n\n4. **Only trade if**:\n   - Confidence > threshold (default 0.7)\n   - No severe warnings\n   - Signal validates against resolution criteria\n\n## Example Conversations\n\n**User: \"Set up news sniping for the Greenland market\"**\n→ Ask for RSS feeds they want to monitor\n→ Configure with market ID and keywords\n→ Enable cron for recurring scans\n\n**User: \"Check this feed for trading signals\"**\n→ Run: `python signal_sniper.py --feed \"URL\" --scan-only`\n→ Show found articles and potential matches\n\n**User: \"Snipe any bitcoin news from CoinDesk\"**\n→ Run with CoinDesk RSS and bitcoin-related markets\n→ Show matches and ask if they want to trade\n\n**User: \"What signals have we processed?\"**\n→ Run: `python signal_sniper.py --history`\n→ Show recent articles and actions taken\n\n## Example Trade Flow\n\n```\n1. RSS poll finds: \"Trump and Denmark reach preliminary Greenland agreement\"\n2. Keywords match: \"greenland\", \"trump\"\n3. Call context endpoint for market \"greenland-acquisition-2027\"\n4. Check warnings: none severe ✓\n5. Resolution criteria: \"Resolves YES if US formally acquires Greenland by 2027\"\n6. You analyze: \"preliminary agreement\" ≠ \"formally acquires\" but bullish signal\n7. Confidence: 0.75 (positive indicator, not definitive)\n8. Check slippage: 2.5% on $25 ✓\n9. Execute: BUY YES $25\n10. Report: \"🎯 Sniped: Trump/Greenland agreement → BUY YES $25\"\n```\n\n## Troubleshooting\n\n**\"No feeds configured\"**\n- Provide feeds in message: \"watch this RSS: https://...\"\n- Or set `SIMMER_SNIPER_FEEDS` environment variable\n\n**\"No matching articles found\"**\n- Check keywords are correct\n- RSS feed might not have recent articles\n- Try `--scan-only` to see what's in the feed\n\n**\"Skipped due to flip-flop warning\"**\n- You've been changing direction too much on this market\n- Wait before trading again, or find new information\n\n**\"Slippage too high\"**\n- Market is illiquid\n- Reduce trade size or skip\n\n**\"Already processed\"**\n- This article was already seen\n- Working as intended (dedup)\n\n**\"External wallet requires a pre-signed order\"**\n- `WALLET_PRIVATE_KEY` is not set in the environment\n- The SDK signs orders automatically when this env var is present — no manual signing code needed\n- Fix: `export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>`\n- Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it\n\n**\"Balance shows $0 but I have USDC on Polygon\"**\n- Polymarket uses **USDC.e** (bridged USDC, contract `0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174`) — not native USDC\n- If you bridged USDC to Polygon recently, you likely received native USDC\n- Swap native USDC to USDC.e, then retry\n\n## Finding Good RSS Feeds\n\nTips for choosing signal sources:\n- **Google News RSS**: `https://news.google.com/rss/search?q=YOUR_TOPIC`\n- **Niche sources**: Better than mainstream (less priced in)\n- **Official sources**: Government, company announcements\n- **Twitter lists → RSS**: Use services like Nitter or RSS.app\n\nThe skill works best when:\n- Feeds are relevant to your target markets\n- You have specific keywords to filter noise\n- Sources publish before mainstream coverage\n\nFile v1.4.3:_meta.json\n\n{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"1.4.3\",\n  \"publishedAt\": 1774428533167\n}\n\nFile v1.4.3:clawhub.json\n\n{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk\"\n    ]\n  },\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": [\n    {\n      \"env\": \"SIMMER_SNIPER_CONFIDENCE_THRESHOLD\",\n      \"type\": \"number\",\n      \"default\": 0.7,\n      \"range\": [\n        0.5,\n        0.99\n      ],\n      \"step\": 0.01,\n      \"label\": \"Confidence threshold\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_USD\",\n      \"type\": \"number\",\n      \"default\": 50,\n      \"range\": [\n        1,\n        200\n      ],\n      \"step\": 5,\n      \"label\": \"Max bet per trade\"\n    },\n    {\n      \"env\": \"SIMMER_SNIPER_MAX_TRADES_PER_RUN\",\n      \"type\": \"number\",\n      \"default\": 5,\n      \"range\": [\n        1,\n        20\n      ],\n      \"step\": 1,\n      \"label\": \"Max trades per run\"\n    }\n  ]\n}\n\nFile v1.4.3:config.json\n\n{\n  \"feeds\": \"https://feeds.bloomberg.com/markets/news.rss,https://www.reuters.com/finance/,https://feeds.bbc.co.uk/news/business/rss.xml,https://apnews.com/hub/technology/feed\",\n  \"confidence_threshold\": 0.15,\n  \"min_signal_count\": \"1\"\n}","readmeExcerpt":"Skill: polymarket-signal-sniper Owner: simmer Summary: Monitor RSS feeds for news that may move Polymarket markets, configure custom signal sources and keywords, and get article + market pairs with safeguard warnings. Never trades; your agent decides whether and how to trade. Tags: latest:2.0.0 Version history: v2.0.0 | 2026-09-18T10:31:22.714Z | auto **Polymarket Signal Sniper 2.0.0 – Major Change: Skill never trade","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"pip install simmer-sdk"},{"language":"text","snippet":"User: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Tell me about any trump news from this feed that could move my markets\""},{"language":"bash","snippet":"python signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --json"},{"language":"bash","snippet":"python signal_sniper.py"},{"language":"bash","snippet":"python signal_sniper.py --json"},{"language":"bash","snippet":"python signal_sniper.py --config"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: polymarket-signal-sniper\ndescription: Monitor RSS feeds for news that may move Polymarket markets, configure custom signal sources and keywords, and get article + market pairs with safeguard warnings. Never trades; your agent decides whether and how to trade.\nmetadata:\n  author: Simmer (@simmer_markets)\n  version: \"2.0.0\"\n  displayName: Polymarket Signal Sniper\n  difficulty: intermediate\n---\n# Polymarket Signal Sniper\n\nYour signals, Simmer's market safeguards, your agent's judgment.\n\n> 🚨 **The skill never trades.** It hands your agent article + market pairs. Your agent decides whether the article bears on the market, which side, and how much. Read [DISCLAIMER.md](./DISCLAIMER.md) before your agent trades with real funds.\n\n> **This is a template.** The default signal source is RSS feeds. Remix it with any data source (APIs, webhooks, social media, custom scrapers). The skill handles the plumbing (feed polling, market matching, safeguards, dedup). Your agent provides the judgment.\n\n**Changed in 2.0.0:** earlier versions guessed the trade side from keyword sentiment and could place orders with `--live`. Keyword sentiment cannot tell whether a headline is about a market, so that path is gone. `--live`, `--dry-run` and `--scan-only` are still accepted so old cron lines keep working, but they have no effect.\n\n## Setup Flow\n\nWhen user asks to install or configure this skill:\n\n1. **Install the Simmer SDK**\n   ```bash\n   pip install simmer-sdk\n   ```\n\n2. **Ask for Simmer API key**\n   - They can get it from simmer.markets/dashboard → SDK tab\n   - Store in environment as `SIMMER_API_KEY`\n\nThe skill needs no wallet key, because it never trades. If your agent will act on signals, set up trading separately with the `simmer-wallet-setup` skill.\n\n## Quick Start (Ad-Hoc Usage)\n\n**User provides RSS feed and market directly:**\n```\nUser: \"Watch this RSS feed for greenland news: https://news.google.com/rss/search?q=greenland\"\nUser: \"Tell me about any trump news from this feed that could move my markets\"\n```\n\n→ Run with `--feed`, `--market` and `--json`:\n```bash\npython signal_sniper.py --feed \"https://news.google.com/rss/search?q=greenland\" --market \"greenland-acquisition\" --json\n```\n\n## Persistent Setup (Optional)\n\nFor recurring scans, configure via environment:\n\n| Setting | Environment Variable | Default | Description |\n|---------|---------------------|---------|-------------|\n| RSS Feeds | `SIMMER_SNIPER_FEEDS` | (none) | Comma-separated RSS URLs |\n| Markets | `SIMMER_SNIPER_MARKETS` | (auto) | Comma-separated market IDs (auto-discovers from keywords if empty) |\n| Keywords | `SIMMER_SNIPER_KEYWORDS` | (none) | Comma-separated keywords to match |\n\n## How It Works\n\nEach cycle the script:\n1. Polls configured RSS feeds\n2. Filters articles by keywords (if configured)\n3. Picks target markets (auto-discovers from keywords if no markets configured)\n4. Calls the SDK context endpoint for each market's safeguards:\n   - Position awareness (already holding?)\n   - Fli"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7axnp7bzqsf5fkx0z8px7han7zyq1x\",\n  \"slug\": \"polymarket-signal-sniper\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1789727482714\n}"},{"path":"DISCLAIMER.md","content":"# Disclaimer\n\nThis skill is a **framework**, not a production trading system. Read this\nin full before connecting it to a wallet with real funds.\n\n## No financial advice\n\nNothing in this skill constitutes financial, investment, or trading\nadvice. The default strategy implemented here is a starting point, not a\ntested edge. Suitability for any account size or risk tolerance is your\nresponsibility to assess.\n\n## Default feeds and keywords are not validated\n\nThe skill ships with no default feeds, and nothing here has been validated\nto find news that moves markets before the price does. If your agent trades\non these signals, run it in paper mode for an extended period first.\n\n## This skill does not trade; your agent does\n\nSince 2.0.0 the skill only surfaces article and market pairs. It places no\norders, and `--live` has no effect. Any trade comes from your agent acting\non a signal. On-chain trades cannot be recalled. Strategy errors, signal\nlag, market regime shifts, and operator misconfiguration can produce losses\nexceeding any specific position size.\n\n## A signal is not an edge\n\nKeyword matching says an article mentions a topic. It does not say the\narticle bears on the market's resolution criteria, and news that reaches an\nRSS feed is often priced in already. Have your agent check both before it\ntrades.\n\n## Use of this skill is at your own risk\n\nBy installing and running this skill you agree that the authors are not\nliable for any losses, direct or indirect, that arise from its use. This\napplies regardless of skill provenance — official Simmer skills,\ncommunity skills, and skills imported from external repositories all\ncarry this same disclaimer.\n\n## Where to learn more before going live\n\n- The skill's own `SKILL.md` documents the strategy and parameters\n- Your trading venue's documentation covers fee structure, order types,\n  and resolution rules\n- Simmer SDK documentation covers paper mode, dry-run flags, and\n  position monitoring"},{"path":"skill-card.md","content":"## Description:\n\nMonitor RSS feeds for news that may move Polymarket markets, configure custom signal sources and keywords, and get article + market pairs with safeguard warnings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[simmer](https://clawhub.ai/user/simmer)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agent developers use this skill to monitor configured RSS sources, match news against Polymarket markets, and pass article and market pairs with safeguards to an agent for review. It is intended for signal discovery and analysis, not autonomous trading.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The account-status script can read sensitive Simmer portfolio and position data.\n\nMitigation: Use a least-privilege Simmer API key where available, and avoid or remove scripts/status.py unless account reporting is intended.\n\nRisk: Article and market pairs are signals, not validated trading recommendations, and RSS news may already be priced in.\n\nMitigation: Require agent or human review of the article, market resolution criteria, current price movement, and warnings before any trade is placed.\n\nRisk: Real-money prediction market actions can produce irreversible losses if an agent acts on weak, stale, or misconfigured signals.\n\nMitigation: Run in paper mode first, configure trusted feeds and specific keywords, and keep any trading capability outside this read-only skill.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/simmer/skills/polymarket-signal-sniper)\n- [Publisher profile](https://clawhub.ai/user/simmer)\n- [Simmer dashboard](https://simmer.markets/dashboard)\n- [Simmer Signal Sniper docs](https://docs.simmer.markets/skills/signal-sniper)\n\n## Skill Output:\n\n**Output Type(s):** [Text, JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Plain text status output or a JSON object containing signals and an error field when run with --json.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Signals contain article, market, and warning fields; the skill does not place trades.]\n\n## Skill Version(s):\n\n2.0.0 (source: frontmatter and server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"clawhub.json","content":"{\n  \"emoji\": \"\\ud83c\\udfaf\",\n  \"primaryEnv\": \"SIMMER_API_KEY\",\n  \"requires\": {\n    \"env\": [\n      \"SIMMER_API_KEY\"\n    ],\n    \"pip\": [\n      \"simmer-sdk>=0.24.0\"\n    ]\n  },\n  \"envVars\": [\n    {\n      \"name\": \"SIMMER_API_KEY\",\n      \"required\": true,\n      \"description\": \"Your Simmer SDK API key \\u2014 get from simmer.markets/dashboard\"\n    }\n  ],\n  \"cron\": null,\n  \"autostart\": false,\n  \"automaton\": {\n    \"managed\": true,\n    \"entrypoint\": \"signal_sniper.py\"\n  },\n  \"tunables\": []\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1679,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T10:20:38.534Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T10:20:38.534Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:17:45.496Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}