Web3 Polymarket
Polymarket/agent-skills
Polymarket integration for prediction market trading on Polygon.
Complete DFlow trading protocol SDK - the single source of truth for integrating DFlow on Solana.
$ npx skills add sendaifun/skills --skill dflow -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sendaifun/skills dflow --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/sendaifun/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dflow .claude/skills/dflow && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dflow" agent skill from https://github.com/sendaifun/skills/tree/main/skills/dflow into .claude/skills/dflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dflow", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/sendaifun/skills/tree/main/skills/dflowType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add sendaifun/skills --skill dflow -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sendaifun/skills dflow --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sendaifun/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/dflow .agents/skills/dflow && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dflow" agent skill from https://github.com/sendaifun/skills/tree/main/skills/dflow into .agents/skills/dflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dflow", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sendaifun/skills --skill dflow -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sendaifun/skills dflow --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sendaifun/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/dflow .cursor/skills/dflow && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dflow" agent skill from https://github.com/sendaifun/skills/tree/main/skills/dflow into .cursor/skills/dflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dflow", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/sendaifun/skills.git --path skills/dflow--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add sendaifun/skills --skill dflow -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sendaifun/skills dflow --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sendaifun/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/dflow .gemini/skills/dflow && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dflow" agent skill from https://github.com/sendaifun/skills/tree/main/skills/dflow into .gemini/skills/dflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dflow", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install sendaifun/skills dflowInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add sendaifun/skills --skill dflow -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sendaifun/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/dflow .github/skills/dflow && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dflow" agent skill from https://github.com/sendaifun/skills/tree/main/skills/dflow into .github/skills/dflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dflow", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sendaifun/skills --skill dflow -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sendaifun/skills dflow --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sendaifun/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/dflow .opencode/skills/dflow && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dflow" agent skill from https://github.com/sendaifun/skills/tree/main/skills/dflow into .opencode/skills/dflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dflow", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dflowComplete DFlow trading protocol SDK - the single source of truth for integrating DFlow on Solana.
Dflow is an agent skill from sendaifun/skills. Complete DFlow trading protocol SDK - the single source of truth for integrating DFlow on Solana. Covers spot trading, prediction markets, Swap API, Metadata API, WebSocket streaming, and all DFlow tools.
Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 23 other files (for example `docs/advanced-patterns.md`, `docs/troubleshooting.md` and `examples/declarative-swaps/intent-swap.ts`).
It sits in Backend & APIs, covering Trading and backtesting and Realtime and WebSockets. It works with Solana. The repository describes itself as: a public marketplace of all solana-related skills for agents to learn from! The licence is Apache-2.0.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 06b36b8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript, from the files we listed), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.prod.dflow.netquote-api.dflow.netAlso links to:
github.compond.dflow.netdiscord.ggFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
API_KEYDFLOW_API_KEYPRIVATE_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dflow loads about 5.7k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 1,138 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from sendaifun/skills at commit 06b36b8, republished under its Apache-2.0 licence (© sendaifun). 1,138 words, ~5,696 tokens.
.claude/skills/dflow/SKILL.md (or your agent's skills folder). This skill also uses 16 other files; get the full folder from GitHub.The definitive guide for integrating DFlow - a trading protocol that enables traders to exchange value across spot and prediction markets natively on Solana.
DFlow is a comprehensive trading infrastructure that provides:
| Feature | Description |
|---|---|
| Token Coverage | 99.9% with millisecond detection |
| Infrastructure | Globally distributed, high-throughput optimization |
| Execution | Advanced algorithms with JIT routing for best-price execution |
| Markets | Support for both spot and prediction market trading |
| MEV Protection | Enhanced sandwich protection with Jito bundles |
DFlow provides two main API categories:
Base URL: https://quote-api.dflow.net
For executing trades:
Base URL: https://api.prod.dflow.net
For querying prediction market data:
Most endpoints require an API key via the x-api-key header. Contact hello@dflow.net to obtain credentials.
import { Connection, Keypair, VersionedTransaction } from "@solana/web3.js";
const API_BASE = "https://quote-api.dflow.net";
const API_KEY = process.env.DFLOW_API_KEY; // Optional but recommended
// Token addresses
const SOL = "So11111111111111111111111111111111111111112";
const USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
async function imperativeSwap(keypair: Keypair, connection: Connection) {
// Step 1: Get Quote
const quoteParams = new URLSearchParams({
inputMint: SOL,
outputMint: USDC,
amount: "1000000000", // 1 SOL
slippageBps: "50", // 0.5%
});
const quote = await fetch(`${API_BASE}/quote?${quoteParams}`, {
headers: API_KEY ? { "x-api-key": API_KEY } : {},
}).then(r => r.json());
// Step 2: Get Swap Transaction
const swapResponse = await fetch(`${API_BASE}/swap`, {
method: "POST",
headers: {
"content-type": "application/json",
...(API_KEY && { "x-api-key": API_KEY }),
},
body: JSON.stringify({
userPublicKey: keypair.publicKey.toBase58(),
quoteResponse: quote,
dynamicComputeUnitLimit: true,
prioritizationFeeLamports: 150000,
}),
}).then(r => r.json());
// Step 3: Sign and Send
const tx = VersionedTransaction.deserialize(
Buffer.from(swapResponse.swapTransaction, "base64")
);
tx.sign([keypair]);
const signature = await connection.sendTransaction(tx);
await connection.confirmTransaction(signature);
return signature;
}The Trade API provides a single endpoint that handles both sync and async execution:
async function tradeTokens(keypair: Keypair, connection: Connection) {
// Step 1: Get Order (quote + transaction in one call)
const orderParams = new URLSearchParams({
inputMint: SOL,
outputMint: USDC,
amount: "1000000000",
slippageBps: "50",
userPublicKey: keypair.publicKey.toBase58(),
});
const order = await fetch(`${API_BASE}/order?${orderParams}`, {
headers: API_KEY ? { "x-api-key": API_KEY } : {},
}).then(r => r.json());
// Step 2: Sign and Send
const tx = VersionedTransaction.deserialize(
Buffer.from(order.transaction, "base64")
);
tx.sign([keypair]);
const signature = await connection.sendTransaction(tx);
// Step 3: Monitor (based on execution mode)
if (order.executionMode === "async") {
// Poll order status for async trades
let status = "pending";
while (status !== "closed" && status !== "failed") {
await new Promise(r => setTimeout(r, 2000));
const statusRes = await fetch(
`${API_BASE}/order-status?signature=${signature}`,
{ headers: API_KEY ? { "x-api-key": API_KEY } : {} }
).then(r => r.json());
status = statusRes.status;
}
} else {
// Sync trades complete atomically
await connection.confirmTransaction(signature);
}
return signature;
}Returns a quote and optionally a transaction for spot or prediction market trades.
| Parameter | Required | Description |
|---|---|---|
inputMint | Yes | Base58 input token mint |
outputMint | Yes | Base58 output token mint |
amount | Yes | Amount as scaled integer (1 SOL = 1000000000) |
userPublicKey | No | Include to receive signable transaction |
slippageBps | No | Max slippage in basis points or "auto" |
platformFeeBps | No | Platform fee in basis points |
prioritizationFeeLamports | No | "auto", "medium", "high", "veryHigh", or lamport amount |
Response:
{
"outAmount": "150000000",
"minOutAmount": "149250000",
"priceImpactPct": "0.05",
"executionMode": "sync",
"transaction": "base64...",
"computeUnitLimit": 200000,
"lastValidBlockHeight": 123456789,
"routePlan": [...]
}Check status of async orders.
| Parameter | Required | Description |
|---|---|---|
signature | Yes | Base58 transaction signature |
lastValidBlockHeight | No | Block height for expiry check |
Status Values:
pending - Order submitted, awaiting processingopen - Order opened, awaiting fillpendingClose - Filled, closing transaction pendingclosed - Order completed successfullyexpired - Transaction expired before landingfailed - Order execution failedGet a quote for an imperative swap.
| Parameter | Required | Description |
|---|---|---|
inputMint | Yes | Base58 input mint |
outputMint | Yes | Base58 output mint |
amount | Yes | Input amount (scaled integer) |
slippageBps | No | Slippage tolerance or "auto" |
dexes | No | Comma-separated DEXes to include |
excludeDexes | No | Comma-separated DEXes to exclude |
onlyDirectRoutes | No | Single-leg routes only |
maxRouteLength | No | Max number of route legs |
forJitoBundle | No | Jito bundle compatible routes |
platformFeeBps | No | Platform fee in basis points |
Generate swap transaction from quote.
Request Body:
{
"userPublicKey": "Base58...",
"quoteResponse": { /* from /quote */ },
"dynamicComputeUnitLimit": true,
"prioritizationFeeLamports": 150000,
"wrapAndUnwrapSol": true
}Response:
{
"swapTransaction": "base64...",
"computeUnitLimit": 200000,
"lastValidBlockHeight": 123456789,
"prioritizationFeeLamports": 150000
}Returns individual instructions instead of a full transaction (for custom transaction building).
Declarative swaps use intent-based execution with deferred route optimization.
Get an intent quote for a declarative swap.
| Parameter | Required | Description |
|---|---|---|
inputMint | Yes | Base58 input mint |
outputMint | Yes | Base58 output mint |
amount | Yes | Input amount (scaled integer) |
slippageBps | No | Slippage tolerance |
userPublicKey | Yes | User's wallet address |
Submit a signed intent transaction for execution.
Request Body:
{
"signedTransaction": "base64...",
"intentResponse": { /* from /intent */ }
}Returns list of supported token mints.
Returns tokens with decimal information for proper amount scaling.
Returns list of supported DEX venues (Raydium, Orca, Phoenix, Lifinity, etc.).
| Feature | Imperative | Declarative |
|---|---|---|
| Route Control | Full control at sign time | Optimized at execution |
| Latency | Higher (two API calls) | Lower (deferred calc) |
| Slippage | Fixed at quote time | Minimized at execution |
| Sandwich Protection | Standard | Enhanced |
| Use Case | Precise route requirements | Best execution priority |
connection.confirmTransaction()/order-status for completion// Async order monitoring
async function monitorAsyncOrder(signature: string) {
const statuses = ["pending", "open", "pendingClose"];
let currentStatus = "pending";
while (statuses.includes(currentStatus)) {
await new Promise(r => setTimeout(r, 2000));
const res = await fetch(
`${API_BASE}/order-status?signature=${signature}`,
{ headers: { "x-api-key": API_KEY } }
).then(r => r.json());
currentStatus = res.status;
if (currentStatus === "closed") {
return { success: true, fills: res.fills };
}
if (currentStatus === "failed" || currentStatus === "expired") {
return { success: false, status: currentStatus };
}
}
}DFlow provides infrastructure for trading prediction market outcome tokens.
Series (Collection)
└── Event (Occurrence)
└── Market (Outcome Trade)// Use the Trade API with prediction market token mints
const order = await fetch(`${API_BASE}/order?${new URLSearchParams({
inputMint: USDC,
outputMint: OUTCOME_TOKEN_MINT, // Prediction market token
amount: "10000000", // 10 USDC
slippageBps: "100",
userPublicKey: keypair.publicKey.toBase58(),
predictionMarketSlippageBps: "200", // Separate slippage for PM
})}`, { headers: { "x-api-key": API_KEY } }).then(r => r.json());| Token | Mint Address |
|---|---|
| SOL (Wrapped) | So11111111111111111111111111111111111111112 |
| USDC | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| USDT | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB |
| BONK | DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263 |
| JUP | JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN |
| WIF | EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm |
Configure transaction priority:
// Option 1: Auto (recommended)
prioritizationFeeLamports: "auto"
// Option 2: Priority level
prioritizationFeeLamports: {
priorityLevel: "high" // "medium", "high", "veryHigh"
}
// Option 3: Exact amount
prioritizationFeeLamports: 150000
// Option 4: Max with auto-adjust
prioritizationFeeLamports: {
autoMultiplier: 2,
maxLamports: 500000
}async function safeSwap(params: SwapParams) {
try {
const quote = await getQuote(params);
if (!quote.routePlan?.length) {
throw new Error("No route found");
}
const swap = await getSwapTransaction(quote, params.userPublicKey);
const tx = deserializeTransaction(swap.swapTransaction);
tx.sign([params.keypair]);
const signature = await connection.sendTransaction(tx, {
skipPreflight: false,
maxRetries: 3,
});
return { success: true, signature };
} catch (error) {
if (error.message.includes("insufficient")) {
return { success: false, error: "Insufficient balance" };
}
if (error.message.includes("slippage")) {
return { success: false, error: "Slippage exceeded" };
}
return { success: false, error: error.message };
}
}Collect platform fees on swaps:
const quote = await fetch(`${API_BASE}/quote?${new URLSearchParams({
inputMint: SOL,
outputMint: USDC,
amount: "1000000000",
platformFeeBps: "50", // 0.5% fee
platformFeeMode: "outputMint", // Collect in output token
})}`, { headers: { "x-api-key": API_KEY } }).then(r => r.json());
// In swap request, specify fee account
const swap = await fetch(`${API_BASE}/swap`, {
method: "POST",
headers: { "content-type": "application/json", "x-api-key": API_KEY },
body: JSON.stringify({
userPublicKey: user.toBase58(),
quoteResponse: quote,
feeAccount: platformFeeAccount.toBase58(), // Your fee recipient
}),
}).then(r => r.json());For MEV protection and bundle submission:
// Request Jito-compatible routes
const quote = await fetch(`${API_BASE}/quote?${new URLSearchParams({
inputMint: SOL,
outputMint: USDC,
amount: "1000000000",
forJitoBundle: "true",
})}`, { headers: { "x-api-key": API_KEY } }).then(r => r.json());
// Include Jito sandwich mitigation
const swap = await fetch(`${API_BASE}/swap`, {
method: "POST",
body: JSON.stringify({
userPublicKey: user.toBase58(),
quoteResponse: quote,
includeJitoSandwichMitigationAccount: true,
}),
}).then(r => r.json());The DFlow Swap Orchestrator contract manages declarative swap execution:
Program ID: DF1ow3DqMj3HvTj8i8J9yM2hE9hCrLLXpdbaKZu4ZPnzThe Prediction Market Metadata API provides comprehensive access to prediction market information.
Base URL: https://api.prod.dflow.net
Series (Collection)
└── Event (Occurrence)
└── Market (Outcome Trade)
├── Yes Token (outcome mint)
└── No Token (outcome mint)Returns a single event by its ticker with optional nested markets.
const METADATA_API = "https://api.prod.dflow.net";
// Get event details
const event = await fetch(`${METADATA_API}/api/v1/event/TRUMP-2024`, {
headers: { "x-api-key": API_KEY }
}).then(r => r.json());
// Response includes: ticker, title, status, markets, close_time, etc.Returns a paginated list of all events.
const events = await fetch(`${METADATA_API}/api/v1/events?limit=50&offset=0`, {
headers: { "x-api-key": API_KEY }
}).then(r => r.json());Returns historical forecast percentile data.
Returns candlestick data from Kalshi.
Returns a single market by ticker.
const market = await fetch(`${METADATA_API}/api/v1/market/TRUMP-2024-WIN`, {
headers: { "x-api-key": API_KEY }
}).then(r => r.json());
// Response: ticker, yes_mint, no_mint, status, last_price, volume, etc.Lookup market by any mint (ledger or outcome mints).
const market = await fetch(
`${METADATA_API}/api/v1/market/by-mint/${outcomeMint}`,
{ headers: { "x-api-key": API_KEY } }
).then(r => r.json());Batch retrieve multiple markets (max 100).
const markets = await fetch(`${METADATA_API}/api/v1/markets/batch`, {
method: "POST",
headers: { "content-type": "application/json", "x-api-key": API_KEY },
body: JSON.stringify({
tickers: ["MARKET-1", "MARKET-2"],
mints: ["mint1...", "mint2..."]
})
}).then(r => r.json());Returns all yes_mint and no_mint pubkeys from all supported markets.
// Get all outcome mints, optionally filter by close time
const mints = await fetch(
`${METADATA_API}/api/v1/outcome_mints?min_close_timestamp=${Date.now()}`,
{ headers: { "x-api-key": API_KEY } }
).then(r => r.json());Check if addresses are outcome mints (max 200).
const filtered = await fetch(`${METADATA_API}/api/v1/filter_outcome_mints`, {
method: "POST",
headers: { "content-type": "application/json", "x-api-key": API_KEY },
body: JSON.stringify({ addresses: ["mint1...", "mint2..."] })
}).then(r => r.json());Get orderbook by market ticker.
const orderbook = await fetch(
`${METADATA_API}/api/v1/orderbook/TRUMP-2024-WIN`,
{ headers: { "x-api-key": API_KEY } }
).then(r => r.json());
// Response: bids: [{price, quantity}], asks: [{price, quantity}]Get orderbook using mint address lookup.
Returns paginated trade history with filtering.
const trades = await fetch(
`${METADATA_API}/api/v1/trades?ticker=TRUMP-2024-WIN&limit=100`,
{ headers: { "x-api-key": API_KEY } }
).then(r => r.json());Get trades using mint address lookup.
Real-time milestone data from Kalshi.
const milestones = await fetch(
`${METADATA_API}/api/v1/milestones/TRUMP-2024`,
{ headers: { "x-api-key": API_KEY } }
).then(r => r.json());Returns series templates for recurring events.
Returns category tags for filtering.
Connect for real-time updates:
const ws = new WebSocket("wss://api.prod.dflow.net/ws");
ws.onopen = () => {
// Subscribe to market updates
ws.send(JSON.stringify({
action: "subscribe",
channel: "market",
ticker: "TRUMP-2024-WIN"
}));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
// Handle: price_update, orderbook_update, trade, etc.
console.log("Update:", data);
};| Status | Description |
|---|---|
initialized | Market created |
active | Trading enabled |
inactive | Trading paused |
closed | No more trading |
determined | Outcome known |
finalized | Payouts available |
DFlow provides several open-source tools on GitHub:
Repository: DFlowProtocol/solana-agent-kit
Toolkit enabling AI agents to connect to Solana protocols:
// Use with AI agents for automated trading
import { SolanaAgentKit } from "@dflow/solana-agent-kit";
const agent = new SolanaAgentKit({
rpcUrl: process.env.RPC_URL,
privateKey: process.env.PRIVATE_KEY,
});
// Agent can execute DFlow swaps, query markets, etc.Repository: DFlowProtocol/clearpools
Orca Whirlpools with support for flow segmentation:
// Extends Orca protocol with DFlow routing
import { ClearPools } from "@dflow/clearpools";
const pools = new ClearPools(connection);
await pools.initializePool(/* params */);Repository: DFlowProtocol/dflow-amm-interface
Rust trait definitions for DFlow's AMM implementation. Use when building custom AMMs that integrate with DFlow routing.
dflow/
├── SKILL.md # This file - complete integration guide
├── resources/
│ ├── api-reference.md # Swap API reference
│ ├── prediction-market-api.md # Prediction Market Metadata API reference
│ ├── github-sdks.md # GitHub tools & SDKs documentation
│ ├── token-mints.md # Common token addresses
│ └── error-codes.md # Error handling guide
├── examples/
│ ├── imperative-swaps/ # Imperative swap examples
│ ├── declarative-swaps/ # Declarative swap examples
│ ├── trade-api/ # Unified Trade API examples
│ └── prediction-markets/ # Prediction market examples
│ ├── query-markets.ts # Query events, markets, orderbook
│ ├── trade-outcomes.ts # Trade outcome tokens
│ └── websocket-client.ts # Real-time data streaming
├── templates/
│ ├── swap-client.ts # Swap client starter
│ └── prediction-market-client.ts # Prediction market client starter
└── docs/
├── advanced-patterns.md # Complex integrations
└── troubleshooting.md # Common issuesexecutionMode and poll status© sendaifun, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 16 other files in skills/dflow of sendaifun/skills.
Open the folder on GitHubat commit 06b36b8
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in sendaifun/skills, which our catalogue first saw on October 9, 2026.
Dflow next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dflow this skillsendaifun/skills | 130 | 1 repos | ~5.7k | Automated safety check: Pass | Apache-2.0 | |
| Web3 PolymarketPolymarket/agent-skills | 191 | 1 repos | ~2k | Automated safety check: Pass | None | |
| Cryptofeed2025Emma/vibe-coding-cn | 23k | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Tiger Brokers C++ OpenAPI SDKqusong0627/QuantMind | 1.7k | — | ~942 | Automated safety check: Pass | Apache-2.0 | |
| Polymarket2025Emma/vibe-coding-cn | 23k | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Openalgo Chart Terminalmarketcalls/openalgo-charts | 144 | — | ~3.8k | Automated safety check: Notes | Apache-2.0 |
Polymarket/agent-skills
Polymarket integration for prediction market trading on Polygon.
2025Emma/vibe-coding-cn
Cryptofeed - Real-time cryptocurrency market data feeds from 40+ exchanges.
qusong0627/QuantMind
Guides an agent through the Tiger Brokers OpenAPI C++ SDK for build setup, market data, orders and real-time push, defaulting to paper trading.
2025Emma/vibe-coding-cn
Comprehensive Polymarket skill covering prediction markets, API, trading, market data, and real-time WebSocket data streaming.
marketcalls/openalgo-charts
Build a full trading terminal on openalgo-charts - symbol search, interval switcher, chart-type picker, indicator menu, drawing rail with clipboard, live OpenAlgo REST plus WebSocket data behind a…
internet-court/internet-court-skill
Covers integrating Switchboard oracles on Solana: pull feeds, oracle quotes, VRF randomness and Surge WebSocket streaming, from both the TypeScript SDK and Rust.
sendaifun/skills
Breaks a shared video or GIF down frame by frame to recreate its motion as working code instead of guessing the timing by eye.
sendaifun/skills
Builds and debugs Arcium encrypted computation apps on Solana: Arcis circuits, Anchor orchestration, encrypted inputs and the init, queue and callback flow.
sendaifun/skills
Complete CoinGecko Solana API integration for token prices, DEX pool data, OHLCV charts, trades, and market analytics.
sendaifun/skills
Integrates Phantom wallet connection, social login, and transaction signing into React, React Native, or vanilla JS apps on Solana.
sendaifun/skills
Comprehensive guidance for integrating Jupiter APIs (Ultra Swap, Lend, Perps, Trigger, Recurring, Tokens, Price, Portfolio, Prediction Markets, Send, Studio, Lock, Routing).
sendaifun/skills
Comprehensive guide for building high-performance Solana programs using Pinocchio - the zero-dependency, zero-copy framework.
Works with
Categories
Complete DFlow trading protocol SDK - the single source of truth for integrating DFlow on Solana. Dflow is an agent skill from sendaifun/skills. Complete DFlow trading protocol SDK - the single source of truth for integrating DFlow on Solana.
Dflow fits situations like: tasks that involve Trading and backtesting; tasks that involve Realtime and WebSockets.
Run `npx skills add sendaifun/skills --skill dflow -a claude-code`. Or copy the skill folder (skills/dflow in sendaifun/skills) into .claude/skills/dflow in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sendaifun/skills --skill dflow -a codex`. Or copy the skill folder (skills/dflow in sendaifun/skills) into .agents/skills/dflow in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sendaifun/skills --skill dflow -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dflow, .gemini/skills/dflow, .github/skills/dflow and .opencode/skills/dflow in your project.
Going by SKILL.md and its folder, Dflow needs TypeScript for the scripts in its folder and credentials named API_KEY, DFLOW_API_KEY and PRIVATE_KEY. Our summary lists: Node.js; A credential in API_KEY; A credential in DFLOW_API_KEY.
SKILL.md names 5 domains. In commands or code: api.prod.dflow.net and quote-api.dflow.net; the agent is likely to contact these when it follows the instructions. As links in the text: github.com, pond.dflow.net and discord.gg. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Dflow is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Dflow: Web3 Polymarket (Polymarket/agent-skills, 191 stars), Cryptofeed (2025Emma/vibe-coding-cn, 23k stars), Tiger Brokers C++ OpenAPI SDK (qusong0627/QuantMind, 1.7k stars) and Polymarket (2025Emma/vibe-coding-cn, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sendaifun (a GitHub organization) maintains it in sendaifun/skills, which has 130 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on July 31, 2026.
Source: sendaifun/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.