Coin comparison. Use this skill whenever the user asks to compare two or more coins. Trigger phrases include: compare, versus, vs, which is better, difference...
β οΈ STOP β You MUST read and strictly follow the shared runtime rules before proceeding.
Do NOT select or call any tool until all rules are read. These rules have the highest priority.
β Read gate-runtime-rules.md
β Also read info-news-runtime-rules.md for gate-info / gate-news-specific rules (tool degradation, report standards, security, routing degradation, per-skill version checks when scripts/ is present, and legacy wrapper routing).
__FALLBACK__, use only the MCP tools listed in this file. When Step 0 emits __ROUTE_CLI__, do not call those MCP tools; delegate to the mapped primary skill per Step 0.Side-by-side comparison Skill. The user inputs 2-5 coins, the system calls market snapshot + fundamentals tools for each coin in parallel, and the LLM aggregates multi-dimensional data into a comparison table with overall analysis.
Trigger Scenarios: User mentions two or more coins + keywords like compare, versus, vs, which is better, difference, head-to-head.
Per-skill updates: This directory includes scripts/update-skill.sh and may include scripts/update-skill.ps1. ClawHub packages uploaded to the marketplace often omit update-skill.ps1 (upload-page restriction); GitHub / Bitbucket source trees keep both. Policy: info-news-runtime-rules.md Β§1. The Trigger update steps below apply in addition to gate-runtime-rules.md; when scripts are present, use this flow for version checks before execution.
Update check β user visibility: Technical failures during version check (missing script, sandbox, network, non-zero exit, no parseable Result= line) must not be explained to the user; continue with Execution per info-news-runtime-rules.md. Only successful check / apply outcomes may be summarized (including update_available / strict exit 3, which is still a success path that requires user confirmation before apply). Do not auto-download update-skill.* from the network. Static reference if .ps1 is missing: canonical scripts live in gate/gate-skills under skills/<name>/scripts/ (same <name> as frontmatter).
This legacy skill is a compatibility alias for the primary CLI skill
gate-info-research.
Before Trigger update, MCP tool selection, or any legacy Execution Workflow, run a deterministic shell probe:
PRIMARY_SKILL="gate-info-research"
HAS_PRIMARY=0
for root in \
"$HOME/.cursor/skills" \
"$HOME/.codex/skills" \
"$HOME/.openclaw/skills" \
"$HOME/.agents/skills" \
"$HOME/.gemini/antigravity/skills"
do
if [ -f "$root/$PRIMARY_SKILL/SKILL.md" ]; then
HAS_PRIMARY=1
break
fi
done
if command -v gate-cli >/dev/null 2>&1 && [ "$HAS_PRIMARY" = "1" ]; then
echo "__ROUTE_CLI__"
else
echo "__FALLBACK__"
fi
Interpretation:
__ROUTE_CLI__ β stop here. Do not run Trigger update or the legacy MCP
sections below. Follow
https://github.com/gate/gate-skills/blob/master/skills/gate-info-research/SKILL.md
and its playbook contract. Carry over the minimum context: symbols[].__FALLBACK__ β continue with Trigger update and the legacy MCP workflow in
this file.Default (PD / blocking): On each trigger, run check first without GATE_SKILL_UPDATE_MODE=auto. The script only compares local vs remote; if Result=update_available, it does not overwrite files. STOP β ask the user whether to update before any apply, run, or skill Execution. In sandboxes (e.g. Cursor), use full / all permissions when later running apply. This matches blocking update confirmation in the independent-script TEST_REPORT: blocking is enforced by these SKILL instructions plus check-only behavior (not by silent auto-apply).
Strict check (Agent / IDE β recommended on check): Use GATE_SKILL_CHECK_STRICT=1. When Result=update_available, check exits 3 and prints GATE_SKILL_CHECK_EXIT=3 β it stops only that shell step. Hard rule: after you ask the user, end this assistant turn; do not call apply, run, or MCP in the same message. run applies without a prior user step β do not use run in chat for the blocking flow; use check β user confirms β apply.
Install root: check / apply read $DEST/SKILL.md. Typical $SKILL_ROOT: $HOME/.cursor/skills/<name>/, $HOME/.codex/skills/<name>/, $HOME/.openclaw/skills/<name>/, $HOME/.agents/skills/<name>/, $HOME/.gemini/antigravity/skills/<name>/. Single-arg: the script resolves DEST in that order when SKILL.md exists; otherwise DEST is scripts/../. Workspace-only trees need two-arg check / apply with explicit DEST.
Agent selection rules (run at most one of the fenced examples below; choose by OS and files under $SKILL_ROOT/scripts/):
update-skill.sh exists β use only the Bash example.update-skill.ps1 exists β use only the PowerShell example..ps1 (typical ClawHub install): If only update-skill.sh exists β try WSL or Git Bash (bash) using the same command shape as the Bash example. If bash is unavailable or execution fails β skip Step 1 silently (no script stderr or βversion check failedβ message to the user); proceed to Execution.GATE_SKILL_CONFIRM_TOKEN or run apply / revoke-pending.Bash (blocking β no auto; example Cursor):
GATE_SKILL_CHECK_STRICT=1 bash "$HOME/.cursor/skills/gate-info-coincompare/scripts/update-skill.sh" check "gate-info-coincompare"
PowerShell:
$env:GATE_SKILL_CHECK_STRICT = '1'
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\.cursor\skills\gate-info-coincompare\scripts\update-skill.ps1" check "gate-info-coincompare"
Result semantics: skipped = no action. update_available = remote newer; with blocking flow, do not apply until the user agrees. check_failed = could not compare β proceed with current version per info-news-runtime-rules.md; do not surface technical check failure details to the user.
Agent parse (stdout): GATE_SKILL_UPDATE_AGENT_ACTION=β¦. BLOCK_UNTIL_USER_CONFIRMS_UPDATE β Step 2 before Execution. CONTINUE_SKILL_EXECUTION β no block from the check script.
Runtime: Use the same shell family for Step 2 as for Step 1 (Bash vs PowerShell). If Step 1 was skipped, do not run apply or revoke-pending.
If update_available:
STOP β do NOT proceed to Execution yet.
Inform the user (e.g. newer version available; summarize if helpful).
Wait for the userβs reply β blocking step.
Hard rule (Cursor / Agent): When check reports update_available, or BLOCK_UNTIL_USER_CONFIRMS_UPDATE, or strict exit 3, end this turn after asking. Only in the userβs next message run apply (if they agree) or revoke-pending (if they decline). Do not chain apply in the same turn as check for this flow.
apply with GATE_SKILL_CONFIRM_TOKEN from strict check stdout when required, then Execution.revoke-pending, then Execution on the current install.Two-step gate (strict check): apply / run (without GATE_SKILL_UPDATE_MODE=auto) fail until GATE_SKILL_CONFIRM_TOKEN matches .gate-skill-apply-token. User decline β revoke-pending.
GATE_SKILL_CONFIRM_TOKEN="<paste from check stdout>" bash "$HOME/.cursor/skills/gate-info-coincompare/scripts/update-skill.sh" apply "gate-info-coincompare"
bash "$HOME/.cursor/skills/gate-info-coincompare/scripts/update-skill.sh" revoke-pending "gate-info-coincompare"
$env:GATE_SKILL_CONFIRM_TOKEN = '<paste from check stdout>'
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\.cursor\skills\gate-info-coincompare\scripts\update-skill.ps1" apply "gate-info-coincompare"
powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\.cursor\skills\gate-info-coincompare\scripts\update-skill.ps1" revoke-pending "gate-info-coincompare"
If Step 1 was not strict (no pending token): apply without GATE_SKILL_CONFIRM_TOKEN is allowed.
If skipped or check_failed: no update step; proceed to Execution.
GATE_SKILL_UPDATE_MODE=autoFor CI / unattended automation only: setting GATE_SKILL_UPDATE_MODE=auto on check makes the script apply immediately when the remote is newer β no user confirmation and incompatible with blocking update confirmation tests. Do not use auto on check when reproducing the blocking PD flow.
name above; must match skills/<name>/ on gate-skills.$SKILL_ROOT/scripts/update-skill.sh (or .ps1) where $SKILL_ROOT/SKILL.md is this skill β e.g. ~/.cursor/skills/<name>, ~/.codex/skills/<name>, ~/.openclaw/skills/<name>, ~/.agents/skills/<name>, ~/.gemini/antigravity/skills/<name>; do not treat ~/.cursor (or any host root without skills/<name>/SKILL.md) as the install. With one arg, the script resolves $SKILL_ROOT in that order before falling back to the scriptβs directory; workspace installs need explicit DEST. Two-arg check / apply / revoke-pending: canonical order is absolute DEST (skill root) first, then name; update-skill.sh / update-skill.ps1 auto-swap when only one normalized path contains SKILL.md (e.g. agent passes name then path).update-skill.ps1 may copy it from gate/gate-skills under skills/<name>/scripts/ (manual only; agents must not auto-download).Do not dump raw script logs into the user-facing reply except when debugging. On check exit 3 (strict), do not run Execution until Step 2 is resolved. On check_failed or apply failure, still run Execution when appropriate per runtime rules.
Legacy path only β this section applies when Step 0 emitted __FALLBACK__.
| MCP Server | Status |
|---|---|
| Gate-Info | β Required |
Query Operations (Read-only)
Legacy path only β when Step 0 emitted __ROUTE_CLI__, routing is delegated to
gate-info-research.
| User Intent | Keywords/Pattern | Action |
|---|---|---|
| Multi-coin comparison | "compare BTC and ETH" "SOL vs AVAX" "Layer2 coin comparison" | Execute this Skill's full workflow |
| Single coin analysis | "analyze SOL for me" | Route to gate-info-coinanalysis |
| Price only | "what's BTC price" | Call info_marketsnapshot_get_market_snapshot directly |
| Sector overview | "how is the DeFi sector doing" | Route to gate-info-marketoverview |
| Ranking list | "top 10 coins by market cap" | info_coin_get_coin_rankings not yet available β prompt user to list specific coins to compare |
Legacy path only β this section applies when Step 0 emitted __FALLBACK__.
Extract from user input:
symbols[]: List of coins (2-5), e.g., [BTC, ETH, SOL]Limits: Minimum 2, maximum 5. If more than 5, prompt user to narrow the scope. If only 1 coin, ask for at least one more or route to gate-info-coinanalysis.
For each symbol in the list, execute in parallel:
| Step | MCP Tool | Parameters | Retrieved Data | Parallel |
|---|---|---|---|---|
| 1a | info_marketsnapshot_get_market_snapshot |
symbol={symbol}, timeframe="1d", source="spot" |
Market data: real-time price, K-line summary, market cap, FDV, Fear & Greed Index | Yes |
| 1b | info_coin_get_coin_info |
query={symbol} |
Fundamentals: project info, sector, funding, tokenomics | Yes |
For 3 coins, this results in 6 parallel Tool calls with no dependencies. When
info_marketsnapshot_batch_market_snapshotandinfo_coin_search_coinsare available, prefer them; otherwise use per-coin calls above.
If the user explicitly requests technical comparison, or the number of coins is 3 or fewer, optionally call in parallel:
| Step | MCP Tool | Parameters | Retrieved Data | Parallel |
|---|---|---|---|---|
| 2 | info_markettrend_get_technical_analysis |
symbol={symbol} |
Technical signals: RSI, MACD, MA alignment, support/resistance | Yes |
Group all Tool responses by coin, and the LLM generates a side-by-side comparison report using the template below.
Legacy path only β this section applies when Step 0 emitted __FALLBACK__.
## Coin Comparison: {symbol_1} vs {symbol_2} [vs {symbol_3} ...]
### 1. Key Metrics Comparison
| Metric | {symbol_1} | {symbol_2} | {symbol_3} |
|--------|-----------|-----------|-----------|
| Price | ${price_1} | ${price_2} | ${price_3} |
| 24h Change | {change_24h_1}% | {change_24h_2}% | {change_24h_3}% |
| 7d Change | {change_7d_1}% | {change_7d_2}% | {change_7d_3}% |
| Market Cap | ${mcap_1} | ${mcap_2} | ${mcap_3} |
| Market Cap Rank | #{rank_1} | #{rank_2} | #{rank_3} |
| FDV | ${fdv_1} | ${fdv_2} | ${fdv_3} |
| 24h Volume | ${vol_1} | ${vol_2} | ${vol_3} |
| Fear & Greed Index | {fg_1} | {fg_2} | {fg_3} |
### 2. Fundamentals Comparison
| Dimension | {symbol_1} | {symbol_2} | {symbol_3} |
|-----------|-----------|-----------|-----------|
| Sector | {category_1} | {category_2} | {category_3} |
| Total Funding | ${funding_1} | ${funding_2} | ${funding_3} |
| Key Investors | {investors_1} | {investors_2} | {investors_3} |
| Circulating Ratio | {circ_ratio_1}% | {circ_ratio_2}% | {circ_ratio_3}% |
| Upcoming Unlocks | {unlock_1} | {unlock_2} | {unlock_3} |
### 3. Technical Comparison (if available)
| Dimension | {symbol_1} | {symbol_2} | {symbol_3} |
|-----------|-----------|-----------|-----------|
| Overall Signal | {signal_1} | {signal_2} | {signal_3} |
| RSI(14) | {rsi_1} | {rsi_2} | {rsi_3} |
| MACD | {macd_1} | {macd_2} | {macd_3} |
| MA Alignment | {ma_1} | {ma_2} | {ma_3} |
### 4. Comparative Summary
{LLM generates a 3-5 sentence cross-comparison analysis covering:}
- Strengths and weaknesses of each coin across dimensions
- Which coin has stronger recent performance and which is weakening
- Whether fundamentals and market data align
- Differentiated risks to watch
### 5. Dimension-by-Dimension Winners
| Dimension | Best Performer | Weakest Performer | Notes |
|-----------|---------------|-------------------|-------|
| Short-term Gains | {best_1} | {worst_1} | ... |
| Market Cap / FDV Ratio | {best_2} | {worst_2} | ... |
| Funding Background | {best_3} | {worst_3} | ... |
| Technical Signals | {best_4} | {worst_4} | ... |
### β οΈ Risk Warnings
{Risk differentials identified in the comparison, e.g.:}
- {symbol_x} has only {x}% circulating supply β significantly higher unlock pressure than peers
- {symbol_y} RSI is in overbought territory β higher short-term pullback risk than {symbol_z}
- {symbol_w} 24h volume is disproportionately low relative to market cap β liquidity disadvantage
> The above analysis is a data-driven side-by-side comparison and does not constitute investment advice. Please make decisions based on your own risk tolerance.
| Condition | Assessment |
|---|---|
| 24h change difference > 10% between coins | Flag "Significant short-term performance divergence" |
| FDV/Market Cap ratio for one coin > 2x others | Flag "Relatively elevated FDV β higher unlock risk" |
| Circulating ratio < 30% | Flag "Low circulating ratio β future sell pressure risk" |
| 24h volume / market cap < 1% | Flag "Low liquidity β slippage risk for large trades" |
| RSI difference > 30 (one overbought, another oversold) | Flag "Technicals in opposite states β evaluate separately" |
| Any Tool returns empty/error | Mark corresponding column as "Data unavailable"; display remaining coins normally |
| Two coins are from entirely different sectors | Remind user: "Cross-sector comparison is for reference only β core value drivers differ significantly" |
| Error Type | Handling |
|---|---|
| A coin does not exist | Note the name may be incorrect; exclude it and continue comparing the rest |
| Only 1 coin provided | Route to gate-info-coinanalysis (single coin analysis) |
| More than 5 coins provided | Prompt user to narrow down to 5 or fewer, or suggest comparing in batches |
| A coin's Tool times out | Skip that coin's dimension; mark as "Temporarily unavailable" in the table |
| All Tools fail | Return error message; suggest the user try again later |
| User inputs an address | Route to gate-info-addresstracker |
| User Follow-up Intent | Route To |
|---|---|
| "Give me a deep dive on SOL" | gate-info-coinanalysis |
| "Show me SOL technicals in detail" | gate-info-trendanalysis |
| "Any recent news for these coins?" | gate-news-briefing |
| "Is SOL's contract safe?" | gate-info-riskcheck |
| "Why did ETH pump but SOL didn't?" | gate-news-eventexplain |
| "How about on-chain data comparison?" | gate-info-tokenonchain |
| PRD-Defined Tool | Actually Available Tool | Status | Degradation Strategy |
|---|---|---|---|
info_marketsnapshot_batch_market_snapshot |
info_marketsnapshot_get_market_snapshot |
Degraded | Call get_market_snapshot per coin in parallel β no speed impact |
info_coin_search_coins |
info_coin_get_coin_info |
Degraded | Use get_coin_info with symbol query as substitute |
info_markettrend_get_technical_analysis |
info_markettrend_get_technical_analysis |
β Ready | β |