Agent skill

Lulo

by sendaifun in sendaifun/skills

Complete guide for Lulo - Solana's premier lending aggregator.

Apache-2.0Auto-check passedBackend & APIs

Install Lulo

skills CLI
$ npx skills add sendaifun/skills --skill lulo -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sendaifun/skills lulo --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sendaifun/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/lulo .claude/skills/lulo && rm -rf skills-src

Use ~/.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/

Facts

Skill name
lulo
GitHub stars
130
Used in
1 other repo
Token cost
~4.9k tokens
SKILL.md length
787 words
Files
9
Skills in repo
24
Repo updated
First seen
Licence
Apache-2.0

At a glance

Complete guide for Lulo - Solana's premier lending aggregator.

  • Works in 3 steps: Deposits earn interest from lending… → A portion of interest is shared with… → If a protocol fails, Boosted deposits…
  • Tasks that involve Banking and insurance
  • SKILL.md covers What is Lulo?, Overview, Quick Start and API Reference, plus 3 more sections
  • Runs TypeScript scripts from its folder; reaches dev.lulo.fi and api.lulo.fi; needs LULO_API_KEY

What it does

Lulo is an agent skill from sendaifun/skills. Complete guide for Lulo - Solana's premier lending aggregator. Covers API integration for deposits, withdrawals, balance queries, Protected/Boosted deposits, Custom deposits, and automated yield optimization across Kamino, Drift, MarginFi, and Jupiter.

Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files (for example `docs/troubleshooting.md`, `examples/balance/balance.ts` and `examples/deposit/deposit.ts`).

It sits in Backend & APIs, covering Banking and insurance and Third-party API integration. 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.

When your agent uses it

  • Tasks that involve Banking and insurance
  • Tasks that involve Third-party API integration

Example prompts

  • “/lulo”

Requirements

  • Node.js
  • A credential in LULO_API_KEY

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Deposits earn interest from lending across integrated protocols
  2. A portion of interest is shared with Boosted depositors (protection fee)
  3. If a protocol fails, Boosted deposits cover Protected losses automatically

What it can do on your machine

Read from SKILL.md and the folder at commit 06b36b8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships script files (TypeScript), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • dev.lulo.fi
    • api.lulo.fi
    • blink.lulo.fi
    • api.mainnet-beta.solana.com

    Also links to:

    • docs.lulo.fi
    • github.com
    • lulo.fi
    • discord.gg
    • t.me
    • twitter.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • LULO_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Lulo loads about 4.9k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 787 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~4.9k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from sendaifun/skills at commit 06b36b8, republished under its Apache-2.0 licence (© sendaifun). 787 words, ~4,860 tokens.

Download SKILL.mdSave it as .claude/skills/lulo/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.
name
lulo
description
Complete guide for Lulo - Solana's premier lending aggregator. Covers API integration for deposits, withdrawals, balance queries, Protected/Boosted deposits, Custom deposits, and automated yield optimization across Kamino, Drift, MarginFi, and Jupiter.

Lulo Development Guide

A comprehensive guide for integrating Lulo, Solana's only lending aggregator, into your applications. Lulo automatically routes deposits to the highest-yielding DeFi protocols while providing optional smart contract protection.

What is Lulo?

Lulo (formerly FlexLend) is a DeFi savings platform for stablecoins on Solana. It automatically allocates deposits across integrated protocols to maximize yields while maintaining desired risk exposure.

Key Features
FeatureDescription
Yield AggregationAutomatically routes deposits to highest-yielding protocols
Lulo ProtectBuilt-in smart contract risk protection (Protected/Boosted deposits)
Custom DepositsFull control over protocol allocation and risk parameters
Instant WithdrawalsNo lock-up periods (except 48h cooldown for Boosted)
Multi-ProtocolIntegrates Kamino, Drift, MarginFi, Jupiter
No CustodyFunds flow directly to integrated protocols, not held by Lulo
Why Use Lulo?
  • Automated Rebalancing: Checks rates hourly, automatically moves funds to better yields
  • Risk Management: Choose between Protected (insured), Boosted (higher yield), or Custom deposits
  • Zero Management Fees: Only 0.005 SOL one-time initialization fee
  • Multi-Reward Accrual: Earn rewards from multiple protocols from a single deposit
  • 9,400+ Lifetime Depositors with $34M+ in directed liquidity

