<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: milkc0de</title>
    <description>The latest articles on DEV Community by milkc0de (@milkc0de).</description>
    <link>https://dev.to/milkc0de</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4137388%2F581dcdb2-cc4f-4192-8a63-e70c6b966203.png</url>
      <title>DEV Community: milkc0de</title>
      <link>https://dev.to/milkc0de</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/milkc0de"/>
    <language>en</language>
    <item>
      <title>I built ChibiRigKit: turning a single character image into an animated 2D rig</title>
      <dc:creator>milkc0de</dc:creator>
      <pubDate>Tue, 22 Sep 2026 10:21:27 +0000</pubDate>
      <link>https://dev.to/milkc0de/i-built-chibirigkit-turning-a-single-character-image-into-an-animated-2d-rig-2j36</link>
      <guid>https://dev.to/milkc0de/i-built-chibirigkit-turning-a-single-character-image-into-an-animated-2d-rig-2j36</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;🎮 &lt;strong&gt;Try the interactive demo first:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://milkc0de.github.io/ChibiRigKit/" rel="noopener noreferrer"&gt;https://milkc0de.github.io/ChibiRigKit/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can play with the motion system, try the 9-direction head pose challenge, explore the AI-to-browser pipeline, and launch the actual generated ChibiRigKit browser rig.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this post, I'll explain how I built ChibiRigKit and why I designed AI as part of the &lt;strong&gt;creation pipeline&lt;/strong&gt;, rather than making it a runtime dependency.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;ChibiRigKit&lt;/strong&gt;, an open-source tool that turns a single character illustration into an animated 2D character.&lt;/p&gt;

&lt;p&gt;It can add things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;blinking&lt;/li&gt;
&lt;li&gt;eye movement&lt;/li&gt;
&lt;li&gt;random face movement&lt;/li&gt;
&lt;li&gt;head rotation&lt;/li&gt;
&lt;li&gt;hair and clothing motion&lt;/li&gt;
&lt;li&gt;background replacement&lt;/li&gt;
&lt;li&gt;WebM recording&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is available on GitHub under the MIT License:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/milkc0de/ChibiRigKit" rel="noopener noreferrer"&gt;https://github.com/milkc0de/ChibiRigKit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgxa1ppdrsg9183wcsfk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgxa1ppdrsg9183wcsfk.gif" alt="ChibiRigKit demo" width="640" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I found most interesting while building it was not simply using AI for image processing.&lt;/p&gt;

&lt;p&gt;The part I wanted to explore was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can AI handle the tedious creation process, while the finished character remains editable and runs without AI?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That became the main design idea behind ChibiRigKit.&lt;/p&gt;




&lt;h2&gt;
  
  
  The basic workflow
&lt;/h2&gt;

&lt;p&gt;The workflow looks roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;One character image
        ↓
AI-assisted preparation
        ↓
Separate parts and animation assets
        ↓
Generate an editable 2D rig
        ↓
Adjust it in the browser
        ↓
Export WebM / JSON / ZIP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A normal character illustration can be used as the starting point.&lt;/p&gt;

&lt;p&gt;During creation, ChibiRigKit prepares things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;face layers&lt;/li&gt;
&lt;li&gt;eyes&lt;/li&gt;
&lt;li&gt;pupils&lt;/li&gt;
&lt;li&gt;hair&lt;/li&gt;
&lt;li&gt;clothing&lt;/li&gt;
&lt;li&gt;face background layers&lt;/li&gt;
&lt;li&gt;closed-eye variants&lt;/li&gt;
&lt;li&gt;closed-mouth variants&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The generated character can then be opened in a browser and adjusted interactively.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI is used during creation, not at runtime
&lt;/h2&gt;

&lt;p&gt;This is probably my favorite part of the architecture.&lt;/p&gt;

&lt;p&gt;ChibiRigKit uses &lt;strong&gt;Codex CLI&lt;/strong&gt; during the automatic creation process.&lt;/p&gt;

&lt;p&gt;AI helps with tasks such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;analyzing the source image&lt;/li&gt;
&lt;li&gt;separating character parts&lt;/li&gt;
&lt;li&gt;creating missing visual information&lt;/li&gt;
&lt;li&gt;preparing expression variants&lt;/li&gt;
&lt;li&gt;adjusting positions&lt;/li&gt;
&lt;li&gt;validating the result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But once the character has been created, &lt;strong&gt;Codex is no longer required to play or adjust it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The generated character runs using regular browser technology.&lt;/p&gt;

&lt;p&gt;Conceptually, it looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Codex / AI
    ↓
creation pipeline

HTML + JavaScript + assets
    ↓
runtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I didn't want the finished character to depend on an AI service just to blink or move its head.&lt;/p&gt;

&lt;p&gt;That means the AI can change, disappear, become more expensive, or be unavailable, while an already-created character can still continue to work.&lt;/p&gt;

