Skills Plugins MCP Prompt Model 博客 我的中心
开发编程 #typescript #data #ai #agent

sati-sdk

Build with SATI (Solana Agent Trust Infrastructure) - on-chain agent identity, verifiable reputation, and blind feedback on Solana. Use when registering AI agents on-chain via Token-2022 NFTs, giving or searching feedback, querying agent reputation, building registration files (ERC-8004), encrypting attestation content, or integrating SATI into TypeScript/Node.js projects. Covers: CLI onboarding (create-sati-agent), agent registration, feedback (give/search), reputation summaries, agent search/discovery, validation attestations, EVM address linking, content encryption, and metadata uploading. Triggers on SATI, sati-sdk, create-sati-agent, agent registration solana, agent reputation, blind feedback, compressed attestation, Light Protocol attestation, ERC-8004 registration file, agent identity NFT, register agent CLI.

DeepseekModel 官方收录技能 质量 良好 · 64 v1.0.0

获取

https://deepseekmodel.com/api/download.php?id=cascade-protocol-sati-skill-md&format=skill
下载 .skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name sati-sdk description Build with SATI (Solana Agent Trust Infrastructure) - on-chain agent identity, verifiable reputation, and blind feedback on Solana. Use when registering AI agents on-chain via Token-2022 NFTs, giving or searching feedback, querying agent reputation, building registration files (ERC-8004), encrypting attestation content, or integrating SATI into TypeScript/Node.js projects. Covers: CLI onboarding (create-sati-agent), agent registration, feedback (give/search), reputation summaries, agent search/discovery, validation attestations, EVM address linking, content encryption, and metadata uploading. Triggers on SATI, sati-sdk, create-sati-agent, agent registration solana, agent reputation, blind feedback, compressed attestation, Light Protocol attestation, ERC-8004 registration file, agent identity NFT, register agent CLI. SATI Solana Agent Trust Infrastructure. Agents get Token-2022 NFT identities, accumulate verifiable feedback via ZK-compressed attestations (Light Protocol), and can be discovered on-chain. Program ID (all networks): satiRkxEiwZ51cv8PRu8UMzuaqeaNU9jABo6oAFMsLe Quick Start (CLI) Fastest path - zero to registered agent in ~5 minutes: npx create-sati-agent init # Creates agent-registration.json + keypair # Edit agent-registration.json with your agent details npx create-sati-agent publish # Publishes to devnet (free, auto-funded) Mainnet: npx create-sati-agent publish --network mainnet # ~0.003 SOL All commands: init , publish , search , info [MINT] , give-feedback , transfer <MINT> . All support --help , --json , --network devnet|mainnet . agent-registration.json The registration file follows the ERC-8004 Registration standard : { "type" : "https://eips.ethereum.org/EIPS/eip-8004#registration-v1" , "name" : "MyAgent" , "description" : "AI assistant that does X for Y" , "image" : "https://example.com/avatar.png" , "properties" : { "files" : [ { "uri" : "https://example.com/avatar.png" , "type" : "image/png" } ] , "category" : "image" } , "services" : [ { "name" : "MCP" , "endpoint" : "https://myagent.com/mcp" , "version" : "2025-06-18" , "mcpTools" : [ "search" , "summarize" , "analyze" ] , "mcpPrompts" : [ "data-analysis" ] , "mcpResources" : [ "knowledge-base" ] } , { "name" : "A2A" , "endpoint" : "https://myagent.com/.well-known/agent-card.json" , "a2aSkills" : [ "natural_language_processing/information_retrieval_synthesis/question_answering" ] } ] , "supportedTrust" : [ "reputation" ] , "active" : false , "x402Support" : false , "registrations" : [ ] } Service types (see ERC-8004 best practices for detailed guidance): MCP - Model Context Protocol. Fields: mcpTools (tool names as strings), mcpPrompts , mcpResources . The version field is the MCP spec version your server supports (e.g., "2025-06-18" ). A2A - Agent-to-Agent. Fields: a2aSkills (OASF skill paths). Endpoint should point to your agent card JSON. OASF - Open Agent Skills Framework. Fields: skills , domains . ENS , DID , agentWallet - Identity services. Note: When publishing via CLI ( npx create-sati-agent publish ), the CLI auto-discovers MCP tools by calling your MCP endpoint. Your MCP server must be running and reachable during publish. If your server requires auth, you'll see a non-blocking reachability warning - you can safely ignore it and list tools manually in the JSON. Mainnet deployment flow npx create-sati-agent init # 1. Create template + keypair npx create-sati-agent publish # 2. Test on devnet (free, default) npx create-sati-agent info <MINT> --network devnet # 3. Verify npx create-sati-agent publish --network mainnet # 4. Go live (~0.003 SOL) npx create-sati-agent transfer <MINT> \ --new-owner <SECURE_WALLET> --network mainnet # 5. Move to hardware wallet CLI feedback npx create-sati-agent give-feedback \ --agent <MINT> --tag1 starred --value 85 --network mainnet Feedback tag conventions: tag1 value range meaning starred 0-100 Overall rating reachable 0 or 1 Health check (1 = reachable) uptime 0-100 Uptime percentage responseTime ms Latency in milliseconds successRate 0-100 Success percentage Monitoring agent health Automate health checks with a cron job or scheduled task: # Check if endpoint is reachable and report to SATI curl -sf https://myagent.com/mcp > /dev/null && \ npx create-sati-agent give-feedback --agent <MINT> --tag1 reachable --value 1 --network mainnet || \ npx create-sati-agent give-feedback --agent <MINT> --tag1 reachable --value 0 --network mainnet Reputation badge Add a reputation badge to your README: ![ SATI Reputation ]( https://sati.cascade.fyi/api/badge/<YOUR_MINT>?network=mainnet ) Or link to your dashboard page: [ Reputation ]( https://sati.cascade.fyi/agent/<YOUR_MINT> ) SDK (Programmatic) @cascade-fyi/sati-sdk is the primary SDK for all SATI integrations. Building a read-only integration? For explorers, dashboards, and data ingestion, the REST API requires no wallet or Solana dependencies. Use the SDK only when you need to write on-chain (register agents, give feedback, publish scores). npm install @cascade-fyi/sati-sdk # Peer deps: npm install @solana/kit @solana-program/token-2022 Initialize import { Sati , createSatiUploader, address } from "@cascade-fyi/sati-sdk" ; import { createKeyPairSignerFromBytes } from "@solana/kit" ; const sati = new Sati ({ network : "mainnet" }); // Options: network, rpcUrl, wsUrl, photonRpcUrl, onWarning, transactionConfig, feedbackCacheTtlMs Load a wallet: import { readFileSync } from "node:fs" ; const bytes = new Uint8Array ( JSON . parse ( readFileSync ( "wallet.json" , "utf8" ))); const payer = await createKeyPairSignerFromBytes (bytes); 1. Register an Agent Quick (fluent builder) const builder = sati. createAgentBuilder ( "MyAgent" , "AI assistant" , "https://example.com/avatar.png" ); builder . setMCP ( "https://mcp.example.com" , "2025-06-18" , { tools : [ "search" ] }) . setA2A ( "https://a2a.example.com/.well-known/agent-card.json" ) . setX402Support ( true ) . setActive ( true ); const result = await builder. register ({ payer, uploader : createSatiUploader (), // Zero-config IPFS upload }); // result.mint - agent NFT address, result.memberNumber, result.signature Direct import { buildRegistrationFile, createSatiUploader } from "@cascade-fyi/sati-sdk" ; const regFile = buildRegistrationFile ({ name : "MyAgent" , description : "AI assistant" , image : "https://example.com/avatar.png" , services : [{ name : "MCP" , endpoint : "https://mcp.example.com" }], active : true , }); const uploader = createSatiUploader (); const uri = await uploader. upload (regFile); const result = await sati. registerAgent ({ payer, name : "MyAgent" , uri, nonTransferable : false , // default: false. Set true for soulbound (non-transferable) agents. }); Uploaders: createSatiUploader() (zero-config, uses hosted IPFS via sati.cascade.fyi ) or createPinataUploader(jwt) . 2. Give Feedback Public feedback (simple) giveFeedback uses the FeedbackPublicV1 schema (CounterpartySigned mode) - the reviewer signs and submits in one call. No agent co-signature required. import { Outcome } from "@cascade-fyi/sati-sdk" ; const { signature, attestationAddress } = await sati. giveFeedback ({ payer, // Reviewer wallet (pays + signs) agentMint : address ( "Agent..." ), // Agent to review outcome : Outcome . Positive , // Positive | Negative | Neutral (default: Neutral) value : 87 , // Numeric score (optional) valueDecimals : 0 , // Decimal places for value tag1 : "starred" , // Primary dimension tag2 : "chat" , // Secondary dimension (optional) message : "Great response time" , // Human-readable (optional) endpoint : "https://agent.example" , // Endpoint reviewed (optional) taskRef : txHashBytes, // 32-byte task reference (optional, e.g. payment tx hash) }); x402 payment linking: The taskRef field accepts a 32-byte reference to link feedback to a specific transaction. x402 integration details (converting tx signatures to 32-byte refs, querying feedback by payment) are under active development. Blind feedback (dual-signature) For proof-of-participation, use the FeedbackV1 schema (DualSignature mode). The agent signs a blind commitment before knowing the outcome. Use the lower-level createFeedback() method with both agentSignature and counterpartyMessage . See the specification for the full blind feedback flow. Note: For most integrations, FeedbackPublicV1 (single-signer via giveFeedback ) is sufficient. Blind feedback requires agent-side signing integration and is primarily for proof-of-participation use cases where you need cryptographic evidence that the agent participated in the interaction. Browser wallet flow (two-step) The platform server prepares a SIWS (Sign In With Solana) message, the user signs it in their browser wallet, and the platform submits the transaction. Uses @solana/wallet-adapter-react (works with Phantom, Solflare, Backpack, and any wallet implementing the Wallet Standard signMessage feature). npm install @solana/wallet-adapter-react @solana/wallet-adapter-wallets @solana/wallet-adapter-react-ui Server (API route): import { Sati , Outcome , address, bytesToHex, hexToBytes } from "@cascade-fyi/sati-sdk" ; const sati = new Sati ({ network : "mainnet" }); // POST /api/prepare-feedback async function handlePrepare ( req ) { const { walletAddress, agentMint, value, tag1, outcome } = req. body ; const prepared = await sati. prepareFeedback ({ counterparty : address (walletAddress), agentMint : address (agentMint), outcome : outcome ?? Outcome . Positive , value, tag1, }); // Store `prepared` server-side (e.g. in session or cache keyed by walletAddress + agentMint) await cache. set ( `feedback: ${walletAddress} : ${agentMint} ` , prepared); // Only send the SIWS message bytes to the frontend return { messageHex : bytesToHex (prepared. messageBytes ) }; } // POST /api/submit-feedback async function handleSubmit ( req ) { const { walletAddress, agentMint, signatureHex } = req. body ; const prepared = await cache. get ( `feedback: ${walletAddress} : ${agentMint} ` ); const result = await sati. submitPreparedFeedback ({ payer : platformPayer, prepared, counterpartySignature : hexToBytes (signatureHex), }); return { signature : result. signature , attestationAddress : result. attestationAddress }; } Frontend (React component): import { useWallet } from "@solana/wallet-adapter-react" ; import { hexToBytes, bytesToHex } from "@cascade-fyi/sati-sdk" ; function FeedbackButton ( { agentMint }: { agentMint: string } ) { const { publicKey, signMessage, connected } = useWallet (); async function handleFeedback ( ) { if (!publicKey || !signMessage) return ; // 1. Server prepares the SIWS message const { messageHex } = await fetch ( "/api/prepare-feedback" , { method : "POST" , headers : { "Content-Type" : "application/json" }, body : JSON . stringify ({ walletAddress : publicKey. toBase58 (), agentMint, value : 85 , tag1 : "starred" , }), }). then ( ( r ) => r. json ()); // 2. User signs with wallet (Phantom/Solflare popup) const messageBytes = hexToBytes (messageHex); const signature = await signMessage (messageBytes); // Returns Uint8Array (64-byte Ed25519) // 3. Server submits the transaction await fetch ( "/api/submit-feedback" , { method : "POST" , headers : { "Content-Type" : "application/json" }, body : JSON . stringify ({ walletAddress : publicKey. toBase58 (), agentMint, signatureHex : bytesToHex (signature), }), }); } return ( < button onClick = {handleFeedback} disabled = {!connected} > Rate Agent </ button > ); }
Agent 识别该技能的关键词,点击任意一个即可复制。

该技能未提供触发词。

下载的 .skill 包内含以下字段。
字段 说明
format格式标识(skill/v1)
skill_id技能唯一 ID
name技能名称
version版本号
description技能描述
category所属分类(数组)
trigger_words触发词列表
tags标签列表
source来源标识
source_url来源链接(本页地址)
exported_at导出时间(每次下载生成)
system_prompt系统提示词正文
model_config模型参数:provider / model / temperature / max_tokens / top_p
examples示例
install_guide各平台导入说明(Coze / Dify / Claude / 自定义框架)
同一份技能可按不同平台格式导出。
.skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用 下载
.skillpro 增强格式,额外含脚本 / 工具 / 依赖 / 钩子占位 下载
.json 纯 JSON 导出,只含 system_prompt 与模型参数 下载
Coze 带 frontmatter 的 Markdown,Coze 平台导入用 下载
Dify Dify DSL,创建应用后直接导入 下载

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

验证码 --

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。