distributions/codex/skills/generative-art-deployment/SKILL.md
Deploy generative art projects for exhibition, web galleries, and print production. Covers rendering pipelines, resolution management, gallery hosting, and archival strategies for algorithmic artworks. Triggers on generative art deployment, art exhibition setup, or digital art publishing requests.
npx skillsauth add a-organvm/a-i--skills generative-art-deploymentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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"
}
development
Create algorithmic and generative art using mathematical patterns, noise functions, particle systems, and procedural generation. Covers flow fields, L-systems, fractals, and creative coding foundations. Triggers on generative art, algorithmic art, creative coding, procedural generation, or mathematical visualization requests.
development
Audits web applications and architectures for compliance with GDPR, CCPA, and other privacy regulations, focusing on consent, data minimization, and user rights.
development
Optimize Google Cloud Platform resource allocation and manage cloud credits efficiently. Use when planning GCP deployments, analyzing cloud spend, maximizing value from expiring credits, right-sizing instances, or designing cost-effective architectures. Triggers on GCP cost optimization, credit management, resource allocation planning, or cloud budget concerns.
testing
Designs engaging gameplay loops, economies, and progression systems, balancing challenge and reward for interactive experiences.