&lt;p&gt;For this project, AI is closer to a &lt;strong&gt;creation tool&lt;/strong&gt; than a runtime dependency.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why not fully automate everything?
&lt;/h2&gt;

&lt;p&gt;Because character illustrations are messy.&lt;/p&gt;

&lt;p&gt;Two images can have completely different structures.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bangs may cover the eyes&lt;/li&gt;
&lt;li&gt;accessories may overlap the hair&lt;/li&gt;
&lt;li&gt;hands may cover the face&lt;/li&gt;
&lt;li&gt;the character may be heavily stylized&lt;/li&gt;
&lt;li&gt;important parts may not exist in the original image because they are hidden&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even when AI gets 90% of the result right, I may still want to move one eye by a few pixels.&lt;/p&gt;

&lt;p&gt;So instead of treating manual correction as a failure, I designed it as part of the workflow.&lt;/p&gt;

&lt;p&gt;The idea is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI generates a good starting point
                +
human adjusts the final appearance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser UI exposes controls for the parts that are likely to need adjustment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Head movement without building a full 3D model
&lt;/h2&gt;

&lt;p&gt;One of the more difficult problems was head rotation.&lt;/p&gt;

&lt;p&gt;Simply rotating a flat head image works, but it quickly looks like exactly what it is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;a flat image being rotated.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I didn't want to reconstruct a complete 3D head either.&lt;/p&gt;

&lt;p&gt;ChibiRigKit instead uses &lt;strong&gt;nine reference face configurations&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;top-left     top     top-right

left        center      right

bottom-left bottom  bottom-right
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The animation interpolates between these configurations.&lt;/p&gt;

&lt;p&gt;Each direction can also be edited manually in the browser.&lt;/p&gt;

&lt;p&gt;This makes it possible to approximate changes in facial structure while keeping the character fundamentally 2D.&lt;/p&gt;

&lt;p&gt;The character is not secretly a full 3D model.&lt;/p&gt;

&lt;p&gt;It is still a 2D illustration, but with enough structural information to create a stronger sense of depth.&lt;/p&gt;




&lt;h2&gt;
  
  
  A shared head mesh
&lt;/h2&gt;

&lt;p&gt;The face, head outline, hair, and accessories can share a parent head mesh.&lt;/p&gt;

&lt;p&gt;The head rotates around the neck using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Yaw&lt;/strong&gt; — looking left/right&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pitch&lt;/strong&gt; — looking up/down&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Roll&lt;/strong&gt; — tilting the head&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside that larger movement, smaller components such as the eyes and mouth can still move independently.&lt;/p&gt;

&lt;p&gt;That separation turned out to be important.&lt;/p&gt;




&lt;h2&gt;
  
  
  Eyes, face, head, and hair shouldn't all move together
&lt;/h2&gt;

&lt;p&gt;Natural-looking idle animation is easier when different motion systems have different behavior.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Head      → slow movement
Face      → subtle movement
Eyes      → smaller, faster changes
Blinking  → independent timing
Hair      → delayed / softer motion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So ChibiRigKit lets these systems be adjusted separately.&lt;/p&gt;

&lt;p&gt;You can make a character whose head barely moves while their eyes move frequently, or do the opposite.&lt;/p&gt;

&lt;p&gt;The browser UI includes controls for motion amount, speed, eye movement, blinking, and head rotation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The browser became both the editor and the runtime
&lt;/h2&gt;

&lt;p&gt;I considered making a native GUI application.&lt;/p&gt;

&lt;p&gt;Instead, I ended up using the browser for both editing and playback.&lt;/p&gt;

&lt;p&gt;That turned out to be convenient for a few reasons.&lt;/p&gt;

&lt;h3&gt;
  
  
  UI is easy to build
&lt;/h3&gt;

&lt;p&gt;Sliders, checkboxes, file inputs, and live previews are straightforward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changes are visible immediately
&lt;/h3&gt;

&lt;p&gt;The editor and the renderer live in the same environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  The finished result is portable
&lt;/h3&gt;

&lt;p&gt;A generated character can contain files like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html
assets/
rig.project.json
motion.json
head-poses.json
background.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opening &lt;code&gt;index.html&lt;/code&gt; is enough to display the finished character.&lt;/p&gt;




&lt;h2&gt;
  
  
  Saving motion separately
&lt;/h2&gt;

&lt;p&gt;Motion settings can be exported as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motion.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Head pose adjustments are stored separately in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;head-poses.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Background configuration is also kept separately.&lt;/p&gt;

&lt;p&gt;So the project is roughly divided into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;character structure
+
motion configuration
+
head poses
+
background
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I like this better than baking every decision permanently into one generated file.&lt;/p&gt;

&lt;p&gt;The data remains editable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Exporting a finished character
&lt;/h2&gt;

