Agent skill

Opportunity

by alsk1992 in alsk1992/CloddsBot

Find and execute cross-platform arbitrage opportunities across prediction markets

MITAuto-check passed

Install Opportunity

skills CLI
$ npx skills add alsk1992/CloddsBot --skill opportunity -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install alsk1992/CloddsBot opportunity --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/alsk1992/CloddsBot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/bundled/opportunity .claude/skills/opportunity && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
opportunity
GitHub stars
2.9k
Token cost
~2.2k tokens
SKILL.md length
237 words
Files
2
Skills in repo
116
Repo updated
First seen
Licence
MIT

At a glance

Find and execute cross-platform arbitrage opportunities across prediction markets

  • Works in 4 steps: Exact slug match - Platform-specific IDs → Text similarity - Jaccard coefficient → Vector embeddings - Semantic similarity → …
  • SKILL.md covers Opportunity Types, Chat Commands, TypeScript API Reference and Opportunity Scoring, plus 2 more sections
  • Runs TypeScript scripts from its folder

What it does

Opportunity is an agent skill from alsk1992/CloddsBot. Find and execute cross-platform arbitrage opportunities across prediction markets

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `index.ts`).

The repository describes itself as: Open Source AI trading agent that operates autonomously across 1000+ markets - Polymarket, Kalshi, Binance, Hyperliquid, Solana DEXs, 5 EVM chains. Scans for edge, executes… The licence is MIT.

Example prompts

  • “/opportunity”

Requirements

  • Node.js
  • A credential in POLY_API_KEY
  • A credential in KALSHI_API_KEY

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Exact slug match - Platform-specific IDs
  2. Text similarity - Jaccard coefficient
  3. Vector embeddings - Semantic similarity
  4. Manual links - User-defined

What it can do on your machine

Read from SKILL.md and the folder at commit c930628. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (TypeScript), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • arxiv.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Opportunity loads about 2.2k tokens when it runs. Until then it costs about 23 tokens; SKILL.md has 237 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~23
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from alsk1992/CloddsBot at commit c930628, republished under its MIT licence (© alsk1992). 237 words, ~2,179 tokens.

Download SKILL.mdSave it as .claude/skills/opportunity/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
opportunity
description
Find and execute cross-platform arbitrage opportunities across prediction markets
emoji
🎯

Opportunity Finder - Complete API Reference

Discover and execute cross-platform arbitrage opportunities across Polymarket, Kalshi, Betfair, Smarkets, Manifold, Metaculus, PredictIt, and Drift.

Based on arXiv:2508.03474 which found $40M+ in realized arbitrage on Polymarket.

Opportunity Types

TypeDescriptionExample
InternalYES + NO < $1 on same platformBuy both for guaranteed profit
Cross-PlatformSame market priced differentlyBuy low on A, sell high on B
CombinatorialLogical violations (P(A) > P(B) when A implies B)Trump > Republican
EdgeMarket vs external model (538, polls)Market 45%, model 52%

Chat Commands

Scanning
/opportunities scan                         # Scan all platforms for opportunities
/opportunities scan "trump"                 # Scan with keyword filter
/opportunities scan --min-edge 2            # Min 2% edge
/opportunities scan --min-liquidity 1000    # Min $1000 liquidity

/opportunities active                       # View active opportunities
/opportunities active --sort edge           # Sort by edge size
/opportunities active --sort liquidity      # Sort by liquidity
Real-Time Monitoring
/opportunities realtime start               # Start continuous scanning
/opportunities realtime stop                # Stop scanning
/opportunities realtime status              # Check monitoring status
/opportunities realtime config --interval 30 # Set scan interval (seconds)
Market Linking
/opportunities link <market-a> <market-b>   # Manually link equivalent markets
/opportunities unlink <market-a> <market-b> # Remove link
/opportunities links                        # View all linked markets
/opportunities auto-match                   # Run auto-matching algorithm
Execution
/opportunities execute <id>                 # Execute an opportunity
/opportunities execute <id> --size 100      # Execute with $100 size
/opportunities mark-taken <id>              # Mark as taken (manual)
/opportunities record-outcome <id> <pnl>    # Record P&L outcome
Analytics
/opportunities stats                        # Performance statistics
/opportunities stats --period 7d            # Last 7 days
/opportunities history                      # Past opportunities
/opportunities by-platform                  # Stats by platform pair
/opportunities by-type                      # Stats by opportunity type
Risk Modeling
/opportunities risk <id>                    # Model execution risk
/opportunities estimate <id>                # Estimate execution costs
/opportunities kelly <id>                   # Calculate Kelly fraction

TypeScript API Reference

Create Opportunity Finder
typescript
import { createOpportunityFinder } from 'clodds/opportunity';

const finder = createOpportunityFinder({
  platforms: ['polymarket', 'kalshi', 'betfair', 'manifold'],

  // Filtering
  minEdge: 0.5,           // 0.5% minimum edge
  minLiquidity: 500,      // $500 minimum liquidity
  minConfidence: 0.7,     // 70% match confidence

  // Real-time
  enableRealtime: true,
  scanIntervalMs: 30000,  // 30 second intervals

  // Credentials
  polymarket: { apiKey, apiSecret, passphrase, privateKey },
  kalshi: { apiKey, privateKey },
});
Scan for Opportunities
typescript
// One-time scan
const opportunities = await finder.scan({
  query: 'election',      // Optional keyword
  minEdge: 1,             // 1% minimum
  minLiquidity: 1000,     // $1000 minimum
  platforms: ['polymarket', 'kalshi'],
});

for (const opp of opportunities) {
  console.log(`${opp.type}: ${opp.description}`);
  console.log(`  Edge: ${opp.edge.toFixed(2)}%`);
  console.log(`  Liquidity: $${opp.liquidity.toLocaleString()}`);
  console.log(`  Confidence: ${(opp.confidence * 100).toFixed(0)}%`);
  console.log(`  Score: ${opp.score}/100`);
  console.log(`  Platforms: ${opp.platforms.join(' ↔ ')}`);
}
Real-Time Monitoring
typescript
// Start real-time scanning
await finder.startRealtime();

// Event handlers
finder.on('opportunity', (opp) => {
  console.log(`🎯 New opportunity: ${opp.description}`);
  console.log(`   Edge: ${opp.edge.toFixed(2)}%`);
});

finder.on('opportunityExpired', (opp) => {
  console.log(`❌ Opportunity expired: ${opp.id}`);
});

finder.on('opportunityUpdated', (opp) => {
  console.log(`📊 Updated: ${opp.id} - Edge now ${opp.edge.toFixed(2)}%`);
});

// Get active opportunities
const active = await finder.getActive();

// Stop monitoring
await finder.stopRealtime();
Market Linking
typescript
// Manually link equivalent markets
await finder.linkMarkets(
  { platform: 'polymarket', id: 'market-123' },
  { platform: 'kalshi', id: 'TRUMP-WIN' }
);

// Auto-match using semantic similarity
const matches = await finder.autoMatchMarkets({
  minSimilarity: 0.85,
  platforms: ['polymarket', 'kalshi'],
});

console.log(`Found ${matches.length} potential matches`);
for (const match of matches) {
  console.log(`${match.marketA.question}`);
  console.log(`  ↔ ${match.marketB.question}`);
  console.log(`  Similarity: ${(match.similarity * 100).toFixed(0)}%`);
}

// Get all links
const links = await finder.getLinks();
Execute Opportunity
typescript
// Execute an opportunity
const result = await finder.execute(opportunityId, {
  size: 100,              // $100 position
  maxSlippage: 0.5,       // 0.5% max slippage
  useProtectedOrders: true,
});

console.log(`Executed: ${result.status}`);
console.log(`  Filled: $${result.filledSize}`);
console.log(`  Avg price: ${result.avgPrice}`);
console.log(`  Fees: $${result.fees}`);

// Mark as taken manually
await finder.markTaken(opportunityId);

// Record outcome
await finder.recordOutcome(opportunityId, {
  pnl: 25.50,
  exitPrice: 0.55,
  exitTimestamp: Date.now(),
});
Analytics
typescript
// Get statistics
const stats = await finder.getAnalytics({
  period: '30d',
});

console.log(`Total opportunities: ${stats.total}`);
console.log(`Taken: ${stats.taken}`);
console.log(`Win rate: ${(stats.winRate * 100).toFixed(1)}%`);
console.log(`Total P&L: $${stats.totalPnl.toLocaleString()}`);
console.log(`Avg edge: ${stats.avgEdge.toFixed(2)}%`);
console.log(`By platform pair:`);
for (const [pair, data] of Object.entries(stats.byPlatformPair)) {
  console.log(`  ${pair}: ${data.count} opps, $${data.pnl} P&L`);
}
Risk Modeling
typescript
// Model execution risk
const risk = await finder.modelRisk(opportunityId);

console.log(`Execution risk:`);
console.log(`  Fill probability: ${(risk.fillProbability * 100).toFixed(0)}%`);
console.log(`  Expected slippage: ${risk.expectedSlippage.toFixed(2)}%`);
console.log(`  Time to fill: ${risk.estimatedTimeToFill}s`);
console.log(`  Counterparty risk: ${risk.counterpartyRisk}`);

// Estimate execution
const estimate = await finder.estimateExecution(opportunityId, {
  size: 500,
});

console.log(`Execution estimate for $500:`);
console.log(`  Expected fill: $${estimate.expectedFill}`);
console.log(`  Expected cost: $${estimate.expectedCost}`);
console.log(`  Net edge after costs: ${estimate.netEdge.toFixed(2)}%`);

Opportunity Scoring

Opportunities are scored 0-100 based on:

FactorWeightDescription
Edge %35%Raw arbitrage spread
Liquidity25%Available volume
Confidence25%Match quality
Execution15%Platform reliability
Penalties
  • Low liquidity (<$1000): -5 points
  • Cross-platform complexity: -3 per platform
  • High slippage (>2%): -5 points
  • Low confidence (<70%): -5 points
  • Near expiry (<24h): -3 points

Semantic Matching

Markets are matched using:

  1. Exact slug match - Platform-specific IDs
  2. Text similarity - Jaccard coefficient
  3. Vector embeddings - Semantic similarity
  4. Manual links - User-defined
typescript
// Configure matching
finder.setMatchingConfig({
  minTextSimilarity: 0.8,
  minEmbeddingSimilarity: 0.85,
  useManualLinksFirst: true,
});

Best Practices

  1. Start with high-confidence matches - 85%+ similarity
  2. Check liquidity - Ensure enough volume to execute
  3. Account for fees - Factor in platform fees
  4. Use protected orders - Avoid slippage
  5. Monitor in real-time - Opportunities disappear fast
  6. Track outcomes - Build performance history

© alsk1992, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in src/skills/bundled/opportunity of alsk1992/CloddsBot.

  • SKILL.md
  • index.ts

Open the folder on GitHubat commit c930628

Compare with similar skills

Opportunity next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Opportunity compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Opportunity this skillalsk1992/CloddsBot2.9k—~2.2kAutomated safety check: PassMIT
Finding Arbitrage Opportunitiesjeremylongshore/tons-of-skills-marketplace2.8k—~1.2kAutomated safety check: PassMIT
Executealirezarezvani/claude-skills28k—~831Automated safety check: PassMIT
Debugging Executionsn8n-io/n8n207k—~2.6kAutomated safety check: PassCustom licence
Prediction Market Risk Reviewaffaan-m/ECC276k1 repos~471Automated safety check: PassMIT
Autopilot Predictruvnet/ruflo74k—~337Automated safety check: PassMIT

Similar skills

  • Finding Arbitrage Opportunities

    jeremylongshore/tons-of-skills-marketplace

    Detect profitable arbitrage opportunities across CEX, DEX, and cross-chain markets in real-time.

    2.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Execute

    alirezarezvani/claude-skills

    /cs:execute <decision — Generate a 90-day execution plan with weekly milestones, DRIs, and check-in cadence from an approved decision.

    28k GitHub stars~831 tokensUpdated 1 mo ago
    Product & Project ManagementAuto-check passed
  • Official

    Debug failed or wrong-output workflow executions using executions tools.

    207k GitHub stars~2.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Review prediction-market, basket, oracle, and trading-agent workflows for compliance, safety, data-quality, privacy, and execution risk.

    276k GitHub starsUsed in 1 repo~471 tokens
    Data & AnalyticsAuto-check passed
  • Autopilot Predict

    ruvnet/ruflo

    Use learned patterns and current state to predict the optimal next action

    74k GitHub stars~337 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Ulw Execute

    code-yeongyu/oh-my-openagent

    Executes a written ulw-plan work plan with Boulder state, evidence ledger, worktree discipline, and parallel subagents.

    70k GitHub stars~6.3k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from alsk1992/CloddsBot

All 116 skills in this repo
  • Qmd

    alsk1992/CloddsBot

    Local hybrid search for markdown notes and docs. An agent skill from alsk1992/CloddsBot.

    2.9k GitHub starsUsed in 3 repos~1.2k tokens
    Auto-check passed
  • AI Strategy

    alsk1992/CloddsBot

    AI Strategy - natural language to trades. An agent skill from alsk1992/CloddsBot.

    2.9k GitHub stars~670 tokensUpdated 7 days ago
    Auto-check passed
  • Alerts

    alsk1992/CloddsBot

    Create and manage price alerts for prediction markets. An agent skill from alsk1992/CloddsBot.

    2.9k GitHub stars~460 tokensUpdated 7 days ago
    Auto-check passed
  • Analytics

    alsk1992/CloddsBot

    Performance attribution, trade analytics, and strategy optimization

    2.9k GitHub stars~1.6k tokensUpdated 7 days ago
    Auto-check passed
  • Arbitrage

    alsk1992/CloddsBot

    Automated cross-platform arbitrage detection and monitoring. An agent skill from alsk1992/CloddsBot.

    2.9k GitHub stars~1.7k tokensUpdated 7 days ago
    Auto-check passed
  • Auto Reply

    alsk1992/CloddsBot

    Automatic response rules, patterns, and scheduled messages. An agent skill from alsk1992/CloddsBot.

    2.9k GitHub stars~1.5k tokensUpdated 7 days ago
    Auto-check passed

Questions about Opportunity

What does Opportunity do?

Find and execute cross-platform arbitrage opportunities across prediction markets. Opportunity is an agent skill from alsk1992/CloddsBot.

How do I install Opportunity in Claude Code?

Run `npx skills add alsk1992/CloddsBot --skill opportunity -a claude-code`. Or copy the skill folder (src/skills/bundled/opportunity in alsk1992/CloddsBot) into .claude/skills/opportunity in your project. Claude Code loads it when a task matches its description.

How do I install Opportunity in Codex?

Run `npx skills add alsk1992/CloddsBot --skill opportunity -a codex`. Or copy the skill folder (src/skills/bundled/opportunity in alsk1992/CloddsBot) into .agents/skills/opportunity in your project. Codex loads it when a task matches its description.

Can I use Opportunity in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add alsk1992/CloddsBot --skill opportunity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/opportunity, .gemini/skills/opportunity, .github/skills/opportunity and .opencode/skills/opportunity in your project.

What does Opportunity need to run?

Going by SKILL.md and its folder, Opportunity needs TypeScript for the scripts in its folder. Our summary lists: Node.js; A credential in POLY_API_KEY; A credential in KALSHI_API_KEY.

Does Opportunity access the network?

SKILL.md names 1 domain. As links in the text: arxiv.org. This is read from the text; nothing was executed.

Is Opportunity safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Opportunity use?

Opportunity is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Opportunity use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Opportunity?

Skills that share tags, products or a category with Opportunity: Finding Arbitrage Opportunities (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Execute (alirezarezvani/claude-skills, 28k stars), Debugging Executions (n8n-io/n8n, 207k stars) and Prediction Market Risk Review (affaan-m/ECC, 276k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Opportunity?

alsk1992 (a GitHub user) maintains it in alsk1992/CloddsBot, which has 2,933 GitHub stars. The repository holds 116 skills in this directory. The repository was last updated on October 2, 2026.

Source: alsk1992/CloddsBot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.