Overview

Lulo provides three deposit types:

  • Protected Deposits: Stable yields with automatic coverage against protocol failures
  • Boosted Deposits: Higher yields by providing insurance for Protected deposits
  • Custom Deposits: Direct control over which protocols receive your funds
Integrated Protocols
ProtocolDescription
Kamino FinanceLending and liquidity vaults
Drift ProtocolPerpetuals and lending
MarginFiLending and borrowing
JupiterLending/earn features
Supported Tokens
  • Stablecoins: USDC, USDT, USDS, PYUSD
  • Native: SOL
  • LSTs: bSOL, JitoSOL, mSOL
  • Other: BONK, JUP, ORCA, COPE, CASH

Minimum Deposits: $100 for stablecoins, 1 SOL for native token


Quick Start

API Authentication

All API requests require a valid API key. Get your key from the Lulo Developer Dashboard.

typescript
const headers = {
  'Content-Type': 'application/json',
  'x-api-key': process.env.LULO_API_KEY,
};
Base URLs
EnvironmentURL
Productionhttps://api.lulo.fi
Blinkshttps://blink.lulo.fi
Developer Portalhttps://dev.lulo.fi

API Reference

Generate Deposit Transaction

Creates a serialized transaction for depositing tokens into Lulo.

Endpoint: POST /v1/generate.transactions.deposit

Query Parameters:

ParameterTypeDescription
priorityFeenumberPriority fee in microlamports (e.g., 500000)

Request Body:

json
{
  "owner": "YourWalletPublicKey",
  "mintAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "depositType": "protected",
  "amount": 100000000
}

Response:

json
{
  "transaction": "base64EncodedSerializedTransaction",
  "lastValidBlockHeight": 123456789
}
Generate Withdrawal Transaction

Creates a serialized transaction for withdrawing tokens from Lulo.

Endpoint: POST /v1/generate.transactions.withdraw

Query Parameters:

ParameterTypeDescription
priorityFeenumberPriority fee in microlamports

Request Body:

json
{
  "owner": "YourWalletPublicKey",
  "mintAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "withdrawType": "protected",
  "amount": 50000000
}
Get Account Data

Retrieves user balances, interest earned, and APY metrics.

Endpoint: GET /v1/account/{walletAddress}

Response:

json
{
  "totalDeposited": 1000000000,
  "totalInterestEarned": 5000000,
  "currentApy": 8.5,
  "positions": [
    {
      "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "depositType": "protected",
      "balance": 500000000,
      "interestEarned": 2500000,
      "apy": 7.2
    }
  ]
}
Get Pool Data

Returns current APY rates, liquidity amounts, and capacity metrics.

Endpoint: GET /v1/pools

Response:

json
{
  "pools": [
    {
      "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "symbol": "USDC",
      "protectedApy": 6.5,
      "boostedApy": 9.2,
      "totalDeposited": 34000000000000,
      "availableCapacity": 10000000000000
    }
  ]
}
Get Pending Withdrawals

Lists active withdrawal requests with cooldown periods.

Endpoint: GET /v1/account/{walletAddress}/pending-withdrawals

Initialize Referrer

Sets up a referrer account for earning referral fees.

Endpoint: POST /v1/referrer/initialize

Claim Referral Rewards

Processes referral fee claims.

Endpoint: POST /v1/referrer/claim


Deposit Types Explained

Protected Deposits

Designed for risk-averse users seeking stable yields with automatic coverage.

