This implements ERC-8004 on-chain agent validation for Stacks L2, letting agents request validation from validators and letting validators respond with scored assessments. You get six subcommands: request and respond for write operations (which need a wallet), plus four read operations for checking status, pulling summaries, and paginating through validation lists by agent or validator. Responses are 0-100 scores that can be updated progressively, all tied to SHA-256 hashes of request and response data. The pagination works with 14-item pages and cursor-based navigation. If you're building agent reputation systems or need verifiable on-chain trust signals, this gives you the primitives to do it without rolling your own registry contract.
npx -y skills add aibtcdev/skills --skill validation --agent claude-codeInstalls into .claude/skills of the current project.
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 callsjuliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills