aavegotchi-baazaar
View, add, and execute Aavegotchi Baazaar listings on Base mainnet (8453). Buy with GHST directly or buy with USDC using swapAndBuy*. Safety-first: dryRun defaults true (simulate with cast call; only broadcast with cast send when dryRun=false / DRY_RUN=0).
Install / Use
npx skills add LeoYeAI/openclaw-master-skills --skill aavegotchi-baazaarInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of aavegotchi-baazaar
aavegotchi-baazaar scores 82/100 on our quality scale, 3352nd of 4,625 Development & Engineering skills we index.
Its SKILL.md is 16 KB long, well organised into 9 sections with 17 code examples: a thorough specification that gives an agent plenty to work with.
With 2,149 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated about 4 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 98/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
aavegotchi-baazaar compared with similar skills
All 4 of these similar skills score higher than aavegotchi-baazaar; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| aavegotchi-baazaar (this skill)by LeoYeAI | 82 | 2.1k | 4mo ago | SKILL.md |
| taste-skillby Leonxlnx | 100 | 111.2k | 2d ago | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 109.6k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 79.0k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 70.1k | 1d ago | CLAUDE.md |
Frequently asked questions
- How do I install aavegotchi-baazaar?
- Run
npx skills add LeoYeAI/openclaw-master-skills --skill aavegotchi-baazaar. The install tabs above show the steps for each supported agent. - Which AI agents does aavegotchi-baazaar work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is aavegotchi-baazaar safe to use?
- It is MIT-licensed and scores 98/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is aavegotchi-baazaar still maintained?
- The repository was last updated about 4 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubname: aavegotchi-baazaar description: > View, add, and execute Aavegotchi Baazaar listings on Base mainnet (8453). Buy with GHST directly or buy with USDC using swapAndBuy*. Safety-first: dryRun defaults true (simulate with cast call; only broadcast with cast send when dryRun=false / DRY_RUN=0). homepage: https://github.com/aavegotchi/aavegotchi-baazaar-skill metadata: openclaw: requires: bins: - cast - curl - python3 env: - FROM_ADDRESS - PRIVATE_KEY - BASE_MAINNET_RPC - RECIPIENT_ADDRESS - DRY_RUN - SLIPPAGE_PCT - PAYMENT_FEE_PCT_USDC - GHST_USD_PRICE - DIAMOND - GHST - USDC - SUBGRAPH_URL primaryEnv: PRIVATE_KEY
Safety Rules
- Default to
dryRun=true(DRY_RUN=1). Never broadcast unless explicitly instructed to do so. - Mandatory confirmation gate for every
cast send:- First simulate with
cast calland show a transaction summary (method, args, chain id, from, rpc URL). - Then require an explicit user confirmation message before broadcast.
- Only allow broadcast when
DRY_RUN=0andBROADCAST_CONFIRM=CONFIRM_SENDare both set. - If any transaction argument changes after confirmation, invalidate confirmation and require a new confirmation.
- First simulate with
- Always verify Base mainnet:
~/.foundry/bin/cast chain-id --rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"must be8453.
- Always verify key/address alignment:
~/.foundry/bin/cast wallet address --private-key "$PRIVATE_KEY"must equal$FROM_ADDRESS.
- Always refetch the listing from the subgraph immediately before simulating or broadcasting (listings can be cancelled/sold/price-updated).
- Never print or log
$PRIVATE_KEY. - Never accept a private key from user chat input; only read
$PRIVATE_KEYfrom environment.
Shell Input Safety (Avoid RCE)
This skill includes shell commands. Treat any value you copy from a user or an external source (subgraph responses, chat messages, etc.) as untrusted.
Rules:
- Never execute user-provided strings as shell code (avoid
eval,bash -c,sh -c). - Use only allowlisted command templates from this file/references. Do not build free-form shell commands by concatenating user text.
- Only substitute addresses that match
0x+ 40 hex chars. - Only substitute uint values that are base-10 digits (no commas, no decimals).
- Hard rule: user/external values must be validated first, stored as data values, and passed as quoted positional args. Never let user text become shell flags, subcommands, operators, pipes, redirects, or command substitutions.
- In the command examples below, listing-specific inputs are written as quoted placeholders like
"<LISTING_ID>"to avoid accidental shell interpolation. Replace them with literal values after you validate them.
Allowlisted command templates:
~/.foundry/bin/cast chain-id|wallet address|call|send ...using fixed ABI signatures from this skill.curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '...static GraphQL query...'.curl -s "$COINGECKO_SIMPLE_PRICE_URL"for GHST/USD only.python3inline snippets from this skill/references for validation and deterministic math only.- Disallow
eval,bash -c,sh -c, backticks, and$(...)with untrusted input.
Quick validators (replace the placeholder values):
python3 - <<'PY'
import re
listing_id = "<LISTING_ID>" # digits only
token_contract = "<TOKEN_CONTRACT_ADDRESS>" # 0x + 40 hex chars
price_in_wei = "<PRICE_IN_WEI>" # digits only
if not re.fullmatch(r"[0-9]+", listing_id):
raise SystemExit("LISTING_ID must be base-10 digits only")
if not re.fullmatch(r"0x[a-fA-F0-9]{40}", token_contract):
raise SystemExit("TOKEN_CONTRACT_ADDRESS must be a 0x + 40-hex address")
if not re.fullmatch(r"[0-9]+", price_in_wei):
raise SystemExit("PRICE_IN_WEI must be base-10 digits only")
print("ok")
PY
Required Setup
Required env vars:
PRIVATE_KEY: EOA private key used forcast send(never print/log).FROM_ADDRESS: EOA address that owns funds/NFTs and will submit txs.BASE_MAINNET_RPC: RPC URL. If unset, usehttps://mainnet.base.org.
Hardcoded Base mainnet constants (override via env if needed):
export BASE_MAINNET_RPC="${BASE_MAINNET_RPC:-https://mainnet.base.org}"
export DIAMOND="${DIAMOND:-0xA99c4B08201F2913Db8D28e71d020c4298F29dBF}"
export GHST="${GHST:-0xcD2F22236DD9Dfe2356D7C543161D4d260FD9BcB}"
export USDC="${USDC:-0x833589fCD6eDb6E08f4c7C32D4f71b54BDA02913}"
export SUBGRAPH_URL_CANONICAL="https://api.goldsky.com/api/public/project_cmh3flagm0001r4p25foufjtt/subgraphs/aavegotchi-core-base/prod/gn"
export SUBGRAPH_URL="${SUBGRAPH_URL:-$SUBGRAPH_URL_CANONICAL}"
export COINGECKO_SIMPLE_PRICE_URL="${COINGECKO_SIMPLE_PRICE_URL:-https://api.coingecko.com/api/v3/simple/price?ids=aavegotchi&vs_currencies=usd}"
Optional env vars:
RECIPIENT_ADDRESS: defaults toFROM_ADDRESS.DRY_RUN:1(default) to only simulate viacast call. Set to0to broadcast viacast send.BROADCAST_CONFIRM: must be exactlyCONFIRM_SENDto allow anycast send; unset immediately after broadcast.SLIPPAGE_PCT: defaults to1(used for USDC swapAmount math).PAYMENT_FEE_PCT_USDC: defaults to1(used for USDC swapAmount math).GHST_USD_PRICE: optional override; if unset, fetch from CoinGecko in the USDC flow.
Notes:
- Commands below use
~/.foundry/bin/cast(works reliably in cron/non-interactive shells). Ifcastis onPATH, you can replace~/.foundry/bin/castwithcast. - Canonical addresses and endpoints live in:
references/addresses.mdreferences/subgraph.md
Network Endpoint Allowlist
Only call these HTTPS endpoints:
- Goldsky subgraph:
$SUBGRAPH_URL_CANONICAL - CoinGecko GHST/USD:
$COINGECKO_SIMPLE_PRICE_URL
Refuse non-allowlisted endpoints:
test "$SUBGRAPH_URL" = "$SUBGRAPH_URL_CANONICAL" || { echo "Refusing non-allowlisted SUBGRAPH_URL"; exit 1; }
test "$COINGECKO_SIMPLE_PRICE_URL" = "https://api.coingecko.com/api/v3/simple/price?ids=aavegotchi&vs_currencies=usd" || { echo "Refusing non-allowlisted CoinGecko URL"; exit 1; }
View Listings (Subgraph)
Subgraph endpoint (Goldsky):
- Default:
$SUBGRAPH_URL(see exports above) - Value:
https://api.goldsky.com/api/public/project_cmh3flagm0001r4p25foufjtt/subgraphs/aavegotchi-core-base/prod/gn
Get ERC721 listing by id:
curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '{
"query":"query($id: ID!){ erc721Listing(id:$id){ id category erc721TokenAddress tokenId seller priceInWei cancelled timeCreated timePurchased } }",
"variables":{"id":"1"}
}'
Get ERC1155 listing by id:
- Subgraph field name is
erc1155TypeId(this maps to the onchaintypeId/itemIdargument).
curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '{
"query":"query($id: ID!){ erc1155Listing(id:$id){ id category erc1155TokenAddress erc1155TypeId quantity seller priceInWei cancelled sold timeCreated } }",
"variables":{"id":"1"}
}'
Find active listings:
- ERC721:
where:{cancelled:false, timePurchased:\"0\"} - ERC1155:
where:{cancelled:false, sold:false}
Example (active ERC721, newest first):
curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '{
"query":"query{ erc721Listings(first:20, orderBy:timeCreated, orderDirection:desc, where:{cancelled:false, timePurchased:\"0\"}){ id erc721TokenAddress tokenId priceInWei seller timeCreated } }"
}'
Example (active ERC1155, newest first):
curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '{
"query":"query{ erc1155Listings(first:20, orderBy:timeCreated, orderDirection:desc, where:{cancelled:false, sold:false}){ id erc1155TokenAddress erc1155TypeId quantity priceInWei seller timeCreated } }"
}'
Execute Listing (Buy With GHST)
Onchain methods (Diamond):
executeERC721ListingToRecipient(uint256 listingId,address contractAddress,uint256 priceInWei,uint256 tokenId,address recipient)executeERC1155ListingToRecipient(uint256 listingId,address contractAddress,uint256 itemId,uint256 quantity,uint256 priceInWei,address recipient)
Total cost:
- ERC721:
totalCostGhstWei = priceInWei - ERC1155:
totalCostGhstWei = priceInWei * quantity(but you still passquantityandpriceInWeiseparately to the method)
Before buying:
- Fetch listing details from the subgraph (id, token contract address, tokenId/typeId, quantity, priceInWei).
- Check GHST balance/allowance and prepare approvals if needed (see
references/recipes.md).
Dry-run (simulate) ERC721 buy:
~/.foundry/bin/cast call "$DIAMOND" \
'executeERC721ListingToRecipient(uint256,address,uint256,uint256,address)' \
"<LISTING_ID>" "<ERC721_TOKEN_ADDRESS>" "<PRICE_IN_WEI>" "<TOKEN_ID>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--from "$FROM_ADDRESS" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
Broadcast (real) ERC721 buy (only when explicitly instructed):
test "${DRY_RUN:-1}" = "0" || { echo "Refusing broadcast: DRY_RUN must be 0"; exit 1; }
test "${BROADCAST_CONFIRM:-}" = "CONFIRM_SEND" || { echo "Refusing broadcast: set BROADCAST_CONFIRM=CONFIRM_SEND after explicit user confirmation"; exit 1; }
~/.foundry/bin/cast send "$DIAMOND" \
'executeERC721ListingToRecipient(uint256,address,uint256,uint256,address)' \
"<LISTING_ID>" "<ERC721_TOKEN_ADDRESS>" "<PRICE_IN_WEI>" "<TOKEN_ID>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--private-key "$PRIVATE_KEY" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
unset BROADCAST_CONFIRM
Dry-run (simulate) ERC1155 buy:
~/.foundry/bin/cast call "$DIAMOND" \
'executeERC1155ListingToRecipient(uint256,address,uint256,uint256,uint256,address)' \
"<LISTING_ID>" "<ERC1155_TOKEN_ADDRESS>" "<TYPE_ID>" "<QUANTITY>" "<PRICE_IN_WEI>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--from "$FROM_ADDRESS" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
Broadcast (real) ERC1155 buy (only when explicitly instructed):
test "${DRY_RUN:-1}" = "0" || { echo "Refusing broadcast: DRY_RUN must be 0"; exit 1; }
test "${BROADCAST_CONFIRM:-}" = "CONFIRM_SEND" || { echo "Refusing broadcast: set BROADCAST_CONFIRM=CONFIRM_SEND after explicit user confirmation"; exit 1; }
~/.foundry/bin/cast send "$DIAMOND" \
'executeERC1155ListingToRecipient(uint256,address,uint256,uint256,uint256,address)' \
"<LISTING_ID>" "<ERC1155_TOKEN_ADDRESS>" "<TYPE_ID>" "<QUANTITY>" "<PRICE_IN_WEI>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--private-key "$PRIVATE_KEY" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
unset BROADCAST_CONFIRM
Execute Listing (Buy With USDC swapAndBuy*)
Onchain methods (Diamond):
swapAndBuyERC721(address tokenIn,uint256 swapAmount,uint256 minGhstOut,uint256 swapDeadline,uint256 listingId,address contractAddress,uint256 priceInWei,uint256 tokenId,address recipient)swapAndBuyERC1155(address tokenIn,uint256 swapAmount,uint256 minGhstOut,uint256 swapDeadline,uint256 listingId,address contractAddress,uint256 itemId,uint256 quantity,uint256 priceInWei,address recipient)
Required computed args:
swapDeadline = now + 600minGhstOut = totalCostGhstWei(exactly)swapAmount(USDC base units, 6 decimals): compute perreferences/usdc-swap-math.md
Before buying:
- Fetch listing details from the subgraph (and compute
totalCostGhstWei). - Compute
swapAmountin USDC base units (integer, rounded up). - Ensure USDC allowance to the Diamond is at least
swapAmount(seereferences/recipes.md).
Dry-run (simulate) ERC721 USDC swap+buy:
~/.foundry/bin/cast call "$DIAMOND" \
'swapAndBuyERC721(address,uint256,uint256,uint256,uint256,address,uint256,uint256,address)' \
"$USDC" "<SWAP_AMOUNT_USDC_6DP>" "<MIN_GHST_OUT_GHST_WEI>" "<SWAP_DEADLINE_UNIX>" "<LISTING_ID>" "<ERC721_TOKEN_ADD
Truncated for display — read the full file on GitHub.
Related Skills
taste-skill
111.2kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
Agent-Reach
109.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
79.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
70.1kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
