UI Styling
Ohh-889/skyroc
Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.
High-end visual design like a premium agency. An agent skill from EliasOulkadi/shokunin.
$ npx skills add EliasOulkadi/shokunin --skill taste-soft -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install EliasOulkadi/shokunin taste-soft --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.pack/skills/taste-soft .claude/skills/taste-soft && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "taste-soft" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/taste-soft into .claude/skills/taste-soft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste-soft", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/taste-softType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add EliasOulkadi/shokunin --skill taste-soft -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install EliasOulkadi/shokunin taste-soft --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.pack/skills/taste-soft .agents/skills/taste-soft && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "taste-soft" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/taste-soft into .agents/skills/taste-soft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste-soft", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add EliasOulkadi/shokunin --skill taste-soft -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install EliasOulkadi/shokunin taste-soft --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.pack/skills/taste-soft .cursor/skills/taste-soft && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "taste-soft" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/taste-soft into .cursor/skills/taste-soft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste-soft", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/EliasOulkadi/shokunin.git --path .pack/skills/taste-soft--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add EliasOulkadi/shokunin --skill taste-soft -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install EliasOulkadi/shokunin taste-soft --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.pack/skills/taste-soft .gemini/skills/taste-soft && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "taste-soft" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/taste-soft into .gemini/skills/taste-soft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste-soft", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install EliasOulkadi/shokunin taste-softInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add EliasOulkadi/shokunin --skill taste-soft -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.pack/skills/taste-soft .github/skills/taste-soft && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "taste-soft" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/taste-soft into .github/skills/taste-soft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste-soft", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add EliasOulkadi/shokunin --skill taste-soft -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install EliasOulkadi/shokunin taste-soft --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.pack/skills/taste-soft .opencode/skills/taste-soft && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "taste-soft" agent skill from https://github.com/EliasOulkadi/shokunin/tree/master/.pack/skills/taste-soft into .opencode/skills/taste-soft/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "taste-soft", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
taste-softHigh-end visual design like a premium agency. An agent skill from EliasOulkadi/shokunin.
Taste Soft is an agent skill from EliasOulkadi/shokunin. High-end visual design like a premium agency. Defines exact fonts, spacing, shadows, card structures, and animations that make a website feel expensive. Blocks common defaults that make AI designs look cheap or generic. Based on taste-skill by Leon Lin & blueemi, improved by shokunin.
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: opencode
It sits in Frontend & Design, covering UI design. The repository describes itself as: 職人 Shokunin 62 AI agent skills for OpenCode, Claude Code, Cursor, Windsurf. ChromaDB memory, MCP servers, declarative self-updates. Multi-model, open source, zero cost. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4c68e5b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
opencode
From compatibility in the SKILL.md frontmatter.
Taste Soft loads about 3.2k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 1,410 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from EliasOulkadi/shokunin at commit 4c68e5b, republished under its MIT licence (© EliasOulkadi). 1,410 words, ~3,245 tokens.
.claude/skills/taste-soft/SKILL.md (or your agent's skills folder).Engineering $150k+ agency-level digital experiences. Output must exude haptic depth, cinematic spatial rhythm, obsessive micro-interactions, and flawless fluid motion. NEVER generate the same layout twice. Combine different premium archetypes while adhering to elite "Apple-esque / Linear-tier" design language.
Based on: Apple Human Interface Guidelines, Linear Design, Stripe Design, Emil Kowalski (design engineering), Paul Lewis (compositor-only), Ahmad Shadeed (Container Queries), WCAG 2.2.
rgba(0,0,0,0.3). Use tinted, ultra-diffuse shadows.linear or ease-in-out. Instant state changes without interpolation.Select ONE combination per project to ensure unique output:
backdrop-blur-2xl + white/10 hairlines. Wide geometric Grotesk.opacity-[0.03]).col-span-8 row-span-2 next to stacked col-span-4). Mobile: Single column. All col-span overrides reset.-2deg or 3deg rotation. Mobile: Remove all rotations and negative margins. Stack vertically.w-1/2), interactive horizontal scrollable cards on right. Mobile: Full-width vertical stack.Universal Mobile Override: Any asymmetric layout ≥ md breakpoint MUST collapse to w-full px-4 py-8 below 768px. NEVER h-screen — always min-h-[100dvh].
bg-black/5), hairline border (ring-1 ring-black/5), padding p-1.5, large radius rounded-[2rem].shadow-[inset_0_1px_1px_rgba(255,255,255,0.15)]), mathematically calculated smaller radius rounded-[calc(2rem-0.375rem)].rounded-full, px-6 py-3).w-8 h-8 rounded-full bg-black/5), placed flush with button's right inner padding.py-24 to py-40 for sections. Breathe heavily.rounded-full px-3 py-1 text-[10px] uppercase tracking-[0.2em] font-medium) preceding major headings.All motion uses custom cubic-bezier (transition-all duration-700 ease-[cubic-bezier(0.32,0.72,0,1)]). Never linear or default ease-in-out.
mt-6 mx-auto w-max rounded-full).rotate-45 / -rotate-45), not just disappear.backdrop-blur-3xl bg-black/80.translate-y-12 opacity-0 → translate-y-0 opacity-100) with staggered delay (100ms, 150ms, 200ms).group utility. active:scale-[0.98] for physical press.group-hover:translate-x-1 group-hover:-translate-y-[1px] scale-105.translate-y-16 blur-md opacity-0 → translate-y-0 blur-0 opacity-100 over 800ms+.IntersectionObserver. NEVER window.addEventListener('scroll').transform + opacity. will-change: transform sparingly.position: fixed; pointer-events: none only.prefers-reduced-motion: Mandatory on every animation (shokunin improvement).py-24768px: single-columnmin-h-[100dvh] not h-screentransform + opacity only for animationsprefers-reduced-motion respectedPick exactly one Vibe Archetype and one Layout Archetype from Section 2 before writing any code. Document the selection so the entire build stays coherent:
Vibe: Ethereal Glass | Editorial Luxury | Soft Structuralism
Layout: Asymmetrical Bento | Z-Axis Cascade | Editorial SplitNever mix vibes. A page that blends Ethereal Glass gradients with Editorial Luxury serifs reads as confused, not premium.
Before writing any Tailwind class, review Section 1 "Absolute Zero" and remove all banned fonts, icons, borders, shadows, and motion defaults from the project scaffold. This is a blocking step — do not proceed until every banned item is replaced.
Follow the Double-Bezel architecture (Section 3). For every major section:
bg-black/5 ring-1 ring-black/5 rounded-[2rem] p-1.5)shadow-[inset_0_1px_1px_rgba(255,255,255,0.15)])Apply motion choreography (Section 4) to:
Overwrite every asymmetric layout rule at the md breakpoint (768px). All col-span values reset, all rotations removed, all negative margins zeroed. Use min-h-[100dvh] everywhere; never h-screen.
Run through the 12-item checklist (Section 6) before delivering. Every unchecked box is a regression from "$150k agency" to "template with nice fonts."
prefers-reduced-motion: reduceoutline: none without replacement)pointer-events: none and aria-hidden="true"| Cause | Fix |
|---|---|
| CSS grain texture causes layout shift or scroll jank | Grain must be position: fixed; pointer-events: none; z-index: [system layer]. Never apply grain to a scrolling container. |
| backdrop-blur causes GPU compositing failure on low-end devices | Limit blur to fixed/sticky elements only. Feature-detect with @supports (backdrop-filter: blur(1px)). Provide solid fallback background. |
| Double-Bezel nested radii don't align mathematically | Outer radius R, inner radius must be R - padding. If rounded-[2rem] and p-1.5 (24px), inner is rounded-[calc(2rem-1.5rem)]. Always use calc() to prevent drift. |
| Magnetic button jitters on rapid hover/unhover | Apply transition-transform duration-200 on the inner element only. Use will-change: transform on the button and remove it on animationend. |
| Z-Axis Cascade cards overlap incorrectly on Safari | Safari handles z-index in stacking contexts differently with transforms. Apply explicit z-index values (not auto) and transform-style: flat on the parent. |
| Scroll entry animations fire multiple times on fast scroll | Use IntersectionObserver with threshold: 0.1 and a once: true flag. Track animated elements in a WeakSet to prevent re-triggering. |
| Custom cubic-bezier feels sluggish on quick interactions | For interactive elements (buttons, toggles), use shorter duration: duration-200 ease-[cubic-bezier(0.32,0.72,0,1)]. Reserve duration-700 for scroll entries and page transitions only. |
| Pattern | Problem | Fix |
|---|---|---|
| Dropping the Double-Bezel on inner sections "for simplicity" | The page loses its signature depth. Cards become flat and generic. | Every major card/section gets the bezel. Only minor inline elements (tags, badges, tooltips) skip it. |
Using h-screen instead of min-h-[100dvh] | 100vh ignores mobile browser chrome (address bar), causing overflow and clipped content. | Always use min-h-[100dvh]. Dynamic viewport height compensates for browser UI. |
| Applying the same archetype combination to every project | The Creative Variance Engine exists to prevent repetition. Reusing the same vibe+layout produces indistinguishable output. | Track previously used combinations. Force new selection if the last 3 projects used the same archetype. |
| Omitting mobile overrides | Asymmetric bento and Z-axis cascade layouts break catastrophically below 768px. | Every col-span-* and rotation resets at md: breakpoint. Test at 375px width before delivery. |
| Linear or ease-in-out on any transition | These are explicitly banned in Section 1. Default easing reads as unpolished AI output. | Custom cubic-bezier with asymmetric curve on every transition. Interactive: duration-200. Scroll: duration-700. |
| Adding a fourth or fifth font to "make it unique" | Premium design uses 2 fonts max (heading + body). More fonts create visual noise and degrade performance. | Stick to 1-2 typefaces. Use weight, size, and letter-spacing for hierarchy instead of additional families. |
© EliasOulkadi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .pack/skills/taste-soft of EliasOulkadi/shokunin.
Open the folder on GitHubat commit 4c68e5b
Taste Soft next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Taste Soft this skillEliasOulkadi/shokunin | 114 | — | ~3.2k | Automated safety check: Pass | MIT | |
| UI StylingOhh-889/skyroc | 795 | 13 repos | ~2.5k | Automated safety check: Pass | MIT | |
| LobeHub Interactive Prototypelobehub/lobehub | 83k | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| Make Interfaces Feel Bettersamuelclay/NewsBlur | 7.6k | 10 repos | ~1.5k | Automated safety check: Pass | MIT | |
| UI UX Pro MaxZxBing0066/pixel-converter | 181 | 13 repos | ~2.6k | Automated safety check: Notes | BSD-2-Clause | |
| Design Dnazanwei/design-dna | 1.9k | 1 repos | ~2.1k | Automated safety check: Pass | MIT |
Ohh-889/skyroc
Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.
lobehub/lobehub
Builds single-file interactive HTML prototypes rendered with the real LobeHub UI components and written as production-style React, so they can later be split into files.
samuelclay/NewsBlur
Design engineering principles for making interfaces feel polished.
ZxBing0066/pixel-converter
UI/UX design intelligence with searchable database. An agent skill from ZxBing0066/pixel-converter.
zanwei/design-dna
Extract, define, and apply design DNA across three dimensions: design system (tokens), design style (qualitative feel), and visual effects (Canvas, WebGL, 3D, particles, shaders, scroll effects…
warpdotdev/warp
Turns a Figma frame or component into production code that matches the design, using the Figma MCP server and the project's own design system.
EliasOulkadi/shokunin
Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…
EliasOulkadi/shokunin
Build production-grade components for React, Vue 3, and Svelte 5 with all states (loading, empty, error, success, idle), TypeScript strict, WCAG 2.2 accessibility, server components (RSC), and…
EliasOulkadi/shokunin
PostgreSQL database administration — backup/restore (pgdump, PITR, WAL archiving), health monitoring (connections, bloat, cache hit ratio, dead tuples), connection pooling (PgBouncer), replication…
EliasOulkadi/shokunin
Design database schemas with Prisma/Drizzle, PostgreSQL index strategy (B-tree, GIN, GiST, BRIN, Hash), query optimization (EXPLAIN ANALYZE), migration safety (expand/contract, zero-downtime), and…
EliasOulkadi/shokunin
Optimize Docker images with multi-stage builds, distroless bases, BuildKit cache mounts, multi-arch builds, compose watch, security hardening (non-root, seccomp, capabilities drop), and…
EliasOulkadi/shokunin
Design error handling, structured logging, and observability with OpenTelemetry (traces, metrics, logs), error classification, recovery patterns (retry with jitter, circuit breaker, bulkhead…
Categories
High-end visual design like a premium agency. An agent skill from EliasOulkadi/shokunin. Taste Soft is an agent skill from EliasOulkadi/shokunin. High-end visual design like a premium agency.
Taste Soft fits situations like: tasks that involve UI design.
Run `npx skills add EliasOulkadi/shokunin --skill taste-soft -a claude-code`. Or copy the skill folder (.pack/skills/taste-soft in EliasOulkadi/shokunin) into .claude/skills/taste-soft in your project. Claude Code loads it when a task matches its description.
Run `npx skills add EliasOulkadi/shokunin --skill taste-soft -a codex`. Or copy the skill folder (.pack/skills/taste-soft in EliasOulkadi/shokunin) into .agents/skills/taste-soft in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add EliasOulkadi/shokunin --skill taste-soft -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/taste-soft, .gemini/skills/taste-soft, .github/skills/taste-soft and .opencode/skills/taste-soft in your project.
SKILL.md names no scripts, command-line tools or credentials: Taste Soft is instructions for the agent only. Compatibility (from SKILL.md): opencode.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Taste Soft is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Taste Soft: UI Styling (Ohh-889/skyroc, 795 stars), LobeHub Interactive Prototype (lobehub/lobehub, 83k stars), Make Interfaces Feel Better (samuelclay/NewsBlur, 7.6k stars) and UI UX Pro Max (ZxBing0066/pixel-converter, 181 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
EliasOulkadi (a GitHub user) maintains it in EliasOulkadi/shokunin, which has 114 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.
Source: EliasOulkadi/shokunin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.