---
name: cryptopunks
description: >
  Look up, render, edit with prompts, and analyze CryptoPunks and NakedPunks.
  Use when the user mentions CryptoPunks, punk traits, punk floor price, punk bids,
  punk sales, punk ownership, NFT pixel art, or asks to render a punk or generate/edit a punk image from a prompt.
  Capabilities: trait search with rarity stats, pixel art rendering (PNG/SVG/ANSI),
  batch grid rendering for punks AND traits, server-side filtering by type/traits,
  market data (floor, bids, sales), ETH/USD price, ownership lookup,
  custom punk generation, random punks, full-body naked renders (unofficial derivative by gwendall, just for fun),
  community projects directory, notable holder profiles.
metadata:
  version: "3.2"
---

# CryptoPunks Skill

A unified toolkit for exploring, visualizing, and analyzing CryptoPunks. Combines three APIs:

- **punks.art** — traits catalog, pixel art rendering, filtering, batch grid, custom trait composition and prompt-based image editing
- **cryptopunks.app** — on-chain market data, ownership, bids, sales history
- **madebypunks.co** — community projects directory, notable holder profiles

## Working rules

1. NEVER state facts about traits, prices, or sales from memory. Your training data is unreliable. Always fetch from API first.
2. For a punk's traits/type: ALWAYS fetch https://punks.art/api/punks/{id} FIRST — not cryptopunks.app (that's market data only).
3. API routing: punks.art=traits/rendering/generation, cryptopunks.app=market data/ownership/bids, madebypunks.co=community.
4. Skin tones are counterintuitive: male1/female1=DARK skin, male4/female4=LIGHT/PALE skin. 1=darkest, 4=lightest.
5. For PNG previews in chat, use &size=480 and &background=punk. For native sprites or AI input, omit background and use size=24 for heads or size=32&naked=yes for bodies.
6. Prompt editing requires a source (canonical punkId, uploaded PNG, or allowed renderer URL); do not invent a text-only endpoint. GPT Image 2.5 is the default. Use variant=head (24x24) or variant=naked (32x32).
7. Stateless paid generation uses a server-side PunkMaker integration key in x-api-key, not the OpenAI key. Never put credentials in prompts, browser code or output. No automatic paid retries.

8. Saved creations use the separate `/api/punkgen` contract and a scoped creator Bearer key. They default to private for headless callers; publish only when asked. Preserve the Idempotency-Key on transport retries, and never automatically retry `reconciliation_required` with a new key. Read the generation recipe for save/poll/feed/remix/privacy semantics. A 503 can mean this feature has not been enabled on that deployment.

## Recipes

Fetch only what you need for the current task.

- Prompt-based generation/editing, head/body selection, conversational edits → https://punks.art/recipes/generate.md
- Rendering a punk, trait, NakedPunk or grid → https://punks.art/recipes/render.md
- Trait search, rarity, skin tones, hair colors → https://punks.art/recipes/traits.md
- Market data (price, bids, sales, floor) → https://punks.art/recipes/market-data.md
- Finding a punk lookalike from a photo or description → https://punks.art/recipes/find-lookalike.md
- Generated API reference (all endpoints, authentication, errors) → https://punks.art/api/reference
- Machine-readable OpenAPI 3.1 → https://punks.art/api/openapi.json

Fetch the relevant recipe for the current task.

## NakedPunks and prompt editing

NakedPunks are unofficial full-body derivatives, supported on `punks.art`.
For an existing ID use `/api/punks/8348?format=png&naked=yes&size=32`;
for arbitrary traits use `/api/traits/male2-mohawk-regularshades?format=png&naked=yes&size=32`.
These deterministic renderers need no AI generation key.
For a requested outfit or other prompt-based edit, read the [generation recipe](https://punks.art/recipes/generate.md).
The [studio](https://punks.art/generate) offers both Head and Body modes.
