Skip to content

feat: add scout — prediction market arb & alpha skill#8

Merged
kevarifin14 merged 6 commits into
moonpay:mainfrom
tonyagents:add-scout-skill
Mar 19, 2026
Merged

feat: add scout — prediction market arb & alpha skill#8
kevarifin14 merged 6 commits into
moonpay:mainfrom
tonyagents:add-scout-skill

Conversation

@tonyagents
Copy link
Copy Markdown
Contributor

New Skill

Skill name: skills/scout/

Description: Cross-platform prediction market arbitrage & alpha scout for Polymarket and Kalshi.

What it does

Scans both Polymarket and Kalshi for a given topic, finds matching markets on the same underlying event, runs rigorous arb math on both directions (including platform fees), and ranks opportunities:

  • Pure arb: risk-free profit after fees (same resolution date)
  • Soft arb: positive math but date mismatch ≤30 days
  • Alpha: structural mispricing with clear informational edge

Can execute the Polymarket leg via mp prediction-market position buy.

Primary chain: Polygon (USDC.e for Polymarket)
Primary token: USDC.e

Checklist

  • skills/scout/SKILL.md with YAML frontmatter (name, description)
  • Skill added to .claude-plugin/marketplace.json
  • Description is specific about when Claude should trigger this skill

MoonPay Integration

All market execution goes through mp prediction-market position buy using a MoonPay wallet (USDC.e on Polygon). Market search uses mp prediction-market market search for both providers.

Key design decisions

  • Fee-aware math: Polymarket's 2% fee on winning positions is baked into every arb calculation — preventing false positives from pre-fee-only analysis
  • Bid/ask enforcement: Uses bid/ask prices, not mid — mid prices are not executable
  • Volume signal: When Kalshi has significantly higher volume than Polymarket on the same event, the skill instructs Claude to treat Kalshi as the more-informed price and fade Polymarket toward it
  • 6-step structured workflow: scan → match → math → rank → execute → report

Example Usage

/scout Iran
/scout bitcoin ETF
/scout  (no args = trending scan on both platforms)

Example output:

🔍 SCANNING Polymarket + Kalshi for "Iran"...

🔗 MATCH: US-Iran Nuclear Deal (Full Year 2026)
   Polymarket: nuclear deal before 2027?  Yes bid/ask @ 40/41¢  liq: $40K
   Kalshi:     nuclear deal this year?    Yes bid/ask @ 40/42¢  vol: $1.3M

📐 GAP ANALYSIS: prices aligned — no arb after fees
   Kalshi vol ($1.3M) >> Poly vol ($40K) → Kalshi is price discovery venue

💡 ALPHA: Poly nuclear deal by April 30 vs Kalshi by May 1
   Poly Yes @ 11.5¢ vs Kalshi Yes @ 9¢ — same event, 2.5¢ gap
   Kalshi has 50x more volume → fade Poly No @ 88.5¢
   Conviction: MEDIUM

Copy link
Copy Markdown
Contributor

@kevarifin14 kevarifin14 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review: skills/scout — Prediction Market Arb & Alpha Skill

Overall

This is a well-structured, detailed skill with real substance — not filler. The arb math is explicit, the workflow is clear, and the agent rules are sensible. That said, there are several issues ranging from naming convention violations to concerns about CLI command accuracy that need to be addressed before merge.


BLOCKING Issues

1. Naming convention violation

Per CLAUDE.md:

Partner skills: skills/{partner}-{name}/ (e.g., corbits-marketplace, dune-analytics)
MoonPay skills: skills/moonpay-{name}/

skills/scout/ follows neither convention. This skill is built entirely on MoonPay CLI commands (mp prediction-market ...), so it should be skills/moonpay-scout/ (or skills/moonpay-prediction-market-scout/ to make the domain clear). The bare scout name sets a bad precedent — every future skill will wonder if they can skip the prefix too.

The name field in the YAML frontmatter must also be updated to match (e.g., moonpay-scout).

2. Kalshi search via mp CLI — potentially hallucinated command

The skill says in Step 1 to "search both Polymarket and Kalshi for {{args}} simultaneously" using MoonPay CLI. However, examining the existing moonpay-prediction-market skill, every single mp prediction-market market search example uses --provider polymarket. There is no example of mp prediction-market market search --provider kalshi anywhere in the repo.

The only Kalshi CLI reference is mp prediction-market user create --provider kalshi for wallet registration. It is unclear whether mp prediction-market market search --provider kalshi actually works.

If Kalshi search is not supported by the CLI, the entire core premise of this skill (cross-platform scanning and matching) is broken. Please confirm that Kalshi market search via mp actually works, or document the alternative (e.g., Kalshi API directly). If it doesn't work via mp, this skill needs a fundamental redesign or an honest caveat.

3. marketplace.json placement is semantically wrong

The skill is added inside the moonpay-skills plugin array, but the skill name (scout) doesn't follow the MoonPay naming convention. Either:

  • Rename to moonpay-scout and keep it in the moonpay-skills plugin, OR
  • If this is intended as a standalone/partner skill, it needs its own plugin entry in marketplace.json

Don't mix naming conventions within a single plugin block.


NON-BLOCKING Issues

4. Unrelated diff in marketplace.json — em dash substitution

The PR silently changes the moonpay-skills description from (em dash) to (em dash literal). This is a no-op cosmetic change but it's unrelated to the skill addition. Keep PRs focused.

5. {{args}} template syntax is undocumented