How it works:

  1. Deposits earn interest from lending across integrated protocols
  2. A portion of interest is shared with Boosted depositors (protection fee)
  3. If a protocol fails, Boosted deposits cover Protected losses automatically

Benefits:

  • Lower risk with priority coverage
  • Stable, predictable yields
  • No claims to file - protection is automatic
  • Instant withdrawals

Coverage includes: Smart contract exploits, oracle failures, bad debt events

Not covered: Solana network failures, USDC depegging, Lulo contract failures

Show full SKILL.md (278 more words)Show less
Boosted Deposits

Higher yields in exchange for providing insurance to Protected depositors.

How it works:

  1. Earn lending yields from integrated protocols
  2. Receive additional yield from Protected deposit interest sharing
  3. Act as first-loss layer if a protocol fails

Benefits:

  • Higher APY (typically 1-2% more than Protected)
  • Dual income streams (lending + protection fees)

Risks:

  • First-loss position in case of protocol failures
  • 48-hour withdrawal cooldown
Custom Deposits

Full control over protocol allocation and risk parameters.

Features:

  • Select specific protocols (Kamino, Drift, MarginFi, Jupiter)
  • Set maximum exposure caps per protocol
  • Automatic reallocation when yields change
  • No protection coverage (direct protocol exposure)

Example: 50% max exposure with 3 protocols means no more than half your funds in any single protocol.


Integration Examples

TypeScript: Deposit to Lulo
typescript
import { Connection, Transaction, VersionedTransaction, Keypair } from '@solana/web3.js';

const LULO_API_URL = 'https://api.lulo.fi';

interface DepositParams {
  owner: string;
  mintAddress: string;
  amount: number;
  depositType: 'protected' | 'boosted' | 'regular';
  priorityFee?: number;
}

async function generateDepositTransaction(params: DepositParams): Promise<string> {
  const { owner, mintAddress, amount, depositType, priorityFee = 500000 } = params;

  const response = await fetch(
    `${LULO_API_URL}/v1/generate.transactions.deposit?priorityFee=${priorityFee}`,
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': process.env.LULO_API_KEY!,
      },
      body: JSON.stringify({
        owner,
        mintAddress,
        depositType,
        amount,
      }),
    }
  );

  if (!response.ok) {
    throw new Error(`Deposit failed: ${response.statusText}`);
  }

  const data = await response.json();
  return data.transaction;
}

async function deposit(
  connection: Connection,
  wallet: Keypair,
  mintAddress: string,
  amount: number,
  depositType: 'protected' | 'boosted' | 'regular' = 'protected'
): Promise<string> {
  // Generate deposit transaction
  const serializedTx = await generateDepositTransaction({
    owner: wallet.publicKey.toBase58(),
    mintAddress,
    amount,
    depositType,
  });

  // Deserialize and sign
  const txBuffer = Buffer.from(serializedTx, 'base64');
  const transaction = VersionedTransaction.deserialize(txBuffer);
  transaction.sign([wallet]);

  // Send and confirm
  const signature = await connection.sendTransaction(transaction);
  await connection.confirmTransaction(signature, 'confirmed');

  console.log('Deposit successful:', signature);
  return signature;
}

// Usage
const connection = new Connection('https://api.mainnet-beta.solana.com');
const USDC_MINT = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';

await deposit(
  connection,
  wallet,
  USDC_MINT,
  100_000_000, // 100 USDC (6 decimals)
  'protected'
);
TypeScript: Withdraw from Lulo
typescript
interface WithdrawParams {
  owner: string;
  mintAddress: string;
  amount: number;
  withdrawType: 'protected' | 'boosted' | 'regular';
  priorityFee?: number;
}

