Sync payments and light-token-client skills to latest examples + add T22 extensions#1
Sync payments and light-token-client skills to latest examples + add T22 extensions#1
Conversation
- Update payments skill: fix import paths (show-balance, receive-payments, register-spl-mint, spl-to-light, wrap-from-spl), add mint field to gasless Rust TransferInterface, add verify-address reference - Update light-token-client: fix breaking TS API renames (approve → approveInterface, revoke → revokeInterface), update wrap/unwrap TS to new API names, fix load-ata import path and return type, fix Rust struct fields (remove max_top_up, add fee_payer, add mint, rename ProgramTestConfig::new_v2 → new), update spl-to-light comparison, add delegate-transfer reference - Add Token 2022 extensions to both skills: full set (10 extensions) for light-token-client, payment-relevant subset (4 extensions) for payments, with overview files and SKILL.md updates Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
| if (ixs.length === 0) return console.log("Nothing to load"); | ||
|
|
||
| for (const ixs of instructions) { | ||
| const { blockhash } = await rpc.getLatestBlockhash(); | ||
| const tx = buildAndSignTx(ixs, payer, blockhash); | ||
| const sig = await sendAndConfirmTx(rpc, tx); | ||
| console.log("Tx:", sig); | ||
| } | ||
| const blockhash = await rpc.getLatestBlockhash(); | ||
| const tx = buildAndSignTx(ixs, payer, blockhash.blockhash); | ||
| const signature = await sendAndConfirmTx(rpc, tx); | ||
| console.log("Tx:", signature); |
There was a problem hiding this comment.
🔴 Instruction example passes TransactionInstruction[][] directly to buildAndSignTx instead of iterating
The new instruction example in load-associated-token-account.md was rewritten to remove the iteration loop over the TransactionInstruction[][] return value. createLoadAtaInstructions returns TransactionInstruction[][] (as documented in skills/payments/references/receive-payments.md:5 — "APIs return TransactionInstruction[][]" — and as shown in the iteration pattern at skills/payments/references/receive-payments.md:29). The new code at lines 110–115 passes the entire nested array directly to buildAndSignTx, which expects a flat TransactionInstruction[]. The old code correctly iterated: for (const ixs of instructions) { ... buildAndSignTx(ixs, ...) }. This reference code would cause a runtime error for any developer following the example.
| if (ixs.length === 0) return console.log("Nothing to load"); | |
| for (const ixs of instructions) { | |
| const { blockhash } = await rpc.getLatestBlockhash(); | |
| const tx = buildAndSignTx(ixs, payer, blockhash); | |
| const sig = await sendAndConfirmTx(rpc, tx); | |
| console.log("Tx:", sig); | |
| } | |
| const blockhash = await rpc.getLatestBlockhash(); | |
| const tx = buildAndSignTx(ixs, payer, blockhash.blockhash); | |
| const signature = await sendAndConfirmTx(rpc, tx); | |
| console.log("Tx:", signature); | |
| if (ixs.length === 0) return console.log("Nothing to load"); | |
| for (const instructions of ixs) { | |
| const blockhash = await rpc.getLatestBlockhash(); | |
| const tx = buildAndSignTx(instructions, payer, blockhash.blockhash); | |
| const signature = await sendAndConfirmTx(rpc, tx); | |
| console.log("Tx:", signature); | |
| } |
Was this helpful? React with 👍 or 👎 to provide feedback.
| --- | ||
| name: payments-and-wallets | ||
| description: "For stablecoin payment flows and wallet integrations on Solana 200x cheaper token accounts. Receive, send, balance, history, and client-side signing with Privy and Solana wallet adapters. Optional guide to add nullifiers to prevent payments from being executed more than once." | ||
| name: light-payments-skill |
There was a problem hiding this comment.
🟡 SKILL.md name field does not match directory name or CLAUDE.md listing
The name field in skills/payments/SKILL.md is light-payments-skill, but the directory is payments and CLAUDE.md lists the skill as payments. Every other non-orchestrator skill in the repo uses the directory name as the frontmatter name (ask-mcp, data-streaming, light-sdk, light-token-client, solana-compression, testing, token-distribution, zk-nullifier). This inconsistency could break skill resolution/discovery in systems that expect the name to match the directory.
| name: light-payments-skill | |
| name: payments |
Was this helpful? React with 👍 or 👎 to provide feedback.
Summary
/unified→ base where needed), addmintfield to gasless RustTransferInterface, addverify-address.mdreference, add Token 2022 extensions (4 payment-relevant: metadata, transfer-fees, pausable, confidential-transfer)approve→approveInterface,revoke→revokeInterface), updatewrap/unwrapTS to new API, fixload-atareturn type, fix 6 Rust struct fields (max_top_upremoved,fee_payertype changed,ProgramTestConfig::new_v2→new), updatespl-to-light.mdcomparison, adddelegate-transfer.md, add Token 2022 extensions (all 10 supported)payments-and-wallets→paymentsrename, new payment reference filesTest plan
grep -r "max_top_up" skills/light-token-client/returns zerogrep -r "ProgramTestConfig::new_v2" skills/returns zero (except light-sdk)ls skills/light-token-client/references/extensions/shows 11 filesls skills/payments/references/extensions/shows 5 files🤖 Generated with Claude Code