spine-rigc 1.0.2 → 1.2.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/README.md +37 -5
- package/cli.ts +562 -48
- package/docs/AUTHORING.md +156 -7
- package/docs/MOTION.md +1 -0
- package/package.json +1 -1
- package/skills/rigc/SKILL.md +42 -12
- package/skills/{face → rigc-face}/SKILL.md +11 -7
- package/skills/{ingest → rigc-ingest}/SKILL.md +10 -6
- package/skills/{motion → rigc-motion}/SKILL.md +11 -7
- package/skills/{rigging → rigc-rigging}/SKILL.md +11 -7
- package/src/ballot.ts +9 -12
- package/src/check.ts +181 -5
- package/src/checkpics.ts +293 -0
- package/src/preview.ts +223 -32
- package/src/render.ts +140 -2
package/README.md
CHANGED
|
@@ -146,8 +146,9 @@ to do with it, and it is the one instrument here that can see a wrong animation.
|
|
|
146
146
|
|
|
147
147
|
The guides under [Documentation](#documentation) also ship as
|
|
148
148
|
[Agent Skills](https://agentskills.io) — `skills/<name>/SKILL.md`, in this
|
|
149
|
-
repository and in the npm package —
|
|
150
|
-
|
|
149
|
+
repository and in the npm package — which a host reads once they are where it
|
|
150
|
+
looks: Claude Code through the plugin below, Codex, Gemini CLI and Antigravity
|
|
151
|
+
through `rigc skills install`. Each skill is a router and nothing more: when to load it, the
|
|
151
152
|
non-negotiables in a line apiece, and a link to the guide that owns every rule, so
|
|
152
153
|
a rule keeps living in exactly one place. The repository is also a Claude Code
|
|
153
154
|
plugin marketplace:
|
|
@@ -162,6 +163,35 @@ loads the same skills without a marketplace. The plugin carries no version of it
|
|
|
162
163
|
own — `/plugin update` follows `main` commit by commit, and the only version on
|
|
163
164
|
disk stays the one in `package.json`.
|
|
164
165
|
|
|
166
|
+
Codex, Gemini CLI and Antigravity read skills from one directory in the workspace,
|
|
167
|
+
`.agents/skills/` ([Codex](https://learn.chatgpt.com/docs/build-skills),
|
|
168
|
+
[Gemini CLI](https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/skills.md),
|
|
169
|
+
[Antigravity](https://antigravity.google/docs/skills/)), and none of them reads
|
|
170
|
+
`node_modules`. With the package installed, one command puts every skill there:
|
|
171
|
+
|
|
172
|
+
```shell
|
|
173
|
+
bun add -d spine-rigc
|
|
174
|
+
bun rigc skills install # relative links: .agents/skills/rigc -> ../../node_modules/spine-rigc/skills/rigc
|
|
175
|
+
bun rigc skills install --copy # the folders themselves, for a host that does not follow a link
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Run it through the project's own install, as above: `bunx spine-rigc skills install`
|
|
179
|
+
in a project that has the package was measured running the registry's copy instead
|
|
180
|
+
of the project's. A link reaches every upgrade of the package with no second run,
|
|
181
|
+
and a second run has nothing to do; an entry already there that this command did not
|
|
182
|
+
make is refused by name and nothing is written. Gemini CLI 0.41.1 was measured
|
|
183
|
+
listing a linked skill from both its workspace and its user directory — the
|
|
184
|
+
workspace one only in a folder it trusts. Codex's documentation says it follows a
|
|
185
|
+
symlinked skill folder, which is not measured here, and Antigravity CLI 1.1.9 has no
|
|
186
|
+
way to list skills without starting a session, so what it does with a link is not
|
|
187
|
+
measured either; `--copy` is the shape that asks nothing of a host. Gemini CLI can
|
|
188
|
+
also fetch a skill itself, one folder at a time:
|
|
189
|
+
`gemini skills install https://github.com/firejune/rigc.git --path skills/rigc --scope workspace`.
|
|
190
|
+
The routers are named `rigc-rigging`, `rigc-motion`, `rigc-face` and `rigc-ingest`
|
|
191
|
+
because that directory is flat — beside another tool's `motion`, a bare name is
|
|
192
|
+
whichever one the host picked — and under the Claude Code plugin they read
|
|
193
|
+
`rigc:rigc-motion` and so on.
|
|
194
|
+
|
|
165
195
|
## First rig in ten minutes
|
|
166
196
|
|
|
167
197
|
A whole rig, end to end, in a scratch directory: three tiny plates, two JSON
|
|
@@ -293,6 +323,7 @@ the two files:
|
|
|
293
323
|
.. pages=3 regions=3 bones=4 slots=3 animations=1 version=4.3.13 regionAttachments=3 meshAttachments=0 physicsConstraints=0 rig=buoy profile=spine
|
|
294
324
|
rigc: wrote …/buoy/spine/skeleton.json
|
|
295
325
|
rigc: wrote …/buoy/spine/skeleton.atlas
|
|
326
|
+
rigc: look at it: rigc preview --candidate …/buoy/spine
|
|
296
327
|
```
|
|
297
328
|
|
|
298
329
|
`profile=spine` is the rulebook that judged it: *is this valid Spine 4.3 that any
|
|
@@ -502,15 +533,16 @@ commands take it and what its default is.
|
|
|
502
533
|
| `validate <dir>` | re-gates artifacts already on disk |
|
|
503
534
|
| `ingest <skeleton.json> --out <dir>` | `build` run backwards: reads a Spine 4.3 skeleton and writes the rig spec and motion spec that **rebuild it**, plus a findings report naming everything it could not carry. a skeleton that declares no stage is carried as declaring none, `--stage x,y,w,h` adds a box to one — and is refused, rather than ignored, beside one that declares a box — and `--images <dir>` writes the spec's own images directory — the opposite direction from `build --images`, which overrides it — so the rebuild carries no flag at all |
|
|
504
535
|
| `explain --rig … --motion …` | the compiled rig as a table — every bone with its resolved parent, the slots in draw order, every timeline key by key. Writes nothing. What to reach for when a rig compiles and still looks wrong |
|
|
505
|
-
| `render --candidate <dir>` | PNG frames plus a contact sheet, in `render
|
|
506
|
-
| `preview --candidate <dir>` | one self-contained `.html` that plays it |
|
|
536
|
+
| `render --candidate <dir>` | PNG frames plus a contact sheet, in `render/`. `--hide <slot,…>` or `--slot <slot,…>` draws part of the rig on the **same grid** as the whole, so the two frames overlay and the difference is the part; `frames.json` records the subset and `check` refuses such a set as a reference |
|
|
537
|
+
| `preview --candidate <dir>` | one self-contained `.html` that plays it, headed by the line `validate <dir>` prints for it and the rigc version — a refused candidate is still previewed, and its header says so in the gate's words. Repeat `--candidate` for one page with a pane per candidate, in the order given; a green `build` ends by naming this command for its own `--out` |
|
|
507
538
|
| `vote --candidate a --candidate b` | one `.html` that asks a human which; `vote --record <file>` checks the answer into `votes.jsonl` |
|
|
508
539
|
| `pose --images <dir> --frame <png>` | reads part placements **out of** a picture |
|
|
509
540
|
| `chainfit --candidate <dir> --images <dir> --frame <png>` | reads the parts `pose` refuses, through the candidate's own draw order and hierarchy: masked residuals over **visible** pixels, one hinge per child instead of four degrees of freedom, and the `rotate` key value each answer implies. A bone with two or more anchored descendants is **determined** rather than searched, and the residual that over-determination leaves is reported |
|
|
510
541
|
| `diff <candidate.json> <reference.json>` | structural comparison of two skeletons, one ratio per measure and deliberately no combined score |
|
|
511
542
|
| `bonedist --candidate … --reference … --bones …` | per-frame, per-bone world-transform distance against another skeleton — the ladder's stage 3, run on its own. `--bones <correspondence.json \| identity>` is required rather than defaulted: a candidate is entitled to its own bone names, so the pairing is stated |
|
|
512
|
-
| `check --candidate <dir> --frames <dir
|
|
543
|
+
| `check --candidate <dir> --frames <dir> [--out <dir>]` | the candidate against reference pictures — the only instrument here that can see a *wrong animation*. `--out` also writes, for every frame the table lists, the picture its figures came from: reference, candidate, difference and overlay at native size |
|
|
513
544
|
| `bench <rung> --candidate <dir>` | one rung of the benchmark ladder |
|
|
545
|
+
| `skills install [--dir …] [--copy]` | links every agent skill the package ships into `.agents/skills` (or `--dir`) as relative symlinks, or copies them with `--copy` — where Codex, Gemini CLI and Antigravity look. A second run has nothing to do; an entry already there that is not this command's is refused by name and nothing is written |
|
|
514
546
|
|
|
515
547
|
`diff`, `bonedist`, `check` and `bench` measure against something you were given; the
|
|
516
548
|
first three work on any reference you have, and `bench` is a repository workflow that needs a clone
|