Image to Three.js Model
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
Capture reusable patterns from a finished project and lift them into framework-level priors (contracts, modules, skeletons) that future projects inherit.
$ npx skills add tettethu/VibeGame --skill self-evolve -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tettethu/VibeGame self-evolve --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/tettethu/VibeGame.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/self-evolve .claude/skills/self-evolve && 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 "self-evolve" agent skill from https://github.com/tettethu/VibeGame/tree/main/src/skills/self-evolve into .claude/skills/self-evolve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "self-evolve", 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/tettethu/VibeGame/tree/main/src/skills/self-evolveType 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 tettethu/VibeGame --skill self-evolve -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tettethu/VibeGame self-evolve --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tettethu/VibeGame.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/skills/self-evolve .agents/skills/self-evolve && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "self-evolve" agent skill from https://github.com/tettethu/VibeGame/tree/main/src/skills/self-evolve into .agents/skills/self-evolve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "self-evolve", 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 tettethu/VibeGame --skill self-evolve -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tettethu/VibeGame self-evolve --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tettethu/VibeGame.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/skills/self-evolve .cursor/skills/self-evolve && 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 "self-evolve" agent skill from https://github.com/tettethu/VibeGame/tree/main/src/skills/self-evolve into .cursor/skills/self-evolve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "self-evolve", 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/tettethu/VibeGame.git --path src/skills/self-evolve--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 tettethu/VibeGame --skill self-evolve -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tettethu/VibeGame self-evolve --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tettethu/VibeGame.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/skills/self-evolve .gemini/skills/self-evolve && 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 "self-evolve" agent skill from https://github.com/tettethu/VibeGame/tree/main/src/skills/self-evolve into .gemini/skills/self-evolve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "self-evolve", 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 tettethu/VibeGame self-evolveInstalls 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 tettethu/VibeGame --skill self-evolve -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tettethu/VibeGame.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/skills/self-evolve .github/skills/self-evolve && 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 "self-evolve" agent skill from https://github.com/tettethu/VibeGame/tree/main/src/skills/self-evolve into .github/skills/self-evolve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "self-evolve", 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 tettethu/VibeGame --skill self-evolve -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tettethu/VibeGame self-evolve --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tettethu/VibeGame.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/skills/self-evolve .opencode/skills/self-evolve && 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 "self-evolve" agent skill from https://github.com/tettethu/VibeGame/tree/main/src/skills/self-evolve into .opencode/skills/self-evolve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "self-evolve", 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.
self-evolveCapture reusable patterns from a finished project and lift them into framework-level priors (contracts, modules, skeletons) that future projects inherit.
Self Evolve is an agent skill from tettethu/VibeGame. Capture reusable patterns from a finished project and lift them into framework-level priors (contracts, modules, skeletons) that future projects inherit. Run only when the user explicitly requests self-evolution; the orchestrator executes the workflow.
Its SKILL.md is about 7.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development. The repository describes itself as: VibeGame: Vibe Your Dream Game -- An open-source self-evolving multi-agent framework with an AI-Native game engine that turns your natural language into a fully playable 2D web… The licence is Apache-2.0.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0fcb8ca. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash, javascript and python).
From 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.
Self Evolve loads about 7.1k tokens when it runs. Until then it costs about 66 tokens; SKILL.md has 3,253 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 no risky patterns in SKILL.md.
Automated 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); files beside SKILL.md are not scanned.
The full file from tettethu/VibeGame at commit 0fcb8ca, republished under its Apache-2.0 licence (© tettethu). 3,253 words, ~7,067 tokens.
.claude/skills/self-evolve/SKILL.md (or your agent's skills folder).Run at the end of a project to promote what worked in this project into framework-level priors. Future projects then start ahead because vibegame init ships the priors.
The orchestrator coordinates this workflow and owns code and architecture outputs (modules, skeletons, and contracts excluding the Artist chapter). Skeleton-specific errors belong inside the matching skeleton. Art-recipe distillation belongs to artist via the artist-self-evolve skill — dispatch it in parallel.
Self Check. Before promoting or syncing a skeleton, audit the finished project itself. The project will become a future starting point, so fix these issues in the project before opening a task to convert it into skeletons/<slug>/:
scale, width / height, offset, pivot, depth, collider width / height, collider offset, collider pivot, scroll factor, animation clip timing, and similar runtime visual / collision behavior — must be declared in scene JSON, node JSON, manifest metadata, or config that the engine reads. Do not bypass the engine by setting visual scale / offset / pivot or collider scale / offset / pivot imperatively in scripts when an engine parameter exists.config in the scene / node JSON. Create config/*.json only for shared tuning used by multiple nodes, reusable rosters/tables, large state machines, or values intentionally edited as a named subsystem.If any of the above fail, stop the evolve run, fix the project, and re-test before continuing. Do not record a skeleton that depends on script-side overrides to compensate for missing engine parameters.
Dispatch art-side evolve. At the start of the run, send the persistent artist teammate this minimal message:
game-slug: <slug>
Use your `artist-self-evolve` skill for this run.Artist runs the skill and:
skeletons/<slug>/art-pack.md directly (Phase 1) — sub-genre-bound, no gate.#### Artist chapter requests from you in Step 5 (Phase 2).The art-pack is part of the skeleton output. Contract Artist chapters are part of the approved contract output.
If artist replies that the skill is unavailable (harness doesn't expose it), abort the evolve run and report to user. Running self-evolve without art-side coverage leaves art-pack.md empty and contracts' Artist chapters uncovered.
Search for candidates per destination, independently. Run the skeleton / modules / contracts searches in parallel. Do not "find candidates first, then classify". Each target's search rule and qualification bar lives in Evolve Targets. Search reusable failure modes while evaluating skeletons; they are part of the skeleton update, not a separate destination.
Present each list to the user and wait for approval. Show one list per destination: skeletons / modules / contracts. Include skeleton-owned error notes under the relevant skeleton item, not as a fourth list. Do not force a unified table; each list's shape can fit its content. The user may merge / split / drop items — accept their direction. This gate is about which priors get touched, not their content. Lifting priors silently locks in framework defaults for every future project, so this gate is non-negotiable.
Convert approved skeletons via task workflow. For each approved skeleton candidate, open a task whose prd.md explicitly requires converting the finished project into a runnable placeholder skeleton under skeletons/<slug>/. Do not hand-convert the skeleton inside the orchestrator session; let the task workflow produce and verify it. Use the PRD requirements and review bar in Evolve Targets / skeletons.
Draft contracts, delegate the Artist chapter. When you write a contract (new file or new Pattern), author the structure and every non-Artist responsibility chapter (#### Architect/Programmer, #### Player, #### Reviewer, optional ### Manifest and asset boundary). Then send artist a per-contract request with the file path and the surrounding pattern context; artist writes #### Artist (and its nested ##### Workflow) directly into that file (Phase 2). Do not have artist return a draft for you to relay — chapter content is artist's domain.
Verify. Run vibegame check from the project root; resolve naming / structural failures before promotion.
Promote through the CLI. Run one command for each user-approved prior:
vibegame evolve skeleton -n <kebab-case-slug> --dry-run
vibegame evolve module -n <PascalCaseModule> --dry-run
vibegame evolve contract -n <kebab-case-slug> --dry-runReview the copied files and not copied lists. After the dry run passes, rerun without --dry-run. The CLI finds the VibeGame source checkout from its installed code and writes only to the fixed destination for that prior type. Do not use cp, rsync, or manual whole-directory copying to promote shared priors. The CLI never commits or pushes.
If a destination exists, stop. Compare and resolve the conflict manually; the CLI does not replace or merge existing priors.
Update the source index manually. After a successful promotion, the CLI prints the absolute path of the source index that requires a manual edit. Do not infer the source checkout path from the game project. If the printed path is outside the current game project, obtain user permission to edit it, then update that exact file. The CLI never copies or edits an index.
p1 / p2, fighter, bar).modules/, skeletons/, .vibegame/spec/contracts/, and .vibegame/spec/engine/. Other project files are not shared priors.REFLECTION.md, plan.md, log.md, screenshots, prompt artifacts, or other source-project files as if future projects can read them. Distill the lesson into the shared file instead.skeletons/<slug>/art-pack-assets/ and refer to that relative path.art-pack.md records the verified generation method and useful candidate outputs. assets/manifest.json records only assets selected by the runtime. Generated but unused assets do not belong in the runtime manifest; remove their entries and runtime files before promotion.project.json, index.html, index.md, art-pack.md, and errors.md; JSON under config/; *.scene.json under scenes/; *.node.json under entities/; JavaScript under scripts/; reference images under art-pack-assets/; and manifest-selected files under assets/. It does not copy project-local engine/, modules/, stages/, vendor/, .vibegame/, tests/, or any other unlisted content.vibegame evolve module. Never place or copy a modules/ directory inside a skeleton.### When to use grounded in verified capability, not plausible genre extrapolation.scripts/X.js only after refactoring it into a properly parameterized module — all tunables flow through this.config, no hard-coded project assumptions, public methods are documented at the top of the file. If it cannot be cleanly encapsulated, it does not qualify.Scan scripts/ and current modules/ usage for code that passes the qualification gates. List each as scripts/<X>.js, scripts/<Y>.js (if multiple scripts merge into one module) => modules/<X>Module.js with one sentence describing what the module achieves. Every promoted module must also gain a row in modules/index.md with one line description and one line interface.
Prioritize functionality that:
Pure gameplay logic is usually easy to rewrite correctly. Code that affects visuals and real runtime feel is easier to get subtly wrong and harder to test, so it is more valuable to preserve as a module.
Step 1: Define the module behavior
A well-encapsulated module is used through these surfaces:
xxx.node.json: script: "XxxModule" turns the module into a node that works once placed in scene.json through normal lifecycle methods such as ready and update. Store all tunables in config; reuse engine-native fields such as animator, visual, and collider for animation and collision.manifest.json: records the asset keys the module needs.A module must have a clear behavior boundary. Other scripts should only provide inputs, consume outputs/events, or read public state; they must not maintain the module's core behavior. The module should work by itself. If it is coupled to another object, either split the coupling and expose that object's data/methods as module inputs, optionally through parent/child nodes, or turn the other object into a module too.
Define the module's configuration and behavior before moving code.
Step 2: Modularize the project
Move the relevant functionality into modules/, change the original node reference to XxxModule, then implement the module according to the behavior boundary defined in Step 1.
Step 3: Test
The module implementation is acceptable only after a real project proves that the module works correctly.
Step 4: Self-check
When possible, implement module self-check logic callable through vibegame check xxx.node.json. check detects module nodes and calls the matching module check code. This is especially useful for:
Self-check code schema
Module self-check has two layers:
modules/XxxModule.js and catches runtime configuration errors.modules/check/XxxModule.check.py and is auto-discovered by vibegame check xxx.node.json.Runtime self-check uses _selfCheck() and usually runs from ready().
Use it to:
console.error / console.warn messages.vibegame check.Minimal shape:
ready() {
this._selfCheck()
}
_selfCheck() {
const tag = `XxxModule[${this.name}]`
const errors = []
const warns = []
if (!this.animator) errors.push('node.json must define animator')
if (!this.getPhysicsObject?.()?.body) errors.push('node.json must define collider')
if (!this.config.requiredKey) errors.push('config.requiredKey is required')
for (const e of errors) console.error(`${tag}: ${e}`)
for (const w of warns) console.warn(`${tag}: ${w}`)
if (!errors.length && !warns.length) console.log(`${tag}: self-check passed`)
}Static module check is the preferred self-check path. The file name must match the module script:
modules/XxxModule.js
modules/check/XxxModule.check.pyvibegame check discovery rules:
"script": "XxxModule".vibegame check entities/foo.node.json looks for modules/check/XxxModule.check.py.vibegame check . scans all *.node.json files and calls matching .check.py files for *Module nodes.check(project: Path, node_path: Path, opts: dict | None = None) -> list[str].ERROR, WARN, PREVIEW, PASS.Minimal shape:
import json
from pathlib import Path
def check(project: Path, node_path: Path, opts: dict | None = None) -> list[str]:
opts = opts or {}
messages: list[str] = []
node = json.loads(node_path.read_text())
config = node.get("config") if isinstance(node.get("config"), dict) else {}
animator = node.get("animator") if isinstance(node.get("animator"), dict) else {}
children = {
child.get("name")
for child in node.get("children", [])
if isinstance(child, dict) and isinstance(child.get("name"), str)
}
if not config.get("requiredKey"):
messages.append("ERROR config.requiredKey: required")
if "Hitbox" not in children:
messages.append('WARN child "Hitbox" not found')
if "idle" not in animator.get("states", {}):
messages.append('ERROR animator.states.idle: required')
if not any(m.startswith("ERROR") for m in messages):
messages.insert(0, "PASS static check passed")
return messagesAssert anything that can be asserted directly. Do not generate an image and make reviewers guess.
config keys.config.actions[*].state pointing to an existing animator state, and config.actions[*].fx pointing to an existing child node.For anything requiring visual review, generate PREVIEW images instead of describing the issue in text. Default output:
assets/artifacts/module-check/Good preview targets:
Preview must reproduce real runtime coordinate logic. Otherwise the image misleads the reviewer.
If the module's visual behavior relies on the engine, preview must use the same rules as engine visual / collider / animator:
visual.ratio, visual.width, and visual.height.collider, including engine default pivot inheritance.animations.clips[*].frames order, and active frames use the real frame indexes from module config.If the module defines its own visual behavior, preview must reproduce the module's own coordinate logic:
Do not write approximate coordinates just to make preview easier. If the preview cannot reproduce the real behavior, emit a WARN explaining what it does not cover.
Art-recipe distillation belongs to artist via artist-self-evolve.
Lead responsibilities:
game-slug.skeletons/<slug>/art-pack.md yourself.#### Artist directly in that file.Artist responsibilities:
skeletons/<slug>/art-pack.md.#### Artist chapters when requested.Files under .vibegame/spec/contracts/ are contracts guiding orchestrator how to delegate jobs to different teammates and how teammates should behave to build some special features.
Scan task artifacts (plan.md and the # Auditor / # Player sections of each task's log.md, plus REFLECTION.md) for cross-role coordination rules not yet captured in any contract. List each as a new/extended contract file or Pattern.
Schema
## Pattern 1: slug-1
### When to use
<what this pattern achieves: the produced artifact, input/output shape, runtime behavior, and coordination boundary. Also state the exact type of game or feature slice where this pattern has been practice-verified. Do not mention any other game type or scenario unless that scenario was actually verified by a completed project.>
### Basic Knowledge
<Use this when this pattern needs extra prior common knowledge to exactly know **WHY need to do this**. Task contracts/map.md for example, which demonstrates why we need prior knowledge otherwise nobody knows why face/top split.>
### Responsibility
#### Artist
<one-line lead, then a mandatory ##### Workflow with three steps:
Generate / Package / Verify, then a flat "Common mistakes" bullet list.
Artist fills this chapter via the artist-self-evolve skill — see that
SKILL's Phase 2 for the body shape and templated-prompt rule.>
##### Workflow (MANDATORY when artist has nontrivial
work. Exactly three steps:
Generate / Package / Verify.)
#### Architect/Programmer/Auditor/Player/Reviewer/...
<what each remaining teammate owns; not every teammate has to appear>
### Manifest and asset boundary (OPTIONAL — only when this pattern has rules
that span multiple roles, e.g. which assets
must / must not be registered in manifest.json
regardless of who creates them)
## Pattern 2: slug-2
...Rules
sprite-backed-status-bar, fighting-hud-dom).p1 / p2 over player / cpu; prefer generic placeholders (fighter, bar, slot) over named entities. The example is a template, not a snapshot.### When to use is capability-first. It must say what the pattern achieves, its IO shape, runtime behavior, and what teammate coordination it covers. It is not a genre recommendation list.### When to use does not reference its own slug. The orchestrator commissions in natural language and does not know the contract slug. Write the trigger conditions in terms of produced artifacts and behavior, not slug names.Skeletons are runnable placeholder game baselines for a sub-genre, not stripped file bundles or a parallel best-practice store. Every successful project can produce or refine one when its structure is reusable.
When to use. If it started from a skeleton but made meaningful structural/feature changes, create a suffixed skeleton slug instead of overwriting the original.When Step 4 opens the conversion task, write these requirements into that task's prd.md:
Goal: convert this finished game into a runnable placeholder skeleton at `skeletons/<slug>/`.
Requirements:
- Preserve scene flow, entity dimensions, colliders, camera, tuning, timing, HUD layout, scripts, config, and runtimeState shape.
- Replace project-specific real assets with manifest `placeholder_atlas` / `placeholder_image` entries, or project-local placeholder-safe assets, unless an asset is intentionally shipped under `art-pack-assets/` as reference material.
- Remove private paths, source-project references, character names, and project-specific content.
- Remove manifest entries and runtime asset files that the skeleton does not use.
- Keep the skeleton openable and playable enough that a future orchestrator can feel the original proportions before swapping real art.
- Run `vibegame check .` and a runtime smoke check before handoff.Review the converted skeleton before updating indexes. Reject skeletons that are only file bundles, stripped manifests with no playable baseline, or copied real-asset projects.
Skeletons have three layers:
skeletons/<slug>/: project.json, scenes/, scripts/, entities/, config/, CSS, font choices, theme/layout files, placeholder-safe assets/manifest.json, and index.md. The best conversion only changes texture references to placeholders. It must preserve scene flow, visual proportions, display sizes, collider dimensions, camera bounds, timing, layout, and runtimeState shape. The result must be openable as a placeholder game; disconnected scripts, prose-only reconstruction notes, or non-runnable stripped manifests are not a skeleton.artist-self-evolve owns art extraction: skeletons/<slug>/art-pack.md, optional skeletons/<slug>/art-pack-assets/, and artist-related contract chapters. The game-logic task may replace real visual references with manifest placeholder_atlas / placeholder_image entries, or project-local placeholder-safe assets, but it must not write art recipes or copy binary real assets outside art-pack-assets/.skeletons/<slug>/errors.md, using the rules below. Errors are part of the skeleton, not a separate evolve destination.All layers do minimal de-projecting: remove private paths, source-project references, character names, and project-specific content. Keep the assembled architecture and natural script names when they describe reusable roles. skeletons/<slug>/index.md records sub-genre features, layout, visual proportions, runtime shape, and other starting-point facts. When to use belongs only in skeletons/index.md.
Skeleton errors are reusable failure modes found in REFLECTION.md, reviewer rejection history, and task logs. They belong to skeletons/<slug>/errors.md unless the fix is a framework doc update, a contract Common mistakes entry, or an automated module check/test.
Do not treat skeletons/<slug>/errors.md as a memory dump. Classify each error by the fix future projects need, then write it to the right destination.
Error categories:
vibegame CLI behavior, module loading, vibegame check, vibegame init, release behavior, and similar facts.skeletons/<slug>/errors.md or the contract's Common mistakes; do not rewrite the spec unless the wording was genuinely unclear.skeletons/<slug>/errors.md when the failure is sub-genre-specific, or to a module check/test when it can be caught automatically.Rules:
REFLECTION.md and reviewer rejection history for failure modes worth preserving, then classify before writing.**Spec update**: line.**Spec update**: line points at the skeleton, module, contract, or spec that was changed so the loop closes.skeletons/<slug>/errors.md is for future action, not guilt. If the future reader cannot use the entry to avoid or detect the same failure, do not add it.© tettethu, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in src/skills/self-evolve of tettethu/VibeGame.
Open the folder on GitHubat commit 0fcb8ca
Self Evolve 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 |
|---|---|---|---|---|---|---|
| Self Evolve this skilltettethu/VibeGame | 268 | — | ~7.1k | Automated safety check: Pass | Apache-2.0 | |
| Image to Three.js Modelimg2threejs/img2threejs | 18k | 1 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| Web CloneJane-xiaoer/claude-skill-web-clone | 1k | 1 repos | ~2.7k | Automated safety check: Pass | MIT | |
| Threejs Game Directormajidmanzarpour/threejs-game-skills | 2.5k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Game Asset Generatorhtdt/godogen | 7.1k | — | ~2.8k | Automated safety check: Pass | MIT | |
| Threejs Gameplay Systemsvalkor-ai/loom | 1.2k | 1 repos | ~1.4k | Automated safety check: Pass | Apache-2.0 |
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
Jane-xiaoer/claude-skill-web-clone
网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…
majidmanzarpour/threejs-game-skills
Entrypoint for building, upgrading, and finishing Three.js browser games.
htdt/godogen
Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.
valkor-ai/loom
Build and iterate playable Three.js game systems: starter scaffold, architecture, design briefs, core loops, level and encounter design, entities, input, camera, collision and physics, scoring…
CyberAgentGameEntertainment/NovaShader
Execute C with Unity APIs when existing uloop tools cannot inspect or edit enough.
tettethu/VibeGame
Distill stable art-generation patterns from a completed project, so future projects produce comparable assets without re-discovering the prompts.
tettethu/VibeGame
Run VibeGame's standard end-to-end game development workflow with reviewer gates.
tettethu/VibeGame
Iterate broadly on an existing game, on top of vibegame-build.
tettethu/VibeGame
Resume a VibeGame orchestrator session after vibegame start.
Categories
Capture reusable patterns from a finished project and lift them into framework-level priors (contracts, modules, skeletons) that future projects inherit. Self Evolve is an agent skill from tettethu/VibeGame. Capture reusable patterns from a finished project and lift them into framework-level priors (contracts, modules, skeletons) that future projects inherit.
Self Evolve fits situations like: explicitly requests self-evolution; the orchestrator executes the workflow.
Run `npx skills add tettethu/VibeGame --skill self-evolve -a claude-code`. Or copy the skill folder (src/skills/self-evolve in tettethu/VibeGame) into .claude/skills/self-evolve in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tettethu/VibeGame --skill self-evolve -a codex`. Or copy the skill folder (src/skills/self-evolve in tettethu/VibeGame) into .agents/skills/self-evolve 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 tettethu/VibeGame --skill self-evolve -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/self-evolve, .gemini/skills/self-evolve, .github/skills/self-evolve and .opencode/skills/self-evolve in your project.
SKILL.md names no scripts, command-line tools or credentials: Self Evolve is instructions for the agent only.
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 found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Self Evolve is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.1k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Self Evolve: Image to Three.js Model (img2threejs/img2threejs, 18k stars), Web Clone (Jane-xiaoer/claude-skill-web-clone, 1k stars), Threejs Game Director (majidmanzarpour/threejs-game-skills, 2.5k stars) and Game Asset Generator (htdt/godogen, 7.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tettethu (a GitHub user) maintains it in tettethu/VibeGame, which has 268 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 1, 2026.
Source: tettethu/VibeGame on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.