skills/gate/gate-exchange-futures/SKILL.md
The USDT perpetual futures trading function of Gate Exchange: open position, close position, cancel order, amend order. Trigger phrases: open position, close position, cancel order, amend order, reverse, close all.
npx skillsauth add aiskillstore/marketplace gate-exchange-futuresInstall 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.
This skill is the single entry for Gate USDT perpetual futures. It supports four operations only: open position, close position, cancel order, amend order. User intent is routed to the matching workflow.
| Module | Description | Trigger keywords |
|--------|-------------|------------------|
| Open | Limit/market open long or short, cross/isolated mode | long, short, buy, sell, open |
| Close | Full close, partial close, reverse position | close, close all, reverse |
| Cancel | Cancel one or many orders | cancel, revoke |
| Amend | Change order price or size | amend, modify |
| Intent | Example phrases | Route to |
|--------|-----------------|----------|
| Open position | "BTC long 1 contract", "market short ETH", "10x leverage long" | Read references/open-position.md |
| Close position | "close all BTC", "close half", "reverse to short", "close everything" | Read references/close-position.md |
| Cancel orders | "cancel that buy order", "cancel all orders", "list my orders" | Read references/cancel-order.md |
| Amend order | "change price to 60000", "change order size" | Read references/amend-order.md |
| Unclear | "help with futures", "show my position" | Clarify: query position/orders, then guide user |
contract, side, size, price, leverage.Contract: call get_futures_contract to ensure contract exists and is tradeable.
Account: check balance and conflicting positions (e.g. when switching margin mode).
Risk: do not pre-calculate valid limit price from order_price_deviate (actual deviation limit depends on risk_limit_tier). On PRICE_TOO_DEVIATED, show the valid range from the error message.
Margin mode vs position mode (only when user explicitly requested a margin mode and it differs from current): call get_futures_accounts(settle) to get position mode. From response position_mode: single = single position mode, dual = dual (hedge) position mode. Margin mode from position: use position query per dual/single above → pos_margin_mode (cross/isolated). If user did not specify margin mode, do not switch; place order in current mode.
position_mode === "single"): do not interrupt. Prompt user: "You already have a {currency} position; switching margin mode will apply to this position too. Continue?" (e.g. currency from contract: BTC_USDT → BTC). Wait for user confirmation, then continue.position_mode === "dual"): interrupt flow. Tell user: "Please close the position first, then open a new one."Dual mode vs single mode (API choice): call get_futures_accounts(settle) first. If position_mode === "dual" (or in_dual_mode === true):
list_futures_positions(settle, holding=true) or get_futures_dual_mode_position(settle, contract). Do not use get_futures_position in dual mode (API returns an array and causes parse error).update_futures_dual_comp_position_cross_mode(settle, contract, mode) (do not use update_futures_position_cross_mode in dual mode).update_futures_dual_mode_position_leverage(settle, contract, leverage) (do not use update_futures_position_leverage in dual mode; it returns array and causes parse error).
If single mode: use get_futures_position(settle, contract) for position; update_futures_dual_comp_position_cross_mode for mode switch; update_futures_position_leverage for leverage.mark_price, quanto_multiplier from get_futures_contract, then convert:
order_size_min and size precision.pos_margin_mode). If user explicitly wants isolated, check leverage.pos_margin_mode), then before calling update_futures_dual_comp_position_cross_mode: get position mode via get_futures_accounts(settle) → position_mode (single/dual); if position_mode === "single", show prompt "You already have a {currency} position; switching margin mode will apply to this position too. Continue?" and continue only after user confirms; if position_mode === "dual", do not switch—interrupt and tell user "Please close the position first, then open a new one."update_futures_dual_comp_position_cross_mode(settle, contract, mode) with mode "CROSS" or "ISOLATED". Do not switch if the user did not explicitly request a margin mode.update_futures_dual_mode_position_leverage in dual mode or update_futures_position_leverage in single mode first, then proceed.list_futures_positions or get_futures_dual_mode_position; single: get_futures_position) for contract + side. Show final order summary (contract, side, size, price or market, mode, leverage, estimated margin/liq price). Ask user to confirm (e.g. "Reply 'confirm' to place the order."). Only after user confirms, place order.create_futures_order (market: tif=ioc, price=0).list_futures_positions(holding=true) or get_futures_dual_mode_position; single: get_futures_position).size and side via position query (dual: list_futures_positions(settle, holding=true) or get_futures_dual_mode_position(settle, contract); single: get_futures_position(settle, contract)).create_futures_order reduce_only); reverse (close then open opposite in two steps).list_futures_orders and let user choose.cancel_futures_order only (no batch cancel).finish_as == cancelled.open.amend_futures_order to update price or size.After each operation, output a short standardized result.
create_futures_order. Do not add text about mark price vs limit price, order_price_deviate, or suggesting to adjust price. Example: "Reply 'confirm' to place the order."| Code | Action |
|------|--------|
| BALANCE_NOT_ENOUGH | Suggest deposit or lower leverage/size. |
| PRICE_TOO_DEVIATED | Extract actual valid price range from the error message and show to user (do not rely on contract order_price_deviate; actual limit depends on risk_limit_tier). |
| POSITION_HOLDING (mode switch) | API returns this (not POSITION_NOT_EMPTY). Ask user to close position first. |
| CONTRACT_NOT_FOUND | Contract invalid or not tradeable. Confirm contract name (e.g. BTC_USDT) and settle; suggest listing contracts. |
| ORDER_NOT_FOUND | Order already filled, cancelled, or wrong order_id. Suggest checking order history. |
| SIZE_TOO_LARGE | Order size exceeds limit. Suggest reducing size or check contract order_size_max. |
| ORDER_FOK | FOK order could not be filled entirely. Suggest different price/size or use GTC/IOC. |
| ORDER_POC | POC order would have taken liquidity; exchange rejected. Suggest different price for maker-only. |
| INVALID_PARAM_VALUE | Often in dual mode when wrong API or params used (e.g. update_futures_position_cross_mode or update_futures_position_leverage in dual). Use dual-mode APIs: update_futures_dual_comp_position_cross_mode, update_futures_dual_mode_position_leverage; for position use list_futures_positions or get_futures_dual_mode_position. |
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.