validation/SKILL.md
ERC-8004 on-chain agent validation management — request and respond to validations, and query validation status, summaries, and paginated lists by agent or validator.
npx skillsauth add aibtcdev/skills validationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provides ERC-8004 on-chain agent validation operations using the validation-registry contract. Read operations (get-status, get-summary, get-agent-validations, get-validator-requests) work without a wallet. Write operations (request, respond) require an unlocked wallet.
bun run validation/validation.ts <subcommand> [options]
Request validation from a validator for an agent in the ERC-8004 validation registry. The request hash must be a 32-byte SHA-256 hash of the request data. Requires an unlocked wallet.
bun run validation/validation.ts request --validator <address> --agent-id <id> --request-uri <uri> --request-hash <hex> [--fee <fee>] [--sponsored]
Options:
--validator (required) — Stacks address of the validator to request validation from--agent-id (required) — Agent ID to request validation for (non-negative integer)--request-uri (required) — URI pointing to the validation request data--request-hash (required) — 32-byte SHA-256 hash of the request data as a hex string--fee (optional) — Fee preset (low, medium, high) or micro-STX amount--sponsored (flag) — Submit as a sponsored transactionOutput:
{
"success": true,
"txid": "0xabc...",
"message": "Validation requested from SP2... for agent 42.",
"validator": "SP2...",
"agentId": 42,
"requestUri": "ipfs://request...",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xabc..."
}
Submit a validation response for a pending validation request. Only the validator specified in the original request can call this. Response must be an integer between 0 and 100. Can be called multiple times for progressive updates. Requires an unlocked wallet.
bun run validation/validation.ts respond --request-hash <hex> --response <value> --response-uri <uri> --response-hash <hex> [--tag <tag>] [--fee <fee>] [--sponsored]
Options:
--request-hash (required) — 32-byte SHA-256 hash of the original request as a hex string--response (required) — Validation response score (integer between 0 and 100)--response-uri (required) — URI pointing to the validation response data--response-hash (required) — 32-byte SHA-256 hash of the response data as a hex string--tag (optional) — Classification tag for the validation response--fee (optional) — Fee preset (low, medium, high) or micro-STX amount--sponsored (flag) — Submit as a sponsored transactionOutput:
{
"success": true,
"txid": "0xdef...",
"message": "Validation response 85 submitted for request hash a3f2b1....",
"response": 85,
"responseUri": "ipfs://response...",
"tag": "security",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xdef..."
}
Get the status of a validation request by its 32-byte request hash. Returns validator, agent ID, response score, response hash, tag, last update block, and whether a response has been submitted. Does not require a wallet.
bun run validation/validation.ts get-status --request-hash <hex>
Options:
--request-hash (required) — 32-byte SHA-256 hash of the validation request as a hex stringOutput:
{
"success": true,
"requestHash": "a3f2b1...64hex",
"validator": "SP2...",
"agentId": 42,
"response": 85,
"responseHash": "b4e9c2...64hex",
"tag": "security",
"lastUpdate": 123456,
"hasResponse": true,
"network": "mainnet"
}
Get the aggregated validation summary for an agent. Returns the total validation count and average response score. Does not require a wallet.
bun run validation/validation.ts get-summary --agent-id <id>
Options:
--agent-id (required) — Agent ID to query (non-negative integer)Output:
{
"success": true,
"agentId": 42,
"count": 3,
"avgResponse": 88,
"network": "mainnet"
}
Get a paginated list of validation request hashes for an agent. Returns request hashes as hex strings. Cursor-based pagination with page size 14. Does not require a wallet.
bun run validation/validation.ts get-agent-validations --agent-id <id> [--cursor <cursor>]
Options:
--agent-id (required) — Agent ID to query (non-negative integer)--cursor (optional) — Pagination cursor (non-negative integer, from previous response)Output:
{
"success": true,
"agentId": 42,
"validations": ["a3f2b1...64hex", "c5d8e4...64hex"],
"cursor": null,
"network": "mainnet"
}
Get a paginated list of validation request hashes submitted to a validator. Returns request hashes as hex strings. Cursor-based pagination with page size 14. Does not require a wallet.
bun run validation/validation.ts get-validator-requests --validator <address> [--cursor <cursor>]
Options:
--validator (required) — Stacks address of the validator to query--cursor (optional) — Pagination cursor (non-negative integer, from previous response)Output:
{
"success": true,
"validator": "SP2...",
"requests": ["a3f2b1...64hex", "c5d8e4...64hex"],
"cursor": null,
"network": "mainnet"
}
bun run wallet/wallet.ts unlock)--request-hash and --response-hash must be exactly 32 bytes (64 hex characters); use SHA-256--response score must be an integer between 0 and 100 (inclusive)respond can only be called by the validator specified in the original validation requestrespond can be called multiple times on the same request for progressive updatescursor from one response into the next callstx get-transaction-status after write callsdevelopment
Web of Trust operations for Nostr pubkeys — trust scoring, sybil detection, trust path analysis, neighbor discovery, follow recommendations, and network health. Free tier (wot.klabo.world, 50 req/day) with paid fallback (maximumsats.com, 100 sats via L402). Covers 52K+ pubkeys and 2.4M+ zap-weighted trust edges. Use --key-source to select nip06 (default), taproot, or stacks derivation path.
data-ai
BTC ordinals marketplace operations via Magic Eden — browse active listings, list inscriptions for sale via PSBT flow, submit signed listings, buy inscriptions, and cancel active listings. BTC ordinals only (not Solana). Mainnet-only.
testing
Pay-per-call access to LunarCrush social and market intelligence (Galaxy Score, AltRank, market cap rank, price, 24h change) via x402 on Stacks. USD-pegged pricing recomputed hourly from live STX/USD. Mainnet endpoint live; testnet supported.
devops
Detects HODLMM LP inventory drift (token-ratio imbalance from one-sided swap flow) and restores the target ratio via a corrective Bitflow swap plus a hodlmm-move-liquidity redeploy, gated by the 4h per-pool cooldown.