rig-c 2.21.0 → 2.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/NOTICE.md CHANGED
@@ -8,8 +8,10 @@ Copyright (c) 2013-2025 Esoteric Software LLC, licensed under the
8
8
  [Spine Runtimes License Agreement](https://esotericsoftware.com/spine-runtimes-license),
9
9
  as a **development dependency**: a clone and CI install it, and every Spine file
10
10
  `rigc build` writes there is read back through it before it is written. **The
11
- published package does not carry it** — an install of `spine-rigc` has no Spine
12
- runtime in it unless one is installed beside it, and then the same `rigc` uses it.
11
+ published package does not carry it** — an install of `rig-c` (or of
12
+ `spine-rigc`, the same files under the name the package first shipped as) has no
13
+ Spine runtime in it unless one is installed beside it, and then the same `rigc`
14
+ uses it.
13
15
 
14
16
  Its terms, as the licence states them: integration of the Spine Runtimes into
15
17
  software is permitted **under the terms and conditions of Section 2 of the
package/README.md CHANGED
@@ -3,8 +3,8 @@
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
- <a href="https://www.npmjs.com/package/spine-rigc"><img src="https://img.shields.io/npm/v/spine-rigc.svg?style=flat-square&color=FF6B4A" alt="npm version" /></a>
7
- <a href="https://www.npmjs.com/package/spine-rigc"><img src="https://img.shields.io/npm/dm/spine-rigc.svg?style=flat-square&color=A855F7" alt="npm downloads" /></a>
6
+ <a href="https://www.npmjs.com/package/rig-c"><img src="https://img.shields.io/npm/v/rig-c.svg?style=flat-square&color=FF6B4A" alt="npm version" /></a>
7
+ <a href="https://www.npmjs.com/package/rig-c"><img src="https://img.shields.io/npm/dm/rig-c.svg?style=flat-square&color=A855F7" alt="npm downloads" /></a>
8
8
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-38BDF8.svg?style=flat-square" alt="license" /></a>
9
9
  </p>
10
10
 
@@ -13,7 +13,8 @@ a rig compiler for Spine: a rig spec and a motion spec in, Spine 4.3 skeleton da
13
13
  gated by a list of named assertions before a byte is written — rigc's own validator in
14
14
  the published package, held to a `spine-core` round trip's verdicts in this
15
15
  repository's CI. Built so AI agents can author rigs and check their own work; it ships
16
- as an agent skill.
16
+ as an agent skill. On npm it is `rig-c` — the same package as `spine-rigc`, the name it
17
+ first shipped under, which is published beside it with the same files at every version.
17
18
 
18
19
  ## What you get
19
20
 
@@ -143,18 +144,22 @@ runners and on Linux at the declared minimum, Bun 1.2.0 (the `installs` and
143
144
  repository material, not in the npm package); a platform
144
145
  whose leg is red there is not one the package is known to run on.
145
146
 
146
- **The npm package is `spine-rigc`; the command it installs is `rigc`.** npm
147
+ **The npm package is `rig-c`; the command it installs is `rigc`.** npm
147
148
  refuses the name `rigc` as too similar to packages that already exist, so the
148
- project, this repository and the executable keep their name and only the
149
- registry entry is spelled out.
149
+ project, this repository and the executable keep their name and the registry
150
+ entry carries one hyphen. **`spine-rigc` is the same package**: it is the name
151
+ every version up to 2.20.4 shipped under, and it stays published as an alias —
152
+ every version from 2.20.4 on is on both names, with the same files — so a
153
+ project that depends on `spine-rigc` keeps receiving every release. A new
154
+ project installs `rig-c`.
150
155
 
151
156
  ```bash
152
- bunx spine-rigc --help # run it without installing
153
- bun add -g spine-rigc # or install the command
154
- bun add -d spine-rigc # or pin it in a project
157
+ bunx rig-c --help # run it without installing
158
+ bun add -g rig-c # or install the command
159
+ bun add -d rig-c # or pin it in a project
155
160
  ```
156
161
 
157
- `npx spine-rigc` works too, as long as Bun is on `PATH` — the executable is a
162
+ `npx rig-c` works too, as long as Bun is on `PATH` — the executable is a
158
163
  Bun script, and npm only writes the shim that calls it.
159
164
 
160
165
  Installed, the command is `rigc`. The examples below spell it `bun cli.ts`
@@ -194,7 +199,7 @@ plugin marketplace:
194
199
  /plugin install rigc@rigc
195
200
  ```
196
201
 
197
- With the package already installed, `claude --plugin-dir node_modules/spine-rigc`
202
+ With the package already installed, `claude --plugin-dir node_modules/rig-c`
198
203
  loads the same skills without a marketplace. The plugin carries no version of its
199
204
  own — `/plugin update` follows `main` commit by commit, and the only version on
200
205
  disk stays the one in `package.json`.
@@ -206,12 +211,12 @@ Codex, Gemini CLI and Antigravity read skills from one directory in the workspac
206
211
  `node_modules`. With the package installed, one command puts every skill there:
207
212
 
208
213
  ```shell
209
- bun add -d spine-rigc
210
- bun rigc skills install # relative links: .agents/skills/rigc -> ../../node_modules/spine-rigc/skills/rigc
214
+ bun add -d rig-c
215
+ bun rigc skills install # relative links: .agents/skills/rigc -> ../../node_modules/rig-c/skills/rigc
211
216
  bun rigc skills install --copy # the folders themselves, for a host that does not follow a link
212
217
  ```
213
218
 
214
- Run it through the project's own install, as above: `bunx spine-rigc skills install`
219
+ Run it through the project's own install, as above: `bunx rig-c skills install`
215
220
  in a project that has the package was measured running the registry's copy instead
216
221
  of the project's. A link reaches every upgrade of the package with no second run,
217
222
  and a second run has nothing to do; an entry already there that this command did not
@@ -242,11 +247,11 @@ reference export, so nothing you read in a quickstart is an answer to anything
242
247
  **1. Install the command.**
243
248
 
244
249
  ```bash
245
- bun add -g spine-rigc # installs `rigc`
250
+ bun add -g rig-c # installs `rigc`
246
251
  ```
247
252
 
248
253
  Or skip the install and prefix every command below with `bunx `, e.g.
249
- `bunx spine-rigc build …`.
254
+ `bunx rig-c build …`.
250
255
 
251
256
  **2. Make a directory and three plates.** rigc measures PNGs rather than trusting
252
257
  a number you typed (R5), so the art has to exist. These three are solid colours a
@@ -450,7 +455,7 @@ that does not belong to it. See
450
455
  field by field, the emission rules, every named failure mapped to the file that
451
456
  has to change, and §8–§9 for reproducing a shot you were given as pictures. It
452
457
  ships inside the npm package too, at
453
- `node_modules/spine-rigc/docs/AUTHORING.md`.
458
+ `node_modules/rig-c/docs/AUTHORING.md`.
454
459
  - `rigc explain --rig buoy.rig.json --motion buoy.motion.json --out spine` prints
455
460
  the compiled rig as a table — every bone with its resolved parent, the slots in
456
461
  draw order, every timeline key by key — and writes nothing. It is what to reach
@@ -744,7 +749,7 @@ letting `A17` blame the editor for the harness's own doing.
744
749
 
745
750
  | Document | For |
746
751
  | --- | --- |
747
- | 📘 **[docs/AUTHORING.md](docs/AUTHORING.md)** | **the format guide, and the one to read before writing a spec.** Both input files field by field with a complete minimal example each, every field with its Spine meaning, the rules that decide what is emitted, the build → read the report → fix → repeat loop, the map from every named failure to the file that has to change, and the features rigc refuses by name so you do not spend a loop discovering them. It travels **inside the npm package**, at `node_modules/spine-rigc/docs/AUTHORING.md` |
752
+ | 📘 **[docs/AUTHORING.md](docs/AUTHORING.md)** | **the format guide, and the one to read before writing a spec.** Both input files field by field with a complete minimal example each, every field with its Spine meaning, the rules that decide what is emitted, the build → read the report → fix → repeat loop, the map from every named failure to the file that has to change, and the features rigc refuses by name so you do not spend a loop discovering them. It travels **inside the npm package**, at `node_modules/rig-c/docs/AUTHORING.md` |
748
753
  | 🦴 **[docs/RIGGING.md](docs/RIGGING.md)** | **authoring the hierarchy.** Where a bone goes and why the art is pushed out on an offset, why a pivot in the wrong place looks like a search failure and what identifies one, moving a pivot and the child row that gets forgotten, gauges, siblings-not-a-chain, what a chain can reach and how many links it needs, why a local key is not a world key, duplicate art at mirrored pivots, and constraints as structure. Every section is a stumble the run records hold more than once, ranked by how often. Ships in the package too |
749
754
  | 🎞️ **[docs/MOTION.md](docs/MOTION.md)** | **the key-pose recipe.** How to get two poses, what a pair of poses does and does not fix, the in-betweening rules and where each comes from, and how to spread candidates so a ballot informs. Ships in the package too |
750
755
  | 🙂 **[docs/FACE.md](docs/FACE.md)** | **authoring a face.** A blink, a gaze and a 2.5D head turn on plain Spine data: the one line of yaw arithmetic every number in a turn comes from, depth as the parameter you are actually authoring, where to put a grid's columns and the angle at which any grid folds, what foreshortens and what does not, channel allocation before the first key, and the three cliffs with their angles. Also the deform audit gap, demonstrated — a folded mesh gates green — and the differential check that works today |
package/docs/AUTHORING.md CHANGED
@@ -275,14 +275,14 @@ for `vote` (default `ballot.html`).
275
275
  `skills install` is the one command that is not about a rig: it puts the agent
276
276
  skills the package ships where an agent host looks for them. Run it through the
277
277
  project's own install — `bun rigc skills install` — so the links point into that
278
- project's `node_modules/spine-rigc/skills/`. A second run has nothing to do and
278
+ project's `node_modules/rig-c/skills/`. A second run has nothing to do and
279
279
  exits 0. An entry already at `<dir>/<name>` that is not a link to the same folder
280
280
  (or, under `--copy`, not the same bytes) is refused, exit 1, and **nothing is
281
281
  written** — every such entry is named with what is there and what was required:
282
282
 
283
283
  ```text
284
284
  rigc skills install: <n> of the <m> skill(s) cannot be installed into <dir>, and nothing was written:
285
- <dir>/rigc-motion is a plain file; a symlink to ../../node_modules/spine-rigc/skills/rigc-motion was required
285
+ <dir>/rigc-motion is a plain file; a symlink to ../../node_modules/rig-c/skills/rigc-motion was required
286
286
  Remove the entries named above, or pass --dir to install somewhere else.
287
287
  ```
288
288
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rig-c",
3
- "version": "2.21.0",
3
+ "version": "2.22.0",
4
4
  "description": "AI-authored Spine 2D rigging and animation, verified before it is written. rigc compiles a rig spec into Spine 4.3 skeleton data, gates it with named assertions held to a spine-core round trip's verdicts, and emits nothing that fails. Output imports into the Spine editor. Ships as an agent skill.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -2,7 +2,7 @@
2
2
  name: rigc
3
3
  description: Author, build and validate Spine 4.3 skeleton data (skeleton.json plus its .atlas) from loose part PNGs with rigc, the rig compiler that verifies its own output with named assertions before writing it. Use for any request to make a Spine rig or Spine animation from PNG parts, or where the source is a Live2D, Unity or video model whose pictures you can render, to run or read rigc build, validate, render, preview, check or vote, or to write or fix a *.rig.json or *.motion.json spec; it says which shipped guide to open for the need at hand. Not for Live2D conversion, cutting an illustration into parts, or real-time face tracking.
4
4
  license: MIT
5
- compatibility: Requires Bun 1.2 or later. The tool is the npm package spine-rigc (bunx spine-rigc, or bun add -d spine-rigc); the command it installs is rigc.
5
+ compatibility: Requires Bun 1.2 or later. The tool is the npm package rig-c (bunx rig-c, or bun add -d rig-c); the command it installs is rigc.
6
6
  ---
7
7
 
8
8
  # rigc — a rig compiler for agents
@@ -35,8 +35,8 @@ whole interface, and this skill only says which of them to open.
35
35
  ## Install
36
36
 
37
37
  ```shell
38
- bunx spine-rigc --help # run it without installing
39
- bun add -d spine-rigc # or pin it in the project; the command is `rigc`
38
+ bunx rig-c --help # run it without installing
39
+ bun add -d rig-c # or pin it in the project; the command is `rigc`
40
40
  bun rigc skills install # then link these skills into .agents/skills
41
41
  ```
42
42
 
@@ -126,8 +126,8 @@ spec files field by field, the emission rules, the loop, and the failure map. Th
126
126
  | a **skeleton.json somebody else authored** — read it, repair it, extend it | [INGEST.md](https://github.com/firejune/rigc/blob/main/docs/INGEST.md) | `rigc-ingest` |
127
127
  | you are the **person operating** the agent rather than the agent | [PROMPTING.md](https://github.com/firejune/rigc/blob/main/docs/PROMPTING.md) | — |
128
128
 
129
- Every guide linked here is in the installed package at `node_modules/spine-rigc/docs/`,
129
+ Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
130
130
  which is the copy that matches the rigc you run; the links go to the repository's
131
131
  `main`. Inside the Claude Code plugin the same files are at `${CLAUDE_PLUGIN_ROOT}/docs/`.
132
132
  Formats, the CLI reference and the licence chain:
133
- [README.md](https://github.com/firejune/rigc/blob/main/README.md), installed at `node_modules/spine-rigc/README.md`.
133
+ [README.md](https://github.com/firejune/rigc/blob/main/README.md), installed at `node_modules/rig-c/README.md`.
@@ -2,7 +2,7 @@
2
2
  name: rigc-face
3
3
  description: Author a face on plain Spine data with rigc — a blink, a gaze shift, a breathing portrait and a head turn a few degrees off axis, built from deform timelines and per-part parallax. Use when the request is a talking or living portrait, a standing character, an expression or a head turn, such as "rig this face", "make the portrait blink and look around" or "turn the head". Not for Live2D file conversion, cutting a face illustration into parts, or VTuber-style real-time face tracking.
4
4
  license: MIT
5
- compatibility: Requires Bun 1.2 or later and the npm package spine-rigc.
5
+ compatibility: Requires Bun 1.2 or later and the npm package rig-c.
6
6
  ---
7
7
 
8
8
  # Face — a turn, a gaze and a blink
@@ -52,7 +52,7 @@ differential audit and the three limits it does not lift.
52
52
  rather than this closed form, and [INGEST.md](https://github.com/firejune/rigc/blob/main/docs/INGEST.md) if the head
53
53
  arrived as a compiled skeleton.
54
54
 
55
- Every guide linked here is in the installed package at `node_modules/spine-rigc/docs/`,
55
+ Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
56
56
  which is the copy that matches the rigc you run; the links go to the repository's
57
57
  `main`. Inside the Claude Code plugin the same files are at `${CLAUDE_PLUGIN_ROOT}/docs/`.
58
58
 
@@ -2,7 +2,7 @@
2
2
  name: rigc-ingest
3
3
  description: Work with a Spine skeleton.json somebody else authored — exported from the Spine editor or another tool — using rigc. Read and validate it, understand a complaint rigc raised about it, decompile it into rigc specs with `rigc ingest`, normalise, re-pivot or rename it, and extend it with an animation it does not have. Use when the input is an existing skeleton.json with its .atlas and page images rather than loose part PNGs. Not for Live2D file conversion or runtime tracking.
4
4
  license: MIT
5
- compatibility: Requires Bun 1.2 or later and the npm package spine-rigc.
5
+ compatibility: Requires Bun 1.2 or later and the npm package rig-c.
6
6
  ---
7
7
 
8
8
  # Ingest — a skeleton you did not author
@@ -70,7 +70,7 @@ thing to reach for; transcription by hand is what you fall back on for a constru
70
70
  3. Then [RIGGING.md](https://github.com/firejune/rigc/blob/main/docs/RIGGING.md) for why the re-pivot edit has the shape
71
71
  it has, and [MOTION.md](https://github.com/firejune/rigc/blob/main/docs/MOTION.md) for the animation you are adding.
72
72
 
73
- Every guide linked here is in the installed package at `node_modules/spine-rigc/docs/`,
73
+ Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
74
74
  which is the copy that matches the rigc you run; the links go to the repository's
75
75
  `main`. Inside the Claude Code plugin the same files are at `${CLAUDE_PLUGIN_ROOT}/docs/`.
76
76
 
@@ -2,7 +2,7 @@
2
2
  name: rigc-motion
3
3
  description: Author a Spine animation with rigc from key poses — an idle, a loop, a move from one picture to another — with timing and spacing, ease in and out, anticipation, arcs, overlap, follow-through, squash and stretch, and candidate variants a person can choose between. Use when the request is a movement on an existing or planned rig, in the animator's words too: "animate this rig", "make it breathe", "go from pose A to pose B", "make it feel heavier", "the cape should follow through". Not for Live2D, separating an image into parts, or real-time tracking.
4
4
  license: MIT
5
- compatibility: Requires Bun 1.2 or later and the npm package spine-rigc.
5
+ compatibility: Requires Bun 1.2 or later and the npm package rig-c.
6
6
  ---
7
7
 
8
8
  # Motion — what goes between two poses
@@ -43,7 +43,7 @@ thing that judges a movement is a person's eye through `rigc vote` — MOTION §
43
43
  head turn; [INGEST.md](https://github.com/firejune/rigc/blob/main/docs/INGEST.md) if the rig arrived as a compiled
44
44
  skeleton rather than loose parts.
45
45
 
46
- Every guide linked here is in the installed package at `node_modules/spine-rigc/docs/`,
46
+ Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
47
47
  which is the copy that matches the rigc you run; the links go to the repository's
48
48
  `main`. Inside the Claude Code plugin the same files are at `${CLAUDE_PLUGIN_ROOT}/docs/`.
49
49
 
@@ -2,7 +2,7 @@
2
2
  name: rigc-rigging
3
3
  description: Decide a Spine rig's hierarchy with rigc — how many bones, where each pivot sits, what hangs off what, offsets, chains and what a chain can reach, siblings versus chains, constraints as structure — and which of those decisions the reference frames can check. Use when the request is a skeleton from loose part PNGs, such as "rig these parts", "make a Spine skeleton" or "where do the joints go", before any motion is authored. Not for Live2D, cutting an illustration into parts, or VTuber-style tracking.
4
4
  license: MIT
5
- compatibility: Requires Bun 1.2 or later and the npm package spine-rigc.
5
+ compatibility: Requires Bun 1.2 or later and the npm package rig-c.
6
6
  ---
7
7
 
8
8
  # Rigging — the hierarchy itself
@@ -41,7 +41,7 @@ are named in RIGGING §11 — neither as a pass bar.
41
41
  [INGEST.md](https://github.com/firejune/rigc/blob/main/docs/INGEST.md) if the skeleton was handed to you already
42
42
  compiled.
43
43
 
44
- Every guide linked here is in the installed package at `node_modules/spine-rigc/docs/`,
44
+ Every guide linked here is in the installed package at `node_modules/rig-c/docs/`,
45
45
  which is the copy that matches the rigc you run; the links go to the repository's
46
46
  `main`. Inside the Claude Code plugin the same files are at `${CLAUDE_PLUGIN_ROOT}/docs/`.
47
47
 
package/src/areaband.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  * — and `stretchSingularValues` after them (issue #1230), for the motion
9
9
  * comparison (`src/meshcompare.ts`), which reads a triangle's stretch the way
10
10
  * the deform survey does and must not reach the compiler either.
11
- * They moved because a module the `spine-rigc/mesh` entry reaches has to read
11
+ * They moved because a module the `rig-c/mesh` entry reaches has to read
12
12
  * the same band, and `src/deformsurvey.ts` reaches the compiler and the core
13
13
  * (`src/deformstructure.ts`, `src/core/`) — a geometry entry that loaded the
14
14
  * compiler to read three numbers would also close an import cycle through
package/src/cli/shared.ts CHANGED
@@ -905,7 +905,7 @@ export const DEFAULT_LEDGER = 'votes.jsonl';
905
905
  // skills install — put the shipped skills where an agent host looks (issue #831)
906
906
  // ---------------------------------------------------------------------------
907
907
  //
908
- // After `bun add -d spine-rigc` the skills sit at `node_modules/spine-rigc/skills/`,
908
+ // After `bun add -d rig-c` the skills sit at `node_modules/rig-c/skills/`,
909
909
  // which no host reads. Codex, Gemini CLI and Antigravity all read
910
910
  // `<workspace>/.agents/skills/<name>/`, so this links every `skills/<name>/` the
911
911
  // package ships into one directory — `.agents/skills` under the working
package/src/mesh.ts CHANGED
@@ -46,7 +46,7 @@ import type { ModelBinding, ModelVertices } from './model.ts';
46
46
 
47
47
  // The mesh-quality measurement and its report (issue #1224) live in their own
48
48
  // module and reach a dependant through this file, which is what
49
- // `spine-rigc/mesh` names. That module imports helpers from this one, so the
49
+ // `rig-c/mesh` names. That module imports helpers from this one, so the
50
50
  // two form an import cycle: safe only because neither reads the other's
51
51
  // bindings while it is being evaluated — every use is inside a function.
52
52
  // The reduction (`reduceMesh`, stage B2 of #1224) sits in the same cycle, by
@@ -163,7 +163,7 @@ export class MeshError extends Error {}
163
163
  * ⚠️ Defined here and not in `src/meshquality.ts`, because that module imports
164
164
  * this one and this one re-exports it: a class that extends `MeshError` at the
165
165
  * top of the importing module would read `MeshError` before this module had
166
- * run, and every import of `spine-rigc/mesh` would throw.
166
+ * run, and every import of `rig-c/mesh` would throw.
167
167
  */
168
168
  export class MeshReductionError extends MeshError {
169
169
  readonly code: string;
@@ -1154,7 +1154,7 @@ export function measureMeshQuality(input: MeshMeasureInput): MeshQualityReport {
1154
1154
  * taken from another art are refused (`REDUCE_ART_RASTERS_MISMATCH`), never
1155
1155
  * read.
1156
1156
  *
1157
- * Internal: it is on `spine-rigc/mesh` only because that entry re-exports this
1157
+ * Internal: it is on `rig-c/mesh` only because that entry re-exports this
1158
1158
  * module with `export *`, and a symbol that is merely exported is not promised
1159
1159
  * (RELEASING.md, *The import surface*).
1160
1160
  */
@@ -31,7 +31,7 @@
31
31
  * the value the rasters were taken at and the value the input requires
32
32
  * (`checkArtRasters`, `src/meshquality.ts`).
33
33
  *
34
- * Not re-exported by `src/mesh.ts`: nothing here is on `spine-rigc/mesh`.
34
+ * Not re-exported by `src/mesh.ts`: nothing here is on `rig-c/mesh`.
35
35
  */
36
36
  import { artOf, distancePassesOf, fillEnclosed, labelIslands, MeshError, pixelCentreInTriangle, prunePolygon, squaredDistanceToSet, traceAlphaOutline, triangleRasterBox } from './mesh.ts';
37
37
  import type { ArtInput } from './meshquality.ts';
package/src/meshreduce.ts CHANGED
@@ -1211,7 +1211,7 @@ export function reduceMesh(input: MeshReductionInput): MeshReductionResult {
1211
1211
  * which is the path the carried one is held equal to. Step rasters made over
1212
1212
  * another rasters object are refused by the same code.
1213
1213
  *
1214
- * Internal: it is on `spine-rigc/mesh` only because that entry re-exports this
1214
+ * Internal: it is on `rig-c/mesh` only because that entry re-exports this
1215
1215
  * module with `export *`, and a symbol that is merely exported is not promised
1216
1216
  * (RELEASING.md, *The import surface*).
1217
1217
  */