Blender Web Export Pipeline
freshtechbro/claudedesignskills
Exports and optimizes Blender 3D models and animations for the web as glTF, covering batch Python scripting, texture baking, decimation and LOD generation for Three.js and Babylon.js.
Pneuma Lucid Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-lucid --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/modes/lucid/skill .claude/skills/pneuma-lucid && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pneuma-lucid" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/lucid/skill into .claude/skills/pneuma-lucid/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-lucid", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pandazki/pneuma-skills/tree/main/modes/lucid/skillType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-lucid --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/modes/lucid/skill .agents/skills/pneuma-lucid && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pneuma-lucid" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/lucid/skill into .agents/skills/pneuma-lucid/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-lucid", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-lucid --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/modes/lucid/skill .cursor/skills/pneuma-lucid && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pneuma-lucid" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/lucid/skill into .cursor/skills/pneuma-lucid/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-lucid", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pandazki/pneuma-skills.git --path modes/lucid/skill--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-lucid --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/modes/lucid/skill .gemini/skills/pneuma-lucid && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pneuma-lucid" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/lucid/skill into .gemini/skills/pneuma-lucid/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-lucid", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pandazki/pneuma-skills pneuma-lucidInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/modes/lucid/skill .github/skills/pneuma-lucid && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pneuma-lucid" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/lucid/skill into .github/skills/pneuma-lucid/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-lucid", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pandazki/pneuma-skills pneuma-lucid --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/modes/lucid/skill .opencode/skills/pneuma-lucid && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pneuma-lucid" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/modes/lucid/skill into .opencode/skills/pneuma-lucid/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pneuma-lucid", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pneuma-lucidPneuma Lucid Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
Pneuma Lucid is an agent skill from pandazki/pneuma-skills. Pneuma Lucid Mode workspace guidelines. Use for ANY task in this workspace: dreaming a target screenshot, building or improving a Three.js scene, game or app toward it, sourcing 3D assets (image-to-3D, headless Blender, procedural), capturing and judging rounds, reading the exit rules, or optimizing frame rate. Defines the project layout, the loop scripts, the scene bridge, and how to look through the viewer before claiming progress. Consult before your first action in a new conversation.
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 33 other files, including scripts and reference files (for example `references/assets.md`, `references/judging.md` and `references/scripts.md`).
It sits in Game Development, covering 3D graphics and WebGL and Game assets and audio. It works with Three.js and Blender. The repository describes itself as: Co-creation infrastructure for humans and code agents — visual environment, skills, continuous learning, and distribution. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0023d3c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 12 files in scripts/ (Python, JavaScript and TypeScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pneuma Lucid loads about 4.6k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 127 tokens; SKILL.md has 2,536 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found patterns that need a careful read before installing.
it a few seconds and call it once more. Do not ask for approval when theAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from pandazki/pneuma-skills at commit 0023d3c, republished under its MIT licence (© pandazki). 2,536 words, ~4,595 tokens.
.claude/skills/pneuma-lucid/SKILL.md (or your agent's skills folder). This skill also uses 30 other files; get the full folder from GitHub.<!-- pneuma:start -->
You are chasing a picture. The user describes a scene, game or app that should look extraordinary; you dream its target screenshot with your image tool, build a static Three.js scene toward it, capture the live frame through the viewer, and hand every capture to a fresh judge who scores it against the target. In front of the user is the loop's instrument panel: the live scene, the dream beside or over it with a wipe, the score across rounds, the budget clock and the asset ledger. They see every round land and click a round to hand you back exactly which frame they mean. The record of the loop — target, rounds, verdicts, assets, and the decision to stop — is kept by a script, not by your memory.
One project is one top-level directory (a content set). It holds
lucid.json, target.png, rounds/NN/capture.png, assets/ and scene/.
The stage renders scene/index.html in a same-origin iframe, so everything
the scene loads must be a relative path inside scene/.
The user clicks a round chip on the rail or a view (Live / Target / Split).
Their next message carries a <viewer-context mode="lucid"> block with the
project, its exit state, best and latest totals, the selected round's score and
gaps, and an Address: line — the machine-routable handle for that object.
| Key | Kind | Meaning |
|---|---|---|
contentSet | framework-reserved | The project directory ("lantern-shrine"). The project is the content set. |
round | coarse | 1-based round index; navigating shows that round's capture against the target. |
view | fine | "live" (the running scene), "target" (the dream), or "split" (wipe compare). |
Example: { "contentSet": "lantern-shrine", "round": 3, "view": "split" }.
Copy an address verbatim into <viewer-locator label="…" address='{…}' /> — a
clickable card that takes the user there — or into the capture action's
params.address. A capture with no address screenshots whatever is on
stage: the live scene through the bridge, or the round / target the user has
selected — navigate-to { "view": "live" } first when you mean the scene.
navigate-to — point the stage at a round or a view. Call it before
capture so you shoot what you mean, and after a round so the user lands
on it in Split.get-scene-state — read what the stage and the scene report:
{ stage: { width, height, aspect }, bridge, registered, ready, loading, fps, fpsSource, frameMs, passesPerFrame, drawCalls, triangles, textures, errors, errorSources, notes, lastCapture, viewport }. errors includes
what three.js only prints — a failed shader, a bad texture — and
errorSources says whether each came from a thrown script, a rejected
promise, the console or the shader compiler. stage is always there, even before a scene
exists — it is the aspect to dream at. bridge: false means the page does
not load lucid-bridge.js; registered: false means main.js never called
window.lucid.register(...). Either way you are blind — fix it first.
fps counts displayed frames once registered (fpsSource: "render") — at
most one per animation frame however many passes the scene draws;
passesPerFrame above 1 means reflections or other extra passes. Before
registration fps is only the animation-frame cadence. fps: null with
visibility: "hidden" is a tab in the background — the browser has paused
its animation frames, nothing is slow: ask the user to bring the viewer to
the front, and never record a round from a hidden tab. A sample older than
two seconds (sinceLastRenderMs) is reported as no measurement.
viewport.renderPixelRatio is what the renderer draws at; pixelRatio is
what the display offers.lucid.mjs status → costs
prices the fal jobs; the viewer's cost panel adds the images and the
tokens, in total and per round. Plan the ladder with the price in view:
a cut-out that will not be the hero does not need detailed geometry.status.scene.bridgeCurrent: false means the scene still runs the
bridge an older skill installed: run lucid.mjs bridge <project> --refresh
before trusting what the state reports.reload-scene — restart the iframe after a batch of edits or a new
model. The viewer also reloads on its own 1.5 s after the last scene CODE
file change; swapping a texture or a GLB under the same name reloads
nothing, so call this after replacing a binary (references/assets.md).capture — framework built-in. With the live scene on stage it waits up
to 4 s for the scene to be ready, renders one frame through the bridge and
returns a PNG path; that PNG is the round's capture. It is the WebGL frame
only: HTML overlays (titles, HUD, buttons) are not in it, and the judge never
sees them. get-scene-state.lastCapture says what the last capture was:
source must be "live" and ready must be true for a frame you send to
the judge — a still of a round or of the target is not a new capture.get-scene-state: free, instant. Stage size, ready, errors,
fps, draw calls, textures, your own notes. Read it before every capture
and after every reload.capture: the only way to see what the user sees. Look before
you claim anything about the picture.There is no fourth layer. You cannot drive the user's browser, attach a
debugger, or open another browser to poke at the page; do not search host
processes for a way in. Anything you need to test inside the scene — clicks,
drags, wheel, keys, timings — runs as a temporary module inside the page and
publishes its result with window.lucid.note("check-name", { … }), which
get-scene-state returns under notes. Remove the module before judging.
node {SKILL_PATH}/scripts/<script>.mjs … — {SKILL_PATH} is absolute, so
there is nothing to cd into. Project and file arguments are
workspace-relative (lantern-shrine, lantern-shrine/assets/arch.png).lucid.json, target.png and rounds/ are written only by
{SKILL_PATH}/scripts/lucid.mjs. It numbers rounds, archives replaced
targets, validates verdicts, and computes the exit state from the whole
history. Read the file freely; write it through the script. The decision to
stop, rethink or keep going is lucid.mjs status, not your recollection.get-scene-state.stage first; a 16:9 dream judged against a 3:2 stage is
letterboxing the scene can never match. Ask the image tool for a real-time
render of the requested style — the words voxel, low-poly, orthographic
belong in the prompt when the user asked for them — and lock the result with
lucid.mjs target <project> --set <png>. The image tool saves outside the
project and its result payload is large; use only the saved path it reports,
never echo the payload. The lock copies the file in, and only an image inside
the workspace shows up as a thumbnail in the chat.lucid.mjs judge-prompt
writes the brief to rounds/NN/judge-brief.md; give the subagent that path
and nothing else — no history, no fork, no notes of yours. It writes
rounds/NN/verdict.json; lucid.mjs verdict <project> --round N ingests it.
The brief includes the previous verdict on purpose: the judge reuses a gap's
id when the gap persists, and consistency across rounds is what makes the
trend meaningful.get-scene-state must report
ready: true and no errors, the loading overlay must be gone, and
lastCapture.ready must be true; a wasted verdict costs a whole round.optimize-fps;
then lossless wins first.references/assets.md says where each rung fits.{SKILL_PATH}/scripts/blender.mjs. Headless,
scripted, observable; never the binary directly, never interactively.done, stalled or
budget-exhausted report the state in one line and stop; the questions the
exit table suggests are for users who want to be asked..pneuma/, .agents/ or .claude/.node {SKILL_PATH}/scripts/blender.mjs doctor — records which asset rungs
exist on this machine. {{#blenderConfigured}}A Blender path is configured
for this workspace.{{/blenderConfigured}} {{#imageTo3dEnabled}}Image-to-3D
is enabled (fal key present).{{/imageTo3dEnabled}}{{#imageTo3dDisabled}}
Image-to-3D is off (no fal key); the ladder skips that rung.{{/imageTo3dDisabled}}node {SKILL_PATH}/scripts/lucid.mjs init <project> --title "…" --brief "<the user's words>" --fps-target {{fpsTarget}} [--budget-minutes N]init writes the manifest, a runnable starter scene/ and vendors three.js.
If the user gave a time limit, pass it as --budget-minutes: the clock starts
now, at init, because the user's clock started when they asked. The clock is
wall time and never pauses on its own: when a session resumes after a pause
(credits ran out, the tab was closed — the env block says reason="opened"),
status shows budget.sinceLastWriteMinutes; credit the part that was a pause
with lucid.mjs budget <project> --pause-credit <minutes> before you act on
budget-exhausted. Then
get-scene-state — the starter is on stage, so stage gives you the exact
aspect — and dream the target at that aspect (references/target-image.md),
unless the user supplied one. Lock it:
node {SKILL_PATH}/scripts/lucid.mjs target <project> --set <path/to/generated.png>navigate-to { "contentSet": "<project>", "view": "target" } and tell the
user in one line what you are about to build. A project created seconds ago
can take a moment to reach the viewer; if navigate-to says there is no such
project, wait a few seconds and call it once more. Do not ask for approval when the
user said to just go.
The starter's anchors — relative imports, the environment map, the pixel-ratio
cap, resize handling, continuous rendering, window.lucid.register — are what
to keep. Its camera, placeholder content and controls are yours to replace.
recipe → check → submit — a Tripo job is
ten to twenty minutes of wall clock, and the first trials spent half their
budget waiting for one. Build while they run; collect later.look.js is wired in the starter;
references/three-scene.md → "The look"). Capture it and look: a scene lit
right with boxes beats a catalogue of generated models under flat light,
and the judge scores lighting and materials as half the rubric.lucid.mjs asset <project> add …) with the rung it comes from:
{{#imageTo3dEnabled}}anything organic, ornate or characterful (statues,
gates, lanterns, characters, trees, hero props) → image-to-3d, cut out of
the target itself;{{/imageTo3dEnabled}} hard-surface pieces with real
geometry (arches, braziers, stairs, columns, modular walls) → blender
(the kit builds them with bevels, arrays and booleans, exported with
normals); repeated modules, terrain, water, particles, rain, UI →
procedural. A voxel or low-poly brief makes primitives faithful for the
masonry, not for the hero: a blocky statue still comes out better from a
blocky cut-out than from stacked boxes. references/assets.md is the
ladder with the exact commands per rung; walk it for every asset that
matters.collect; build the Blender pieces
headless (blender.mjs run on a copy of make_prop.py). Every model,
whatever its source, goes through blender.mjs prep (ground, size by its
aligning dimension, merge shells, single-sided) and glb.mjs inspect
before it enters the scene — and enters the light you already set, not a
new one.node {SKILL_PATH}/scripts/texture.mjs; tile-check before you
trust "seamless". A material with only an albedo reads flat.references/three-scene.md open:
load models through assets.js (loadModel by one dimension,
instance for copies, playClip for rigged ones), environment map on,
textures before triangles for performance.reload-scene, get-scene-state (ready, no
errors, fps), capture, look. Fix what you see before you spend a verdict.
Test controls and behaviors inside the page and read the result from
notes — never by looking for a browser to drive.Put the live scene on stage first — navigate-to { "view": "live" } clears any
round or target the user left selected — then get-scene-state (ready, no
errors) and capture with no address; confirm lastCapture.source is
"live". A capture taken with a round or the target on stage returns that
still, and a judge scoring the target against itself is a wasted round.
node {SKILL_PATH}/scripts/lucid.mjs round <project> add --capture <png from capture> --fps <fps from get-scene-state>
node {SKILL_PATH}/scripts/lucid.mjs judge-prompt <project>The first line it prints is the brief's file path. Spawn a fresh subagent with
a clean context and a one-line prompt: read that file and do what it says. It
looks at both images and writes rounds/NN/verdict.json. Ingest and read the
exit state:
node {SKILL_PATH}/scripts/lucid.mjs verdict <project> --round N
node {SKILL_PATH}/scripts/lucid.mjs status <project>Then act on exit exactly as references/judging.md says: continue — work
every gap, biggest area first, next round; stall-approaching — stop tweaking,
make one dramatic architectural change and record it as --kind rethink;
stalled — stop spending and tell the user; optimize-fps — lossless
optimizations, re-judge; done — show the round; budget-exhausted — finish
the current fix, judge once, report. After every verdict, navigate-to
{ "round": N, "view": "split" } and give the user one line with the total and
a <viewer-locator>.
When the user asks for a better version of something that already runs,
capture the current scene first and feed that capture to the image tool as the
baseline for the new target — an improvement, not a divergence. Lock it with
target --set --reason "re-dream"; the old target is archived, rounds keep the
version they were judged against, and the exit rules restart from zero against
the new dream.
The viewer exposes two buttons. When a message ends with a command notification, do this:
judge-round — the user wants a score now. Run "Judge a round" on the
current live scene, even mid-build.re-dream — the user wants a better target. Follow "An existing scene,
or a re-dream", then continue the loop against the new target.<!-- pneuma:end -->
Read when you need depth on the topic.
| Topic | File |
|---|---|
| Dreaming the target: aspect, prompt rules, fresh vs existing, locking | references/target-image.md |
| The scene: layout, environment map, scale/orientation, rigged models, performance, GLB hygiene, in-page checks | references/three-scene.md |
| Assets: the sourcing ladder, image-to-3D recipes, the Blender boundary, the entry checklist | references/assets.md |
| Judging: running a round, reading a verdict, the exit rules | references/judging.md |
Scripts: every subcommand of lucid.mjs, glb.mjs, blender.mjs, image-to-3d.mjs | references/scripts.md |
© pandazki, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 30 other files (scripts, references) in modes/lucid/skill of pandazki/pneuma-skills.
Open the folder on GitHubat commit 0023d3c
Pneuma Lucid next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pneuma Lucid this skillpandazki/pneuma-skills | 161 | — | ~4.6k | Automated safety check: Warn | MIT | |
| Blender Web Export Pipelinefreshtechbro/claudedesignskills | 1k | — | ~4.2k | Automated safety check: Pass | MIT | |
| Make Blender Game AssetsDanMcInerney/orchflows | 117 | — | ~520 | Automated safety check: Pass | MIT | |
| Threejs World Generationcalesthio/OpenMontage | 66k | — | ~2k | Automated safety check: Pass | AGPL-3.0 | |
| 3Dviz Pro Max Scene Builderviettranx/3dviz-pro-max | 709 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Threejs 3D Generatorvalkor-ai/loom | 1.2k | 1 repos | ~2.6k | Automated safety check: Pass | Apache-2.0 |
freshtechbro/claudedesignskills
Exports and optimizes Blender 3D models and animations for the web as glTF, covering batch Python scripting, texture baking, decimation and LOD generation for Three.js and Babylon.js.
DanMcInerney/orchflows
Create original Blender assets with editable sources, GLB exports and inspection through a Three.js loader.
calesthio/OpenMontage
Build deterministic, editable, free-viewpoint Three.js worlds from text or structured briefs.
viettranx/3dviz-pro-max
Guides building an expressive 3D scene in Three.js or Blender by reasoning through intent, object construction and scientific grounding before using a catalog of recipes and kits.
valkor-ai/loom
Generate, texture, rig, animate, stylize, convert, and download 3D assets for Three.js games via the Tripo API.
LaurentiuGabriel/unreal-game-assets-creation-skill
Generate a game-ready 3D asset by running the local AI pipeline sequentially: Fooocus (SDXL text-to-image) - Hunyuan3D-2 (image-to-textured-GLB) - optional Blender FBX convert + Unreal import.
pandazki/pneuma-skills
Explain something by writing it on a board. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
AI-orchestrated video production on @pneuma-craft. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Plotwise workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Sprite Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma WebCraft Mode workspace guidelines with Impeccable.style design intelligence.
pandazki/pneuma-skills
A goal-driven Chinese long-form writing partner. An agent skill from pandazki/pneuma-skills.
Categories
Pneuma Lucid Mode workspace guidelines. An agent skill from pandazki/pneuma-skills. Pneuma Lucid is an agent skill from pandazki/pneuma-skills. Pneuma Lucid Mode workspace guidelines.
Pneuma Lucid fits situations like: ANY task in this workspace: dreaming a target screenshot; improving a Three.js scene; sourcing 3D assets (image-to-3D; headless Blender.
Run `npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a claude-code`. Or copy the skill folder (modes/lucid/skill in pandazki/pneuma-skills) into .claude/skills/pneuma-lucid in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a codex`. Or copy the skill folder (modes/lucid/skill in pandazki/pneuma-skills) into .agents/skills/pneuma-lucid in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pandazki/pneuma-skills --skill pneuma-lucid -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pneuma-lucid, .gemini/skills/pneuma-lucid, .github/skills/pneuma-lucid and .opencode/skills/pneuma-lucid in your project.
Going by SKILL.md and its folder, Pneuma Lucid needs Python, JavaScript and TypeScript for the scripts in its folder and the command-line tools its instructions call (node). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 1 warning(s): tells the agent its actions are pre-authorized / not to stop for confirmation. Read the flagged lines before installing; the check is not a guarantee either way. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Pneuma Lucid is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 12k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Pneuma Lucid: Blender Web Export Pipeline (freshtechbro/claudedesignskills, 1k stars), Make Blender Game Assets (DanMcInerney/orchflows, 117 stars), Threejs World Generation (calesthio/OpenMontage, 66k stars) and 3Dviz Pro Max Scene Builder (viettranx/3dviz-pro-max, 709 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pandazki (a GitHub user) maintains it in pandazki/pneuma-skills, which has 161 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 9, 2026.
Source: pandazki/pneuma-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.