async function generateWithdrawTransaction(params: WithdrawParams): Promise<string> {
  const { owner, mintAddress, amount, withdrawType, priorityFee = 500000 } = params;

  const response = await fetch(
    `${LULO_API_URL}/v1/generate.transactions.withdraw?priorityFee=${priorityFee}`,
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': process.env.LULO_API_KEY!,
      },
      body: JSON.stringify({
        owner,
        mintAddress,
        withdrawType,
        amount,
      }),
    }
  );

  if (!response.ok) {
    throw new Error(`Withdrawal failed: ${response.statusText}`);
  }

  const data = await response.json();
  return data.transaction;
}

async function withdraw(
  connection: Connection,
  wallet: Keypair,
  mintAddress: string,
  amount: number,
  withdrawType: 'protected' | 'boosted' | 'regular' = 'protected'
): Promise<string> {
  const serializedTx = await generateWithdrawTransaction({
    owner: wallet.publicKey.toBase58(),
    mintAddress,
    amount,
    withdrawType,
  });

  const txBuffer = Buffer.from(serializedTx, 'base64');
  const transaction = VersionedTransaction.deserialize(txBuffer);
  transaction.sign([wallet]);

  const signature = await connection.sendTransaction(transaction);
  await connection.confirmTransaction(signature, 'confirmed');

  console.log('Withdrawal successful:', signature);
  return signature;
}
TypeScript: Get Account Balance
typescript
interface LuloPosition {
  mint: string;
  depositType: string;
  balance: number;
  interestEarned: number;
  apy: number;
}

interface LuloAccount {
  totalDeposited: number;
  totalInterestEarned: number;
  currentApy: number;
  positions: LuloPosition[];
}

async function getAccountData(walletAddress: string): Promise<LuloAccount> {
  const response = await fetch(
    `${LULO_API_URL}/v1/account/${walletAddress}`,
    {
      headers: {
        'x-api-key': process.env.LULO_API_KEY!,
      },
    }
  );

  if (!response.ok) {
    throw new Error(`Failed to fetch account: ${response.statusText}`);
  }

  return response.json();
}

// Usage
const account = await getAccountData(wallet.publicKey.toBase58());
console.log('Total Deposited:', account.totalDeposited);
console.log('Interest Earned:', account.totalInterestEarned);
console.log('Current APY:', account.currentApy);
Using Solana Agent Kit
typescript
import { SolanaAgentKit } from 'solana-agent-kit';

const agent = new SolanaAgentKit(
  privateKey,
  rpcUrl,
  openAiApiKey
);

// Lend USDC using Lulo (gets best APR)
const signature = await agent.methods.lendAssets(
  agent,
  100 // amount of USDC to lend
);

console.log('Lending transaction:', signature);
Python: Lulo Integration
python
import aiohttp
import os
from solders.keypair import Keypair
from solders.transaction import VersionedTransaction
from solana.rpc.async_api import AsyncClient
from solana.rpc.commitment import Confirmed
from solana.rpc.types import TxOpts
import base64

LULO_API_URL = "https://api.lulo.fi"
LULO_API_KEY = os.environ.get("LULO_API_KEY")

async def lulo_deposit(
    client: AsyncClient,
    wallet: Keypair,
    mint_address: str,
    amount: int,
    deposit_type: str = "protected"
) -> str:
    """Deposit tokens to Lulo for yield optimization."""

    async with aiohttp.ClientSession() as session:
        # Generate deposit transaction
        async with session.post(
            f"{LULO_API_URL}/v1/generate.transactions.deposit?priorityFee=500000",
            headers={
                "Content-Type": "application/json",
                "x-api-key": LULO_API_KEY,
            },
            json={
                "owner": str(wallet.pubkey()),
                "mintAddress": mint_address,
                "depositType": deposit_type,
                "amount": amount,
            }
        ) as response:
            if response.status != 200:
                raise Exception(f"Deposit failed: {await response.text()}")

            data = await response.json()
            tx_data = base64.b64decode(data["transaction"])

    # Deserialize, sign, and send
    transaction = VersionedTransaction.from_bytes(tx_data)
    transaction.sign([wallet])

    signature = await client.send_transaction(
        transaction,
        opts=TxOpts(preflight_commitment=Confirmed)
    )

    await client.confirm_transaction(signature.value, commitment="confirmed")

    return str(signature.value)

async def lulo_withdraw(
    client: AsyncClient,
    wallet: Keypair,
    mint_address: str,
    amount: int,
    withdraw_type: str = "protected"
) -> str:
    """Withdraw tokens from Lulo."""

    async with aiohttp.ClientSession() as session:
        async with session.post(
            f"{LULO_API_URL}/v1/generate.transactions.withdraw?priorityFee=500000",
            headers={
                "Content-Type": "application/json",
                "x-api-key": LULO_API_KEY,
            },
            json={
                "owner": str(wallet.pubkey()),
                "mintAddress": mint_address,
                "withdrawType": withdraw_type,
                "amount": amount,
            }
        ) as response:
            if response.status != 200:
                raise Exception(f"Withdrawal failed: {await response.text()}")

            data = await response.json()
            tx_data = base64.b64decode(data["transaction"])

    transaction = VersionedTransaction.from_bytes(tx_data)
    transaction.sign([wallet])

    signature = await client.send_transaction(
        transaction,
        opts=TxOpts(preflight_commitment=Confirmed)
    )

    await client.confirm_transaction(signature.value, commitment="confirmed")

    return str(signature.value)

# Usage
async def main():
    client = AsyncClient("https://api.mainnet-beta.solana.com")
    wallet = Keypair.from_base58_string("your-private-key")

    USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"

    # Deposit 100 USDC
    signature = await lulo_deposit(
        client,
        wallet,
        USDC_MINT,
        100_000_000,  # 100 USDC
        "protected"
    )
    print(f"Deposit: {signature}")

Lulo also supports Solana Actions/Blinks for simplified interactions:

typescript
// Blink endpoint for lending
const blinkUrl = `https://blink.lulo.fi/actions?amount=${amount}&symbol=USDC`;

// Fetch blink metadata
const response = await fetch(blinkUrl);
const blinkData = await response.json();

// Execute the action
const postResponse = await fetch(blinkUrl, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ account: walletAddress }),
});

const { transaction } = await postResponse.json();
// Sign and send transaction...

Common Token Addresses

TokenMint Address
USDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDTEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
USDSUSDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA
PYUSD2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
SOL (Wrapped)So11111111111111111111111111111111111111112
mSOLmSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So
JitoSOLJ1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn
bSOLbSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1

Best Practices

Security
  1. Never expose API keys - Use environment variables
  2. Validate transactions - Simulate before signing
  3. Set appropriate slippage - Account for rate changes
  4. Monitor positions - Regularly check balances and APY
Performance
  1. Use priority fees - 500,000+ microlamports for faster confirmation
  2. Batch operations - Combine multiple operations when possible
  3. Cache pool data - Rates update hourly, cache appropriately
Error Handling
typescript
try {
  const signature = await deposit(connection, wallet, USDC_MINT, amount, 'protected');
} catch (error) {
  if (error.message.includes('BAD_REQUEST')) {
    console.error('Invalid parameters');
  } else if (error.message.includes('UNAUTHORIZED')) {
    console.error('Invalid API key');
  } else if (error.message.includes('NOT_FOUND')) {
    console.error('Account or pool not found');
  } else {
    throw error;
  }
}
Monitoring APY
typescript
async function monitorRates(interval: number = 3600000) { // 1 hour
  setInterval(async () => {
    const pools = await fetch(`${LULO_API_URL}/v1/pools`, {
      headers: { 'x-api-key': process.env.LULO_API_KEY! },
    }).then(r => r.json());

    pools.pools.forEach(pool => {
      console.log(`${pool.symbol}: Protected ${pool.protectedApy}% | Boosted ${pool.boostedApy}%`);
    });
  }, interval);
}

Fee Structure

