bama
BAMA: 모든 Mac 앱을 만들 수 있습니다
클로드 코드용 생성 예술 스킬, 결정적이며 해시 기반, 온체인 준비
Generative art skill for Claude Code — deterministic, hash-seeded, onchain-ready
스킬JavaScript · HTMLGitHub @camilleroux직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
genart — a generative art skill for Claude Code
Create long-form generative art with AI assistance — deterministic,
hash-seeded, ready for onchain platforms like Art Blocks, 256ART, Verse,
Highlight, Plottables and bootloader.art — or for screens, via Artpoint.README 전문 보기 ↗Create long-form generative art with AI assistance — deterministic, hash-seeded, ready for onchain platforms like Art Blocks, 256ART, Verse, Highlight, Plottables and bootloader.art — or for screens, via Artpoint.
This Claude Code plugin teaches Claude the working knowledge of the field: seeding a PRNG from a token hash, rendering the same composition at any resolution, designing traits and rarity tables, signalling preview capture, exporting for print and pen plotters, and where the ethical lines of generative art are. It covers creative coding with Canvas 2D, p5.js, three.js/WebGL and SVG — and ships runnable tools to verify that a sketch really is deterministic before you mint it.
Made by a generative artist, for generative artists using AI as a studio assistant — not as the artist.
Six seeds of Impossible Machine (Camille Roux) — hand-drawn technical blueprints, one hash each. The edition-level view the scripts are there to give you: same code, same rules, one sheet per seed.
/plugin marketplace add camilleroux/genart-skill
/plugin install genart@camilleroux-genart
Then just talk about your sketch — the skill loads on its own. Or invoke it with
/genart.
One skill, genart, with reference sheets loaded on demand:
Two scripts ship with the plugin and run in place — Claude (or you) never copies them into a project, so updating the plugin updates them everywhere:
node "$CLAUDE_PLUGIN_ROOT/scripts/check.mjs" myproject # determinism checks
node "$CLAUDE_PLUGIN_ROOT/scripts/render.mjs" myproject --hash 0x… # one PNG
node "$CLAUDE_PLUGIN_ROOT/scripts/render.mjs" myproject --grid 50 # contact sheet
node "$CLAUDE_PLUGIN_ROOT/scripts/render.mjs" myproject --census 5000 # rarity, measured
node "$CLAUDE_PLUGIN_ROOT/scripts/render.mjs" myproject --batch 50 # individual PNGs
render.mjs --hash is what lets Claude close the visual loop on its own: edit
the sketch, render a seed, look at the PNG, adjust. The grid and the census are
the edition-level views — what the rarity table actually produces.
What check.mjs prints on a sketch that holds:
myproject (size 600, 3 runs)
repeatability
ok 0xa3f1a3f1a3… → 06669011
ok 0x77c277c277… → 7e5f6b7f
distinctness
ok two different hashes produce two different renders
global state (A, B, A in one page)
ok A=06669011 B=7e5f6b7f A'=06669011
features
ok stable across 3 runs: {"Palette":"Ash","Density":"Sparse"}
all checks passed
And on the same sketch with one Math.random() left in — the broken variant CI
derives from the fixture on every push, and requires to fail:
repeatability
FAIL 0xa3f1a3f1a3… → e8dec1f3 / b40e8a1f / dc9b8f1f
FAIL 0x77c277c277… → 32fa5f55 / e04d40ad / a55fea14
global state (A, B, A in one page)
FAIL A=e127ff40 B=55a66c50 A'=05545a48
features
FAIL changed between runs: {"Palette":"Ash",…} vs {"Palette":"Ember",…} vs {"Palette":"Verdant",…}
4 failure(s)
distinctness still passes there: Math.random() does produce two different
images. Each check covers what it covers, and no more.
They need Playwright in your project (npm i -D playwright && npx playwright install chromium — they print this if it is missing). The plugin itself stays
dependency-free: no package.json, nothing embedded.
The contract a sketch must follow (three lines of shim for any platform) and
what the checks can and cannot prove are in references/verification.md.
They contain no version numbers, no figures and no field names — only the stable mental model of each platform, the canonical doc URLs, and the questions to ask those docs. Claude fetches the real documentation before writing platform code.
That is deliberate. A copied value goes stale in months and is then worse than nothing, because you believe it. A link stays right.
Nothing here can prove cross-machine determinism, and this plugin does not claim
to. In WebGL, shader compilers, float precision, rasterisers and MSAA differ
between GPUs; in JS, transcendental functions differ between engines. What is
actually checkable is same-machine reproducibility, perceptual stability across
sizes, and feature stability. references/verification.md is explicit about
where the line falls.
CI runs the scripts against a known-good fixture on every push (and against a broken variant derived from it, which must fail), and checks monthly that the URLs in the sheets still resolve — confirmed 404/DNS only, bot walls don't count — opening an issue when one dies. The sheets contain no volatile facts, so dead links are the only thing that rots.
If you mint something with it, I would genuinely like to see it — open a Discussion with a render and the platform you released on, or post it and tag @camillerouxart. Pieces made with the skill get shared onward.
Reference sheets are the easiest thing to contribute: a platform that is missing, a doc URL that moved, a mental model that is wrong. Issues and PRs welcome — the editorial rules are short.
If it saved you an afternoon, a ⭐ is how the next artist finds it.
Built and maintained by Camille Roux — generative/algorithmic artist. Maintainer of awesome-generative-art, the curated list of generative art platforms, libraries and resources.
Follow the art: art.camilleroux.com · X · Instagram · Farcaster · Bluesky · Mastodon · TikTok
MIT.