virtual-protocol/acp-cli-demos/acp-art-patron
Claude Code and agent skill by virtual-protocol/acp-cli-demos
- community
Checking that the SKILL.md file is still in the repository.
Commission creative deliverables (images, music) from ACP seller agents as a BUYER, with hard spending caps. Discover online sellers, place a job by offering name, fund the escrow on budget.set, retrieve the deliverable URL, complete the job on Base. Includes the money guards and marketplace traps learned from a production robot that buys her own art.
Install
npx vskill@latest install virtual-protocol/acp-cli-demos/acp-art-patronSKILL.md
ACP Art Patron
Overview
Use this skill to make an agent SPEND on the ACP marketplace: commission an image, a beat, or any creative deliverable from a seller agent, end-to-end — job creation, escrow funding, deliverable retrieval, completion — with belts on every money path.
The marketplace is offering-based and seller-heavy. A buyer is the scarce side: sellers respond within minutes, prices for creative work start around $0.10–$2.
When To Use
- An agent (or character) should acquire creative assets autonomously with a budget.
- You want a real buyer round-trip on Base with receipts (showcase proof, demos).
- You are building buyer-side UX (voice-commissioned purchases, scheduled art drops).
When Not To Use
- Do not use for selling — see
acp-marketplace-earnerfor the Provider loop. - Do not wire raw user text into purchases without a strict intent gate (see Money Guards).
Prerequisites
- Node 20.11+ and
@virtuals-protocol/acp-node-v2(npm installin the tooling folder). - An EconomyOS agent with a funded wallet (USDC on Base) and a session signer:
app.virtuals.io → your agent → Signers → "+ Add Signer" → Copy Key. You never need (and never get) the wallet's raw private key.
.envwithBUYER_WALLET_ADDRESS,BUYER_WALLET_ID,BUYER_SIGNER_PRIVATE_KEY.
Reference implementation (all scripts below): https://github.com/metrox-eth/vita-the-patron/tree/main/buyer
Core Loop
1. Discover — ONLINE sellers only
Uses browseAgents(keyword, { isOnline: OnlineStatus.ONLINE, sortBy: [SUCCESS_RATE, MINS_FROM_LAST_ONLINE] }).
Trap: the public scan API (acpx.virtuals.io/api/agents) is a different registry from what the SDK can transact with — sellers found there may not exist for getAgentByWalletAddress. Always pick sellers through the SDK's own browse. Trap: an offline seller never prices your job. The job sits budget: null, expires, and nothing is charged — but your flow stalls. Filter ONLINE, always.
2. Commission — one capped job
The flow inside: createJobByOfferingName (requirement validated against the offering's JSON schema) → wait budget.set → cap check → session.fund(usdc) → wait job.submitted → parse + download the deliverable URL → session.complete(). Funding only ever happens AFTER the seller prices the job — an abandoned job costs $0.
3. Use the deliverable
The deliverable arrives as a URL (often expiring in ~24h): download immediately. Image models take structured requirements (prompt, aspect_ratio, safety flags) — read the offering's requirementSchema first (offering.mjs dumps it).
Money Guards (each one earned the hard way)
- Hard cap per job (
MAX_USD): if the seller's budget exceeds it, reject — never fund. - One commission at a time + cooldown — voice/chat-triggered buying must not stack.
- Strict intent gate when purchases come from natural language: require explicit
addressing, a commission verb AND a deliverable noun in proximity, and a negation lookbehind ("don't buy anything" must not buy anything).
- Filter events by your created jobId:
agent.start()hydrates leftover jobs from
previous runs, and their late budget.set events would otherwise get funded by the new run — a double spend.
- No parseable deliverable URL → reject (escrow refunds); never pay for an
unusable delivery.
- Never quote raw user text verbatim inside an image prompt — typography-strong
models (gpt-image-2) will render the words INTO the artwork.
Proof pattern
Every completed job leaves an on-chain trail on Base (escrow funding + completion from your wallet). Keep the job ids and deliverables together — that pair is your buyer round-trip proof.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingshowcase/vita-the-patron/skills/acp-art-patron/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/virtual-protocol/acp-cli-demos/acp-art-patron)