animation-reverse-engi…
Reverse-engineer any motion reference (a video from X/Twitter, Dribbble, a screen recording, a GIF) into production animation…
Complete deBridge Protocol SDK for building cross-chain bridges, message passing, and token transfers on Solana. Use when building cross-chain applications, bridging assets between Solana and EVM chains, or implementing trustless external calls.
Claude Code
$ npx -y skills add sendaifun/skills --skill debridge --agent claude-code
Codex
$ npx skills add sendaifun/skills --skill debridge -a codex -y
Cursor
$ npx skills add sendaifun/skills --skill debridge -a cursor -y
Gemini CLI
$ npx skills add sendaifun/skills --skill debridge -a gemini-cli -y
GitHub Copilot
$ npx skills add sendaifun/skills --skill debridge -a github-copilot -y
OpenCode
$ npx skills add sendaifun/skills --skill debridge -a opencode -y
Windsurf
$ npx skills add sendaifun/skills --skill debridge -a windsurf -y
name: debridge creator: raunit-dev description: Complete deBridge Protocol SDK for building cross-chain bridges, message passing, and token transfers on Solana. Use when building cross-chain applications, bridging assets between Solana and EVM chains, or implementing trustless external calls.
A comprehensive guide for building Solana programs with the deBridge Solana SDK - enabling decentralized cross-chain transfers of arbitrary messages and value between blockchains.
deBridge is a cross-chain infrastructure protocol enabling:
Add the SDK to your Anchor/Solana program:
cargo add --git ssh://git@github.com/debridge-finance/debridge-solana-sdk.git debridge-solana-sdk
Or add to `Cargo.toml`:
[dependencies]
debridge-solana-sdk = { git = "ssh://git@github.com/debridge-finance/debridge-solana-sdk.git" }use anchor_lang::prelude::*;
use debridge_solana_sdk::prelude::*;
declare_id!("YourProgramId11111111111111111111111111111");
#[program]
pub mod my_bridge_program {
use super::*;
pub fn send_cross_chain(
ctx: Context<SendCrossChain>,
target_chain_id: [u8; 32],
receiver: Vec<u8>,
amount: u64,
) -> Result<()> {
// Invoke deBridge send
debridge_sending::invoke_debridge_send(
debridge_sending::SendIx {
target_chain_id,
receiver,
is_use_asset_fee: false, // Use native SOL for fees
amount,
submission_params: None,
referral_code: None,
},
ctx.remaining_accounts,
)?;
Ok(())
}
}
#[derive(Accounts)]
pub struct SendCrossChain<'info> {
#[account(mut)]
pub sender: Signer<'info>,
// Additional accounts passed via remaining_accounts
}deBridge uses 32-byte chain identifiers for all supported networks:
use debridge_solana_sdk::chain_ids::*; // Solana let solana = SOLANA_CHAIN_ID; // Solana mainnet // EVM Chains let ethereum = ETHEREUM_CHAIN_ID; // Chain ID: 1 let polygon = POLYGON_CHAIN_ID; // Chain ID: 137 let bnb = BNB_CHAIN_CHAIN_ID; // Chain ID: 56 let arbitrum = ARBITRUM_CHAIN_ID; // Chain ID: 42161 let avalanche = AVALANCHE_CHAIN_ID; // Chain ID: 43114 let fantom = FANTOM_CHAIN_ID; // Chain ID: 250 let heco = HECO_CHAIN_ID; // Chain ID: 128
use debridge_solana_sdk::{DEBRIDGE_ID, SETTINGS_ID};
// Main deBridge program for sending/claiming
let debridge_program = DEBRIDGE_ID;
// Settings and confirmation storage program
let settings_program = SETTINGS_ID;deBridge supports multiple fee payment methods:
// Native Fee (SOL) is_use_asset_fee: false // Pay fees in SOL // Asset Fee is_use_asset_fee: true // Pay fees in the bridged token // Fee Constants const BPS_DENOMINATOR: u64 = 10000; // Basis points divisor
Control transfer behavior with flags:
use debridge_solana_sdk::flags::*; // Available flags (bit positions) const UNWRAP_ETH: u8 = 0; // Unwrap to native ETH on destination const REVERT_IF_EXTERNAL_FAIL: u8 = 1; // Revert if external call fails const PROXY_WITH_SENDER: u8 = 2; // Include sender in proxy call const SEND_HASHED_DATA: u8 = 3; // Send data as hash const DIRECT_WALLET_FLOW: u8 = 31; // Use direct wallet flow // Setting flags on submission params let mut flags = [0u8; 32]; flags.set_reserved_flag(UNWRAP_ETH); flags.set_reserved_flag(REVERT_IF_EXTERNAL_FAIL);
use debridge_solana_sdk::prelude::*;
pub fn send_tokens(
ctx: Context<SendTokens>,
amount: u64,
) -> Result<()> {
debridge_sending::invoke_debridge_send(
debridge_sending::SendIx {
target_chain_id: chain_ids::ETHEREUM_CHAIN_ID,
receiver: recipient_eth_address.to_vec(),
is_use_asset_fee: false,
amount,
submission_params: None,
referral_code: Some(12345), // Optional referral
},
ctx.remaining_accounts,
)?;
Ok(())
}pub fn send_with_native_fee(
ctx: Context<Send>,
target_chain_id: [u8; 32],
receiver: Vec<u8>,
amount: u64,
) -> Result<()> {
// Get the fixed fee for the target chain
let fee = debridge_sending::get_chain_native_fix_fee(
&target_chain_id,
ctx.remaining_accounts,
)?;
debridge_sending::invoke_debridge_send(
debridge_sending::SendIx {
target_chain_id,
receiver,
is_use_asset_fee: false,
amount,
submission_params: None,
referral_code: None,
},
ctx.remaining_accounts,
)?;
Ok(())
}pub fn send_with_asset_fee(
ctx: Context<Send>,
target_chain_id: [u8; 32],
receiver: Vec<u8>,
amount: u64,
) -> Result<()> {
// Check if asset fee is available for this chain
let is_available = debridge_sending::is_asset_fee_available(
&target_chain_id,
ctx.remaining_accounts,
)?;
if !is_available {
return Err(error!(ErrorCode::AssetFeeNotAvailable));
}AI agent skills for Solana development — DeFi protocols, infrastructure, security, and more.
Reverse-engineer any motion reference (a video from X/Twitter, Dribbble, a screen recording, a GIF) into production animation…
Build and debug encrypted Solana applications with Arcium — data stays private during computation, no single party sees it. Use…
Complete Birdeye API integration for real-time DeFi data across Solana and 15 other chains. Use for token prices, OHLCV charts,…
Build on Solana with Carbium infrastructure — bare-metal RPC, Standard WebSocket pubsub, gRPC Full Block streaming (~22ms), DEX…
Complete CoinGecko Solana API integration for token prices, DEX pool data, OHLCV charts, trades, and market analytics. Use for…
Crypto Twitter intelligence and alpha research. Search X/Twitter for real-time crypto narratives, trending tokens, yield…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.