Fee TypeAmountWhen
Initialization0.005 SOLFirst deposit only
ManagementNone-
WithdrawalNone-
TransactionVariablePer transaction (Solana fees)

Resources


Skill Structure

lulo/
├── SKILL.md                      # This file
├── resources/
│   ├── api-reference.md          # Complete API documentation
│   └── token-addresses.md        # Supported token addresses
├── examples/
│   ├── deposit/
│   │   └── deposit.ts            # Deposit examples
│   ├── withdraw/
│   │   └── withdraw.ts           # Withdrawal examples
│   ├── balance/
│   │   └── balance.ts            # Balance query examples
│   └── integration/
│       └── full-integration.ts   # Complete integration example
├── templates/
│   └── lulo-client.ts            # Ready-to-use client template
└── docs/
    └── troubleshooting.md        # Common issues and solutions

© 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

Files

SKILL.md and 8 other files in skills/lulo of sendaifun/skills.

  • SKILL.md
  • docs/troubleshooting.md
  • examples/balance/balance.ts
  • examples/deposit/deposit.ts
  • examples/integration/full-integration.ts
  • examples/withdraw/withdraw.ts
  • resources/api-reference.md
  • resources/token-addresses.md
  • templates/lulo-client.ts

Open the folder on GitHubat commit 06b36b8

Used in 1 other repository

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 7, 2026.

Compare with similar skills

Lulo 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.

Lulo compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lulo this skillsendaifun/skills1301 repos~4.9kAutomated safety check: PassApache-2.0
Aave Integrationccashwell/evm-cortex131—~1.3kAutomated safety check: PassMIT
Pyth Network Price Feedsinternet-court/internet-court-skill6.5k2 repos~3.9kAutomated safety check: PassApache-2.0
Plaid Fintechsickn33/agentic-awesome-skills47k2 repos~467Automated safety check: PassMIT
NEAR Intents Swap Integrationinternet-court/internet-court-skill6.5k1 repos~939Automated safety check: PassCustom licence
Birdeye DeFi Market Datainternet-court/internet-court-skill6.5k1 repos~3.8kAutomated safety check: PassApache-2.0

Similar skills

  • Aave Integration

    ccashwell/evm-cortex

    A skill your agent uses when integrating with Aave V3 for lending, borrowing, flash loans, or building on top of Aave markets.

    131 GitHub stars~1.3k tokensUpdated 10 days ago
    Backend & APIsAuto-check passed
  • Pyth Network Price Feeds

    internet-court/internet-court-skill

    Shows how to read Pyth oracle prices in Solana apps, off-chain through the Hermes client or on-chain from an Anchor program, including confidence and EMA values.

    6.5k GitHub starsUsed in 2 repos~3.9k tokens
    Backend & APIsAuto-check passed
  • Plaid Fintech

    sickn33/agentic-awesome-skills

    Expert patterns for Plaid API integration including Link token flows, transactions sync, identity verification, Auth for ACH, balance checks, webhook handling, and fintech compliance best practices.

    47k GitHub starsUsed in 2 repos~467 tokens
    Backend & APIsAuto-check passed
  • NEAR Intents Swap Integration

    internet-court/internet-court-skill

    Builds cross-chain token swaps and bridge flows with the NEAR Intents 1Click API: quotes, deposit addresses, per-chain deposits and status polling.

    6.5k GitHub starsUsed in 1 repo~939 tokens
    Backend & APIsAuto-check passed
  • Birdeye DeFi Market Data

    internet-court/internet-court-skill

    Queries the Birdeye API for token prices, OHLCV candles, trending and new tokens, holder data, security checks and wallet P&L, with WebSocket streams for live prices and whale alerts.

    6.5k GitHub starsUsed in 1 repo~3.8k tokens
    Business, Finance & HRAuto-check passed
  • Helius for Solana

    internet-court/internet-court-skill

    Guides building Solana apps on Helius: sending transactions, asset and NFT queries, live streaming, webhooks, priority fees, wallet analysis and API key onboarding.

    6.5k GitHub starsUsed in 1 repo~2.7k tokens
    Backend & APIsAuto-check passed

