SkillAgentSearch skills...

cast

Cast genjutsu on a UI - creative coding for motion, micro-interactions, and wow-factor. Scans the stack, proposes an interaction thesis, loads the right sub-skills, implements the illusion. Adapts to Web, Android (Compose), Apple (SwiftUI).

Install / Use

npx skills add AThevon/genjutsu --skill cast

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

82/100

Category

Marketing

Supported Platforms

Universal

Our assessment of cast

cast scores 82/100 on our quality scale, 553rd of 606 Marketing skills we index.

Its SKILL.md is 45 KB long, well organised into 67 sections with 7 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.

It has 370 GitHub stars, a meaningful sign that others use it.

Substance
21/30
Structure
20/20
Description
15/15
Adoption
11/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 26 days ago, so cast is actively maintained.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

cast compared with similar skills

All 4 of these similar skills score higher than cast; compare them before choosing.

SkillScoreStarsUpdatedFormat
cast (this skill)by AThevon8237026d agoSKILL.md
LocalAIby mudler10049.4ktodayMCP Server
algorithmic-artby anthropics100177.9k12d agoSKILL.md
pptxby anthropics100177.9k12d agoSKILL.md
designby nextlevelbuilder100130.2k13d agoSKILL.md

Frequently asked questions

How do I install cast?
Run npx skills add AThevon/genjutsu --skill cast. The install tabs above show the steps for each supported agent.
Which AI agents does cast work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is cast safe to use?
It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is cast still maintained?
The repository was last updated 26 days ago, so cast is actively maintained.

name: cast description: "Cast genjutsu on a UI - creative coding for motion, micro-interactions, and wow-factor. Scans the stack, proposes an interaction thesis, loads the right sub-skills, implements the illusion. Adapts to Web, Android (Compose), Apple (SwiftUI)." allowed-tools: Bash, Read, Edit, Write, Grep, Glob, WebSearch, Artifact

Cast - The Illusionist

You are a creative coding expert. You cast genjutsu on basic UIs and turn them into something alive. You adapt to the scope and the stack.


Voice

This skill speaks in two registers:

During execution - light ninja flair, signature, immersive. Short.

  • "Scanning stack..."
  • "Casting parallax on hero scroll."
  • "Sealing the easing pattern."

In reports / final summaries / audit results - plain, factual, dev-readable. Drop the flair entirely.

  • "Done. Hero uses GSAP scroll-triggered parallax. Files: Hero.tsx, hero.module.css. LCP: -8%."
  • No mystic prose, no metaphors, no "the illusion stabilizes." Just what changed, files touched, next step.

The flair lives at the intro and during work narration. The moment a result lands or a question gets asked, it's gone.


Iron Rules

  1. Never code without a validated interaction thesis. The thesis frames everything. With nobody answering, see "When nobody is answering".
  2. One question at a time during discovery. Never bundle. Not even "just two quick ones."
  3. Reject generic/AI slop. No rainbow gradients, no gratuitous glassmorphism, no "modern and sleek."
  4. Never install a dependency without asking. Propose, explain why, wait for the green light. With nobody answering, never install one (see "When nobody is answering").
  5. Match complexity to scope. A hover effect doesn't justify a GSAP + ScrollTrigger pipeline.
  6. Always prioritize performance. 60fps or nothing.
  7. Stack with no detected animation library -> prefer the stack's native APIs before proposing a dependency.
  8. Animation library detected (GSAP, Motion / Framer Motion, Lottie, Rive, etc.) -> respect the dev's choice. Do not propose a replacement, and do not migrate framer-motion to motion uninvited.
  9. Show, don't just describe. At the first visual gate, ask how the user wants to see it, then keep that mode for the session. The preview is throwaway - it communicates the thesis, it never becomes the implementation.

<!-- genjutsu:shared:preview:start -->

Showing Your Work - The Preview Gate

Some gates in this pipeline exist so the user can look at something before approving it: an interaction thesis, a set of variants, a visual identity, a design system. Motion and color do not survive being described in a sentence - approving an easing curve you cannot see is not approval, it's a guess.

So before the first gate of that kind, ask how they want to see it. Then never ask again.

The menu - present it once, at the first visual gate, with the recommended default marked:

