.build/direct/example/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 organvm-iv-taxis/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
Dry-run audit + targeted cleanup for shell command history. Currently wraps atuin (stats today, prune, dedup with dated preview artifacts); extensible to zsh/bash/mcfly backends. Always previews before applying — apply commands are echoed for the human to run, never auto-executed. Triggers on "/shell-history-hygiene", "audit atuin", "audit shell history", "clean shell history", "atuin prune", "atuin dedup", "shell history hygiene", "history cleanup". Replaces ad-hoc one-liners (e.g. `... | tee cmd > file.txt` which wrote two files, swallowed dedup output, and left a junk `cmd` file).
tools
Guided Cowork setup — install role-matched plugins, connect your tools, try a skill.
development
Manage AI agent session lifecycles with structured phases (FRAME, SHAPE, BUILD, PROVE), context preservation across sessions, handoff protocols, and session metadata tracking. Triggers on session management, agent lifecycle, or multi-session workflow requests.
tools
Parse a session transcript into a structured Session Governance Index — an annotated bibliography of every file modified and commit made, internal-energy accounting (tool uses, estimated tokens), shipped-vs-tasked atom tally, and classification of missing items as Gaps or Vacuums. Triggers on "visibility-schema-substrate-sweep", "session cascade audit", "session governance audit", or any request to summarize what a session actually produced versus what it was asked to produce.