# polyweave

3D · Claude Code plugin · Agent Workbench

Asking for a 3D asset usually means tweaking sliders until it looks right. polyweave has you declare what the asset has to satisfy instead, then searches for the parameters that satisfy it, on top of Blender, Godot and a generative mesh service. Every render asserts its own output and records what made it, and it all runs on your machine, against files in your own repository.

- Platform: Python 3.11
- Licence: MIT
- Product site: https://alegauss.github.io/polyweave/
- Source: https://github.com/alegauss/polyweave

## Install

Claude Code plugin:

```
/plugin marketplace add alegauss/alegauss.github.io
/plugin install polyweave@alegauss
```

pip:

```
pip install git+https://github.com/alegauss/polyweave
```

## What comes next

From docs/ROADMAP.md at 2a0831a.

### Block G — Geometry as a declaration

- 📋 A bevel rounds every edge, so a smooth body grows triangles and creases under it
- 📋 A rebuild leaves the material files of materials the document dropped
- 📋 A kit of built pieces takes a shell loop to render, spec and sit for a person
- 📋 A declared finish reaches the game closed, so it cannot take an instance's hue or the project's background hold
- 📋 A built mesh imports with its glTF materials, so the game swaps in the judged ones by hand
- 📋 Each finished material writes its own copy of one shader
- 📋 A finished piece cannot also give when struck, since vfx's struck give is a shader of its own

### Block H — Proof on a real game

- 🛠 a real project cannot adopt the plugin without carrying its own paths and palette into it

### Block P — Music and sound a game can ship

- 📋 The Surge render test fails in the parallel gate on a Pedalboard UnicodeDecodeError and passes alone

### Block R — Levels measured before a person plays them

- 📋 A game's own headless play of a level has no way to report what it measured
- 📋 A level declared as data cannot reach the engine without each game's own converter
- 📋 A level's difficulty has no bar a search can aim at, and a level set has no curve to hold
- 📋 A shooter's waves have no measure of threat, so the level contract is proven on one genre only
- 📋 Cottony's levels are still tuned by a curve nobody measured
- 📋 A playtest's trace of spawns, kills and hits cannot be measured or laid against the wave it played

### Block X — The site on the shared design system

- 📋 The site keeps its own copy of the template that eight product sites share

## Recently shipped

- 2026-10-19 · PW565: A flattened sphere creases at its rim whatever its steps
- 2026-10-19 · PW564: A bevelled or carved piece loses its colours, and every built mesh is written faceted
- 2026-10-19 · PW563: A bevel in a fresh process crashes with No module named bmesh
- 2026-10-19 · PW562: A sphere or torus declared with steps crashes the build with a TypeError
- 2026-10-19 · PW561: A loop cut by sound.loop always opens on the track's first sample, even a dying beat
- 2026-10-19 · PW560: sound.loop fails an Ogg loop's seam that sound.measure reads as ordinary
- 2026-10-19 · PW559: A recorded track cannot become an editable music.toml score
- 2026-10-19 · PW558: A voice over a recorded music track cannot be removed through polyweave

All entries: https://alegauss.github.io/changelog/polyweave/
