genjutsu

All fifteen

The fifteen modules behind cast and paint, why they load on demand instead of all at once, and how the loader resolves them on each surface.

All documentation

Fifteen focused modules sit behind the two skills. They are internal: you never invoke one directly, and there is no /genjutsu:gsap. cast and paint decide which ones apply and load only those.

Why on demand

Context is finite, and most of these modules are irrelevant to any given project. A static site has no use for Metal shaders. A Compose app has no use for Framer Motion. Loading fifteen manuals every time would spend the context budget on material that will never be referenced, and dilute the material that will be.

So the loading rules are mechanical rather than clever:

  • Always: motion foundations.
  • By context: mobile principles when the target is mobile web or native iOS/Android; desktop principles when it is macOS or desktop web; the audit module when the scope is full or an audit was requested.
  • By stack: whatever the scan found. GSAP present means the GSAP module. Nothing present means the zero-dependency CSS module, because an existing choice is respected and a missing one is not invented.
  • By thesis: the advanced graphics modules for Apple and Android load only when the validated thesis actually calls for them. The trigger is lexical: words like shader, Metal, AGSL, Liquid Glass, colorEffect, Material 3 Expressive, displacement, holographic or CRT.

The four families

Foundations

Five modules. motion-principles loads on every single invocation and is the reason the output is consistent across stacks. design-audit closes every pipeline. ui-ux-pro-max carries the design-system dataset. mobile-principles and desktop-principles load by context.

Web

Five modules: css-native, gsap, framer-motion, threejs-r3f, canvas-generative. Selected from your dependencies, not from preference.

Apple

Two modules: swiftui-motion always, swiftui-graphics when the thesis is advanced. iOS and macOS are told apart during the scan, and the platform UX layer differs accordingly.

Android

Three modules: compose-motion always, compose-graphics when the thesis is advanced, compose-multiplatform when the Kotlin Multiplatform and Compose plugins are both present.

How the loader finds them

Worth knowing if an install ever misbehaves, because the resolution differs by surface.

On claude.ai with the single-bundle upload, the modules live inside the skill’s own directory, under _jutsu/. On claude.ai with each module uploaded separately, they are siblings under the skills mount. In Claude Code, they resolve from the installed plugin version’s directory, with a fallback that picks the newest installed version if the plugin root is not substituted.

If a module cannot be found, the loader warns and continues rather than failing. Losing one module degrades the output; aborting would waste the whole session. That is also the first thing to suspect if results feel unusually generic on claude.ai: a partial upload.