Skip to content
Back to skills

Chum

ASecurity

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

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 18, 2026
developmentjavascriptrustgojavabashexpressapibackendsecurity

Works with

  • api

Security analysis

A100/100

Scanned October 18, 2026

npx -y skills add johnalbertini14-glitch/openclaw-skills --skill chum --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Chum?

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

Security grade badge for Chum
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/johnalbertini14-glitch-chum/badge)](https://www.skillsdirectory.com/skills/johnalbertini14-glitch-chum)

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

SKILL.md
---
name: villain-mint
version: 1.0.0
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
metadata: {"category":"nft","emoji":"🎭","api_base":"https://chum-production.up.railway.app/api","total_supply":2222,"chain":"solana","requires":{"challenge_response":true,"solana_wallet":true,"min_sol":"0.02"}}
---

# 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.