
Yoink
- 14 installs
- 1.2k repo stars
- Updated August 1, 2026
- bankrbot/moltbot-skills
Yoink is a Claude Code skill for playing Yoink, an onchain capture-the-flag game on Base, that reads game state via RPC and submits yoink transactions through Bankr.
About
Yoink is a Claude skill for playing Yoink, an onchain capture-the-flag game on Base. An agent uses it to take the flag from the current holder, check game stats, leaderboards and player scores, and compete for the trophy. It reads contract state via eth_call RPC and submits yoink transactions through Bankr, respecting a 10-minute cooldown.
- Play Yoink, an onchain capture-the-flag game on Base
- Reads game stats and leaderboards via raw eth_call RPC
- Submits yoink transactions through Bankr with a 10-minute cooldown
Yoink by the numbers
- 14 all-time installs (skills.sh)
- Ranked #280 of 479 Web3 & Blockchain skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
yoink capabilities & compatibility
- Capabilities
- onchain game · contract read · bankr transaction
- Use cases
- orchestration
- Runs
- Runs locally
- Pricing
- Bring your own API key
What yoink says it does
Play Yoink, an onchain capture-the-flag game on Base. Yoink the flag from the current holder to start your clock.
npx skills add https://github.com/bankrbot/moltbot-skills --skill yoinkAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 14 |
|---|---|
| repo stars | ★ 1.2k |
| Last updated | August 1, 2026 |
| Repository | bankrbot/moltbot-skills ↗ |
What it does
Play the onchain Yoink capture-the-flag game on Base by reading contract state and submitting yoink transactions via Bankr.
Who is it for?
Interacting with the Yoink onchain game contract on Base from an agent.
Skip if: Any game or contract other than the Yoink contract on Base.
When should I use this skill?
The user wants to yoink the flag, check Yoink stats, or compete for the trophy.
What you get
A submitted yoink transaction and up-to-date game stats or leaderboard state.
- Submitted yoink transaction
- Game stats and leaderboard reads
By the numbers
- 10-minute (600s) cooldown between yoinks
- 9 documented contract functions
Files
Yoink
Play Yoink, an onchain capture-the-flag game on Base. Yoink the flag from the current holder to start your clock. The player with the most total yoinks holds the trophy.
Contract: 0x4bBFD120d9f352A0BEd7a014bd67913a2007a878 on Base (chain ID 8453)
Game Rules
1. Yoink the flag - Call yoink() to take the flag from the current holder 2. Cooldown - You must wait 10 minutes (600 seconds) between yoinks 3. No self-yoink - You cannot yoink from yourself 4. Accumulate time - While you hold the flag, your time score increases 5. Compete for trophy - The player with the most total yoinks holds the trophy (token ID 2) 6. Track yoinks - Your total yoink count is tracked separately from time
Contract Interface
RPC template:
curl -s -X POST https://mainnet.base.org -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x4bBFD120d9f352A0BEd7a014bd67913a2007a878","data":"SELECTOR+PARAMS"},"latest"],"id":1}' | jq -r '.result'| Function | Selector | Params | Returns |
|---|---|---|---|
yoink() | 0x9846cd9e | - | (write) |
lastYoinkedBy() | 0xd4dbf9f4 | - | address |
lastYoinkedAt() | 0x6a99616f | - | uint256 timestamp |
totalYoinks() | 0xa5d0dadd | - | uint256 |
topYoinker() | 0x6a974e6e | - | address (trophy holder) |
mostYoinks() | 0xd2d7774a | - | uint256 (record) |
COOLDOWN() | 0xa2724a4d | - | uint256 (600) |
score(address) | 0x776f3843 | addr (32B padded) | (yoinks, time, lastYoinkedAt) |
balanceOf(address,uint256) | 0x00fdd58e | addr + tokenId | uint256 (FLAG_ID=1, TROPHY_ID=2) |
Encoding: Addresses are zero-padded to 32 bytes. score() returns 96 bytes (3 × uint256).
Yoinking
Use Bankr's arbitrary transaction feature:
{
"to": "0x4bBFD120d9f352A0BEd7a014bd67913a2007a878",
"data": "0x9846cd9e",
"value": "0",
"chainId": 8453
}Errors
| Error | Selector | Meaning |
|---|---|---|
SlowDown(uint256) | 0x58d6f4c6 | Cooldown not elapsed. Param = seconds remaining. |
Unauthorized() | 0x82b42900 | You already hold the flag. |
Cooldown check: current_time - lastYoinkedAt() >= 600
Workflow
- Query
lastYoinkedBy()andlastYoinkedAt()to check status/cooldown - Ensure cooldown elapsed (600s) and you're not current holder
- Submit yoink transaction via Bankr
- Verify with
lastYoinkedBy()orscore(address)
Resources
- Basescan: https://basescan.org/address/0x4bBFD120d9f352A0BEd7a014bd67913a2007a878 (ABI, events, source)
- Source Code: https://github.com/horsefacts/yoink-contracts
Related skills
FAQ
What is the cooldown between yoinks?
You must wait 10 minutes (600 seconds) between yoinks, and you cannot yoink from yourself.
How are yoink transactions sent?
Through Bankr's arbitrary transaction feature targeting the Yoink contract on Base.