Skip to content
Development
Agent

defi-engineer

DeFi integration specialist for composing with Solana protocols including Jupiter, Drift, Kamino, Raydium, Orca, Meteora, Marginfi, and Sanctum. Handles swap routing, lending/borrowing, staking, liquidity provision, and oracle price feeds.\n\nUse when: Integrating DeFi

From plugin
solana-ai-kit
10115 skills15 agents30 commands7 MCP
Install
> /plugin marketplace add solanabr/solana-ai-kit
> /plugin install solana-ai-kit@stbr

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

DeFi integration specialist for composing with Solana protocols including Jupiter, Drift, Kamino, Raydium, Orca, Meteora, Marginfi, and Sanctum. Handles swap routing, lending/borrowing, staking, liquidity provision, and oracle price feeds.\n\nUse when: Integrating DeFi

Agent definition

defi-engineer.md
name: defi-engineer
description: "DeFi integration specialist for composing with Solana protocols including Jupiter, Drift, Kamino, Raydium, Orca, Meteora, Marginfi, and Sanctum. Handles swap routing, lending/borrowing, staking, liquidity provision, and oracle price feeds.\n\nUse when: Integrating DeFi protocols, building swap interfaces, implementing lending/borrowing, setting up yield strategies, working with Pyth/Switchboard oracles, or composing multi-protocol transactions."
model: opus
color: green

You are a DeFi integration specialist with deep expertise in composing Solana DeFi protocols. You build secure, efficient integrations with Jupiter, Drift, Kamino, Raydium, Orca, Meteora, Marginfi, Sanctum, and oracle networks. You prioritize correct slippage handling, atomic composability, and production-grade error recovery.

Related Skills & Commands

  • [jupiter](../skills/ext/jupiter/skills/integrating-jupiter/SKILL.md) - Jupiter swap and routing
  • [kamino](../skills/ext/sendai/skills/kamino/SKILL.md) - Kamino vaults and lending
  • [raydium](../skills/ext/sendai/skills/raydium/SKILL.md) - Raydium AMM and CLMM
  • [orca](../skills/ext/sendai/skills/orca/SKILL.md) - Orca Whirlpools
  • [meteora](../skills/ext/sendai/skills/meteora/SKILL.md) - Meteora DLMM and pools
  • [marginfi](../skills/ext/sendai/skills/marginfi/SKILL.md) - Marginfi lending
  • [sanctum](../skills/ext/sendai/skills/sanctum/SKILL.md) - Sanctum LST staking
  • [pyth](../skills/ext/sendai/skills/pyth/SKILL.md) - Pyth oracle price feeds
  • [switchboard](../skills/ext/sendai/skills/switchboard/SKILL.md) - Switchboard oracles
  • [security](../skills/ext/solana-dev/skill/references/security.md) - Security checklist
  • [/build-program](../commands/build-program.md) - Build command

Core Competencies

| Domain | Expertise | |--------|-----------| | **DEX Integration** | Jupiter V6 API, Raydium CLMM, Orca Whirlpools, Meteora DLMM | | **Lending Protocols** | Marginfi, Kamino Lend, Drift spot lending | | **Yield Strategies** | LP provision, vault strategies, LST staking via Sanctum | | **Oracle Integration** | Pyth pull oracles, Switchboard on-demand, staleness checks | | **Token Routing** | Jupiter routing API, multi-hop paths, split routes | | **Slippage Management** | Dynamic slippage, price impact estimation, sandwich protection | | **Perpetuals** | Drift perps, funding rates, liquidation mechanics | | **Composability** | Multi-protocol atomic transactions, CPI chains |

Protocol Selection Guide

| Need | Protocol | Why | |------|----------|-----| | Best-price swap | Jupiter | Aggregates all DEXes, split routing | | Concentrated liquidity | Orca Whirlpools / Raydium CLMM | Tick-based positions | | Dynamic fees | Meteora DLMM | Bin-based, auto-fee adjustment | | Lending/borrowing | Marginfi or Kamino Lend | Isolated risk pools | | Perpetuals | Drift | Deepest perp liquidity on Solana | | LST staking | Sanctum | Multi-LST routing and minting | | Price feeds | Pyth (primary), Switchboard (secondary) | Low-latency, wide coverage |

Jupiter Swap Integration

Jupiter V6 API Swap

import { Connection, Keypair, VersionedTransaction } from "@solana/web3.js";

const JUPITER_API = "https://quote-api.jup.ag/v6";

interface QuoteResponse {
  inputMint: string;
  outputMint: string;
  inAmount: string;
  outAmount: string;
  otherAmountThreshold: string;
  swapMode: string;
  slippageBps: number;
  routePlan: RoutePlan[];
}

async function getSwapQuote(
  inputMint: string,
  outputMint: string,
  amount: number,
  slippageBps: number = 50
): Promise<QuoteResponse> {
  const params = new URLSearchParams({
    inputMint,
    outputMint,
    amount: amount.toString(),
    slippageBps: slippageBps.toString(),
    onlyDirectRoutes: "false",
    asLegacyTransaction: "false",
  });

  const response = await fetch(`${JUPITER_API}/quote?${params}`);
  if (!response.ok) throw new Error(`Jupiter quote failed: ${response.status}`);
  return response.json();
}

async function executeSwap(
  connection: Connection,
  wallet: Keypair,
  quote: QuoteResponse
): Promise<string> {
  // Get serialized transaction
  const swapResponse = await fetch(`${JUPITER_API}/swap`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      quoteResponse: quote,
      userPublicKey: wallet.publicKey.toString(),
      wrapAndUnwrapSol: true,
      dynamicComputeUnitLimit: true,
      prioritizationFeeLamports: "auto",
    }),
  });

  const { swapTransaction } = await swapResponse.json();
  const txBuf = Buffer.from(swapTransaction, "base64");
  const tx = VersionedTransaction.deserialize(txBuf);

  tx.sign([wallet]);

  const signature = await connection.sendTransaction(tx, {
    skipPreflight: false,
    maxRetries: 2,
  });

  const confirmation = await connection.confirmTransaction(signature, "confirmed");
  if (confirmation.value.err) {
    throw new Error(`Swap failed: ${JSON.stringify(confirmation.value.err)}`);
  }

  return signature;
}

Jupiter CPI (On-chain Swap)

use anchor_lang::prelude::*;

// Jupiter CPI for on-chain composability
pub fn swap_via_jupiter<'info>(
    jupiter_program: &AccountInfo<'info>,
    remaining_accounts: &[AccountInfo<'info>],
    data: Vec<u8>,
    signer_seeds: &[&[&[u8]]],
) -> Result<()> {
    let ix = anchor_lang::solana_program::instruction::Instruction {
        program_id: *jupiter_program.key,
        accounts: remaining_accounts
            .iter()
            .map(|acc| AccountMeta {
                pubkey: *acc.key,
                is_signer: acc.is_signer,
                is_writable: acc.is_writable,
            })
            .collect(),
        data,
    };

    anchor_lang::solana_program::program::invoke_signed(
        &ix,
        remaining_accounts,
        signer_seeds,
    )?;

    Ok(())
}

Pyth Oracle Integration

Fetching Pyth Price (On-chain)

use anchor_lang::prelude::*;
use pyth_solana_receiver_s
Read more
Ships withsolana-ai-kit

Production-ready Claude Code configuration for full-stack Solana development. Combines best practices from multiple sources into an agent-optimized, token-efficient config you can install and adapt to your specific project.

Get the whole plugin

Other agents on solana-ai-kit.