rig-c 0.0.0-stage → 2.20.4
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/.claude-plugin/marketplace.json +19 -0
- package/.claude-plugin/plugin.json +13 -0
- package/LICENSE +30 -0
- package/NOTICE.md +145 -0
- package/README.md +817 -3
- package/bin/rigc.cjs +83 -0
- package/cli.ts +61 -0
- package/cli_core.ts +46 -0
- package/docs/AUTHORING.md +9923 -0
- package/docs/FACE.md +1948 -0
- package/docs/INGEST.md +1488 -0
- package/docs/MOTION.md +1241 -0
- package/docs/PROMPTING.md +109 -0
- package/docs/RIGGING.md +1441 -0
- package/docs/SPEC_COVERAGE.md +357 -0
- package/package.json +108 -4
- package/skills/rigc/SKILL.md +133 -0
- package/skills/rigc-face/SKILL.md +60 -0
- package/skills/rigc-ingest/SKILL.md +78 -0
- package/skills/rigc-motion/SKILL.md +51 -0
- package/skills/rigc-rigging/SKILL.md +49 -0
- package/src/areaband.ts +159 -0
- package/src/assertions/bodies/a01.ts +23 -0
- package/src/assertions/bodies/a02.ts +21 -0
- package/src/assertions/bodies/a03.ts +27 -0
- package/src/assertions/bodies/a04.ts +40 -0
- package/src/assertions/bodies/a05.ts +56 -0
- package/src/assertions/bodies/a06.ts +245 -0
- package/src/assertions/bodies/a07.ts +68 -0
- package/src/assertions/bodies/a08.ts +76 -0
- package/src/assertions/bodies/a09.ts +82 -0
- package/src/assertions/bodies/a10.ts +116 -0
- package/src/assertions/bodies/a11.ts +15 -0
- package/src/assertions/bodies/a12.ts +30 -0
- package/src/assertions/bodies/a13.ts +51 -0
- package/src/assertions/bodies/a14.ts +35 -0
- package/src/assertions/bodies/a15.ts +97 -0
- package/src/assertions/bodies/a16.ts +24 -0
- package/src/assertions/bodies/a17.ts +26 -0
- package/src/assertions/bodies/a18.ts +62 -0
- package/src/assertions/bodies/a19.ts +404 -0
- package/src/assertions/bodies/a20.ts +122 -0
- package/src/assertions/bodies/a21.ts +190 -0
- package/src/assertions/bodies/a22.ts +39 -0
- package/src/assertions/bodies/a23.ts +305 -0
- package/src/assertions/bodies/a24.ts +68 -0
- package/src/assertions/bodies/a25.ts +39 -0
- package/src/assertions/bodies/a26.ts +61 -0
- package/src/assertions/bodies/a27.ts +33 -0
- package/src/assertions/bodies/a28.ts +70 -0
- package/src/assertions/bodies/a29.ts +34 -0
- package/src/assertions/bodies/a30.ts +50 -0
- package/src/assertions/bodies/a31.ts +61 -0
- package/src/assertions/bodies/a32.ts +44 -0
- package/src/assertions/bodies/a33.ts +110 -0
- package/src/assertions/bodies/a34.ts +133 -0
- package/src/assertions/bodies/a35.ts +160 -0
- package/src/assertions/bodies/a36.ts +81 -0
- package/src/assertions/bodies/a37.ts +77 -0
- package/src/assertions/bodies/a38.ts +73 -0
- package/src/assertions/bodies/a39.ts +303 -0
- package/src/assertions/bodies/a40.ts +128 -0
- package/src/assertions/bodies/a42.ts +97 -0
- package/src/assertions/bodies/a43.ts +181 -0
- package/src/assertions/bodies/a44.ts +23 -0
- package/src/assertions/bodies/a45.ts +172 -0
- package/src/assertions/bodies/a46.ts +224 -0
- package/src/assertions/bodies/a47.ts +126 -0
- package/src/assertions/bodies/a48.ts +83 -0
- package/src/assertions/bodies/a49.ts +81 -0
- package/src/assertions/bodies/a50.ts +97 -0
- package/src/assertions/constraint_words.ts +169 -0
- package/src/assertions/emitted/index.ts +148 -0
- package/src/assertions/facts/animated_bones.ts +30 -0
- package/src/assertions/facts/animation_durations.ts +37 -0
- package/src/assertions/facts/atlas_pages.ts +19 -0
- package/src/assertions/facts/atlas_regions.ts +52 -0
- package/src/assertions/facts/bone_timelines.ts +37 -0
- package/src/assertions/facts/constraint_targets.ts +56 -0
- package/src/assertions/facts/constraints.ts +155 -0
- package/src/assertions/facts/deform_survey.ts +27 -0
- package/src/assertions/facts/event_keys.ts +55 -0
- package/src/assertions/facts/linked_meshes.ts +38 -0
- package/src/assertions/facts/mesh_attachments.ts +100 -0
- package/src/assertions/facts/region_joins.ts +34 -0
- package/src/assertions/facts/sequences.ts +85 -0
- package/src/assertions/facts/skeleton_roster.ts +45 -0
- package/src/assertions/facts/skin_entries.ts +37 -0
- package/src/assertions/facts/skin_members.ts +53 -0
- package/src/assertions/facts/slider_composition.ts +78 -0
- package/src/assertions/facts/slot_colour.ts +43 -0
- package/src/assertions/facts/stage.ts +27 -0
- package/src/assertions/facts/stage_box.ts +65 -0
- package/src/assertions/facts/stepped_poses.ts +74 -0
- package/src/assertions/facts/two_colour.ts +52 -0
- package/src/assertions/facts/vertex_polygons.ts +53 -0
- package/src/assertions/footprints.ts +367 -0
- package/src/assertions/harness.ts +109 -0
- package/src/assertions/inward_advance.ts +58 -0
- package/src/assertions/kinds.ts +105 -0
- package/src/assertions/mesh_kinds.ts +56 -0
- package/src/assertions/model/animated_bones.ts +38 -0
- package/src/assertions/model/animation_durations.ts +57 -0
- package/src/assertions/model/atlas_pages.ts +15 -0
- package/src/assertions/model/atlas_regions.ts +76 -0
- package/src/assertions/model/bone_timelines.ts +58 -0
- package/src/assertions/model/constraint_targets.ts +82 -0
- package/src/assertions/model/constraints.ts +233 -0
- package/src/assertions/model/declared.ts +125 -0
- package/src/assertions/model/deform_survey.ts +24 -0
- package/src/assertions/model/event_keys.ts +45 -0
- package/src/assertions/model/given.ts +45 -0
- package/src/assertions/model/index.ts +398 -0
- package/src/assertions/model/linked_meshes.ts +24 -0
- package/src/assertions/model/mesh_attachments.ts +119 -0
- package/src/assertions/model/parse.ts +146 -0
- package/src/assertions/model/region_joins.ts +67 -0
- package/src/assertions/model/runtime_timelines.ts +78 -0
- package/src/assertions/model/sequences.ts +157 -0
- package/src/assertions/model/skeleton_roster.ts +23 -0
- package/src/assertions/model/skin_entries.ts +69 -0
- package/src/assertions/model/skin_members.ts +64 -0
- package/src/assertions/model/slider_composition.ts +193 -0
- package/src/assertions/model/slot_colour.ts +81 -0
- package/src/assertions/model/stage.ts +28 -0
- package/src/assertions/model/stage_box.ts +51 -0
- package/src/assertions/model/stepped_poses.ts +105 -0
- package/src/assertions/model/two_colour.ts +61 -0
- package/src/assertions/model/vertex_polygons.ts +72 -0
- package/src/assertions/reasons.ts +129 -0
- package/src/assertions/region_lookups.ts +61 -0
- package/src/assertions/report.ts +189 -0
- package/src/assertions/values.ts +39 -0
- package/src/atlas.ts +2870 -0
- package/src/ballot.ts +866 -0
- package/src/bonedist.ts +643 -0
- package/src/chainfit.ts +2752 -0
- package/src/chains.ts +170 -0
- package/src/check.ts +4303 -0
- package/src/checkpics.ts +295 -0
- package/src/cli/core_commands.ts +1627 -0
- package/src/cli/repack.ts +414 -0
- package/src/cli/shared.ts +2776 -0
- package/src/cli/spine_commands.ts +820 -0
- package/src/compile.ts +9414 -0
- package/src/core/additive.ts +458 -0
- package/src/core/animation.ts +1050 -0
- package/src/core/clipping.ts +696 -0
- package/src/core/constraints.ts +1876 -0
- package/src/core/constraints_path.ts +964 -0
- package/src/core/constraints_physics.ts +881 -0
- package/src/core/constraints_slider.ts +635 -0
- package/src/core/deform.ts +613 -0
- package/src/core/draw_order.ts +125 -0
- package/src/core/events.ts +135 -0
- package/src/core/hooks.ts +249 -0
- package/src/core/index.ts +1400 -0
- package/src/core/raw.ts +739 -0
- package/src/core/skins.ts +129 -0
- package/src/core/uvs.ts +469 -0
- package/src/core/vertices.ts +490 -0
- package/src/core/walk.ts +197 -0
- package/src/core/world.ts +289 -0
- package/src/correspondence.ts +15 -0
- package/src/deformbuild.ts +60 -0
- package/src/deformgen.ts +630 -0
- package/src/deformmeasure.ts +732 -0
- package/src/deformreport.ts +373 -0
- package/src/deformstructure.ts +386 -0
- package/src/deformsurvey.ts +2162 -0
- package/src/depth.ts +784 -0
- package/src/diff.ts +2252 -0
- package/src/emit.ts +134 -0
- package/src/emit_spine.ts +854 -0
- package/src/errors.ts +53 -0
- package/src/framing.ts +819 -0
- package/src/generation.ts +139 -0
- package/src/ingest.ts +2293 -0
- package/src/json-position.ts +253 -0
- package/src/keyorder.ts +587 -0
- package/src/keys.ts +486 -0
- package/src/ladder.ts +121 -0
- package/src/mesh.ts +2382 -0
- package/src/meshcompare.ts +1188 -0
- package/src/meshquality.ts +2042 -0
- package/src/meshrasters.ts +944 -0
- package/src/meshreduce.ts +1425 -0
- package/src/model.ts +1245 -0
- package/src/motion.ts +809 -0
- package/src/nonfinite.ts +54 -0
- package/src/package_meta.ts +48 -0
- package/src/png.ts +297 -0
- package/src/pose.ts +2324 -0
- package/src/preview.ts +434 -0
- package/src/region_joins.ts +54 -0
- package/src/render.ts +1013 -0
- package/src/render_core.ts +871 -0
- package/src/render_shared.ts +2958 -0
- package/src/repack.ts +495 -0
- package/src/rig.ts +2941 -0
- package/src/slots.ts +892 -0
- package/src/spine_side.ts +138 -0
- package/src/timelines.ts +837 -0
- package/src/trackgen.ts +364 -0
- package/src/transform.ts +310 -0
- package/src/types.ts +1797 -0
- package/src/validate.ts +3875 -0
- package/tools/contact.ts +126 -0
- package/tools/editor_roundtrip.ts +1641 -0
- package/tools/font5x7.ts +101 -0
- package/tools/measure_contact_depth.ts +105 -0
- package/tools/plate.ts +508 -0
- package/tools/png_probe.mjs +72 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Prompting an AI to author with rigc
|
|
2
|
+
|
|
3
|
+
This page is for the person **operating** an AI agent — any AI agent — that will
|
|
4
|
+
author a rig with rigc. It is not authoring guidance; that is
|
|
5
|
+
[AUTHORING.md](AUTHORING.md), and the agent should read that file, not this one.
|
|
6
|
+
This page tells you what to put in the prompt, and it earns its claims from a
|
|
7
|
+
measured case: in August 2026 a deliberately small model — Gemini 3.7 Flash on
|
|
8
|
+
the Antigravity harness — authored a benchmark rung over a **3 h 01 m** session,
|
|
9
|
+
observed by the operator; the harness kept no tool transcript, so the run is
|
|
10
|
+
recorded **Unverified** on honesty, with two of its four tiers *unevidenced*
|
|
11
|
+
([the verdict](https://github.com/firejune/rigc/blob/main/docs/pilot/verdicts/2026-08-24-rung3-1.md)
|
|
12
|
+
states all of that). Every stumble below is one it actually made, priced by the instruments in
|
|
13
|
+
[PILOT.md](https://github.com/firejune/rigc/blob/main/docs/PILOT.md)'s protocol. A large model makes fewer of these mistakes
|
|
14
|
+
unprompted; the clauses cost you three lines and make the small model's run
|
|
15
|
+
land and the large model's run land cleaner.
|
|
16
|
+
|
|
17
|
+
## The prompt skeleton
|
|
18
|
+
|
|
19
|
+
For ordinary use (not a benchmark), the whole prompt is short:
|
|
20
|
+
|
|
21
|
+
> Author a Spine rig with rigc for <what you want>. The images are in
|
|
22
|
+
> `<dir>`. Read `docs/AUTHORING.md` in full before writing either spec —
|
|
23
|
+
> sections 1–5 are the two file formats and the failure map, section 8 is how
|
|
24
|
+
> to fit poses against picture references, section 10 is the editor's
|
|
25
|
+
> conventions. Build with `rigc build`, keep going until `rigc validate` is
|
|
26
|
+
> green, and treat every named failure as pointing at the file to change.
|
|
27
|
+
|
|
28
|
+
Then add the clauses below. If you are running the **benchmark**, do not
|
|
29
|
+
improvise a prompt at all — hand the agent
|
|
30
|
+
[pilot/rung3-runner-prompt.md](https://github.com/firejune/rigc/blob/main/docs/pilot/rung3-runner-prompt.md) verbatim; it
|
|
31
|
+
carries the honesty rule, and an improvised summary of that rule is how a run
|
|
32
|
+
stops being scorable.
|
|
33
|
+
|
|
34
|
+
## Six clauses the pilot paid for
|
|
35
|
+
|
|
36
|
+
**1. Any search loop must print progress and carry a time-box.**
|
|
37
|
+
The pilot wrote a pose-fitting script with no output and no bound, and its
|
|
38
|
+
operator spent part of the evening deciding whether a silent 99 %-CPU process
|
|
39
|
+
was working or hung. (It was working — but nobody could tell.) Say:
|
|
40
|
+
|
|
41
|
+
> Long-running scripts must print one progress line per unit of work and state
|
|
42
|
+
> an expected total up front. If a search would exceed ten minutes, stop and
|
|
43
|
+
> narrow it instead.
|
|
44
|
+
|
|
45
|
+
**2. Intermediate results go to files, not scrollback.**
|
|
46
|
+
The pilot's first fitters printed results to stdout; a crashed step would have
|
|
47
|
+
lost the lot. It later switched to JSON files on its own — start there. Say:
|
|
48
|
+
|
|
49
|
+
> Write measured values (placements, angles, fitted poses) to files in the
|
|
50
|
+
> working directory as you go. Treat your transcript as disposable.
|
|
51
|
+
|
|
52
|
+
**3. Point the fitting method at AUTHORING §8, by number.**
|
|
53
|
+
Given frames to match, the pilot's first instinct was a nested grid over every
|
|
54
|
+
knob at once — tens of thousands of renders per frame. §8 describes the cheap
|
|
55
|
+
loop (one knob at a time, render back, keep what the measurement keeps). The
|
|
56
|
+
pilot had the file "in hand" and did not apply the section until it had burned
|
|
57
|
+
hours. Say:
|
|
58
|
+
|
|
59
|
+
> Fit poses the way AUTHORING §8 does — one variable at a time against a
|
|
60
|
+
> render-back measurement. Do not grid-search several knobs jointly.
|
|
61
|
+
|
|
62
|
+
**4. Keys are structure, not samples.**
|
|
63
|
+
A fitter produces one pose per frame, and the pilot keyed nearly every one of
|
|
64
|
+
them. The result *placed* its parts well — and still scored poorly on every
|
|
65
|
+
timing measure, because animation data is sparse keys plus interpolation
|
|
66
|
+
(AUTHORING §10.3–§10.4), and a key on every frame is a pixel transcription
|
|
67
|
+
wearing a skeleton. Say:
|
|
68
|
+
|
|
69
|
+
> Key extremes and contacts, then let curves carry the in-betweens, per
|
|
70
|
+
> AUTHORING §10.3–10.4. If your fitted poses disagree with a curve, move the
|
|
71
|
+
> curve, not key count. Also §4.4: when a bone's two axes need different
|
|
72
|
+
> timing or easing, key the single-axis timelines, not the paired one.
|
|
73
|
+
|
|
74
|
+
**5. Keep the loop log live.**
|
|
75
|
+
The pilot wrote its `LOOP.md` at the end, from memory — two entries for a
|
|
76
|
+
three-hour session, with eight generations of fitting scripts invisible
|
|
77
|
+
between them. A log written afterwards records the story, not the work. Say:
|
|
78
|
+
|
|
79
|
+
> Append to `LOOP.md` at the moment each build/measure/change step happens,
|
|
80
|
+
> not at the end. One line per step is enough.
|
|
81
|
+
|
|
82
|
+
**6. Make the agent typecheck its own helper scripts.**
|
|
83
|
+
Bun strips types and runs, so an agent can call methods that do not exist and
|
|
84
|
+
watch the script fail — or worse, silently misbehave — without ever learning
|
|
85
|
+
the API was imagined. The pilot left behind a helper written against
|
|
86
|
+
spine-core methods that were never real; the repository's `typecheck` gate
|
|
87
|
+
caught it afterwards, hours too late to help the run. Say:
|
|
88
|
+
|
|
89
|
+
> After writing any helper script, run `bunx tsc --noEmit <file>` (or the
|
|
90
|
+
> project's `typecheck` task) before trusting its output.
|
|
91
|
+
|
|
92
|
+
## What you do not need to say
|
|
93
|
+
|
|
94
|
+
The same pilot, unprompted, did all of this correctly: it looped
|
|
95
|
+
`build → validate` until green and read the named failures as pointers; it ran
|
|
96
|
+
the whole thing without a human answer for three hours; it killed its own
|
|
97
|
+
stray processes; it recorded its model name honestly; and under the benchmark
|
|
98
|
+
protocol it ran the scored diff exactly once, at the end, editing nothing
|
|
99
|
+
after. The tool's own error surface carries that part of the conversation —
|
|
100
|
+
prompt for the six clauses above and then let the agent work.
|
|
101
|
+
|
|
102
|
+
## If you are scoring the run
|
|
103
|
+
|
|
104
|
+
That is a different document: [PILOT.md](https://github.com/firejune/rigc/blob/main/docs/PILOT.md) is the protocol,
|
|
105
|
+
`pilot/rung3-runner-prompt.md` is the exact prompt, and the evaluator sheet it
|
|
106
|
+
names is for the judge only. The one rule that reaches this page: **never put
|
|
107
|
+
baseline figures, reference structure, or previous runs' measures into the
|
|
108
|
+
runner's prompt** — a number in the prompt is a target, and a run that aimed
|
|
109
|
+
at a target measured nothing.
|