Stats
Actions
Tags
From example-skills
Deploys generative art projects to web galleries, prints, exhibitions, NFTs, and archives. Covers rendering pipelines, resolution management, hosting structures, performance optimization, and reproducibility strategies.
How this skill is triggered — by the user, by Claude, or both
Slash command
/example-skills:generative-art-deploymentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Move generative artworks from development to exhibition, print, and archive.
Move generative artworks from development to exhibition, print, and archive.
| Target | Format | Resolution | Considerations |
|---|---|---|---|
| Web gallery | HTML/JS, WebGL | Screen (72-96 DPI) | Performance, loading time |
| Physical print | PNG/TIFF | 300 DPI minimum | Color profiles, bleed |
| LED installation | Video/WebGL | Panel-specific | Brightness, refresh rate |
| NFT/on-chain | PNG/SVG/HTML | Variable | File size, determinism |
| Social media | PNG/MP4 | Platform-specific | Compression, aspect ratio |
| Archive | Source + renders | Maximum | Reproducibility |
gallery/
├── index.html # Gallery grid/navigation
├── works/
│ ├── piece-001/
│ │ ├── index.html # Full-screen viewer
│ │ ├── sketch.js # Live generative code
│ │ ├── thumbnail.png
│ │ └── metadata.json
│ └── piece-002/
│ └── ...
├── assets/
│ ├── style.css
│ └── gallery.js
└── catalog.json # Machine-readable catalog
{
"title": "Recursive Bloom #47",
"artist": "Artist Name",
"date": "2026-03-20",
"medium": "Generative, p5.js",
"dimensions": "3840 × 2160",
"seed": 1742518400,
"parameters": {
"complexity": 0.7,
"palette": "autumn",
"iterations": 5000
},
"description": "An exploration of recursive growth patterns...",
"series": "Recursive Bloom",
"edition": "1/1",
"tags": ["recursion", "organic", "growth"]
}
// Render once, display static
function setup() {
const canvas = createCanvas(3840, 2160);
noLoop(); // Don't animate
}
function draw() {
randomSeed(SEED);
// ... generate artwork
saveCanvas('output', 'png');
}
// For interactive pieces: use requestAnimationFrame
// with quality degradation on low-end devices
function draw() {
if (frameRate() < 30) {
reduceComplexity();
}
}
def render_for_print(sketch_path: str, width_inches: float, height_inches: float, dpi: int = 300):
pixel_width = int(width_inches * dpi)
pixel_height = int(height_inches * dpi)
# Add bleed (0.125 inches on each side)
bleed = int(0.125 * dpi)
total_width = pixel_width + 2 * bleed
total_height = pixel_height + 2 * bleed
return {
"canvas_width": total_width,
"canvas_height": total_height,
"safe_area": {
"x": bleed, "y": bleed,
"width": pixel_width, "height": pixel_height,
},
"dpi": dpi,
"format": "TIFF", # Lossless for print
"color_profile": "sRGB", # Or Adobe RGB for wide gamut
}
from PIL import Image, ImageCms
def convert_for_print(input_path: str, output_path: str):
img = Image.open(input_path)
srgb_profile = ImageCms.createProfile("sRGB")
# For fine art printing, embed the ICC profile
img.save(output_path, "TIFF", dpi=(300, 300), icc_profile=ImageCms.ImageCmsProfile(srgb_profile).tobytes())
| Size | Inches | Pixels (300 DPI) |
|---|---|---|
| A4 | 8.3 × 11.7 | 2490 × 3510 |
| A3 | 11.7 × 16.5 | 3510 × 4950 |
| A2 | 16.5 × 23.4 | 4950 × 7020 |
| 24×36 poster | 24 × 36 | 7200 × 10800 |
import subprocess
from pathlib import Path
def batch_render(sketch: str, seeds: list[int], output_dir: str, width: int, height: int):
Path(output_dir).mkdir(parents=True, exist_ok=True)
for seed in seeds:
output = f"{output_dir}/render_{seed:08d}.png"
subprocess.run([
"node", sketch,
"--seed", str(seed),
"--width", str(width),
"--height", str(height),
"--output", output,
], check=True)
# Render a series
batch_render("sketch.js", seeds=range(1, 101), output_dir="renders/series-01", width=3840, height=2160)
// Ensure reproducibility: same seed = same output
function setup() {
const seed = parseInt(getURLParam('seed') || '42');
randomSeed(seed);
noiseSeed(seed);
// Record seed in metadata
document.title = `Piece #${seed}`;
}
# Linux kiosk mode
#!/usr/bin/env bash
xset -dpms # Disable power management
xset s off # Disable screen saver
unclutter -idle 0.5 & # Hide cursor
chromium-browser \
--kiosk \
--disable-infobars \
--disable-session-crashed-bubble \
--noerrdialogs \
file:///home/gallery/piece/index.html
archive/
├── README.md # How to run this piece
├── source/ # Original source code
│ ├── sketch.js
│ └── package.json
├── renders/ # High-res rendered outputs
│ ├── render_001.tiff
│ └── render_001.png
├── metadata.json # Full metadata including parameters
├── dependencies/ # Vendored dependencies
│ └── p5.min.js
└── documentation/
├── process.md # Artist statement, process notes
└── screenshots/ # Exhibition documentation
{
"runtime": "node 20.x + p5.js 1.9.x",
"seed": 42,
"canvas": "3840x2160",
"parameters": {},
"checksum": "sha256:abc123...",
"rendered": "2026-03-20T10:00:00Z"
}
npx claudepluginhub a-organvm/a-i--skills --plugin document-skillsProvides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.