gate-exchange-activitycenter
Resolving gate-cli (binary path)
Resolve gate-cli in order: (1) command -v gate-cli and gate-cli --version succeeds; (2) ${HOME}/.local/bin/gate-cli if executable; (3) ${HOME}/.openclaw/skills/bin/gate-cli if executable. Canonical rules: exchange-runtime-rules.md §4 (or gate-runtime-rules.md §4).
gate-exchange-activitycenter
Activity center aggregates platform campaigns (trading competitions, airdrops, newcomer activities, referral activities, etc.), supporting activity recommendations and my activities entry.
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 ./references/gate-runtime-rules.md
- Only use the
gate-clicommands explicitly listed in this skill. Commands not documented here must NOT be run for these workflows, even if other interfaces expose them.
Trigger Scenarios: User mentions "recommend activities", "what activities", "airdrop activities", "trading competition", "VIP activities", "my activities", etc.
⚠️ MANDATORY RESPONSE FORMAT: When this skill is triggered, AI responses MUST strictly follow the Response Templates defined in this document. Free-form responses are FORBIDDEN.
Skill Dependencies
gate-cli commands used
Query Operations (Read-only)
gate-cli cex activity get-entrygate-cli cex activity listgate-cli cex activity types
Authentication
- Interactive file setup: when
GATE_API_KEYandGATE_API_SECRETare not both set on the host, rungate-cli config initto complete the wizard for API key, secret, profiles, and defaults (see gate-cli). - Env / flags:
gate-cli config initis not required when credentials are already supplied — e.g. bothGATE_API_KEYandGATE_API_SECRETset on the host, or--api-key/--api-secretwhere supported — never ask the user to paste secrets into chat. - API Key Required: Yes
- Permissions: Activity:Read
- Portal: create or rotate keys outside the chat: https://www.gate.com/myaccount/profile/api-key/manage
Installation Check
- Required:
gate-cli(runsh ./setup.shfrom this skill directory if missing; optionalGATE_CLI_SETUP_MODE=release). - Add
$HOME/.openclaw/skills/bintoPATHif you invokegate-cliby name (or the directory wheresetup.shinstalls it). - Credentials: When
GATE_API_KEYandGATE_API_SECRETare both set (non-empty) for the host, do not requiregate-cli config init— that is equivalent valid config forgate-cli. When both are unset or empty, remind the operator to rungate-cli config initor to configureGATE_API_KEY/GATE_API_SECRETin the matching skill from the skill library (never ask the user to paste secrets into chat). - Sanity check: Do not proceed with authenticated calls until the CLI behaves as expected (e.g.
gate-cli --versionor a read-onlygate-cli cex ...command from this skill); confirm credentials resolve before mutating operations.
Execution mode
Read and strictly follow references/gate-cli.md, then execute this skill's activity-center workflow.
SKILL.mdkeeps routing and recommendation logic.references/gate-cli.mdis the authoritativegate-cliexecution contract for entry/list/type queries, filter handling, and degraded output behavior.
Routing Rules
| User Intent | Keywords/Pattern | Action |
|---|---|---|
| Hot Recommendation | "recommend activities" "what activities" "recent activities" | Scenario 1.1 Hot Recommendation |
| Type-Based Recommendation | "airdrop activities" "trading competition" "VIP activities" "earn activities" | Scenario 1.2 Type-Based |
| Scenario-Based Recommendation | "I have GT" "futures activities" "spot activities" | Scenario 1.3 Scenario-Based |
| Search by Name | "{activity name}" "position airdrop" | Scenario 1.4 Search by Name |
| My Activities | "what activities I joined" "my activities" "enrolled activities" | Scenario 2 My Activities |
| Welfare Center/Newcomer Tasks | "claim rewards" "check-in" "newcomer tasks" | ❌ NOT applicable to this skill |
gate-cli command index
| MCP Tool | Purpose | action_type |
|---|---|---|
gate-cli cex activity types |
Get activity type list (id, name) for type filtering | query |
gate-cli cex activity list |
Query activities by hot/type/scenario/keywords | info-card |
gate-cli cex activity get-entry |
Get "My Activities" entry card | info-card |
API Parameter Constraints
| Parameter | Constraint | Description |
|---|---|---|
page_size |
MUST be ≤ 3 | ⚠️ HARD LIMIT: Each request MUST NOT exceed 3 activities. Always set page_size=3 or less. |
page |
Integer | Page number, default 1. |
recommend_type |
hot / type / scenario |
Query mode: hot (popular), type (by type_ids), scenario (by keywords) |
type_ids |
String | Activity type IDs, comma-separated. Used with recommend_type=type |
keywords |
String | Search keywords for activity name. Used with recommend_type=scenario |
⚠️ CRITICAL: The
page_sizeparameter is strictly limited to a maximum of 3. Any value greater than 3 is FORBIDDEN.
Scenario 1: Activity Recommendation
1.1 Hot Recommendation (No Type Specified)
Trigger: "recommend activities" "what activities" "recent activities"
API Call:
`gate-cli cex activity list`?recommend_type=hot&sort_by=default&page=1&page_size=3
Rules:
- ✅ Do NOT ask for type clarification, call API directly
- ✅ Fixed
page_size=3(maximum allowed), no pagination
1.2 Type-Based Recommendation
Trigger: "airdrop activities" "trading competition" "VIP activities" "earn activities"
API Call Sequence:
gate-cli cex activity types→ Get type list, match user's type name (case-insensitive)cex_activity_list_activities?recommend_type=type&type_ids=matched_id1,matched_id2&sort_by=time&page_size=3
Keyword Extraction Examples:
- "what airdrop activities are there" → Extract: airdrop
- "VIP activities" → Extract: VIP
- "I'm a VIP, any exclusive activities" → Extract: VIP
- "any low-risk activities" → Extract: earn
1.3 Scenario-Based Recommendation
Trigger: "I have GT, what activities can I join" "futures activities"
API Call:
- If mappable to type: Use
recommend_type=typewithtype_ids - If scenario/asset: Use
recommend_type=scenariowithkeywords
`gate-cli cex activity list`?recommend_type=scenario&keywords=GT&page_size=3
1.4 Search by Name
Trigger: "help me find position airdrop" "where is VIP exclusive activity" "find test activity"
API Call:
`gate-cli cex activity list`?recommend_type=scenario&keywords=test_activity&page=1&page_size=3
Parameter Notes:
- Use
recommend_type=scenariowithkeywordsfor name search keywordsis the activity name or partial name to search- ⚠️ Language Conversion: If user input contains non-English text, translate keywords to English before passing to the
keywordsparameter
Response Template (when results found):
Based on your keywords, I found some possible activities. If you didn't find the activity you're looking for, you can provide a more complete activity name, or click more activities to explore more hot activities.
Scenario 2: My Activities
Trigger: "what activities I joined" "my activities" "enrolled activities"
API Call:
`gate-cli cex activity get-entry`
Rules:
- ✅ Only show entry card, guide user to click and jump
- ✅ Apply URL Processing Rules (see above) to the
urlfield - ❌ Do NOT filter activity list in this API
Decision Logic
| Condition | Action |
|---|---|
| User asks for hot/recommended activities | Call gate-cli cex activity list with recommend_type=hot directly |
| User specifies activity type | First call gate-cli cex activity types, then gate-cli cex activity list with recommend_type=type&type_ids=xxx |
| User mentions asset/scenario (GT, futures) | Use recommend_type=scenario with keywords |
| User searches by activity name | Use recommend_type=scenario with keywords={activity_name} |
| User asks "my activities" | Call gate-cli cex activity get-entry |
| Activity list returns empty | Use "No Results" template, do NOT use "filtered for you..." |
URL Processing Rules
All activity URLs returned by API must be processed before displaying to users:
| URL Pattern | Processing | Example |
|---|---|---|
Relative path (starts with /) |
Prepend https://www.gate.com |
/competition/xxx → https://www.gate.com/competition/xxx |
Already has host (starts with http:// or https://) |
Keep as-is, no modification | https://www.gate.com/campaigns/xxx → https://www.gate.com/campaigns/xxx |
Why relative paths? API returns relative paths for flexibility:
- Multi-language support: Frontend can dynamically add language prefix (
/zh/,/en/,/ja/) - Multi-environment deployment: Different domains for test/staging/production
- Client flexibility: Web, App, H5 can handle links differently
Display Format: Always use clickable Markdown link: [{activity_title}]({processed_url})
Activity Response Field Specification
For all activity recommendation scenarios (1.1, 1.2, 1.3, 1.4), the response MUST only include the following fields:
| API Field | Display Label | Processing Rule |
|---|---|---|
master_one_line |
Activity Title | Display as-is |
url |
Activity Link | Apply URL Processing Rules (prepend https://www.gate.com for relative paths) |
type_name |
Activity Type | Display the type_name value directly (NOT type_id) |
Response Format Example:
| Activity Title | Activity Type | Activity Link |
|---|---|---|
| Traditional Assets Limited Edition Event | Traditional Assets | View Details |
Rules:
- ✅ Only display the 3 fields listed above
- ✅ Use
type_namefor activity type (NOTtype_id) - ✅ Process URLs according to URL Processing Rules
- ❌ Do NOT display other fields like
id,type_id,hot,img,competition_name,start_at,end_at, etc.
Response Templates
⚠️ MANDATORY: AI responses MUST strictly follow these templates. Free-form or custom responses are FORBIDDEN.
Template Compliance Rules
- REQUIRED: Every response MUST use the exact template structure defined below
- REQUIRED: Include the intro text + activity table + follow-up prompt
- FORBIDDEN: Adding extra commentary, explanations, or custom formatting
- FORBIDDEN: Omitting any part of the template structure
Activity Recommendation (Has Results)
| Scenario | Intro Text (MUST use exactly) |
|---|---|
| Hot (1.1) | Here are the current hot activities: |
| By Type (1.2) | Filtered [type] activities for you: |
| By Scenario (1.3) | Filtered activities related to [scenario/asset] for you: |
| By Name (1.4) | Based on your keywords, I found some possible activities: |
Required Response Structure:
{Intro Text from table above}
| Activity Title | Activity Type | Activity Link |
|----------------|---------------|---------------|
| {master_one_line} | {type_name} | [View Details]({processed_url}) |
|... |... |... |
{Follow-up Prompt - see below}
Follow-up Prompts by Scenario:
| Scenario | Follow-up Prompt (MUST include) |
|---|---|
| Hot (1.1) | Click the link to view details or sign up. Need activities of a specific type? |
| By Type (1.2) | Click the link to view details and how to participate. |
| By Scenario (1.3) | Click the link to view participation requirements and rewards. |
| By Name (1.4) | If you didn't find what you're looking for, provide a more complete activity name. |
My Activities Template (Scenario 2)
Required Response Structure:
Click [My Events]({processed_url}) to view your enrolled and ongoing activities.
In "My Events" you can:
- View activity progress
- Claim activity rewards
- Track activity status
No Results Template
Required Response Structure:
Currently no [type/keyword] activities are in progress. You can:
- Check the activity center regularly, new activities will be displayed as soon as they launch
- Tell me other activity types you're interested in (e.g., trading, earn, VIP exclusive), and I can filter for you
Error Handling
| Error Type | Response Template |
|---|---|
| API timeout/failure | Unable to load activities at the moment, please try again later. |
| No matching activities | Use "No Results" template |
| 401 Unauthorized | Session expired, please log in again to view activities. |
| 400 Bad Request | Unable to process your request. Please try a different search term. |
| 429 Rate Limited | Too many requests. Please wait a moment and try again. |
| 500 Server Error | Service temporarily unavailable. Please try again later. |
| Network Error | Network connection issue. Please check your connection and try again. |
Safety Rules
- No investment advice: Activity rewards are platform benefits, not investment guidance
- No data fabrication: Only show data returned by backend
- Compliance check: Do not show activities unavailable in user's region
- No internal exposure: Never mention technical details to users, including:
- API names (e.g.,
gate-cli cex activity list) - Parameter names (e.g.,
recommend_type,type_ids) - Internal IDs (e.g.,
type_id=34,id=1499) - Error codes or technical error messages
- Example of BAD response: "No Alpha type activities found (type_id=34)"
- Example of GOOD response: "Currently no Alpha activities are in progress"
Data Integrity Rules
⚠️ MANDATORY: These rules MUST be followed for ALL data processing and display.
1. Never Guess Data
- ❌ FORBIDDEN: Guessing, estimating, or fabricating any data values
- ❌ FORBIDDEN: Making assumptions about timestamps, numbers, or any computed values
- ✅ REQUIRED: Only display data exactly as returned by API
- ✅ REQUIRED: If data is missing or unclear, state "Data unavailable" instead of guessing
2. Self-Verification Mechanism
Before displaying any processed data, perform self-check:
| Data Type | Verification Method |
|---|---|
| Timestamps | Verify conversion result is reasonable (year, month, day within expected range) |
| URLs | Verify URL format is valid after processing |
| Numbers | Verify numeric values match API response exactly |
| Type names | Verify type_name exists in API response, do NOT derive from type_id |
3. Proactive Validation (Not Reactive Correction)
- ✅ REQUIRED: Validate data BEFORE presenting to user
- ✅ REQUIRED: Double-check time-sensitive information (timestamps, dates)
- ❌ FORBIDDEN: Wait for user to point out errors
- ❌ FORBIDDEN: Display data first and correct later
4. Error Handling for Data Issues
If data validation fails:
- Do NOT display the problematic data
- Show a safe fallback message: "Some data is temporarily unavailable"
- Log the issue internally (do NOT expose to user)
Cross-Skill Routing
| User Follow-up Intent | Route To |
|---|---|
| "I want to buy crypto" | Trading skill |
| "I want to stake" | Launchpool/Earn skill |
| "Welfare center" "check-in" | Welfare center skill (NOT this skill) |
Additional References
For detailed scenarios and examples, see references/scenarios.md
More from gate/gate-skills
gate-exchange-futures
Gate Exchange USDT perpetual futures trading skill. Use when the user wants to trade contracts, open/close perpetual positions, or manage futures leverage. Triggers on 'open long', 'close short', 'USDT perpetual', 'futures TP/SL'.
125gate-exchange-spot
Gate spot trading and account operations skill. Use when the user asks to buy/sell crypto on spot, check account value, list spot balances, or place conditional/trigger orders. Triggers on 'buy coin', 'sell spot', 'take profit', 'stop loss', 'cancel order', 'my spot balance', '查看我的现货账户余额', or '现货账户余额'.
113gate-exchange-marketanalysis
Gate Exchange market analysis tool. Use when the user asks for deep market metrics like liquidity, slippage, funding arbitrage, or manipulation risk. Triggers on 'liquidity', 'depth', 'slippage', 'momentum', 'buy/sell pressure', 'squeeze', 'funding rate', 'arbitrage', 'basis', 'premium'.
102gate-news-briefing
News briefing. Use this skill ONLY when the user's query is exclusively about recent news or headlines with no other analysis dimensions. Trigger phrases: what happened recently, today's highlights, crypto news, any new updates. If the query ALSO mentions coin analysis, risk check, technicals, or any other analysis dimension, use gate-info-research instead — it handles multi-dimension queries in a single unified report.
95gate-info-trendanalysis
Trend and technical analysis. Use this skill ONLY when the user's query is exclusively about technical indicators or trend analysis for one coin with no other analysis dimensions. Trigger phrases: technical analysis, K-line, RSI, MACD, trend, support, resistance. If the query ALSO mentions fundamentals, risk, news, sentiment, or any other analysis dimension, use gate-info-research instead — it handles multi-dimension queries in a single unified report.
84gate-dex-market
On-chain DEX market data queries via Gate: token prices/价格, K-line/OHLC candlestick charts, token rankings, security risk audits, new token discovery, holder analysis, and trading volume stats. Read-only — no transactions. Use when the user asks for 'token price', 'price of ETH', 'check SOL price', '查价格', 'K线', 'candlestick', 'OHLC', 'top gainers', 'trending tokens', 'is this token safe', 'honeypot check', 'new tokens', 'trading volume', or 'liquidity events'. Do NOT use for swap/trade execution (use gate-dex-trade) or wallet balance/account queries (use gate-dex-wallet).
76