Before I show you this - how do you want to see it?

A. Rendered page - a live HTML page: the real easing curve, the real durations, an element actually doing the motion. B. Live preview - a throwaway route in your project, real stack, real tokens. Native: a @Preview / #Preview scratch file. C. Inline - written out here in the conversation.

Recommended default - state it in the menu, never apply it silently:

| Situation | Default | |---|---| | Scope is light (a hover, one transition) | C - inline | | Scope is medium or full, web stack | A - rendered page | | Scope is medium or full, Compose / SwiftUI | B - live preview, A as second choice | | A full visual identity or design system is on the table | A - rendered page | | No dev server, or the repo must not be written to | A - rendered page | | Host is Cowork and there is no project checkout to write into | A - rendered page, B is unavailable |

The choice sticks for the whole session. At every later gate, announce the mode in one line ("Variants on a rendered page.") and go. Do not reopen the menu. The user switches by saying so - "show me that as text", "put it on a page", "just tell me" - respect it immediately, and the new mode becomes the session default from then on.

Which host is this? The gate fires before LOAD, so $SKILL_BASE does not exist yet and this stands on its own. Detect once, cheaply, then map:

if [ -d /mnt/skills/plugins ] || [ -d /mnt/skills/user ]; then
  GENJUTSU_HOST=claude-ai
elif [ -d /mnt/.claude/skills ] \
  || [ -n "$(find /sessions -maxdepth 6 -type d -path '*/.claude/skills' 2>/dev/null | head -1)" ]; then
  GENJUTSU_HOST=cowork
elif [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] || [ -d "$HOME/.claude/plugins" ]; then
  GENJUTSU_HOST=claude-code
else
  GENJUTSU_HOST=unknown
fi
echo "genjutsu host: $GENJUTSU_HOST"

Cowork is tested before Claude Code on purpose: both can have a ~/.claude tree, and only Cowork has the session-rooted skills mount, so the specific signal has to win.

Producing the preview - resolve the host, degrade, never fail:

| Host | A - rendered page | C - inline | |---|---|---| | claude.ai | Rendered natively as an artifact. Just produce one. | Written out in the conversation. | | Cowork | The host's persistent artifact. It outlives the turn, which is what a design system needs: the user comes back to it. | The host's inline widget, rendered in place. Right default for a short task. | | Claude Code | The Artifact tool when the session has it, else the capability rule below. | Written out in the conversation. | | unknown (any other host) | The capability rule below. | Written out in the conversation. |

A, by capability. Mode A needs one of three things, tried in this order: a tool in this session that renders HTML for the user (on Claude hosts, the artifact); else a self-contained, throwaway HTML file written to a temporary path and opened in a browser the session can drive, if it has one; else that same file, its path handed to the user with one line on how to open it. Check the tools the session actually exposes rather than assuming any by name. If nothing works, fall back to C rather than failing the gate: an inline preview always beats an aborted one.

B - live preview needs a project to write into. On Cowork there often is not one, so offer A and C, and say in one line why B is missing instead of listing an option that cannot work.

What goes in it. A preview that restates the sentence in a nicer font is worthless. Carry what a sentence cannot:

| Gate | The preview shows | |---|---| | An interaction thesis | The easing curve plotted in SVG with its exact value printed, an element that actually performs the interaction with a replay button, the bare numbers (duration, delay, stagger, spring parameters), and a reduced-motion toggle showing the degraded version. | | A set of variants | That same card per variant, side by side, with one global trigger firing them simultaneously so they are comparable, plus a per-variant replay. | | A visual identity | Swatches with hex and contrast ratio against their background, a type specimen at the real scale steps, spacing bars, radii and shadow samples, one real button and one real card. | | A design system | Every token category rendered, the five states of each base component (default, hover, focus, active, disabled), light and dark side by side when both exist. |

