by dembsky
Claude Code skill: make one 3D object perform in your SwiftUI app. SceneKit stages, baked choreography, hand-rolled physics, real shadows.
# Add to your Claude Code skills
git clone https://github.com/dembsky/PropMotionPropMotion is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by dembsky. Claude Code skill: make one 3D object perform in your SwiftUI app. SceneKit stages, baked choreography, hand-rolled physics, real shadows. It has 50 GitHub stars.
PropMotion's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/dembsky/PropMotion" and add it to your Claude Code skills directory (see the Installation section above).
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh PropMotion against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
A Claude Code skill for making 3D objects move well in SwiftUI apps.
Sometimes an app needs one 3D moment. A product spinning on a pedestal. An achievement badge that rolls in and thuds. A coin that drops when the user hits a goal. Not a game, not AR. One object that moves well.
SceneKit does all of this and sits in any SwiftUI layout, but the knowledge of how is scattered and half of it is undocumented. The docs tell you what an SCNNode is. They don't tell you that deferred shadows silently break under MSAA, or that the first frame of a fresh SCNView compiles shaders in the middle of your entrance animation. This skill is the missing manual, written for an agent.
All geometry from primitives in code, all motion baked keyframes with hand-rolled physics. No Unity, no Blender, no assets to license.
Two different problems, two different inputs. This is how the clip above was actually made.
Shape: show photos. The dumbbell started as two photos of two different dumbbells, from two angles. Same for the plate and the tire. An agent reads proportions off a reference far better than off adjectives: "a rubber dumbbell with a steel grip" gets you a generic guess, a photo gets you the thing in the photo. Two shots from different angles is enough; the skill makes the agent take real-world measurements off them before modeling anything.
Motion: write the script. The barbell scene got no pictures at all. Just a precise description of what happens and when: rolls in from the bottom, racks itself, plates slam on one by one, and at the end the whole rack tips over backward. The skill turns a description like that into a cue sheet before any code gets written, so the tighter your sequence, the closer the first take.
Iterate on what you see. A screenshot of what's wrong beats a paragraph about what's wrong. And when motion feels off and you can't say why, ask the agent to draw the path as a red line on the floor. One look usually settles whether the problem is the trajectory or the staging.
One SKILL.md the agent reads first, and ten reference files it pulls in when the task calls for them. Roughly:
The writing is opinionated because the alternatives were tried and looked worse on screen.
The quick way, from your project directory:
npx skills add dembsky/PropMotion
Or by hand for Claude Code: copy the scenekit-product-stages folder into
~/.claude/skills/, so the file lands at
~/.claude/skills/scenekit-product-stages/SKILL.md. That folder is the
skill; everything else in this repo is for you, not the agent.
Claude.ai: zip the scenekit-product-stages folder and upload it under
Settings > Capabilities > Skills.
Then ask for something concrete. "A coin that drops onto the table, bounces twice and settles" is a better first prompt than "add 3D".
evals.md has the scenarios I use to check the skill triggers when it
should and stays quiet when it shouldn't. Run them in a fresh session.
MIT. Take it, ship things with it.