&lt;p&gt;ChibiRigKit can export a ZIP containing the files needed to replay and adjust a finished character.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html
assets/
rig.project.json
motion.json
head-poses.json
background.json
README.txt
LICENSE.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is intentionally different from the original creation workspace.&lt;/p&gt;

&lt;p&gt;The exported ZIP contains the &lt;strong&gt;finished runtime character&lt;/strong&gt;, not all of the AI work history, masks, input material, or Python tooling used to create it.&lt;/p&gt;

&lt;p&gt;I wanted a clear separation between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;creation project
!=
finished artifact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Recording directly to WebM
&lt;/h2&gt;

&lt;p&gt;The browser UI can also record the animation directly as WebM.&lt;/p&gt;

&lt;p&gt;Recording duration can be set from 1 to 60 seconds.&lt;/p&gt;

&lt;p&gt;During recording, the interface shows progress such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Recording 12.3 / 30.0 seconds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The recording automatically stops when the selected duration is reached.&lt;/p&gt;

&lt;p&gt;Transparent backgrounds are also supported, although transparency support naturally depends on whatever software is used later to play or edit the video.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;ChibiRigKit currently expects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.12+&lt;/li&gt;
&lt;li&gt;Node.js 22+&lt;/li&gt;
&lt;li&gt;Codex CLI&lt;/li&gt;
&lt;li&gt;Google Chrome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On macOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sh SETUP.command
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then a character can be created with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sh AUTO_RIG.command &lt;span class="s2"&gt;"/Users/yourname/Pictures/character.png"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Linux / macOS with &lt;code&gt;sh&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sh AUTO_RIG.sh &lt;span class="s2"&gt;"/home/yourname/Pictures/character.png"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A PowerShell version is also included for Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\AUTO_RIG.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"C:\Users\yourname\Pictures\character.png"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Windows scripts are included, although the complete workflow has not yet been tested end-to-end on a Windows machine.&lt;/p&gt;

&lt;p&gt;Generated characters are placed under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;characters/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More detailed instructions are available in the repository README.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/milkc0de/ChibiRigKit" rel="noopener noreferrer"&gt;https://github.com/milkc0de/ChibiRigKit&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The interesting part: AI-generated intermediate representations
&lt;/h2&gt;

&lt;p&gt;While building this, I started thinking that one of the more useful ways to integrate AI into creative software is not:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prompt
↓
final output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but rather:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prompt / source material
        ↓
AI
        ↓
editable intermediate representation
        ↓
traditional tools
        ↓
human adjustment
        ↓
final output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For ChibiRigKit, that intermediate representation includes things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rig.project.json
motion.json
head-poses.json
assets/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because the AI produces structured, editable output instead of a single final image, both humans and normal software can continue working with it.&lt;/p&gt;

&lt;p&gt;That feels much more useful to me for creative workflows.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI doesn't need to replace the editor
&lt;/h2&gt;

&lt;p&gt;Another thing I learned from this project is that not every part of a workflow benefits from being controlled by AI.&lt;/p&gt;

&lt;p&gt;AI is useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;analyzing complicated visual input&lt;/li&gt;
&lt;li&gt;generating starting assets&lt;/li&gt;
&lt;li&gt;repetitive preparation work&lt;/li&gt;
&lt;li&gt;filling missing information&lt;/li&gt;
&lt;li&gt;trying multiple adjustments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But a person is still very good at answering questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this movement look cute?&lt;/li&gt;
&lt;li&gt;Is the hair moving too much?&lt;/li&gt;
&lt;li&gt;Should this eye be two pixels further left?&lt;/li&gt;
&lt;li&gt;Does this still look like the original character?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So ChibiRigKit intentionally returns control to a normal UI after the automated stage.&lt;/p&gt;

&lt;p&gt;I think this hybrid approach is more interesting than trying to make every interaction a prompt.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;There are still plenty of difficult cases.&lt;/p&gt;

&lt;p&gt;Complex hair, accessories, unusual poses, and heavily stylized characters can require manual correction.&lt;/p&gt;

&lt;p&gt;Large head rotations are also naturally limited by information that simply does not exist in the original 2D image.&lt;/p&gt;

&lt;p&gt;So I want to improve both sides of the system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;better automatic generation
+
easier manual correction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal isn't necessarily to eliminate human editing completely.&lt;/p&gt;

&lt;p&gt;It's to eliminate as much boring preparation work as possible.&lt;/p&gt;




&lt;h2&gt;
  
  
  Source code
&lt;/h2&gt;

&lt;p&gt;ChibiRigKit is open source under the MIT License.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/milkc0de/ChibiRigKit" rel="noopener noreferrer"&gt;https://github.com/milkc0de/ChibiRigKit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building it started as a simple attempt to make one illustration move.&lt;/p&gt;

&lt;p&gt;It ended up becoming an experiment in how AI can participate in a creative pipeline &lt;strong&gt;without becoming the entire pipeline&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And honestly, seeing a static character image start blinking, looking around, and moving its hair is still pretty fun. 🎀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
