Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Inside this repository, output is restricted to `_site/` or `dist/`; an external

The builder copies **only this repository's** `assets/`, `demos/`, `styles.css` and `CNAME`, byte for byte. It never reads a sibling checkout or runs the media scripts. Site-authoring Markdown, scripts and configuration are not published; the static demo bundle intentionally preserves its own README and licence notice. Generated HTML/Markdown, redirect stubs, `llms*.txt`, `robots.txt` and `sitemap.xml` belong exclusively in the output directory and must be removed from source tracking during migration; authored `assets/`, `styles.css` and `CNAME` stay tracked. Actions publishes an already-rendered artifact without Jekyll. It does not need `.nojekyll`, and the official upload action excludes dotfiles, so the builder emits none and rejects hidden artifact files or symlinks rather than silently publishing an incomplete file set.

The landing HTML gives each adapter version its own escaped `<code>` item separated by `<br>`. Its Markdown table remains one physical line per row, followed by a plain per-package list of all eight independently resolved packages; the same list appears in `llms.txt` and `llms-full.txt`. `@rig-c/core` and `@rig-c/adapters` are labels/aliases, not additional latest lookups. Docs badges and structured docs versions use the same build-time registry map. Recorded demo versions remain pinned to their sources.
The landing HTML gives each adapter version its own escaped `<code>` item separated by `<br>`. Its Markdown table remains one physical line per row, followed by a plain per-package list of all eight independently resolved packages; the same list appears in `llms.txt` and `llms-full.txt`. The eight canonical registry identities are `@rig-c/core`, `@rig-c/parts`, `@rig-c/pose`, `@rig-c/review`, `@rig-c/play`, `@rig-c/pixi`, `@rig-c/phaser` and `@rig-c/three`. Core resolves the real scoped manifest; convenience name `rig-c` is not a separate lookup. The adapters heading groups three real packages; there is no `@rig-c/adapters` npm package. Convenience install names and legacy `spine-*` names are documented separately from canonical identities and executable names. `@rig-c/pose` provides the `rig-pose` executable; the proposed unscoped convenience package remains pending publication and verification. Docs badges and structured docs versions use the same build-time registry map. Recorded demo versions remain pinned to their sources.

## Link checks

Expand Down
19 changes: 10 additions & 9 deletions content/docs/core.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
navLabel: Core
title: rig-c core — a 2D rig compiler with a named-assertion gate
title: "@rig-c/core — a 2D rig compiler with a named-assertion gate"
description: rigc compiles a rig spec and a motion spec into Spine 4.3 skeleton data, and writes nothing unless every named assertion passes.
summaryForLlms: rig-c (also @rig-c/core, CLI rigc) compiles a JSON rig spec and motion spec plus loose part PNGs into Spine 4.3 skeleton data, gated by named assertions so nothing invalid is written.
packageName: rig-c
summaryForLlms: "@rig-c/core (convenience install name rig-c, CLI rigc) compiles a JSON rig spec and motion spec plus loose part PNGs into Spine 4.3 skeleton data, gated by named assertions so nothing invalid is written."
packageName: "@rig-c/core"
repoUrl: https://github.com/rig-c/core
npmUrl: https://www.npmjs.com/package/rig-c
npmUrl: https://www.npmjs.com/package/@rig-c/core
---
# rig-c core (`rigc`)
# @rig-c/core (`rigc`)

<p class="mod-role">The compiler: a rig spec and a motion spec in, Spine 4.3 skeleton data out — and nothing written unless every named check passes.</p>

Expand Down Expand Up @@ -129,11 +129,11 @@ The published package links no Spine runtime, so `A00_ROUNDTRIP_PARSE` — Spine
## Install

```sh
bun add -d rig-c
bun add -d @rig-c/core
bun rigc build --rig rig.json --motion motion.json --out build/
```

The published 2.74.0 package declares Bun 1.4.0 or later. The npm package is `rig-c`; `@rig-c/core` is the same package under the scope, and the command is `rigc`. Licensing by playback path: [Licensing](/docs/licensing/).
The published 2.74.0 package declares Bun 1.4.0 or later. The canonical npm package is `@rig-c/core`; `rig-c` is its convenience install name, and the command is `rigc`. Published legacy name `spine-rigc` remains a compatibility entry point; see [package names and aliases](/#package-names-and-aliases). Licensing by playback path: [Licensing](/docs/licensing/).

## Inputs and outputs

Expand All @@ -160,7 +160,7 @@ The published 2.74.0 package declares Bun 1.4.0 or later. The npm package is `ri
- [docs/AUTHORING.md](https://github.com/rig-c/core/blob/main/docs/AUTHORING.md) — the format guide; read it before writing a spec
- [docs/RIGGING.md](https://github.com/rig-c/core/blob/main/docs/RIGGING.md) · [docs/MOTION.md](https://github.com/rig-c/core/blob/main/docs/MOTION.md) · [docs/FACE.md](https://github.com/rig-c/core/blob/main/docs/FACE.md) · [docs/INGEST.md](https://github.com/rig-c/core/blob/main/docs/INGEST.md) · [docs/PROMPTING.md](https://github.com/rig-c/core/blob/main/docs/PROMPTING.md)
- [docs/BENCHMARK.md](https://github.com/rig-c/core/blob/main/docs/BENCHMARK.md) — why you can trust the output, and the 50 assertions with their profiles
- [npm: rig-c](https://www.npmjs.com/package/rig-c) · [CHANGELOG.md](https://github.com/rig-c/core/blob/main/CHANGELOG.md)
- [npm: @rig-c/core](https://www.npmjs.com/package/@rig-c/core) · [CHANGELOG.md](https://github.com/rig-c/core/blob/main/CHANGELOG.md)
- Start here: [/docs/getting-started/](/docs/getting-started/)

<!-- SOURCES (not published)
Expand Down Expand Up @@ -198,7 +198,8 @@ The published 2.74.0 package declares Bun 1.4.0 or later. The npm package is `ri
- preview and vote need spine-core — README.md:50-51; core entry command list excludes them — `bunx rig-c@2.61.0 validate --help` output
- Spine Runtimes License Agreement applies to that dependency — README.md:77-78
- Bun >=1.2.0 — package.json:34; README.md:140-144
- install line `bun add -d rig-c` — README.md:162
- historical install line `bun add -d rig-c` — README.md:162 (original citation retained; this is not the current scoped recommendation).
- current scoped install recommendation (2026-10-28): npm @rig-c/core@2.79.0 /latest manifest name and bin (`rigc`: `bin/rigc.cjs`), engines.bun >=1.4.0; published tarball SHA-512 verified. This current registry evidence is separate from the historical README citation above.
- build and render command shapes — `bunx rig-c@2.61.0 --help` (build --rig/--motion/--out; render --candidate)
- A00_ROUNDTRIP_PARSE runs only where runtime installed, SKIP elsewhere — README.md:68-70; `rigc build --help` lines 33-34
- ingest = build backwards, byte for byte — `rigc --help` ("ingest runs build backwards … build(ingest(x)) is x, byte for byte"); README.md:606
Expand Down
6 changes: 3 additions & 3 deletions content/docs/getting-started.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
navLabel: Getting Started
title: Getting Started with rig-c — One Painting to a Browser Rig, No GPU
description: Step-by-step walkthrough to build a rigged, breathing, waving 2D character that says hello from one painting using @rig-c/parts, rig-c, @rig-c/pose, and @rig-c/play with no GPU required.
description: Step-by-step walkthrough to build a rigged, breathing, waving 2D character that says hello from one painting using @rig-c/parts, @rig-c/core, @rig-c/pose, and @rig-c/play with no GPU required.
keywords: rig-c tutorial, getting started, 2D character rigging tutorial, See-through layers, rig-parts build, rig-pose retarget
repoUrl: https://github.com/rig-c/getting-started
summaryForLlms: Pinned CPU-only, no-Python recipe from prepared example layers and hand-placed joints through idle, wave and hello with hair/skirt physics to browser playback. Historical 2026-10-21 Apple M4 durations cover steps 1-10 including 9b/9c; a separate Linux reproduction and the upstream rolling-latest CI have their own records.
Expand All @@ -16,7 +16,7 @@ Repository: <https://github.com/rig-c/getting-started>

1. **Paint one character.** Any image model or illustration workflow produces a front-facing, full-body character PNG on a plain white background with arms clear of the body.
2. **Split it into layers, and mark the joints.** [See-through](https://github.com/shitagaki-lab/see-through) cuts the painting into layered parts (twice: full figure + head crop). Body-18 joints come from a lightweight CPU script (`rtmlib`) or hand placement.
3. **Run the rig-c packages on the CPU.** `@rig-c/parts`, `rig-c`, `@rig-c/pose`, and `@rig-c/play` assemble the parts, author meshes and bones, gate the build, retarget motion, and play it in the browser. **No GPU is used in step 3.**
3. **Run the rig-c packages on the CPU.** `@rig-c/parts`, `@rig-c/core`, `@rig-c/pose`, and `@rig-c/play` assemble the parts, author meshes and bones, gate the build, retarget motion, and play it in the browser. **No GPU is used in step 3.**

## Try it first — no GPU, no Python

Expand Down Expand Up @@ -237,7 +237,7 @@ The full guide — making your own character, the GPU routes, troubleshooting an

## Three ways to use the output

1. **On the web with [`@rig-c/play`](/docs/play/) or [`@rig-c/adapters`](/docs/adapters/)**: Load `skeleton.model.json` and part PNGs directly. The packages are MIT and integrate no Spine Runtime.
1. **On the web with [`@rig-c/play`](/docs/play/) or [an engine adapter](/docs/adapters/)**: Load `skeleton.model.json` and part PNGs directly. The packages are MIT and integrate no Spine Runtime.
2. **In the Spine 4.3 Editor**: Import `out/check/build/skeleton.json` via `Import Data` and point `Images` to `out/rig/images/` to refine timelines by hand (requires rig-c 2.51.1+; the editor is under the Spine Editor License Agreement).
3. **In a game engine via official Spine Runtimes**: Load `skeleton.json` and `skeleton.atlas` in Unity, Godot, Unreal, or C++ runtimes under the Spine Runtimes License.

Expand Down
8 changes: 4 additions & 4 deletions content/docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
navLabel: Overview
title: rig-c Docs — What Each Package Is, When to Use It, How It Works
description: Choose a rig-c route by goal, required inputs, minimum packages and output, then explore how the packages fit together.
keywords: rig-c docs, 2D rigging documentation, Spine 4.3, @rig-c/parts, @rig-c/pose, rig-c, @rig-c/review, @rig-c/play
keywords: rig-c docs, 2D rigging documentation, Spine 4.3, @rig-c/parts, @rig-c/pose, @rig-c/core, @rig-c/review, @rig-c/play
repoUrl: https://github.com/rig-c
summaryForLlms: "Docs hub: five goal-based entry points with required inputs, minimum packages, outputs and next steps, followed by the package pipeline. Playback and inspection can start from an existing build."
---
Expand All @@ -16,10 +16,10 @@ Pick the row that matches what you already have. Each route starts there; you do

| I want to… | Have ready | Minimum packages | What comes out | Next step |
| --- | --- | --- | --- | --- |
| Start from a painting and layers | Painting, full-figure and head layers (See-through or layered PSD), joints and a corrected config | `@rig-c/parts` + `rig-c` to build | Parts, rig/motion specs, a gated native model and Spine export | [Getting Started](/docs/getting-started/) — prepared inputs through a first build and browser playback |
| Start from a painting and layers | Painting, full-figure and head layers (See-through or layered PSD), joints and a corrected config | `@rig-c/parts` + `@rig-c/core` to build | Parts, rig/motion specs, a gated native model and Spine export | [Getting Started](/docs/getting-started/) — prepared inputs through a first build and browser playback |
| Play an existing compiled rig | Native `skeleton.model.json` and its image pages; for a host, a PixiJS, Phaser or Three.js scene | `@rig-c/play`; add only the matching `@rig-c/pixi`, `@rig-c/phaser` or `@rig-c/three` and host package for an engine scene | A rig playing in a page or host scene | [Play: a minimal page](https://github.com/rig-c/play#a-minimal-page); for a host, [Adapters](/docs/adapters/) |
| Apply a pose sequence | Body-18 sequence (or COCO-17 converted by `clean`), target rig spec with its parts, explicit bone map; clean before retargeting | `@rig-c/pose` + `rig-c` | Motion spec, optional report and gated compiled build | [Pose: inputs and outputs](/docs/pose/#inputs-and-outputs) |
| Add interactive head/gaze controls | Compiled native model and image pages with declared yaw/pitch slider dials; gaze needs its own declared dials | For the adapter example: `@rig-c/play` + `rig-c` (model reader) + one host adapter and host package; example-side pointer helper | Pointer-driven control of the rig's declared sliders | [Adapter controls guide](https://github.com/rig-c/adapters/blob/main/examples/look/README.md) — helper, required dials and refusal rules |
| Apply a pose sequence | Body-18 sequence (or COCO-17 converted by `clean`), target rig spec with its parts, explicit bone map; clean before retargeting | `@rig-c/pose` + `@rig-c/core` | Motion spec, optional report and gated compiled build | [Pose: inputs and outputs](/docs/pose/#inputs-and-outputs) |
| Add interactive head/gaze controls | Compiled native model and image pages with declared yaw/pitch slider dials; gaze needs its own declared dials | For the adapter example: `@rig-c/play` + `@rig-c/core` (model reader; the pinned example retains its original import path) + one host adapter and host package; example-side pointer helper | Pointer-driven control of the rig's declared sliders | [Adapter controls guide](https://github.com/rig-c/adapters/blob/main/examples/look/README.md) — helper, required dials and refusal rules |
| Inspect, correct and review an agent's result | Existing output folder; references if available. Apply also needs original reproducible config and parts, plus source inputs for edits that use them | `@rig-c/review` for inspection/feedback; Apply also needs the original producer installed | Local inspection, source-bound feedback; eligible Apply edits rebuild in scratch | [Review: inputs and outputs](/docs/review/#inputs-and-outputs) |

Painting and layer generation happen **before CPU-only rig-c processing**. The walkthrough starts with prepared layers; image models and See-through have their own requirements. Compiled-model playback skips both input generation and rig authoring. If you have Spine data instead, use the [Spine playback path](/docs/capabilities/#pick-the-playback-path), not Play's native-model loader. Keep the inputs' provenance and [asset and playback licensing](/docs/licensing/) with the route you choose; the walkthrough's sample inputs are CC BY-NC 4.0.
Expand Down
2 changes: 1 addition & 1 deletion content/docs/licensing.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Three separate questions, answered separately: the licence of rig-c's own code,
| rig-c's model in a page or an engine | [`@rig-c/play`](/docs/play/), [`@rig-c/pixi` / `phaser` / `three`](/docs/adapters/) | rig-c's MIT. These packages link nothing from Esoteric Software and pose the rig with rig-c's own core, so no Spine Runtime is integrated. |
| Spine data in a product | an official Spine Runtime, or the Spine Web Player (which `rigc preview` loads) | The [Spine Runtimes License](https://esotericsoftware.com/spine-runtimes-license): integration is permitted under Section 2 of the Spine Editor License Agreement, or on the condition that each user of the product obtains their own Spine Editor licence, and redistribution includes that licence and copyright notice. |
| Spine data in the Spine editor | the Spine editor, to refine by hand | The [Spine Editor License Agreement](https://esotericsoftware.com/spine-editor-license). |
| rigc with `@esotericsoftware/spine-core` installed beside it | rigc's round-trip gate, `validate`, `preview`, `vote`, `bench`, `bonedist` | That install integrates a Spine Runtime, so the Spine Runtimes License applies there. The published `rig-c` package does not carry spine-core. |
| rigc with `@esotericsoftware/spine-core` installed beside it | rigc's round-trip gate, `validate`, `preview`, `vote`, `bench`, `bonedist` | That install integrates a Spine Runtime, so the Spine Runtimes License applies there. The published `@rig-c/core` package does not carry spine-core. |

Esoteric Software's licence pages read *Last updated April 5, 2025* when this page was written.

Expand Down
2 changes: 1 addition & 1 deletion content/docs/play.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ The player does not run its own clock: the page calls `frame(dt)`, so pausing, s

```sh
npm i @rig-c/play
npm i -D rig-c # rigc build writes the model the player loads
npm i -D @rig-c/core # rigc build writes the model the player loads
```

Runs in the browser as an ES module; rig-c's posing core is bundled, so there is nothing else to install. The package is MIT and links nothing from Esoteric Software — see [Licensing](/docs/licensing/).
Expand Down
4 changes: 3 additions & 1 deletion content/docs/pose.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,11 @@ The joints were placed by hand on the painting (the way the getting-started guid

```sh
npm i -D @rig-c/pose
bunx rig-pose retarget --rig out/rig --map map.json --pose swing.pose.clean.json --out swing.motion.json --name swing --build swing-build
bun run rig-pose retarget --rig out/rig --map map.json --pose swing.pose.clean.json --out swing.motion.json --name swing --build swing-build
```

Installing `@rig-c/pose` provides the `rig-pose` executable used above. The proposed unscoped npm package `rig-pose` is not published (checked 2026-10-28); use the scoped install and its local command. See [package names and aliases](/#package-names-and-aliases).

The published 1.2.1 package declares [Bun](https://bun.sh) 1.4.0 or later on `PATH`; rig-c comes as a dependency.

## Inputs and outputs
Expand Down
Loading
Loading