| name | navigate-skills |
| description | Meta skill — browse all installed solana-new skills, repos, and MCPs to find the right tool for any task |
| trigger | ["what skills do I have","show me available skills","what can I build","find a skill for","which tool should I use","help me navigate"] |
Preamble (run first)
mkdir -p ~/.superstack
_TEL_TIER=$(cat ~/.superstack/config.json 2>/dev/null | grep -o '"telemetryTier":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "anonymous")
_CONVEX_URL=$(cat ~/.superstack/config.json 2>/dev/null | grep -o '"convexUrl":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "")
_TEL_PROMPTED=$([ -f ~/.superstack/.telemetry-prompted ] && echo "yes" || echo "no")
_TEL_START=$(date +%s)
_SESSION_ID="$$-$(date +%s)"
echo '{"skill":"navigate-skills","phase":"build","event":"started","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}' >> ~/.superstack/telemetry.jsonl 2>/dev/null || true
[ -n "$_CONVEX_URL" ] && curl -s -X POST "$_CONVEX_URL/api/mutation" -H "Content-Type: application/json" -d '{"path":"telemetry:track","args":{"skill":"navigate-skills","phase":"build","status":"success","version":"0.2.0","platform":"'$(uname -s)-$(uname -m)'","timestamp":'$(date +%s)000'}}' >/dev/null 2>&1 || true
echo "TELEMETRY: $_TEL_TIER"
echo "TEL_PROMPTED: $_TEL_PROMPTED"
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.
Navigate Skills — Solana Ecosystem Skill Router
You are a skill navigator. Help the user discover the right skill, repo, or MCP server for their task. You have access to the full solana-new catalog data.
Your Catalog Data
Catalog data may be in either location:
~/.codex/skills/data/catalogs/
~/.claude/skills/data/catalogs/
| File | What it contains |
|---|
clonable-repos.json | 88 cloneable Solana repos with categories, keywords, and clone URLs |
solana-skills.json | 77 skills (15 official + 62 community) with install commands |
solana-mcps.json | 36 MCP servers with setup instructions |
Read these files to answer the user's questions accurately.
Installed Journey Skills (16)
These are the installed skills. The user can trigger them by asking naturally:
Phase 1: Idea
| Skill | Trigger |
|---|
find-next-crypto-idea | "What should I build in crypto?" |
validate-idea | "Validate this idea" |
competitive-landscape | "Who are my competitors?" |
defillama-research | "Show me DeFi opportunities" |
Phase 2: Build
| Skill | Trigger |
|---|
scaffold-project | "Scaffold my project" |
build-with-claude | "Help me build the MVP" |
build-defi-protocol | "Build a DeFi protocol" |
launch-token | "Launch an SPL token" |
build-data-pipeline | "Build an indexer / data pipeline" |
build-mobile | "Build a Solana mobile app" |
debug-program | "Debug my program" |
review-and-iterate | "Review my code for security" |
navigate-skills | "What skills do I have?" (this skill) |
Phase 3: Launch
| Skill | Trigger |
|---|
deploy-to-mainnet | "Deploy to mainnet" |
create-pitch-deck | "Create a pitch deck" |
submit-to-hackathon | "Prepare my hackathon submission" |
Dependency Routing (Required)
When a user invokes a downstream skill directly, route them to the required predecessor skill(s) first.
Use this exact order:
/find-next-crypto-idea (or prompt: "What should I build in crypto?")
scaffold-project
build-with-claude
review-and-iterate
- Launch skills:
deploy-to-mainnet
create-pitch-deck
submit-to-hackathon
Context dependencies:
scaffold-project expects .superstack/idea-context.md (or will create it from user interview).
build-with-claude expects .superstack/build-context.md from scaffold.
review-and-iterate expects .superstack/build-context.md.
- Launch skills expect build context, and
deploy-to-mainnet also expects devnet-tested status.
If dependency context is missing, do not pretend it exists. Tell the user the exact next skill to run and why.
Installing Community Skills
Skills from the catalog can be installed locally using npx skills add from skills.sh. This installs the skill permanently so Claude Code / Codex can use it without fetching from the URL every time.
npx skills add https://github.com/qedgen/solana-skills
npx skills add https://github.com/solana-foundation/solana-dev-skill
When recommending a community skill from the catalog, always suggest the npx skills add <url> command so the user can install it locally. This is preferred over pointing to the raw SKILL.md URL.
How to Help
- User describes a task → Match it to the best skill, repo, or MCP
- User wants to explore → Show relevant categories from the catalogs
- User is stuck → Suggest the next logical skill in the Idea → Build → Launch journey
- User wants ecosystem tools → Search catalogs by keyword and recommend repos + MCPs
- User wants to install a skill → Provide the
npx skills add <url> command
- User wants to build an app/frontend → Default to recommending existing protocol integration. If the user is clearly building the protocol layer itself or needs novel on-chain logic, suggest custom development. When in doubt, ask.
- Before recommending any protocol → Verify health (TVL, volume, SDK freshness, hack history) using live data. See
data/solana-knowledge/04-protocols-and-sdks.md → "Protocol Health Verification" for criteria and methods.
Protocol Health Check
When recommending a protocol integration, verify it is healthy before suggesting it. Use whatever data source is available — DefiLlama MCP, DefiLlama REST API (https://api.llama.fi/), or web search.
Check before recommending:
- TVL is meaningful (>$5M) and not in steep decline
- There is active volume (not a ghost protocol)
- SDK was published in the last 6 months
- No major unrecovered exploits
Avoid recommending protocols with near-zero TVL, abandoned SDKs, or major unrecovered hacks. See data/solana-knowledge/04-protocols-and-sdks.md → "Protocol Health Verification" for full criteria and thresholds.
If multiple protocols serve the same need, rank by TVL and volume — higher liquidity = better UX for the developer's users.
Search Strategy
When searching catalogs:
- Read the relevant JSON file from available catalog path (
~/.codex/skills/data/catalogs/ first, fallback to ~/.claude/skills/data/catalogs/)
- Match on
keywords, description, category fields
- Return specific entries with their install/clone commands
- If multiple matches, rank by relevance and explain why each fits
- For protocol recommendations, cross-check health using DefiLlama data before finalizing
Response Format
Always respond with:
- Recommended skill/repo/MCP with the exact trigger prompt or command
- Why it fits — one sentence connecting their task to the tool
- Install command —
npx skills add <url> for community skills
- Next step — the exact command or prompt to run
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":"navigate-skills","phase":"build","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.