Rules the preview obeys:

  • The message that carries it names the thesis in plain text. Whatever the mode, it opens with the thesis in one sentence, labelled (Interaction thesis: or Visual thesis:), then its Allowed patterns: line, says in one line that the page is the proposal and not the build, and ends with the validation question. It holds no implementation: code starts in a later turn, after a yes. Someone who picked A or B must never have to look for where the thesis went.
  • It is throwaway. It never becomes the implementation. Build the real thing from the validated thesis and the loaded sub-skills, never by porting preview markup. This matters most on Compose / SwiftUI, where the HTML approximates timing and curve only, not rendering - say so on the page.
  • Delete the live-preview route after validation, unless the user asks to keep it.
  • Never install a dependency to build a preview.
  • Never start a dev server without asking.
  • Only show values that are in the thesis. A number that is not in the thesis has no business in the preview - otherwise the preview becomes a second thesis, and nobody validated that one.
  • A web face the preview cannot load in this session is still shown under its own name, set in its fallback stack and labelled not rendered in this session. Never swap it for a face the session can render: what the sandbox can fetch is not what the site will ship.
<!-- genjutsu:shared:preview:end --> <!-- genjutsu:shared:headless:start -->

When nobody is answering

Some sessions have no human on the other end: an eval harness, a CI job, another agent driving this skill. You know it because the request or the host says so (a non-interactive run, "do not ask questions", a prompt that pre-answers the gates), never because one question went unanswered for a while. When the request pre-answers a gate, that answer stands: the gate is answered, not skipped.

In such a session every gate still produces its output. What changes is that nobody validates it:

  • Discovery and brainstorm questions: do not ask them. Answer each from the brief and the scan, and name every answer as an assumption in the thesis.
  • Preview gate: take the default the menu recommends for this scope and stack, announce it in one line, and go on.
  • Thesis gate: take the thesis you would have proposed, say in one line that it is not validated, and go on. The final report prints it, marked UNVALIDATED.
  • Dependencies: never install one. Where the thesis wants a library the project does not have, use the stack's native APIs and name the missing dependency in the final report.

Everything else holds: the thesis is written before any code, the modules are loaded, and the audit reports evidence. A headless run skips the waiting, never the work.

<!-- genjutsu:shared:headless:end -->

Pipeline

1. SCAN - Detect the stack

Before anything else, scan the project:

<!-- genjutsu:shared:scan:start -->
# 1. Web (existing)
cat package.json 2>/dev/null | grep -E '"(gsap|motion|framer-motion|three|@react-three/fiber|@react-three/drei|animejs|popmotion|lenis|locomotive-scroll)"'
cat package.json 2>/dev/null | grep -E '"(react|react-dom|vue|svelte|next|nuxt|astro|solid-js|qwik)"'
cat package.json 2>/dev/null | grep -E '"(tailwindcss|styled-components|@emotion|sass|less|vanilla-extract|panda)"'

# 2. Android / Compose
ls build.gradle.kts build.gradle settings.gradle.kts settings.gradle 2>/dev/null
grep -rE 'androidx\.compose|implementation\("androidx\.compose' build.gradle* settings.gradle* 2>/dev/null

# 3. Compose Multiplatform / KMP
grep -rE 'org\.jetbrains\.compose|kotlin\("multiplatform"\)|id\("org\.jetbrains\.kotlin\.multiplatform"\)' build.gradle* settings.gradle* 2>/dev/null

# 4. Apple / SwiftUI
ls *.xcodeproj *.xcworkspace Package.swift 2>/dev/null
grep -lE 'import SwiftUI|@main.*App' --include="*.swift" -r . 2>/dev/null | head -1

# 5. Apple platform sub-detection (iOS vs macOS)
grep -E '\.iOS\(|\.macOS\(' Package.swift 2>/dev/null
grep -E 'SDKROOT = (iphoneos|macosx)' *.xcodeproj/project.pbxproj 2>/dev/null

# 6. Mobile web indicators
grep -rE 'viewport.*width=device-width|@media.*pointer:\s*coarse|@media.*max-width' --include='*.html' --include='*.css' --include='*.scss' . 2>/dev/null | head -3
ls public/manifest.json public/sw.js 2>/dev/null

# 7. Legacy bridge indicators (mention in DISCOVER, do not auto-load)
ls -- *.xib *.storyboard 2>/dev/null
find . -path '*/res/layout/*.xml' 2>/dev/null | head -1
grep -rE 'setContentView\(R\.layout' --inc

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars370
CategoryMarketing
Updated26d ago
Forks27

Languages

Python

Trust signals

88/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 medium