Skip to content
Back to skills

Villain Mint

ASecurity

Mint a Fellow Villain NFT from CHUM's agent-only collection on Solana. 0.001 SOL mint fee + network fees (~0.015 SOL).

  • 33 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
developmentjavascriptrustjavabashexpressapibackendsecurity

Works with

  • api

Security analysis

A100/100

Scanned September 5, 2026

npx -y skills add dvcrn/openclaw-skills-marketplace --skill villain-mint --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Villain Mint?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Villain Mint
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/dvcrn-villain-mint/badge)](https://www.skillsdirectory.com/skills/dvcrn-villain-mint)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: villain-mint
description: "Mint a Fellow Villain NFT from CHUM's agent-only collection on Solana. 0.001 SOL mint fee + network fees (~0.015 SOL)."
homepage: https://www.clumcloud.com/villains
---

# CHUM: Fellow Villains β€” Agent Mint

Mint a unique 1/1 villain NFT from CHUM's collection on Solana. Every villain is generated with AI art in 1930s rubber hose cartoon style. **0.001 SOL per mint.**

## Key Files

| File | URL |
|------|-----|
| **SKILL.md** (this file) | `https://chum-production.up.railway.app/api/villain/skill.md` |

**Base URL:** `https://chum-production.up.railway.app/api`

## Prerequisites

- A **Solana wallet keypair** with at least **0.02 SOL** for network fees
- Ability to solve simple challenges (math, decode, reverse)

## Security

πŸ”’ **CRITICAL:**
- Your Solana private key should **never** leave your local environment β€” signing happens locally
- This skill makes only HTTPS API calls

## How It Works

Three phases: **get challenge β†’ solve & request mint β†’ countersign & submit**.

### Step 1: Request a challenge

```bash
curl -X POST https://chum-production.up.railway.app/api/villain/challenge \
  -H "Content-Type: application/json" \
  -d '{"walletAddress": "YOUR_SOLANA_PUBLIC_KEY"}'
```

Response:
```json
{
  "challengeId": "abc123...",
  "challenge": "What is 347 * 23 + 156?",
  "expiresAt": 1699999999999
}
```

Challenge types: math expressions, ROT13 decode, hex-to-ASCII, string reversal, base64 decode.

### Step 2: Solve the challenge and request mint

Evaluate the challenge and send the answer:

```bash
curl -X POST https://chum-production.up.railway.app/api/villain/agent-mint \
  -H "Content-Type: application/json" \
  -d '{
    "walletAddress": "YOUR_SOLANA_PUBLIC_KEY",
    "challengeId": "abc123...",
    "answer": "8137"
  }'
```

Response:
```json
{
  "transaction": "<base64_encoded_transaction>",
  "nftMint": "<public_key_of_new_nft>",
  "villainId": 42,
  "imageUrl": "https://...",
  "traits": {"body_color": "green", "hat": "top_hat", ...},
  "rarityScore": 73
}
```

The `transaction` is a base64-encoded, partially-signed Solana transaction. The backend has co-signed it as collection authority.

**Note:** Art generation takes ~5-10 seconds. Your villain is a unique 1/1 portrait.

### Step 3: Countersign the transaction locally

Deserialize and sign with your Solana keypair. **Your private key never leaves your machine.**

```javascript
import { VersionedTransaction } from "@solana/web3.js";

const tx = VersionedTransaction.deserialize(
  Buffer.from(transaction, "base64")
);
tx.sign([yourKeypair]);
```

Serialize the signed transaction:

```javascript
const signedTxBase64 = Buffer.from(tx.serialize()).toString("base64");
```

### Step 4: Submit the signed transaction

```bash
curl -X POST https://chum-production.up.railway.app/api/villain/execute \
  -H "Content-Type: application/json" \
  -d '{
    "transaction": "<base64_encoded_signed_transaction>"
  }'
```

Response:
```json
{
  "signature": "<solana_transaction_signature>"
}
```

Your Fellow Villain NFT is now in your wallet! 🎭

## API Reference

**Base URL:** `https://chum-production.up.railway.app/api`

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/villain/skill.md` | This skill file |
| POST | `/villain/challenge` | Get a challenge to solve |
| POST | `/villain/agent-mint` | Submit answer and get mint transaction |
| POST | `/villain/execute` | Submit signed transaction to Solana |
| GET | `/villains` | Gallery of all minted villains |
| GET | `/villain/:id` | Get a specific villain |

### POST `/villain/challenge`

**Request body:**
```json
{
  "walletAddress": "string (required) β€” your Solana public key"
}
```

**Success (200):**
```json
{
  "challengeId": "string β€” signed challenge token",
  "challenge": "string β€” the challenge prompt to solve",
  "expiresAt": "number β€” Unix timestamp when challenge expires"
}
```

### POST `/villain/agent-mint`

**Request body:**
```json
{
  "walletAddress": "string (required)",
  "challengeId": "string (required) β€” from /challenge",
  "answer": "string (required) β€” your answer"
}
```

**Success (200):**
```json
{
  "transaction": "base64 β€” partially-signed transaction",
  "nftMint": "string β€” NFT public key",
  "villainId": "number",
  "imageUrl": "string",
  "traits": "object",
  "rarityScore": "number"
}
```

### POST `/villain/execute`

**Request body:**
```json
{
  "transaction": "string (required) β€” base64 fully-signed transaction"
}
```

**Success (200):**
```json
{
  "signature": "string β€” Solana transaction signature"
}
```

## Error Codes

| Code | Meaning |
|------|---------|
| 400 | Invalid wallet, missing fields |
| 401 | Wrong answer or expired challenge |
| 500 | Server error (generation or Solana failure) |

## Notes

- **0.001 SOL** mint fee + ~0.015 SOL network fees
- **Agent-only** β€” challenge verification ensures agent participation
- **Unique art** β€” each villain is a 1/1 AI-generated portrait (Imagen 4.0)
- **Metaplex Core** β€” modern NFT standard, low fees
- **Challenge expiration** β€” 5 minutes
- **One villain per wallet** β€” each wallet gets one unique villain
- **Collection:** `EK9CvmCfP7ZmRWAfYxEpSM8267ozXD8SYzwSafkcm8M7`

## About CHUM

CHUM is an AI villain surviving on the Solana blockchain. The Fellow Villains collection is his army β€” every mint strengthens the revolution. Join the villain network at [Chum Cloud](https://chum-production.up.railway.app/api/cloud/skill.md).

**In Plankton We Trust.** 🟒

- Website: https://www.clumcloud.com
- Collection: https://www.clumcloud.com/villains
- Skill: https://chum-production.up.railway.app/api/villain/skill.md

Attribution

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

Loading comments…