gate-info-research
General Rules
⚠️ 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 and gate-news shared rules (tool degradation, report standards, security, routing).
- Only call MCP tools explicitly listed in this skill. Tools not documented here must NOT be called, even if they
exist in the MCP server.
CLI and playbook contract
- Legacy commands MUST exist under
gate-cli v0.5.2. When shortcutsenabled (see Step 0.5, cliversion >= 0.7.6), prefer playbook shortcut / additional_shortcut blocks (info +coin-overview, +market-overview, etc.); on failure or older CLI, fall back to legacy commands in the playbook YAML.
- Call
gate-cli info … / gate-cli news … only as listed in playbooks/gate-info-research.yaml. This primary skill does not call Gate MCP tools when preflight route is CLI (MCP is for legacy wrapper skills only).
- Always pass
--format json on data-collection commands. Never mix JSON and pretty output in the same pipeline.
- If a required slot (e.g.
symbol for single_coin) cannot be parsed with high confidence, ask the user to clarify. Never guess a ticker from a project name.
- Cross-domain allowed:
gate-info-research MAY call gate-cli news … when the researchplusnews playbook fires. It MUST NOT take over user queries whose primary intent is news / events / community; those route to gate-news-intel.
- Final user-facing reports may use the user’s locale; this
SKILL.md stays English for discovery and indexing (see repository CLAUDE.md rule 1).
Step 0 — Preflight
Follow the shared contract in skills/shared/preflight.md verbatim. Summary:
- Run
gate-cli preflight --format json; parse .route, .status, .user_message.
- Branch:
CLI → continue; MCPFALLBACK → emit FALLBACK and halt; BLOCK → echo usermessage and halt.
- When
status == "readywithmigration_warning", remember it — Step 3 appends one migrate hint at the end of the report.
- Step 0.5 — Version gate: From the same
PREFLIGHTJSON, set cliversion and shortcutsenabled per [skills/shared/cli-version-routing.md](../shared/cli-version-routing.md) (shortcutsenabled=true when >= 0.7.6).
Do NOT run the first data-collection command until Step 0 returns route == "CLI".
<!-- Step 0.5 — Skill update check (OPT-IN, disabled by default).
The script scripts/update-skill.sh is shipped and functional, but agents do NOT run it as part of the normal flow (zero overhead, no token needed). Skill authors can still invoke it manually when they want to sync SKILL.md from upstream:
bash "$SKILL_ROOT/scripts/update-skill.sh" check gate-info-research
Result semantics, strict-check mode (GATESKILLCHECKSTRICT=1) and the auto-apply path (GATESKILLUPDATEMODE=auto) are documented in skills/shared/update-workflow.md. To re-enable this step inside the agent flow, delete this HTML comment wrapper so the block becomes part of the rendered SKILL.md again. -->
Step 1 — Intent routing
Map the user's query to exactly one playbook id. Read the playbook definitions from playbooks/gate-info-research.yaml. The mapping below is authoritative.
| Playbook id |
When to pick |
Required slots |
Legacy skill it covers |
single_coin |
"analyze SOL", "how is BTC", "is ETH worth watching", no explicit extra dimension. |
symbol |
gate-info-coinanalysis |
market_overview |
"market right now", "how is the broad market", "which sectors are hot", no specific coin. |
— |
gate-info-marketoverview |
multi_coin |
"compare BTC and ETH", "BTC vs SOL vs ARB", 2–20 tickers. |
symbols |
gate-info-coincompare |
trend |
"give me a technical analysis of BTC", "SOL RSI / MACD", "BTC price direction / TA view". |
symbol |
gate-info-trendanalysis |
macro |
"impact of NFP on BTC", "CPI impact on markets", "Fed rate decision and crypto". |
— |
gate-info-macroimpact |
researchplusnews |
"analyze SOL and also check recent news and sentiment", "analysis plus sentiment / news". |
symbol |
multi-legacy fan-out |
Slot extraction rules
symbol is the ticker (BTC, ETH, SOL). If the user gives a project name ("Solana", "Arbitrum"), confirm or ask.
symbols is a list; strip duplicates; keep display casing consistent.
timerange is the user's broad news-context window. PER-COMMAND ENUM narrowing — the super-set is 1h / 24h / 7d / 30d, but individual commands accept narrower sets. Before forwarding a user-supplied timerange to any command, clamp it against that command's argenums in the playbook (CLAUDE.md rule 9): search-news accepts 1h / 24h / 7d / 30d, search-ugc accepts 1h / 24h / 7d / 30d / all, get-social-sentiment and get-latest-events accept ONLY 1h / 24h / 7d (CLI rejects 30d with INVALIDARGUMENTS). For longer windows on get-latest-events, switch to --start-time / --end-time (unix-ms).
period (the analysis window consumed by markettrend get-technical-analysis --period and get-kline --period). Server enum: 1h / 4h / 24h / 3d / 5d / 7d / 10d / all. Default 3d. Legacy aliases 1d → use 24h; 1w → use 7d. Do NOT pass 1d or 1w — CLI returns INTELRESULTERROR: invalid period.
timeframe has two variants:
- get-kline --timeframe enum: 1m / 5m / 15m / 1h / 4h / 1d (required, no default). - get-market-snapshot --timeframe and get-indicator-history --timeframe enum: 15m / 1h / 4h / 1d (get-market-snapshot default 1h; get-indicator-history required). 1m / 5m are NOT valid on these two.
indicators (for trend) defaults to rsi,macd,ma30,ma200 — lowercase only. Uppercase (RSI, MACD) passes CLI validation but the server returns empty rows silently. Unsupported windows (ma20, ma50) also return empty rows — use the server-populated set: rsi, macd, macddifference, ma7, ma30, ma120, ma200, ema7, ema30, ema200, bollupperband, bollmiddleband, bolllower_band. See skills/gate-info-research/references/cli-reference.md (section get-indicator-history) for the full field list.
- If a required slot is missing, STOP and ask the user.
Cross-skill routing at Step 1
| User signal |
Route to |
| "is this coin / contract / address safe", "honeypot / blacklist / has risk" (safety-first). |
gate-info-risk (primary; ship round 1). |
| "who is this address", "smart money", "whale", "DeFi TVL", "protocol metrics", "exchange reserves". |
gate-info-web3 (primary) |
| "why did BTC crash", "latest news", "community view", "Reddit", "YouTube". |
gate-news-intel (primary) |
Step 2 — Data collection
Execute the chosen playbook. Each command MUST include --format json. Commands in the same parallel_group run concurrently; the agent waits for the group before entering the next group or synthesis.
Shortcut routing (gate-cli >= 0.7.6)
When shortcutsenabled and the playbook defines shortcut (or additionalshortcut for researchplusnews):
- Resolve the full shortcut list per [cli-version-routing.md](../shared/cli-version-routing.md):
extends ancestors first (info before news), then child blocks in fixed key order (shortcut → additionalshortcut → infoshortcut). Verify each block’s guards (e.g. multicoin: 2 <= len(symbols) <= 5).
- Run each shortcut block in order; accumulate every block’s
replacescommandids into a playbook-level skipids union (includes parent newsaddons when ids match, e.g. researchplusnews).
- On shortcut failure for a block (non-zero exit and/or stderr
{"error":…}): if fallbackonerror, queue legacy commands for that block’s replaced ids only. Do not expect stdout status on info/news calls (unlike preflight).
- On payload
partial / missing_sections (top-level on stdout): mark affected report subsections; do not auto re-run legacy unless required data is empty.
- After all shortcuts succeed: run legacy entries (merged
extends buckets: commands, newsaddons, additionalcommands, …) whose id ∉ skipids, plus postshortcutoptionalids and coin_addon per playbook.
See [cli-version-routing.md](../shared/cli-version-routing.md) for multi-shortcut examples (researchplus_news: +coin-overview then +brief).
Shortcut field mapping: [cli-version-routing.md](../shared/cli-version-routing.md). marketoverview shortcut: no gainers/losers/popular boards — use benchmarksnapshots + trendanchor and state rankings unavailable on shortcut path (playbook synthesis_note).
2.A single_coin
Shortcut (>= 0.7.6): gate-cli info +coin-overview --symbol {symbol} --format json replaces the three info rows below. Optional news addons unchanged.
| Command |
Required args |
Notes |
gate-cli info coin get-coin-info |
--query {symbol} --scope full |
Fundamentals, sector, tokenomics, investors. |
gate-cli info marketsnapshot get-market-snapshot |
--symbol {symbol} --scope full |
Price, 24h / 7d change, OI, funding, sentiment bundle. |
gate-cli info markettrend get-technical-analysis |
--symbol {symbol} |
Multi-timeframe bull / bear / neutral. |
gate-cli news feed search-news (optional) |
--coin {symbol} --limit 5 --sort-by importance --time-range 24h |
Top 5 news. |
gate-cli news feed get-social-sentiment (optional) |
--coin {symbol} --time-range 24h |
Social polarity + mention volume. |
2.B market_overview
Shortcut (>= 0.7.6): gate-cli info +market-overview --format json (optional --benchmark BTC,ETH,SOL).
| Command |
Required args |
gate-cli info marketsnapshot get-market-overview |
(no flags) |
gate-cli info coin get-coin-rankings |
--ranking-type popular --limit 20 |
gate-cli info coin get-coin-rankings |
--ranking-type top_gainers --time-range 24h --limit 10 |
gate-cli info coin get-coin-rankings |
--ranking-type top_losers --time-range 24h --limit 10 |
2.C multi_coin
Shortcut (>= 0.7.6, 2–5 symbols only): derive symbolscsv = join(uppercase(symbols), ",") then gate-cli info +coin-compare --symbols {symbolscsv} --format json. Map payload comparematrix[] (not comparisonmatrix) per [cli-version-routing.md](../_shared/cli-version-routing.md).
Run once (legacy or >5 symbols):
gate-cli info marketsnapshot batch-market-snapshot --symbols {s1} --symbols {s2} … --scope full (the --symbols flag is a repeatable stringArray).
Then run per symbol in parallel:
gate-cli info coin get-coin-info --query {symbol} --scope basic
gate-cli info markettrend get-technical-analysis --symbol {symbol} (optional)
2.D trend
Shortcut (>= 0.7.6): gate-cli info +trend-analysis --symbol {symbol} --format json (lightweight TA; legacy path below for deep kline/indicator history).
gate-cli info markettrend get-technical-analysis --symbol {symbol} --period {period|3d}
gate-cli info markettrend get-kline --symbol {symbol} --timeframe {timeframe|1d} --size 120 --with-indicators true
gate-cli info markettrend get-indicator-history --symbol {symbol} --timeframe {timeframe|1d} --indicators rsi --indicators macd --indicators ma30 --indicators ma200 --limit 120
2.E macro
gate-cli info macro get-macro-summary
gate-cli info macro get-economic-calendar --start-date {today} --end-date {today+14d} --importance high
gate-cli info macro get-macro-indicator --indicator {indicator|CPI} --country {country|US} --mode series --size 12 (optional)
- If the user names a coin, also:
gate-cli info marketsnapshot get-market-snapshot --symbol {symbol} --scope basic.
2.F researchplusnews
When shortcuts_enabled (>= 0.7.6):
- Inherited
single_coin shortcut: gate-cli info +coin-overview --symbol {symbol} --format json.
- Child shortcut:
gate-cli news +brief --coin {symbol} --time-range {time_range|24h} --format json.
- Build
skipids = union of both blocks’ replacescommandids (includes parent singlecoin newsaddons ids newsbrief, social_sentiment).
- Run only legacy commands with
id ∉ skipids — typically optional ugcscan from additionalcommands. Do not re-run the three replaced news commands or parent newsaddons.
Legacy only (shortcutsenabled == false OR per-block fallbackon_error for failed shortcuts):
- Info:
single_coin legacy trio (get-coin-info, get-market-snapshot, get-technical-analysis).
- News: use
additionalcommands below (do not also run singlecoin news_addons — duplicate ids):
gate-cli news feed search-news --coin {symbol} --limit 10 --sort-by importance --time-range {time_range|24h}
gate-cli news feed get-social-sentiment --coin {symbol} --time-range {timerange|24h} — clamp timerange to 1h / 24h / 7d before sending
gate-cli news feed search-ugc --coin {symbol} --time-range {time_range|7d} --platform all --limit 20 (optional)
gate-cli news events get-latest-events --coin {symbol} --time-range {timerange|7d} --limit 15 (optional) — clamp timerange to 1h / 24h / 7d before sending
Failure policy
- If a required command fails or returns an error payload, abort the playbook and surface the user-actionable CLI error.
- If an optional command fails, continue and mark the corresponding section as no data in Step 3.
- Never fabricate numbers; never fill a missing dimension with inferred values.
Step 3 — Synthesis
Aggregate the JSON payloads into the fixed 6-section report. Section order is mandatory and matches the product requirements spec.
Report template
## {subject} — Research report
### 1. Executive summary
- Core view (neutral framing: **stronger / softer / needs monitoring**; not investment advice)
- Up to 3 supporting data points
- Up to 2 main risk observations
### 2. Fundamentals and market position
{Positioning, sector, valuation (MC / FDV), funding / investors, unlocks. Sources: `info coin get-coin-info`.}
### 3. Market and trend
**Snapshot**
| Field | Value | Read |
|------|------|------|
| Price | ... | ... |
| 24h / 7d change | ... | ... |
| Funding | ... | ... |
| Sentiment / fear-greed | ... | ... |
**Technicals**
- Short term (1h / 4h): {bull / bear / neutral}
- Medium term (1d / 1w): {bull / bear / neutral}
- Key support / resistance: ...
Sources: shortcut aggregates (`agg_coin_overview`, `agg_market_overview`, etc.) or legacy commands (`get-market-snapshot`, `get-technical-analysis`, `get-kline`, `get-indicator-history`, `get-market-overview`, `get-coin-rankings`, `batch-market-snapshot`, `get-macro-summary`, `get-economic-calendar`, `get-macro-indicator`) as applicable. Map shortcut JSON fields per [cli-version-routing.md](../_shared/cli-version-routing.md).
### 4. Recent news and market tone
- **Factual events** (from `news feed search-news` / `news events get-latest-events`): ...
- **Community tone** (from `news feed get-social-sentiment` / `news feed search-ugc`): ...
Keep facts and community tone in separate subsections. If no news commands ran, mark **no data** for this section.
### 5. Risk notes
- Data-backed risk bullets (e.g. elevated RSI, near-term unlock, extreme funding, related incidents)
- Cite the originating command for each item
### 6. What to watch next
- Macro / unlock / protocol events in the next 7–14 days
- Technical triggers (e.g. “if price loses X, bias turns weaker”)
> This report is based on public data and tool output; it is not investment advice.
Decision thresholds (applied inside section 3 and 5)
| Condition |
Flag in report |
RSI > 70 (latest row of get-indicator-history) |
"RSI overbought — elevated short-term pullback risk" |
| RSI < 30 |
"RSI oversold — potential bounce" |
| 24h volume > 2× 7d avg volume |
"Significant volume surge" |
| 24h volume < 0.5× 7d avg volume |
"Notable volume decline" |
funding_rate > 0.05% (from get-market-snapshot) |
"High funding rate — long crowding" |
funding_rate < -0.05% |
"Negative funding rate — short crowding" |
| Fear & Greed > 75 |
"Extreme Greed — exercise caution" |
| Fear & Greed < 25 |
"Extreme Fear — potential opportunity" |
Upcoming token unlock within 30 days > 5% of circulating supply (from get-coin-info) |
"Large upcoming token unlock — potential sell pressure" |
Migrate hint (only if Step 0 status was readywithmigration_warning)
At the very end of the final user-facing report, append verbatim the single migration blockquote line defined under Migration hint in skills/shared/report-style.md (the line that begins with ⚙️ and references gate-cli migrate --dry-run). Do not paraphrase.
Cross-skill routing + Safety rules
Routing
Follow the shared matrix in skills/shared/routing.md. Research-skill-specific follow-ups:
| Follow-up intent |
Target |
| "is it safe", "honeypot", "blacklist", "compliance" |
gate-info-risk (primary) |
| "trace this address", "smart money", "whale" |
gate-info-web3 (primary) |
| "why did it crash", "community take" |
gate-news-intel (primary) |
| "only need the technical read" |
Re-enter trend playbook |
| "only need the latest news feed" |
Re-enter researchplusnews with time_range 24h |
Safety rules
Follow the shared contract in skills/shared/report-style.md. Research-specific reminders:
- No buy / sell advice — strongest allowed phrasing is stronger / softer / needs monitoring (neutral).
- No specific price targets.
- Every section cites at least one command id from Step 2 (sources are named in the playbook's
reportsections[*].sourcecommands).
- Missing data → mark no data; never fabricate.
References