rig-c 0.0.0-stage → 2.21.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.
Files changed (213) hide show
  1. package/.claude-plugin/marketplace.json +19 -0
  2. package/.claude-plugin/plugin.json +13 -0
  3. package/LICENSE +30 -0
  4. package/NOTICE.md +145 -0
  5. package/README.md +817 -3
  6. package/bin/rigc.cjs +83 -0
  7. package/cli.ts +61 -0
  8. package/cli_core.ts +46 -0
  9. package/docs/AUTHORING.md +9923 -0
  10. package/docs/FACE.md +1948 -0
  11. package/docs/INGEST.md +1488 -0
  12. package/docs/MOTION.md +1241 -0
  13. package/docs/PROMPTING.md +109 -0
  14. package/docs/RIGGING.md +1441 -0
  15. package/docs/SPEC_COVERAGE.md +357 -0
  16. package/package.json +108 -4
  17. package/skills/rigc/SKILL.md +133 -0
  18. package/skills/rigc-face/SKILL.md +60 -0
  19. package/skills/rigc-ingest/SKILL.md +78 -0
  20. package/skills/rigc-motion/SKILL.md +51 -0
  21. package/skills/rigc-rigging/SKILL.md +49 -0
  22. package/src/areaband.ts +159 -0
  23. package/src/assertions/bodies/a01.ts +23 -0
  24. package/src/assertions/bodies/a02.ts +21 -0
  25. package/src/assertions/bodies/a03.ts +27 -0
  26. package/src/assertions/bodies/a04.ts +40 -0
  27. package/src/assertions/bodies/a05.ts +56 -0
  28. package/src/assertions/bodies/a06.ts +245 -0
  29. package/src/assertions/bodies/a07.ts +68 -0
  30. package/src/assertions/bodies/a08.ts +76 -0
  31. package/src/assertions/bodies/a09.ts +82 -0
  32. package/src/assertions/bodies/a10.ts +116 -0
  33. package/src/assertions/bodies/a11.ts +15 -0
  34. package/src/assertions/bodies/a12.ts +30 -0
  35. package/src/assertions/bodies/a13.ts +51 -0
  36. package/src/assertions/bodies/a14.ts +35 -0
  37. package/src/assertions/bodies/a15.ts +97 -0
  38. package/src/assertions/bodies/a16.ts +24 -0
  39. package/src/assertions/bodies/a17.ts +26 -0
  40. package/src/assertions/bodies/a18.ts +62 -0
  41. package/src/assertions/bodies/a19.ts +404 -0
  42. package/src/assertions/bodies/a20.ts +122 -0
  43. package/src/assertions/bodies/a21.ts +190 -0
  44. package/src/assertions/bodies/a22.ts +39 -0
  45. package/src/assertions/bodies/a23.ts +305 -0
  46. package/src/assertions/bodies/a24.ts +68 -0
  47. package/src/assertions/bodies/a25.ts +39 -0
  48. package/src/assertions/bodies/a26.ts +61 -0
  49. package/src/assertions/bodies/a27.ts +33 -0
  50. package/src/assertions/bodies/a28.ts +70 -0
  51. package/src/assertions/bodies/a29.ts +34 -0
  52. package/src/assertions/bodies/a30.ts +50 -0
  53. package/src/assertions/bodies/a31.ts +61 -0
  54. package/src/assertions/bodies/a32.ts +44 -0
  55. package/src/assertions/bodies/a33.ts +110 -0
  56. package/src/assertions/bodies/a34.ts +133 -0
  57. package/src/assertions/bodies/a35.ts +160 -0
  58. package/src/assertions/bodies/a36.ts +81 -0
  59. package/src/assertions/bodies/a37.ts +77 -0
  60. package/src/assertions/bodies/a38.ts +73 -0
  61. package/src/assertions/bodies/a39.ts +303 -0
  62. package/src/assertions/bodies/a40.ts +128 -0
  63. package/src/assertions/bodies/a42.ts +97 -0
  64. package/src/assertions/bodies/a43.ts +181 -0
  65. package/src/assertions/bodies/a44.ts +23 -0
  66. package/src/assertions/bodies/a45.ts +172 -0
  67. package/src/assertions/bodies/a46.ts +224 -0
  68. package/src/assertions/bodies/a47.ts +126 -0
  69. package/src/assertions/bodies/a48.ts +83 -0
  70. package/src/assertions/bodies/a49.ts +81 -0
  71. package/src/assertions/bodies/a50.ts +97 -0
  72. package/src/assertions/constraint_words.ts +169 -0
  73. package/src/assertions/emitted/index.ts +148 -0
  74. package/src/assertions/facts/animated_bones.ts +30 -0
  75. package/src/assertions/facts/animation_durations.ts +37 -0
  76. package/src/assertions/facts/atlas_pages.ts +19 -0
  77. package/src/assertions/facts/atlas_regions.ts +52 -0
  78. package/src/assertions/facts/bone_timelines.ts +37 -0
  79. package/src/assertions/facts/constraint_targets.ts +56 -0
  80. package/src/assertions/facts/constraints.ts +155 -0
  81. package/src/assertions/facts/deform_survey.ts +27 -0
  82. package/src/assertions/facts/event_keys.ts +55 -0
  83. package/src/assertions/facts/linked_meshes.ts +38 -0
  84. package/src/assertions/facts/mesh_attachments.ts +100 -0
  85. package/src/assertions/facts/region_joins.ts +34 -0
  86. package/src/assertions/facts/sequences.ts +85 -0
  87. package/src/assertions/facts/skeleton_roster.ts +45 -0
  88. package/src/assertions/facts/skin_entries.ts +37 -0
  89. package/src/assertions/facts/skin_members.ts +53 -0
  90. package/src/assertions/facts/slider_composition.ts +78 -0
  91. package/src/assertions/facts/slot_colour.ts +43 -0
  92. package/src/assertions/facts/stage.ts +27 -0
  93. package/src/assertions/facts/stage_box.ts +65 -0
  94. package/src/assertions/facts/stepped_poses.ts +74 -0
  95. package/src/assertions/facts/two_colour.ts +52 -0
  96. package/src/assertions/facts/vertex_polygons.ts +53 -0
  97. package/src/assertions/footprints.ts +367 -0
  98. package/src/assertions/harness.ts +109 -0
  99. package/src/assertions/inward_advance.ts +58 -0
  100. package/src/assertions/kinds.ts +105 -0
  101. package/src/assertions/mesh_kinds.ts +56 -0
  102. package/src/assertions/model/animated_bones.ts +38 -0
  103. package/src/assertions/model/animation_durations.ts +57 -0
  104. package/src/assertions/model/atlas_pages.ts +15 -0
  105. package/src/assertions/model/atlas_regions.ts +76 -0
  106. package/src/assertions/model/bone_timelines.ts +58 -0
  107. package/src/assertions/model/constraint_targets.ts +82 -0
  108. package/src/assertions/model/constraints.ts +233 -0
  109. package/src/assertions/model/declared.ts +125 -0
  110. package/src/assertions/model/deform_survey.ts +24 -0
  111. package/src/assertions/model/event_keys.ts +45 -0
  112. package/src/assertions/model/given.ts +45 -0
  113. package/src/assertions/model/index.ts +398 -0
  114. package/src/assertions/model/linked_meshes.ts +24 -0
  115. package/src/assertions/model/mesh_attachments.ts +119 -0
  116. package/src/assertions/model/parse.ts +146 -0
  117. package/src/assertions/model/region_joins.ts +67 -0
  118. package/src/assertions/model/runtime_timelines.ts +78 -0
  119. package/src/assertions/model/sequences.ts +157 -0
  120. package/src/assertions/model/skeleton_roster.ts +23 -0
  121. package/src/assertions/model/skin_entries.ts +69 -0
  122. package/src/assertions/model/skin_members.ts +64 -0
  123. package/src/assertions/model/slider_composition.ts +193 -0
  124. package/src/assertions/model/slot_colour.ts +81 -0
  125. package/src/assertions/model/stage.ts +28 -0
  126. package/src/assertions/model/stage_box.ts +51 -0
  127. package/src/assertions/model/stepped_poses.ts +105 -0
  128. package/src/assertions/model/two_colour.ts +61 -0
  129. package/src/assertions/model/vertex_polygons.ts +72 -0
  130. package/src/assertions/reasons.ts +129 -0
  131. package/src/assertions/region_lookups.ts +61 -0
  132. package/src/assertions/report.ts +189 -0
  133. package/src/assertions/values.ts +39 -0
  134. package/src/atlas.ts +2870 -0
  135. package/src/ballot.ts +866 -0
  136. package/src/bonedist.ts +643 -0
  137. package/src/chainfit.ts +2752 -0
  138. package/src/chains.ts +170 -0
  139. package/src/check.ts +4303 -0
  140. package/src/checkpics.ts +295 -0
  141. package/src/cli/core_commands.ts +1627 -0
  142. package/src/cli/repack.ts +414 -0
  143. package/src/cli/shared.ts +2776 -0
  144. package/src/cli/spine_commands.ts +820 -0
  145. package/src/compile.ts +9414 -0
  146. package/src/core/additive.ts +458 -0
  147. package/src/core/animation.ts +1050 -0
  148. package/src/core/clipping.ts +696 -0
  149. package/src/core/constraints.ts +1876 -0
  150. package/src/core/constraints_path.ts +964 -0
  151. package/src/core/constraints_physics.ts +881 -0
  152. package/src/core/constraints_slider.ts +635 -0
  153. package/src/core/deform.ts +613 -0
  154. package/src/core/draw_order.ts +125 -0
  155. package/src/core/events.ts +135 -0
  156. package/src/core/hooks.ts +249 -0
  157. package/src/core/index.ts +1400 -0
  158. package/src/core/raw.ts +739 -0
  159. package/src/core/skins.ts +129 -0
  160. package/src/core/uvs.ts +469 -0
  161. package/src/core/vertices.ts +490 -0
  162. package/src/core/walk.ts +197 -0
  163. package/src/core/world.ts +289 -0
  164. package/src/correspondence.ts +15 -0
  165. package/src/deformbuild.ts +60 -0
  166. package/src/deformgen.ts +630 -0
  167. package/src/deformmeasure.ts +732 -0
  168. package/src/deformreport.ts +373 -0
  169. package/src/deformstructure.ts +386 -0
  170. package/src/deformsurvey.ts +2162 -0
  171. package/src/depth.ts +784 -0
  172. package/src/diff.ts +2252 -0
  173. package/src/emit.ts +134 -0
  174. package/src/emit_spine.ts +854 -0
  175. package/src/errors.ts +53 -0
  176. package/src/framing.ts +819 -0
  177. package/src/generation.ts +139 -0
  178. package/src/ingest.ts +2293 -0
  179. package/src/json-position.ts +253 -0
  180. package/src/keyorder.ts +587 -0
  181. package/src/keys.ts +486 -0
  182. package/src/ladder.ts +121 -0
  183. package/src/mesh.ts +2382 -0
  184. package/src/meshcompare.ts +1191 -0
  185. package/src/meshquality.ts +2051 -0
  186. package/src/meshrasters.ts +944 -0
  187. package/src/meshreduce.ts +1444 -0
  188. package/src/model.ts +1245 -0
  189. package/src/motion.ts +809 -0
  190. package/src/nonfinite.ts +54 -0
  191. package/src/package_meta.ts +48 -0
  192. package/src/png.ts +297 -0
  193. package/src/pose.ts +2324 -0
  194. package/src/preview.ts +434 -0
  195. package/src/region_joins.ts +54 -0
  196. package/src/render.ts +1013 -0
  197. package/src/render_core.ts +871 -0
  198. package/src/render_shared.ts +2958 -0
  199. package/src/repack.ts +495 -0
  200. package/src/rig.ts +2941 -0
  201. package/src/slots.ts +892 -0
  202. package/src/spine_side.ts +138 -0
  203. package/src/timelines.ts +837 -0
  204. package/src/trackgen.ts +364 -0
  205. package/src/transform.ts +310 -0
  206. package/src/types.ts +1797 -0
  207. package/src/validate.ts +3875 -0
  208. package/tools/contact.ts +126 -0
  209. package/tools/editor_roundtrip.ts +1641 -0
  210. package/tools/font5x7.ts +101 -0
  211. package/tools/measure_contact_depth.ts +105 -0
  212. package/tools/plate.ts +508 -0
  213. 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.