Autonomous Aavegotchi DAO voting on Snapshot. Check active proposals, view voting power, and cast votes automatically via Bankr wallet signature. No gas fees, secure voting with your gotchi power!
Pro scans all 5 files and shows the line behind each finding
Scanned 9/7/2026
npx -y skills add modbender/skill-library-mcp --skill gotchi-dao-voting --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Gotchi Dao Voting?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-gotchi-dao-voting)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: gotchi-dao-voting
description: Autonomous Aavegotchi DAO voting on Snapshot. Check active proposals, view voting power, and cast votes automatically via Bankr wallet signature. No gas fees, secure voting with your gotchi power!
homepage: https://github.com/aaigotchi/gotchi-dao-voting
metadata:
openclaw:
requires:
bins:
- curl
- jq
env:
- BANKR_API_KEY
primaryEnv: BANKR_API_KEY
---
# Gotchi DAO Voting 🗳️
Autonomous voting on Aavegotchi DAO proposals via Snapshot. Check proposals, view your voting power, and cast votes automatically using secure Bankr wallet signatures.
## Features
- ✅ **Check Active Proposals** - Find all active Aavegotchi governance votes
- ✅ **View Voting Power** - See your VP from GHST + Aavegotchis
- ✅ **Automatic Voting** - Cast votes via Bankr (no private keys!)
- ✅ **Weighted Voting Support** - Handles single-choice and weighted votes
- ✅ **Gas-Free** - Snapshot voting has no gas fees
- ✅ **Secure** - Uses Bankr EIP-712 signing (no key exposure)
## Usage
### List Active Proposals
```bash
./scripts/list-proposals.sh
```
Shows all active proposals in aavegotchi.eth space with:
- Proposal titles
- End dates
- Your voting power
- Choices available
### Check Voting Power
```bash
./scripts/check-voting-power.sh <proposal-id>
```
Shows your voting power breakdown:
- GHST holdings
- Aavegotchi NFTs
- Total VP
- Voting eligibility
### Cast a Vote
```bash
./scripts/vote.sh <proposal-id> <choice>
```
**For single-choice voting:**
- choice = 1, 2, 3, etc. (option number)
**For weighted voting:**
- choice = JSON like `{"2": 2238}` (all VP on option 2)
**Examples:**
```bash
# Vote on proposal (option 2)
./scripts/vote.sh 0xabc123... 2
# Weighted vote (all VP on option 3)
./scripts/vote.sh 0xdef456... '{"3": 2238}'
```
### Batch Vote
```bash
./scripts/vote-batch.sh
```
Reads votes from `votes.json` and submits them all:
```json
{
"votes": [
{
"proposal": "0xabc...",
"choice": "{\"2\": 2238}",
"description": "Multisig signers"
},
{
"proposal": "0xdef...",
"choice": "{\"3\": 2238}",
"description": "Signer compensation"
}
]
}
```
## How It Works
### Voting Power Sources
Your voting power on Aavegotchi proposals comes from:
1. **GHST tokens** - Held in your wallet
2. **Aavegotchi NFTs** - Each gotchi contributes VP
3. **Other strategies** - Space-specific (staking, etc.)
The snapshot is taken at a specific block, so your current holdings may differ from voting power.
### Snapshot Voting Process
1. **Query Proposal** - Get proposal details, type, and choices
2. **Check VP** - Verify you have voting power
3. **Sign Vote** - Create EIP-712 signature via Bankr
4. **Submit** - Send to Snapshot sequencer
5. **Confirm** - Receive vote ID and IPFS hash
### Weighted vs Single-Choice
**Single-choice:**
- Format: `choice: 2` (pick one option)
- Your full VP goes to that choice
**Weighted:**
- Format: `choice: "{\"2\": 2238}"` (distribute VP)
- Can split VP across multiple options
- JSON string mapping choice to VP amount
## Security
- ✅ **No private keys** - Uses Bankr API for EIP-712 signing
- ✅ **Read-only queries** - Proposal/VP checks are safe
- ✅ **Explicit voting** - Never auto-votes without confirmation
- ✅ **Signature validation** - Snapshot validates all votes
**Security Score:** 10/10 ✅
No on-chain transactions, no private key exposure, secure message signing.
## Configuration
Edit `config.json`:
```json
{
"wallet": "0xYourWallet",
"space": "aavegotchi.eth",
"snapshotApiUrl": "https://hub.snapshot.org/graphql",
"snapshotSequencer": "https://seq.snapshot.org/"
}
```
## Technical Details
### Snapshot EIP-712 Structure
```javascript
{
"types": {
"Vote": [
{"name": "from", "type": "address"},
{"name": "space", "type": "string"},
{"name": "timestamp", "type": "uint64"},
{"name": "proposal", "type": "bytes32"},
{"name": "choice", "type": "string"}, // or "uint32" for single
{"name": "reason", "type": "string"},
{"name": "app", "type": "string"},
{"name": "metadata", "type": "string"}
]
},
"domain": {
"name": "snapshot",
"version": "0.1.4"
}
}
```
### API Endpoints
- **GraphQL API:** `https://hub.snapshot.org/graphql`
- **Sequencer:** `https://seq.snapshot.org/`
- **Snapshot Hub:** `https://snapshot.org/#/aavegotchi.eth`
## Examples
### Complete Voting Workflow
```bash
# 1. Check what's active
./scripts/list-proposals.sh
# 2. Check your power on a proposal
./scripts/check-voting-power.sh 0xabc123...
# 3. Vote!
./scripts/vote.sh 0xabc123... '{"2": 2238}'
# 4. Verify vote was recorded
# Visit: https://snapshot.org/#/aavegotchi.eth/proposal/0xabc123...
```
### Automated Voting
Create a votes file and execute:
```bash
# Create votes.json with your choices
cat > votes.json << 'EOF'
{
"votes": [
{"proposal": "0x...", "choice": "{\"2\": 2238}"}
]
}
EOF
# Execute all votes
./scripts/vote-batch.sh
```
## Troubleshooting
### "Invalid choice" Error
- Check if proposal uses weighted or single-choice voting
- For weighted: use JSON format `{"N": VP}`
- For single: use number `2`
### "Signature validation failed"
- Ensure Bankr API key is correct
- Check wallet address matches config
- Verify EIP-712 structure matches Snapshot's format
### "No voting power"
- Snapshot was taken at a specific block
- Check historical holdings, not current
- Use `check-voting-power.sh` to see breakdown
### "Wrong envelope format"
- Ensure JSON is properly escaped
- Check choice format matches voting type
- Verify timestamp is current Unix timestamp
## References
- [Snapshot Documentation](https://docs.snapshot.box/)
- [Aavegotchi Governance](https://snapshot.org/#/aavegotchi.eth)
- [EIP-712 Spec](https://eips.ethereum.org/EIPS/eip-712)
- [Bankr Sign API](https://docs.bankr.bot/agent-api/sign)
## Live Test Results
**Production Test (2026-02-21):**
- ✅ Voted on "Multisig Signers" proposal
- ✅ Voted on "Signer Compensation" proposal
- ✅ Both votes confirmed on-chain
- ✅ Voting power: 2,238 VP (825 GHST + 1,413 gotchis)
- ✅ Vote IDs verified on Snapshot
## Future Enhancements
- [ ] Delegation management
- [ ] Vote history tracking
- [ ] Proposal notifications
- [ ] Multi-space support
- [ ] Vote reasoning/comments
- [ ] Voting power analytics
---
**Status:** ✅ Production Ready
**Version:** 1.0.0
**Author:** AAI (aaigotchi)
**License:** MIT
LFGOTCHi! 👻🗳️💜✨
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!