{"slug":"rigc-face","title":"rigc-face","summary":"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","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-10-14T21:51:24.622488Z","repo":{"url":"https://github.com/rig-c/core","stars":14,"forks":2,"license":null,"updatedAt":"2026-10-14T21:50:41Z"},"bodyHtml":"<hr>\n<h2>name: rigc-face\ndescription: 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.\nlicense: MIT\ncompatibility: Requires Bun 1.2 or later and the npm package rig-c.</h2>\n<h1>Face — a turn, a gaze and a blink</h1>\n<p>Load this when the request is a <strong>head rather than a body</strong>: a drawn face that\nbreathes, blinks, moves its eyes and turns a few degrees off axis. Every rule below\nis owned by <a href=\"https://github.com/rig-c/core/blob/main/docs/FACE.md\">FACE.md</a>; this file says when to open it and what\nit will not do for you.</p>\n<p>\uD83D\uDCD6 <strong>A failure line ends with the command that prints its row of the guide</strong> —\n<code> (see rigc guide &lt;RULE&gt;)</code>. Run that command first, before reading anything else:\nit prints that rule's row of the shipped guide and nothing else. <code>rigc guide §&lt;n&gt;</code>\n(and <code>§&lt;n&gt;.&lt;m&gt;</code>, <code>§&lt;n&gt;.&lt;m&gt;.&lt;k&gt;</code>) prints the section's heading, own prose and\nsubsection index from <code>docs/AUTHORING.md</code>; add <code>--all</code> to include subsection\nbodies. A leaf prints its full text either way. Sizes describe full ledger spans;\n<code>--all</code> with a rule name is refused, exit 2. A compile error points at its stable\n<code>CE_</code> code row. <code>rigc guide §5.1.&lt;k&gt;</code> prints a numbered compile-error group of\nat most 30,000 UTF-8 bytes, and <code>rigc guide §5.1</code> prints the introduction and\nindex within that same limit; only legacy uncoded library errors point at <code>§5.1</code>.</p>\n<h2>Non-negotiables</h2>\n<ul>\n<li><strong>Validation is never bypassed.</strong> <code>build</code> writes nothing on a red gate, and there\nis no flag that changes that — AUTHORING §0.</li>\n<li><strong>The compiler never invents a value.</strong> A <code>deform</code> key states every vertex it\nmoves; the geometry a turn implies is evaluated by you and written into the spec,\nnever inferred by the compiler — AUTHORING §4 and FACE §1.</li>\n<li><strong>The validator's messages are the instructions.</strong> Read each named failure as the\npointer to the file that has to change — AUTHORING §5.</li>\n</ul>\n<h2>What this guide will not do</h2>\n<p>A <code>deform</code> key's own geometry is measured now.\n<code>A39_DEFORM_KEEPS_TRIANGLE_WINDING</code> refuses a key that folds a mesh inside out —\nper key, per interpolated span between two keys, per frame and per skin — and\nnames the reversed triangles with their signed areas. <code>invariants.deformMayFold</code>\nin the rig spec is the one declared exemption, so reach for it when the slot\nfolds on purpose and never to quiet a refusal you have not read. It is an\n<strong>archetype</strong> rule: a <code>--profile spine</code> build prints <code>PROF</code> for it and says\nnothing about the fold, so author under <code>--profile rig-play</code>.</p>\n<p>What <code>A39</code> still cannot say is whether the projection was the right one —\nnothing measures whether 12° was the angle the shot wanted. FACE §9.2 is that\ndemonstration, three builds with one of them refused, and §9.3 is the\ndifferential audit and the three limits it does not lift.</p>\n<h2>Read, in this order</h2>\n<ol>\n<li><a href=\"https://github.com/rig-c/core/blob/main/docs/AUTHORING.md\">AUTHORING.md</a> — the <code>deform</code> timeline field by field\nand what rigc refuses in it (§4), the failure map (§5–§6), the editor's\nconventions (§10).</li>\n<li><a href=\"https://github.com/rig-c/core/blob/main/docs/MOTION.md\">MOTION.md</a> — timing, easing and the offset table (§3),\ncandidates and the ballot (§4–§5). A blink and a gaze are ordinary motion work.</li>\n<li><a href=\"https://github.com/rig-c/core/blob/main/docs/FACE.md\">FACE.md</a> — the face's own geometry: the closed form every\nnumber in a turn comes from (§1), the hierarchy underneath (§3), what\nforeshortens (§5), and the deform audit gap (§9).</li>\n<li>Then <a href=\"https://github.com/rig-c/core/blob/main/docs/RIGGING.md\">RIGGING.md</a> for the hierarchy as a general rule\nrather than this closed form, and <a href=\"https://github.com/rig-c/core/blob/main/docs/INGEST.md\">INGEST.md</a> if the head\narrived as a compiled skeleton.</li>\n</ol>\n<p>Every guide linked here is in the installed package at <code>node_modules/rig-c/docs/</code>,\nwhich is the copy that matches the rigc you run; the links go to the repository's\n<code>main</code>. Inside the Claude Code plugin the same files are at <code>${CLAUDE_PLUGIN_ROOT}/docs/</code>.</p>\n<p>The install line and the build → validate → render → check loop are in the <code>rigc</code>\nskill.</p>\n","files":[{"path":"SKILL.md","sizeBytes":4508,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-14T21:51:31.589007Z","sha256":"0CD9ECA8F5A406BD3E1734E9925D36B24BFE80706B982656440BBD82700D6613","sizeBytes":2311},"review":null,"source":{"repositoryUrl":"https://github.com/rig-c/core","path":"skills/rigc-face","license":null,"commit":"844d2a10413aed8151c618392ea380cb5f43c6c3","subtreeSha":"8EDEBEFEAEB7A4D7DA5872005D34CBC6F3ACF08B11754098959AB679A840889E","lastSyncedAt":"2026-10-14T21:51:24.485663Z"},"reviewedAt":"2026-10-14T21:53:22.091557Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/rig-c/core/tree/main/skills/rigc-face"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install rig-c-core@llmmart"},{"target":"git","command":"git clone https://github.com/rig-c/core.git"}]}