The skill uses {{args}} as a placeholder for user input. This appears to be a custom convention. Is this actually supported by the skill loading mechanism? If not, this is a hallucinated feature. If it is supported, it should be documented in the template (template/SKILL.md) so other skill authors can use it.

6. Missing explicit mp commands for Kalshi in the workflow

Steps 1-2 tell the agent to scan Kalshi and extract bid/ask prices, but never show the actual mp commands. Compare this to Step 5, which gives the exact mp prediction-market position buy command for Polymarket. The Kalshi steps are hand-wavy. A skill should be specific enough that an agent can execute it mechanically — "search Kalshi" is not an instruction, it's a wish.

7. Fee model may be incomplete

The skill correctly accounts for Polymarket's 2% winner fee but states "Kalshi no fee on payout" (Direction B). Kalshi's fee structure has changed over time. If Kalshi does charge fees on certain markets or trade types, the arb math will produce false positives. Worth adding a caveat or a rule to verify current Kalshi fee schedule.

8. $10 default size in Step 5

The alpha trade defaults to $10 size. This is fine as a conservative default, but it's hardcoded in the skill text rather than being parameterizable. Consider making it a variable or at least noting that the agent should ask the user for size preference.

9. Emoji-heavy output format

The skill prescribes emoji-laden output templates. This is a style choice, but it makes the skill feel more like a demo script than a production tool. Not blocking, but worth considering whether a cleaner output format would be more appropriate.

10. PR description mentions /scout as a slash command

The PR body shows /scout Iran as example usage. Are slash commands actually wired up for skills in this repo, or is this aspirational? If the skill loading mechanism doesn't support /scout, this is misleading.


What's good

  • The arb math is explicit and correct (bid/ask, not mid; fee-adjusted payouts)
  • The 6-step workflow is well-structured and follows a logical progression
  • Agent rules section is a nice touch — constraints like "minimum $10K liquidity" and "show all math" are genuinely useful guardrails
  • Cross-references to related skills (moonpay-prediction-market, moonpay-fund-polymarket, moonpay-check-wallet) are present and correct
  • PR body is thorough and follows the template checklist

Summary

The skill content is strong, but naming convention violation and the Kalshi CLI question are blockers. Fix the name to moonpay-scout, confirm Kalshi search actually works via mp, and add explicit mp commands for the Kalshi leg. The rest are improvements that would raise the quality further.

Copy link
Copy Markdown
Contributor

@kevarifin14 kevarifin14 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grade: C+

Good concept (cross-platform prediction market arb), correct math, decent workflow structure. But blocked by: naming violation (scout/moonpay-scout/), unverified Kalshi CLI commands that may not work, marketplace.json placement, and undocumented template syntax. The skill promises functionality that may not exist yet. Needs verification before merge.

Copy link
Copy Markdown
Contributor

@kevarifin14 kevarifin14 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correction to previous review

Retesting the Kalshi claim: mp prediction-market market search does accept --provider <provider>, so the Kalshi commands are not hallucinated. That blocking issue is withdrawn.

Updated grade: B- (up from C+). Remaining issues: naming convention (scout/moonpay-scout/), marketplace.json placement, and the unrelated cosmetic diff.

tonyagents added a commit to tonyagents/skills that referenced this pull request Mar 18, 2026
Copy link
Copy Markdown
Contributor

@kevarifin14 kevarifin14 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Status check

No new commits since last review. PR #9 has split out the scout skill from the Messari PR and references this PR.

Current grade: B-

To get to A+, fix these:

  1. Naming convention — Rename skills/scout/ to skills/moonpay-scout/ (since it's built entirely on mp commands, it's a MoonPay skill)
  2. marketplace.json placement — If renamed to moonpay-scout, it belongs in the moonpay-skills array. Update accordingly.
  3. Unrelated diff — Drop the em-dash change in the moonpay-skills description.

Copy link
Copy Markdown
Contributor

@kevarifin14 kevarifin14 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grade: A+

All issues resolved:

  • ✅ Renamed to moonpay-scout (correct naming for a MoonPay-native skill)
  • ✅ Added to moonpay-skills plugin block (correct placement for moonpay-* skills)
  • ✅ Em-dash diff clean

Verified: mp prediction-market market search --provider accepts provider flag (confirmed). Arb math is explicit and correct. Well-structured 6-step workflow with proper cross-references to existing skills.

Ready to merge.

kevarifin14 pushed a commit that referenced this pull request Mar 19, 2026
* Add Messari x402 research skills and prediction market scout

- messari-x402: core skill covering all Messari API endpoints with pay-per-request via USDC on Base
- messari-token-research: 5-step workflow — fundamentals, price history, signals, news, AI synthesis (~$1.25/run)
- messari-alpha-scout: mindshare gainers + trending topics + news → AI narrative brief (~$1.25/run)
- messari-funding-intel: funding rounds + M&A + VC funds → capital flow analysis (~$0.85/run)
- messari-deep-research: async long-form AI research report with auto-polling (~$0.50–$2.00/run)
- scout: cross-platform prediction market arb agent (Polymarket + Kalshi) with fee-adjusted math

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: remove scout skill (lives in separate PR #8 as moonpay-scout)

* fix: remove scout plugin from marketplace.json (separate PR)

* fix: use portable date command (cross-platform macOS/Linux)

* fix: remove macOS-specific launchd label, use cron consistently

* fix: restore literal em-dash in moonpay-skills description

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@kevarifin14 kevarifin14 merged commit 1a47cda into moonpay:main Mar 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants