Search, discover, and browse indexed markets across all platforms
57
44%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Optimize this skill with Tessl
npx tessl skill review --optimize ./src/skills/bundled/market-index/SKILL.mdSearch, discover, and browse markets across all prediction market platforms with advanced filtering and categorization.
/index search "trump" # Search all indexed markets
/index search "election" --platform poly # Search specific platform
/index search "fed rate" --category finance # Filter by category
/index search "crypto" --min-volume 10000 # Min volume filter
/index search "sports" --active-only # Active markets only/index categories # List all categories
/index category politics # Browse politics markets
/index category crypto # Browse crypto markets
/index category sports # Browse sports markets
/index trending # Trending markets/index new # Newly created markets
/index new --last 24h # Last 24 hours
/index hot # High activity markets
/index closing-soon # Markets ending soon/index update # Refresh market index
/index update poly # Update specific platform
/index stats # Index statistics
/index status # Index health statusimport { createMarketIndex } from 'clodds/market-index';
const index = createMarketIndex({
platforms: ['polymarket', 'kalshi', 'manifold', 'betfair'],
// Auto-refresh
autoRefresh: true,
refreshIntervalMs: 300000, // 5 minutes
// Storage
cachePath: './market-index.db',
});// Full-text search
const results = await index.search('trump election', {
platforms: ['polymarket', 'kalshi'],
limit: 20,
sortBy: 'volume', // 'volume' | 'relevance' | 'endDate' | 'created'
});
for (const market of results) {
console.log(`[${market.platform}] ${market.question}`);
console.log(` Category: ${market.category}`);
console.log(` Volume: $${market.volume.toLocaleString()}`);
console.log(` End: ${market.endDate}`);
}
// With filters
const filtered = await index.search('', {
category: 'politics',
minVolume: 10000,
activeOnly: true,
endsBefore: '2024-12-31',
});// Get all categories
const categories = await index.getCategories();
for (const cat of categories) {
console.log(`${cat.name}: ${cat.marketCount} markets`);
}
// Get markets in category
const politics = await index.getMarketsByCategory('politics', {
limit: 50,
sortBy: 'volume',
});// Get new markets
const newMarkets = await index.getNewMarkets({
since: Date.now() - 24 * 60 * 60 * 1000, // Last 24h
limit: 20,
});
// Get trending/hot markets
const trending = await index.getTrendingMarkets({
period: '24h',
limit: 10,
});
for (const market of trending) {
console.log(`${market.question}`);
console.log(` Volume 24h: $${market.volume24h.toLocaleString()}`);
console.log(` Volume change: ${market.volumeChange > 0 ? '+' : ''}${market.volumeChange}%`);
}
// Markets closing soon
const closingSoon = await index.getClosingSoon({
within: '48h',
minVolume: 1000,
});// Update index
await index.update();
// Update specific platform
await index.update('polymarket');
// Get index stats
const stats = await index.getStats();
console.log(`Total markets: ${stats.totalMarkets}`);
console.log(`By platform:`);
for (const [platform, count] of Object.entries(stats.byPlatform)) {
console.log(` ${platform}: ${count}`);
}
console.log(`By category:`);
for (const [category, count] of Object.entries(stats.byCategory)) {
console.log(` ${category}: ${count}`);
}
console.log(`Last updated: ${stats.lastUpdated}`);
// Check status
const status = await index.getStatus();
console.log(`Status: ${status.status}`);
console.log(`Markets indexed: ${status.marketCount}`);
console.log(`Index age: ${status.ageMinutes} minutes`);// Get market details
const market = await index.getMarket('polymarket', 'market-123');
console.log(`Question: ${market.question}`);
console.log(`Description: ${market.description}`);
console.log(`Category: ${market.category}`);
console.log(`Platform: ${market.platform}`);
console.log(`Volume: $${market.volume.toLocaleString()}`);
console.log(`Liquidity: $${market.liquidity.toLocaleString()}`);
console.log(`Start: ${market.startDate}`);
console.log(`End: ${market.endDate}`);
console.log(`Outcomes: ${market.outcomes.join(', ')}`);Standard categories across platforms:
| Category | Description |
|---|---|
| politics | Elections, policy, government |
| crypto | Cryptocurrency prices, events |
| finance | Fed rates, stocks, economy |
| sports | Games, tournaments, awards |
| entertainment | Movies, TV, celebrities |
| science | Research, space, climate |
| technology | Tech companies, products |
| world | International events |
| other | Miscellaneous |
| Syntax | Example | Description |
|---|---|---|
| Keywords | trump election | Match any word |
| Exact phrase | "federal reserve" | Match exact phrase |
| Exclude | election -trump | Exclude word |
| Platform filter | platform:poly | Specific platform |
| Category filter | category:politics | Specific category |
| Option | Description |
|---|---|
volume | Highest volume first |
relevance | Best match first |
endDate | Ending soonest first |
created | Newest first |
liquidity | Highest liquidity first |
2a8c94e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.