Skills glam

Solana vault management via GLAM Protocol. Triggers: glam, glam-cli, glam-sdk, vault create/manage, tokenized vault, share class, DeFi vault, treasury, asset management, access control, delegate permissions, Jupiter swap, Kamino lending/borrow/vaults/farms, staking (Marinade/native/SPL/Sanctum/LST), cross-chain USDC (CCTP), timelock, subscription/redemption, NAV pricing, token transfer. Supports CLI and TypeScript SDK.

install
source · Clone the upstream repo
git clone https://github.com/sendaifun/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sendaifun/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/glam" ~/.claude/skills/sendaifun-skills-glam && rm -rf "$T"
manifest: skills/glam/SKILL.md
source content

GLAM Protocol Skill

GLAM provides programmable investment infrastructure on Solana: vaults with access control, DeFi integrations, and tokenization.

Quick Start

# Install CLI
npm install -g @glamsystems/glam-cli

# Configure (~/.config/glam/config.json)
cat > ~/.config/glam/config.json << 'EOF'
{
  "keypair_path": "~/.config/solana/id.json",
  "json_rpc_url": "https://api.mainnet-beta.solana.com"
}
EOF

# Create vault, set active, enable integrations, verify
glam-cli vault create ./vault-template.json
glam-cli vault set <VAULT_STATE_PUBKEY>
glam-cli integration enable JupiterSwap KaminoLend
glam-cli vault view

Critical: Integration Enablement

You MUST enable integrations BEFORE using them. This is the most common error.

Available:

JupiterSwap
,
KaminoLend
,
KaminoVaults
,
KaminoFarms
,
SplToken
,
CCTP
,
GlamMint
,
Marinade
(staging),
StakePool
(staging),
SanctumSingle
(staging),
SanctumMulti
(staging),
StakeProgram
(staging).

Staging integrations require

--bypass-warning
.


Workflows

Tokenized Vault Setup

glam-cli vault create ./tokenized-vault-template.json
glam-cli vault set <VAULT_STATE_PUBKEY>
glam-cli integration enable JupiterSwap KaminoLend
glam-cli manage price                          # Set initial NAV price
glam-cli jupiter set-max-slippage 100          # Configure swap policy

# Optional: delegate trading permissions (protocol-scoped)
glam-cli delegate grant <TRADER_PUBKEY> SwapAny --protocol JupiterSwap

# Optional: set timelock (24 hours)
glam-cli timelock set 86400

Kamino Lending

glam-cli integration enable KaminoLend
glam-cli kamino-lend init                      # Required once
glam-cli kamino-lend deposit \
  7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF \
  EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v \
  1000

Decision Tree

GoalIntegrationCommand
Swap tokens
JupiterSwap
jupiter swap
Lend for yield
KaminoLend
kamino-lend deposit
Stake SOL (liquid)
Marinade
(staging)
marinade --bypass-warning stake
Stake SOL (LST)
StakePool
/
SanctumSingle
/
SanctumMulti
(staging)
lst --bypass-warning stake <pool> <amount>
Stake SOL (native)
StakeProgram
(staging)
stake --bypass-warning list / deactivate / withdraw
Kamino vaults
KaminoVaults
kamino-vaults deposit
Tokenized vault
vault create
manage price
→ investors
invest subscribe
Manage share tokensSDK only:
client.mint.*
(freeze, issue, burn, forceTransfer)
Bridge USDC
CCTP
cctp bridge-usdc <amount> <domain> <dest>
(0=ETH, 1=AVAX, 2=OP, 3=ARB, 6=BASE, 7=POLYGON)
Timelock
timelock set <seconds>

Common Errors

ErrorSolution
"Signer is not authorized"Check
vault view
for owner; grant delegate if needed
"Integration not enabled"
integration enable <NAME>
"Asset not in allowlist"
vault allowlist-asset <MINT>
"User not initialized"
kamino-lend init
"No route found"Try smaller amount; check token liquidity
"Slippage exceeded"Increase
--slippage-bps
or reduce amount
"Account is frozen"SDK:
client.mint.setTokenAccountsStates()
"Missing jupiter_api_key"Add
jupiter_api_key
to config.json

See troubleshooting for detailed solutions.


Common Mints

TokenAddress
SOL
So11111111111111111111111111111111111111112
USDC
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDT
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
mSOL
mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So
jitoSOL
J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn

SDK Quick Start

import {
  GlamClient,
  WSOL,
  USDC,
  getProgramAndBitflagByProtocolName,
} from "@glamsystems/glam-sdk";
import { BN } from "@coral-xyz/anchor";

const client = new GlamClient({ wallet });

// Create vault
const { vaultPda } = await client.vault.create({
  name: "My Vault",
  assets: [WSOL, USDC],
});

// Enable Jupiter integration
const perms = getProgramAndBitflagByProtocolName();
const [program, bitflag] = perms["JupiterSwap"];
await client.access.enableProtocols(vaultPda, program, parseInt(bitflag, 2));

// Swap
await client.jupiterSwap.swap(vaultPda, {
  inputMint: USDC,
  outputMint: WSOL,
  amount: new BN(100_000_000),
  slippageBps: 50,
});

For advanced proxy instruction remapping (convert standard Solana instructions into GLAM-proxied instructions), see the

ix-mapper
SDK reference.


Reference