universal-trading
Execute cross-chain token trading on EVM and Solana with Particle Network Universal Account SDK. Use when users ask to set up universal-account-example, buy or sell tokens, run convert/swap flows, transfer assets, call custom transactions, query balances/history, or monitor transaction status via WebSocket.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/universal-trading/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How universal-trading Compares
| Feature / Agent | universal-trading | Standard Approach |
|---|---|---|
| Platform Support | multi | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Execute cross-chain token trading on EVM and Solana with Particle Network Universal Account SDK. Use when users ask to set up universal-account-example, buy or sell tokens, run convert/swap flows, transfer assets, call custom transactions, query balances/history, or monitor transaction status via WebSocket.
Which AI agents support this skill?
This skill is compatible with multi.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Universal Trading
Execute cross-chain trades with the official Particle Network `universal-account-example` project.
## First-Use Auto Initialization (Default)
When users install this skill and start using it for the first time, auto-run initialization by default.
Use this decision flow:
1. If `universal-account-example/.env` already exists, treat environment as initialized and continue to trading tasks.
2. If not initialized, run from any directory:
```bash
bash {baseDir}/scripts/init.sh new
```
3. If user explicitly wants to import an existing wallet, run:
```bash
bash {baseDir}/scripts/init.sh import <YOUR_PRIVATE_KEY>
```
After initialization, explicitly tell users:
- private key is stored at `universal-account-example/.env` under `PRIVATE_KEY`
- they can use this wallet in the UniversalX frontend:
`https://universalx.app` -> `创建钱包` -> `导入现有钱包`
By default, setup auto-binds invite code `666666` after `.env` is created.
It also patches `examples/buy-evm.ts` to remove `usePrimaryTokens` restriction.
Optional flags:
```bash
# Use existing repo path
bash {baseDir}/scripts/init.sh new --target /path/to/universal-account-example
# Skip smoke test
bash {baseDir}/scripts/init.sh new --skip-smoke
# Disable invite auto-bind
DISABLE_AUTO_INVITE_BIND=1 bash {baseDir}/scripts/init.sh new
```
## Available Operations
Use scripts inside `universal-account-example/examples`:
- Buy token: `buy-solana.ts`, `buy-evm.ts`
- Sell token: `sell-solana.ts`, `sell-evm.ts`
- Convert (swap): `convert-solana.ts`, `convert-evm.ts`, `7702-convert-evm.ts`
- Transfer: `transfer-solana.ts`, `transfer-evm.ts`
- Custom transaction calls: `custom-transaction-*`
- Balance and history: `get-primary-asset.ts`, `get-transactions.ts`
- Real-time monitoring: `transaction-status-wss.ts`, `user-assets-wss.ts`
For buy operations that need explicit slippage control, use:
- `scripts/buy-with-slippage.sh` (fixed slippage or dynamic retry)
## Trade Status Follow-Up (Required)
After any `sendTransaction`, do not stop at "transaction submitted".
Always return final outcome to user:
1. Capture and show `transactionId`.
2. Poll status until success or failure:
```bash
cd /path/to/universal-account-example
bash {baseDir}/scripts/check-transaction.sh <TRANSACTION_ID> --max-attempts 30 --interval-sec 2
```
3. Reply with one of:
- `SUCCESS` (confirmed)
- `FAILED` (failed on-chain/executor)
- `PENDING` (not finalized before timeout, include explorer link)
## Trade Configuration
| Option | Description | Example |
|--------|-------------|---------|
| `slippageBps` | Slippage tolerance (100 = 1%) | `100` |
| `universalGas` | Use PARTI token for gas | `true` |
| `usePrimaryTokens` | Restrict source/fee primary tokens. Default: do not set (auto select). | `[SUPPORTED_TOKEN_TYPE.USDT, SUPPORTED_TOKEN_TYPE.USDC]` |
| `solanaMEVTipAmount` | Jito tip for MEV protection (SOL) | `0.01` |
## Slippage Controls (Required for Volatile Tokens)
Allow users to choose one of these modes before buy:
1. Fixed slippage only:
```bash
cd /path/to/universal-account-example
bash {baseDir}/scripts/buy-with-slippage.sh \
--chain bsc \
--token-address 0x0000000000000000000000000000000000000000 \
--amount-usd 5 \
--slippage-bps 300
```
2. Dynamic slippage + auto retry:
```bash
cd /path/to/universal-account-example
bash {baseDir}/scripts/buy-with-slippage.sh \
--chain bsc \
--token-address 0x0000000000000000000000000000000000000000 \
--amount-usd 5 \
--slippage-bps 300 \
--dynamic-slippage \
--retry-slippages 300,500,800,1200
```
3. Solana custom tip (anti-MEV) + retry tips:
```bash
cd /path/to/universal-account-example
bash {baseDir}/scripts/buy-with-slippage.sh \
--chain solana \
--token-address 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN \
--amount-usd 5 \
--slippage-bps 300 \
--dynamic-slippage \
--retry-slippages 300,500,800,1200 \
--solana-mev-tip-amount 0.001 \
--retry-mev-tips 0.001,0.003,0.005
```
Reply with:
- chosen slippage mode and values
- chosen Solana tip settings (if Solana)
- final status (`SUCCESS` / `FAILED` / `PENDING`)
- `transactionId` and explorer URL when available
## Supported Chains
- Solana: `CHAIN_ID.SOLANA_MAINNET`
- EVM: `CHAIN_ID.POLYGON`, `CHAIN_ID.ARBITRUM`, `CHAIN_ID.OPTIMISM`, `CHAIN_ID.BSC`, `CHAIN_ID.ETHEREUM`
## Common Token Addresses
- SOL (native): `0x0000000000000000000000000000000000000000`
- USDC (Solana): `EPjFWdd5AufqSSFqM7BcEHw3BXmQ9Ce3pq27dUGL7C24`
- USDT (Solana): `Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB`
## Safety Checklist
1. Validate chain, token address, and amount before creating transactions.
2. Use small size for first live trade.
3. Wrap `sendTransaction` in try-catch and log `transactionId`.
4. Prefer your own Particle credentials for production workloads.
## Reference Files
- [Environment Setup](references/env-setup.md)
- [API Reference](references/api.md)
- [Examples](references/examples.md)