meme-executor
SKILL.md
Meme Executor - Solana Trade Execution Layer
Solana-focused execution skill that turns high‑level trade plans into concrete orders.
Current Status: Phase 1 (Safe Mode)
| Component | Status | Risk Level |
|---|---|---|
execute-trade.ts |
DRY RUN only | None |
auto-trader.ts |
DRY RUN only | None |
jupiter-client.ts |
Quote-only | None |
wallet-manager.ts |
Read-only | None |
position-tracker.ts |
Local tracking | None |
No real transactions are sent in Phase 1.
When to Use
- You already have a TradePlan from other agents/skills:
meme-trader(signals + sizing)flow-tracker(liquidity + position sizing)degen-savant(narrative / conviction)contract-surgeon(rug/safety cleared)
- You want to:
- Simulate trades and log PnL without sending real transactions
- Eventually route real orders via a configured Solana wallet + DEX router
Core Responsibilities
- Parse a structured trade plan (token, side, size %, target size, SL/TP, slippage).
- Apply simple risk checks (max position %, max concurrent positions hooks).
- DRY‑RUN by default – log what would be traded and why.
- Provide clear TODO hooks for wiring:
- Jupiter swap routing
- Wallet private key / signer configuration
- Trade log storage (JSONL or database)
TradePlan Interface
The executor expects a JSON payload matching this shape:
export interface TradePlan {
tokenAddress: string;
symbol?: string;
chain: 'solana';
side: 'buy' | 'sell';
// either percentage of portfolio or absolute amount in SOL
sizing: {
mode: 'percent' | 'absolute';
value: number; // e.g. 2 = 2% or 0.5 = 0.5 SOL
};
riskMode: 'degen' | 'moderate' | 'conservative';
entryLimitPrice?: number; // optional, for limit-style behavior
maxSlippageBps: number; // e.g. 1000 = 10%
stopLossPrice?: number;
takeProfit1?: number;
takeProfit2?: number;
notes?: string; // free-form rationale from upstream agents
dryRun?: boolean; // default true; set false only once wired to real wallet
}
Usage (Simulation First)
From the repo root, a typical simulated execution call will look like:
npx tsx .claude/skills/meme-executor/scripts/execute-trade.ts \
--plan-file /path/to/trade-plan.json
Where trade-plan.json contains a single TradePlan object.
Output Formats
- Simulation Log (default) – human-friendly summary:
- What would be bought/sold
- Position size and notional exposure
- SL/TP levels and implied RR
- Any risk rule violations
- JSON Log (--json) – machine-friendly output for chaining into other tools.
New Phase 1 Components
Jupiter Client (Quote-Only)
Get swap quotes without executing:
# Get a quote for swapping SOL to a token
npx tsx .claude/skills/meme-executor/scripts/jupiter-client.ts \
--quote --input SOL --output <TOKEN_MINT> --amount 0.1
# JSON output
npx tsx .claude/skills/meme-executor/scripts/jupiter-client.ts \
--quote --input SOL --output BONK --amount 0.5 --json
Wallet Manager (Read-Only)
Check wallet balances without signing:
# Check balance of any wallet
npx tsx .claude/skills/meme-executor/scripts/wallet-manager.ts \
--balance --address <WALLET_ADDRESS>
# Use devnet
npx tsx .claude/skills/meme-executor/scripts/wallet-manager.ts \
--balance --address <WALLET_ADDRESS> --devnet
Position Tracker
Track open positions locally:
# Add a position (after buy)
npx tsx .claude/skills/meme-executor/scripts/position-tracker.ts \
--add --token <MINT> --symbol MEME --entry-price 0.001 --amount 1000 \
--sl 0.0007 --tp 0.002
# List positions
npx tsx .claude/skills/meme-executor/scripts/position-tracker.ts --list
# Check stop-loss/take-profit triggers
npx tsx .claude/skills/meme-executor/scripts/position-tracker.ts \
--check --prices '{"<MINT>": 0.0015}'
# Close a position
npx tsx .claude/skills/meme-executor/scripts/position-tracker.ts \
--close --token <MINT> --exit-price 0.002
Phase Roadmap
| Phase | Components | Risk |
|---|---|---|
| 1 (Current) | Quote, balance, tracking | None |
| 2 | Devnet swap execution | Low (fake SOL) |
| 3 | Mainnet paper trading | None (simulated) |
| 4 | Mainnet live (small size) | High |
Data Quality Validation Layer
<data_validation> Pre-Execution Data Requirements: All trades (even simulated) require validated data to ensure backtesting fidelity.
interface ExecutionDataQuality {
price_quality: {
score: number; // Min 90 for execution
sources_count: number; // Min 2
max_deviation: number; // Max 5% between sources
freshness_ms: number; // Max 30000 (30s)
};
liquidity_check: {
available: number; // Must support trade size
slippage_estimate: number;
depth_ratio: number; // Our size / available liquidity
};
risk_clearance: {
rug_score: number; // From meme-trader
position_approved: boolean; // From risk-portfolio-manager
kill_switch_status: 'active' | 'paused' | 'halted';
};
}
interface ValidationResult {
approved: boolean;
quality_score: number;
warnings: string[];
blockers: string[];
}
Validation Pipeline:
Trade Plan → Price Validation → Liquidity Check → Risk Clearance → Execute/Reject
↓ ↓ ↓
Min 2 sources Size < 5% pool No kill switch
Max 5% deviation Slippage < limit Position approved
Max 30s stale Depth sufficient Rug score < 7
Validation Output (included in dry-run):
DATA VALIDATION REPORT
═════════════════════════════════════
PRICE DATA: PASSED (94/100)
├─ Sources: 3/3 (dexscreener, birdeye, jupiter)
├─ Prices: $0.00042 | $0.000418 | $0.000421
├─ Deviation: 0.48% (< 5% threshold)
├─ Freshness: 8 seconds ago
└─ Status: VALID
LIQUIDITY CHECK: PASSED
├─ Available Liquidity: $127,000
├─ Trade Size: $500 (0.39% of pool)
├─ Estimated Slippage: 0.8%
├─ Depth Ratio: HEALTHY
└─ Status: SUFFICIENT
RISK CLEARANCE: PASSED
├─ Rug Score: 4/10 (acceptable)
├─ Position Sizing: APPROVED (2.3% of portfolio)
├─ Kill Switch: ACTIVE
├─ Daily Loss Buffer: $1,260 remaining
└─ Status: CLEARED
OVERALL: APPROVED FOR EXECUTION
Quality Score: 92/100
Warnings: None
Blockers: None
Rejection Scenarios:
| Condition | Action | Message |
|---|---|---|
| Price quality < 90 | REJECT | "Insufficient price data quality" |
| Single source only | WARN | "Low confidence - single source" |
| Price deviation > 5% | REJECT | "Price disagreement - investigate" |
| Stale data > 60s | REJECT | "Data too old for execution" |
| Size > 5% of pool | WARN | "High slippage expected" |
| Rug score > 7 | REJECT | "Token failed safety check" |
| Kill switch halted | REJECT | "Trading halted - risk limit" |
| </data_validation> |
Real-Time Data Integration
<real_time_data> Data Sources for Execution:
const executionDataSources = {
price: {
primary: 'jupiter', // Most accurate for Solana swaps
fallback: ['dexscreener', 'birdeye'],
refresh_interval: 5000, // 5 seconds
max_age: 30000, // 30 seconds
},
liquidity: {
primary: 'jupiter', // Direct pool data
fallback: ['raydium-api', 'dexscreener'],
refresh_interval: 10000,
},
execution: {
rpc: 'helius',
backup_rpc: 'triton',
commitment: 'confirmed',
},
};
Pre-Execution Price Fetch:
# Fetch validated price before execution
npx tsx .claude/skills/meme-executor/scripts/pre-execution-check.ts \
--token <MINT> \
--size 500 \
--validate-liquidity \
--output json
</real_time_data>
Safety & TODOs
- This skill MUST remain DRY‑RUN ONLY until:
- A secure wallet management pattern is agreed
- Jupiter / router integration is properly tested on devnet
- Data validation pipeline is production-tested
- When enabling live trading:
- Add explicit
--liveflag and environment guardrails - Require confirmation in higher‑level orchestration agents
- Implement daily loss limits via risk-portfolio-manager
- Add kill switch command integration
- Require minimum data quality score of 90/100
- Log all executions for audit and backtesting validation
- Add explicit
Weekly Installs
14
Repository
dreamineering/meme-timesGitHub Stars
4
First Seen
Jan 24, 2026
Security Audits
Installed on
gemini-cli12
codex12
opencode12
openclaw11
claude-code11
cursor11