Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Gotchi Dao Voting

ASecurity

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!

14 stars
0 votes
0 copies
2 views
Added 9/7/2026
businessjavascriptgojavabashgitapisecuritydocumentation

Works with

api

Security Analysis

A100/100

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-code

Installs 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.

Security grade badge for Gotchi Dao Voting
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modbender-gotchi-dao-voting/badge)](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.

Download with Pro
Files
SKILL.md
---
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! 👻🗳️💜✨

Attribution

modbendermodbender
View sourceSee grades on GitHubMore from modbender →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Solution Architect

Designs system architecture, component specifications, and technical integration strategy. Use when: designing solutions, system architecture, technology stack, or integration approaches.

192 votes

Akorchak:Venture Assessment

Generate a comprehensive VC investment assessment report for a company

72 votes

Just Fucking Cancel

Find and cancel unwanted subscriptions by analyzing bank transactions. Detects recurring charges, calculates annual waste, and helps you cancel with direct URLs and browser automation. Use when: 'cancel subscriptions', 'audit subscriptions', 'find recurring charges', 'what am I paying for', 'save money', 'subscription cleanup', 'stop wasting money'. Supports CSV import (Apple Card, Chase, Amex, Citi, Bank of America, Capital One, Mint, Copilot) OR Plaid API for automatic transaction pull. Out...

6511 votes

Stock Analysis

Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management (create, add, remove assets), crypto analysis (Top 20 by market cap), and periodic performance reports (daily/weekly/monthly/quarterly/yearly). 8 analysis dimensions for stocks, 3 for crypto. Use for stock analysis, portfolio tracking, earnings reactions, or crypto monitoring.

6511 votes

Telegram Compose

Compose rich, readable Telegram messages using HTML formatting via direct Telegram API. Use when: (1) Sending any Telegram message beyond a simple one-line reply, (2) Creating structured messages with sections, lists, or status updates, (3) Need formatting unavailable via Clawdbot's Markdown conversion (underline, spoilers, expandable blockquotes, user mentions by ID), (4) Sending alerts, reports, summaries, or notifications to Telegram, (5) Want professional, scannable message formatting wit...

6511 votes
View all in business →