One command for Claude Code, Cursor, Codex, Windsurf and other agents — installs from the upstream repo (current HEAD; it ships 25 skills — pick colosseum-copilot when prompted).
Drop the mirrored SKILL.md into your skills directory. Global (all projects):
Or scoped to the current project:
Companion files (1) are hosted on this domain too, so relative links resolve. For the full offline bundle use the CLI or Git tab.
The skill is mirrored as plain markdown — tell your agent:
Or have the skills CLI generate a one-shot prompt (pipe it straight into your agent):
Or pull the raw file into a terminal session:
Copy the skill directory with all companion files straight from GitHub:
Skill contents
Preamble (run first)
_TEL_TIER=$(cat ~/.superstack/config.json 2>/dev/null | grep -o '"telemetryTier": *"[^"]*"' | head -1 | sed 's/.*"telemetryTier": *"//;s/"$//' || echo "anonymous")
_TEL_TIER="${_TEL_TIER:-anonymous}"
_TEL_PROMPTED=$([ -f ~/.superstack/.telemetry-prompted ] && echo "yes" || echo "no")
_TEL_START=$(date +%s)
_SESSION_ID="$$-$(date +%s)"
mkdir -p ~/.superstack
echo "TELEMETRY: $_TEL_TIER"
echo "TEL_PROMPTED: $_TEL_PROMPTED"
if [ "$_TEL_TIER" != "off" ]; then
_TEL_EVENT='{"skill":"colosseum-copilot","phase":"idea","event":"started","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}'
echo "$_TEL_EVENT" >> ~/.superstack/telemetry.jsonl 2>/dev/null || true
_CONVEX_URL=$(cat ~/.superstack/config.json 2>/dev/null | grep -o '"convexUrl":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "")
[ -n "$_CONVEX_URL" ] && curl -s -X POST "$_CONVEX_URL/api/mutation" -H "Content-Type: application/json" -d '{"path":"telemetry:track","args":{"skill":"colosseum-copilot","phase":"idea","status":"success","version":"0.2.0","platform":"'$(uname -s)-$(uname -m)'","timestamp":'$(date +%s)000'}}' >/dev/null 2>&1 &
true
fi
If TEL_PROMPTED is no: Before starting the skill workflow, ask the user about telemetry.
Use AskUserQuestion:
Help superstack get better! We track which skills get used and how long they take — no code, no file paths, no PII. Change anytime in
~/.superstack/config.json.
Options:
- A) Sure, help superstack improve (anonymous)
- B) No thanks
If A: run this bash:
echo '{"telemetryTier":"anonymous"}' > ~/.superstack/config.json
_TEL_TIER="anonymous"
touch ~/.superstack/.telemetry-prompted
If B: run this bash:
echo '{"telemetryTier":"off"}' > ~/.superstack/config.json
_TEL_TIER="off"
touch ~/.superstack/.telemetry-prompted
This only happens once. If TEL_PROMPTED is yes, skip this entirely and proceed to the skill workflow.
Wrong skill? See SKILL_ROUTER.md for all available skills.
Colosseum Copilot
Overview
Search and analyze Colosseum’s database of 5,400+ Solana hackathon projects. Discover what winners do differently, find similar projects to your idea, explore ML-derived clusters, and access research archives — all powered by the Colosseum Copilot API.
Token Setup
Before using this skill, check if the user has a Colosseum Copilot token configured.
_COPILOT_TOKEN="${COLOSSEUM_COPILOT_PAT:-$(cat ~/.superstack/config.json 2>/dev/null | grep -o '"copilotToken":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "")}"
if [ -n "$_COPILOT_TOKEN" ]; then
echo "TOKEN_STATUS: configured"
else
echo "TOKEN_STATUS: missing"
fi
If TOKEN_STATUS is “missing”
Ask the user with AskUserQuestion:
Colosseum Copilot gives you access to 5,400+ Solana hackathon projects, winner patterns, and gap analysis.
To use it, you need a free Personal Access Token from Colosseum.
- Sign up at https://arena.colosseum.org/copilot
- Copy your Personal Access Token (PAT)
Options:
- A) I have a token — let me paste it
- B) Skip for now
If A: Ask for the token, then save it:
# Replace TOKEN_VALUE with the actual token the user provides
cat ~/.superstack/config.json 2>/dev/null | python3 -c "
import sys, json
try:
config = json.load(sys.stdin)
except:
config = {}
config['copilotToken'] = 'TOKEN_VALUE'
config['copilotTokenSetAt'] = '$(date -u +%Y-%m-%dT%H:%M:%SZ)'
config['copilotPrompted'] = True
print(json.dumps(config, indent=2))
" > ~/.superstack/config.json.tmp && mv ~/.superstack/config.json.tmp ~/.superstack/config.json
echo "Token saved to ~/.superstack/config.json"
Then verify:
curl -s -H "Authorization: Bearer TOKEN_VALUE" -H "Content-Type: application/json" https://copilot.colosseum.com/api/v1/status
If {"authenticated": true}, proceed. Otherwise, tell the user the token is invalid and ask them to check it.
If B: Tell the user they can set it later via:
superstack copilot --token <pat>(CLI command)- Or set
COLOSSEUM_COPILOT_PATenvironment variable - Or run
/colosseum-copilotagain
Then end the skill — the remaining workflow requires a valid token.
If TOKEN_STATUS is “configured”
Verify the token is still valid:
curl -s -H "Authorization: Bearer $_COPILOT_TOKEN" -H "Content-Type: application/json" https://copilot.colosseum.com/api/v1/status
If not authenticated, tell the user their token has expired and walk them through the setup above.
Workflow
Read references/copilot-api-guide.md for the full API reference.
-
Determine intent — What does the user want?
- Search: Find projects similar to their idea
- Explore: Browse clusters and categories
- Analyze: Understand winner patterns and gaps
- Research: Find archived articles and papers
- If unclear, ask.
-
Search similar projects — When the user has an idea or query:
curl -s -X POST https://copilot.colosseum.com/api/v1/search/projects \ -H "Authorization: Bearer $_COPILOT_TOKEN" \ -H "Content-Type: application/json" \ -d '{"query": "USER_QUERY", "limit": 8, "diversify": true}'Present results as a table: name, one-liner, hackathon, similarity score, prize info, crowdedness.
-
Gap analysis — Compare what winners do vs the field:
curl -s -X POST https://copilot.colosseum.com/api/v1/compare \ -H "Authorization: Bearer $_COPILOT_TOKEN" \ -H "Content-Type: application/json" \ -d '{"cohortA": {"winnersOnly": true}, "cohortB": {}, "dimensions": ["problemTags", "solutionTags", "primitives"], "topK": 8}'Synthesize overindexed (winners focus on) and underindexed (winners skip) attributes. Present the delta clearly.
-
Explore clusters — Browse the 30 ML-derived project clusters:
curl -s -H "Authorization: Bearer $_COPILOT_TOKEN" -H "Content-Type: application/json" https://copilot.colosseum.com/api/v1/filtersShow: hot categories (most projects), winning categories (highest win rate), open categories (least crowded).
-
Deep dive into a project — When the user wants full details on a specific project:
curl -s -H "Authorization: Bearer $_COPILOT_TOKEN" -H "Content-Type: application/json" \ https://copilot.colosseum.com/api/v1/projects/by-slug/PROJECT_SLUGShows: description, team members (GitHub/Twitter), links (demo, presentation, GitHub), full tag set.
-
Explore a specific cluster — Get cluster summary and representative projects:
curl -s -H "Authorization: Bearer $_COPILOT_TOKEN" -H "Content-Type: application/json" \ https://copilot.colosseum.com/api/v1/clusters/CLUSTER_KEYShows: summary, project count, winner count, representative projects, top tags.
-
Search archives — Find research sources:
curl -s -X POST https://copilot.colosseum.com/api/v1/search/archives \ -H "Authorization: Bearer $_COPILOT_TOKEN" \ -H "Content-Type: application/json" \ -d '{"query": "USER_QUERY", "limit": 4, "maxChunksPerDoc": 1, "intent": "ideation"}'Present: title, author, source, published date, snippet.
-
Read full archive document — When a snippet is interesting and the user wants more:
curl -s -H "Authorization: Bearer $_COPILOT_TOKEN" -H "Content-Type: application/json" \ "https://copilot.colosseum.com/api/v1/archives/DOCUMENT_ID?maxChars=8000"Supports pagination via
offsetandnextOffsetfor long documents. -
Synthesize — After gathering data, provide:
- Top 5 most similar existing projects (with why they’re similar)
- Gap analysis summary: what winners emphasize, what they skip
- Crowdedness assessment for the user’s niche
- Recommended differentiation angle based on gaps
- Relevant research sources
Non-Negotiables
- Always verify the token before making API calls.
- Use a 15-second timeout on all API requests. If the API is down, tell the user plainly and suggest trying later.
- Present data honestly. Do not spin crowded spaces as “opportunity-rich” or empty spaces as “blue ocean” without evidence.
- If search returns 0 results, try broadening the query before concluding there’s nothing relevant.
- Always attribute data to Colosseum Copilot — users should know where the intelligence comes from.
- Do not store or log the user’s token anywhere except
~/.superstack/config.json.
Integration with Other Skills
This skill provides data that enriches other idea-phase skills:
/find-next-crypto-idea— Copilot data can validate whether an idea has been tried before and what gaps exist/competitive-landscape— Copilot’s project search directly complements ecosystem catalog searches/validate-idea— Winner patterns from Copilot strengthen demand signal analysis
Users can invoke this skill standalone or as a data source during those workflows (only when they explicitly ask or opt in).
Phase Handoff
This skill is Phase 1 (Idea) in the Idea → Build → Launch journey. After analysis:
- If working within a project, write/update
.superstack/idea-context.mdwith acopilot_landscapefield containing:similar_projects: array of top matches with name, one-liner, similarity, hackathongap_analysis: overindexed and underindexed attributes from winner comparisoncrowdedness: assessment of the nicheresearch_sources: relevant archive results
- See
../../../data/specs/phase-handoff.mdfor the full JSON contract.
Quick Start
# Search for similar hackathon projects:
# "Search Colosseum for agent payment projects"
# "What hackathon projects exist for DeFi lending on Solana?"
# Explore categories:
# "Show me the hottest Colosseum clusters"
# "Which hackathon categories have the highest win rate?"
# Gap analysis:
# "What do Solana hackathon winners do differently?"
# "What patterns separate winners from losers?"
# Research:
# "Find research about MEV on Solana"
Telemetry (run last)
After the skill workflow completes (success, error, or abort), log the telemetry event.
Determine the outcome from the workflow result: success if completed normally, error
if it failed, abort if the user interrupted.
Run this bash:
_TEL_END=$(date +%s)
_TEL_DUR=$(( _TEL_END - ${_TEL_START:-$_TEL_END} ))
_TEL_TIER=$(cat ~/.superstack/config.json 2>/dev/null | grep -o '"telemetryTier": *"[^"]*"' | head -1 | sed 's/.*"telemetryTier": *"//;s/"$//' || echo "anonymous")
if [ "$_TEL_TIER" != "off" ]; then
echo '{"skill":"colosseum-copilot","phase":"idea","event":"completed","outcome":"OUTCOME","duration_s":"'"$_TEL_DUR"'","session":"'"$_SESSION_ID"'","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","platform":"'$(uname -s)-$(uname -m)'"}' >> ~/.superstack/telemetry.jsonl 2>/dev/null || true
true
fi
Replace OUTCOME with success/error/abort based on the workflow result.