skills/gate-exchange-activitycenter/SKILL.md
Gate platform activity and campaign hub skill. Use when the user asks about trading competitions, airdrops, or their enrolled activities. Triggers on 'recommend activities', 'trading competition', 'my activities', 'airdrop campaign'.
npx skillsauth add gate/gate-skills gate-exchange-activitycenterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Activity center aggregates platform campaigns (trading competitions, airdrops, newcomer activities, referral activities, etc.), supporting activity recommendations and my activities entry.
⚠️ 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
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.
| MCP Server | Status | |------------|--------| | Gate (main) | ✅ Required |
Query Operations (Read-only)
GATE_API_KEY, GATE_API_SECRET)gate-mcp-cursor-installergate-mcp-codex-installergate-mcp-claude-installergate-mcp-openclaw-installerRead and strictly follow references/mcp.md, then execute this skill's activity-center workflow.
SKILL.md keeps routing and recommendation logic.references/mcp.md is the authoritative MCP execution layer for entry/list/type queries, filter handling, and degraded output behavior.| 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 |
| MCP Tool | Purpose | action_type |
|----------|---------|-------------|
| cex_activity_list_activity_types | Get activity type list (id, name) for type filtering | query |
| cex_activity_list_activities | Query activities by hot/type/scenario/keywords | info-card |
| cex_activity_get_my_activity_entry | Get "My Activities" entry card | info-card |
| 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.
Trigger: "recommend activities" "what activities" "recent activities"
API Call:
cex_activity_list_activities?recommend_type=hot&sort_by=default&page=1&page_size=3
Rules:
page_size=3 (maximum allowed), no paginationTrigger: "airdrop activities" "trading competition" "VIP activities" "earn activities"
API Call Sequence:
cex_activity_list_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=3Keyword Extraction Examples:
Trigger: "I have GT, what activities can I join" "futures activities"
API Call:
recommend_type=type with type_idsrecommend_type=scenario with keywordscex_activity_list_activities?recommend_type=scenario&keywords=GT&page_size=3
Trigger: "help me find position airdrop" "where is VIP exclusive activity" "find test activity"
API Call:
cex_activity_list_activities?recommend_type=scenario&keywords=test_activity&page=1&page_size=3
Parameter Notes:
recommend_type=scenario with keywords for name searchkeywords is the activity name or partial name to searchkeywords parameterResponse 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.
Trigger: "what activities I joined" "my activities" "enrolled activities"
API Call:
cex_activity_get_my_activity_entry
Rules:
url field| Condition | Action |
|-----------|--------|
| User asks for hot/recommended activities | Call cex_activity_list_activities with recommend_type=hot directly |
| User specifies activity type | First call cex_activity_list_activity_types, then cex_activity_list_activities 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 cex_activity_get_my_activity_entry |
| Activity list returns empty | Use "No Results" template, do NOT use "filtered for you..." |
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:
/zh/, /en/, /ja/)Display Format: Always use clickable Markdown link: [{activity_title}]({processed_url})
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:
type_name for activity type (NOT type_id)id, type_id, hot, img, competition_name, start_at, end_at, etc.⚠️ MANDATORY: AI responses MUST strictly follow these templates. Free-form or custom responses are FORBIDDEN.
| 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. |
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
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 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. |
cex_activity_list_activities)recommend_type, type_ids)type_id=34, id=1499)⚠️ MANDATORY: These rules MUST be followed for ALL data processing and display.
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 |
If data validation fails:
| 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) |
For detailed scenarios and examples, see references/scenarios.md
tools
Exchange listing tracker. Use this skill whenever the user asks about exchange listing, delisting, or maintenance announcements. Trigger phrases include: any new coins listed recently, what did Binance list, new listings, delisted. MCP tools: news_feed_get_exchange_announcements, info_coin_get_coin_info, info_marketsnapshot_get_market_snapshot.
testing
Event attribution and explanation. Use this skill ONLY when the user's query is exclusively about the reason behind a price move with no other analysis dimensions. Trigger phrases: why did X crash, what just happened, why is it pumping, what caused. If the query ALSO mentions fundamentals, risk check, technicals, or any other analysis dimension, use gate-info-research instead — it handles multi-dimension queries in a single unified report.
tools
Community sentiment via Gate-News MCP, X/Twitter-first. Use for social discussion, KOL takes, or opinion on a coin or topic. Triggers: what does the community think about ETH, Twitter or X sentiment, what are people saying, KOL opinions. Reddit, Discord, Telegram when search_ugc is available; until then label output as X/Twitter-only. Tools: news_feed_search_x, news_feed_get_social_sentiment.
testing
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.