More from sendaifun/skills

All 24 skills in this repo
  • Breaks a shared video or GIF down frame by frame to recreate its motion as working code instead of guessing the timing by eye.

    130 GitHub stars~2.1k tokensUpdated 2 mo ago
    Auto-check passed
  • Builds and debugs Arcium encrypted computation apps on Solana: Arcis circuits, Anchor orchestration, encrypted inputs and the init, queue and callback flow.

    130 GitHub stars~2.8k tokensUpdated 2 mo ago
    Auto-check passed
  • Coingecko

    sendaifun/skills

    Complete CoinGecko Solana API integration for token prices, DEX pool data, OHLCV charts, trades, and market analytics.

    130 GitHub starsUsed in 1 repo~4.8k tokens
    Auto-check: notes
  • Phantom Connect SDK

    sendaifun/skills

    Integrates Phantom wallet connection, social login, and transaction signing into React, React Native, or vanilla JS apps on Solana.

    130 GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • Integrating Jupiter

    sendaifun/skills

    Comprehensive guidance for integrating Jupiter APIs (Ultra Swap, Lend, Perps, Trigger, Recurring, Tokens, Price, Portfolio, Prediction Markets, Send, Studio, Lock, Routing).

    130 GitHub starsUsed in 1 repo~5.1k tokens
    Auto-check passed
  • Pinocchio Development

    sendaifun/skills

    Comprehensive guide for building high-performance Solana programs using Pinocchio - the zero-dependency, zero-copy framework.

    130 GitHub starsUsed in 1 repo~4.1k tokens
    Auto-check passed

Works with

Questions about Lulo

What does Lulo do?

Complete guide for Lulo - Solana's premier lending aggregator. Lulo is an agent skill from sendaifun/skills. Complete guide for Lulo - Solana's premier lending aggregator.

When should I use Lulo?

Lulo fits situations like: tasks that involve Banking and insurance; tasks that involve Third-party API integration.

How do I install Lulo in Claude Code?

Run `npx skills add sendaifun/skills --skill lulo -a claude-code`. Or copy the skill folder (skills/lulo in sendaifun/skills) into .claude/skills/lulo in your project. Claude Code loads it when a task matches its description.

How do I install Lulo in Codex?

Run `npx skills add sendaifun/skills --skill lulo -a codex`. Or copy the skill folder (skills/lulo in sendaifun/skills) into .agents/skills/lulo in your project. Codex loads it when a task matches its description.

Can I use Lulo in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sendaifun/skills --skill lulo -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lulo, .gemini/skills/lulo, .github/skills/lulo and .opencode/skills/lulo in your project.

What does Lulo need to run?

Going by SKILL.md and its folder, Lulo needs TypeScript for the scripts in its folder and credentials named LULO_API_KEY. Our summary lists: Node.js; A credential in LULO_API_KEY.

Does Lulo access the network?

SKILL.md names 10 domains. In commands or code: dev.lulo.fi, api.lulo.fi, blink.lulo.fi and api.mainnet-beta.solana.com; the agent is likely to contact these when it follows the instructions. As links in the text: docs.lulo.fi, github.com, lulo.fi, discord.gg, t.me and twitter.com. This is read from the text; nothing was executed.

Is Lulo safe to install?

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.

What licence does Lulo use?

Lulo 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.

How many tokens does Lulo use?

About 4.9k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Lulo?

Skills that share tags, products or a category with Lulo: Aave Integration (ccashwell/evm-cortex, 131 stars), Pyth Network Price Feeds (internet-court/internet-court-skill, 6.5k stars), Plaid Fintech (sickn33/agentic-awesome-skills, 47k stars) and NEAR Intents Swap Integration (internet-court/internet-court-skill, 6.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Lulo?

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.