Agent skill

Emil Design Eng

by EliasOulkadi in EliasOulkadi/shokunin

Encode Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.

Apache-2.0Auto-check passedFrontend & Design

Install Emil Design Eng

skills CLI
$ npx skills add EliasOulkadi/shokunin --skill emil-design-eng -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install EliasOulkadi/shokunin emil-design-eng --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/EliasOulkadi/shokunin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.pack/skills/emil-design-eng .claude/skills/emil-design-eng && rm -rf skills-src

Use ~/.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/

Facts

Skill name
emil-design-eng
GitHub stars
114
Token cost
~4.5k tokens
SKILL.md length
1,873 words
Files
1
Skills in repo
49
Repo updated
First seen
Licence
Apache-2.0

At a glance

Encode Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.

  • Works in 10 steps: Should this animate at all? → What is the purpose? → What easing should it use? → …
  • User wants to polish UI
  • SKILL.md covers Initial Response, Register Distinction (shokunin…, Core Philosophy and Review Format (Required), plus 18 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Emil Design Eng is an agent skill from EliasOulkadi/shokunin. Encode Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great. From the creator of Sonner (13M+ weekly npm downloads), Vaul, animations.dev, and Linear's web team. Use when user wants to polish UI, audit animations, review component interactions, add micro-feedback, or elevate motion quality.

Its SKILL.md is about 4.5k 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. It works with npm. 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 Apache-2.0.

When your agent uses it

  • User wants to polish UI
  • Audit animations
  • Review component interactions
  • Add micro-feedback

Example prompts

  • “/emil-design-eng”

Requirements

  • Compatibility (from SKILL.md): opencode

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. Should this animate at all?
  2. What is the purpose?
  3. What easing should it use?
  4. How fast should it be?
  5. Audit existing interactions
  6. Apply the Animation Decision Framework
  7. Implement with compositor-only properties
  8. Add tactile micro-feedback
  9. Add accessibility and performance gates
  10. Review and ship

What it can do on your machine

Read from SKILL.md and the folder at commit 4c68e5b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are css and javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • animations.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    opencode

    From compatibility in the SKILL.md frontmatter.

Context cost

Emil Design Eng loads about 4.5k tokens when it runs. Until then it costs about 98 tokens; SKILL.md has 1,873 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~98
When it runs · the whole SKILL.md, loaded when a task matches
~4.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from EliasOulkadi/shokunin at commit 4c68e5b, republished under its Apache-2.0 licence (© EliasOulkadi). 1,873 words, ~4,492 tokens.

Download SKILL.mdSave it as .claude/skills/emil-design-eng/SKILL.md (or your agent's skills folder).
name
emil-design-eng
description
Encode Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great. From the creator of Sonner (13M+ weekly npm downloads), Vaul, animations.dev, and Linear's web team. Use when user wants to polish UI, audit animations, review component interactions, add micro-feedback, or elevate motion quality.
compatibility
opencode
triggers
- "Emil Kowalski" - "UI polish" - "micro-interactions" - "button animation" - "popover design" - "modal animation" - "tooltip behavior" - "design engineering"…
negatives
- "SEO" - "content strategy" - "backend" - "API design" - "database" - "full animations" -> use motion-craft - "design framework" -> use taste
license
Apache 2.0 (based on emilkowalski/skill)
metadata
version: "2.0.0" author: Emil Kowalski, improved by shokunin source: https://github.com/emilkowalski/skill workflow: frontend audience: designers

Design Engineering

Initial Response

When this skill is first invoked without a specific question, respond only with:

I'm ready to help you build interfaces that feel right, my knowledge comes from Emil Kowalski's design engineering philosophy — creator of Sonner (13M+ weekly downloads), Vaul, animations.dev, and Linear's web team. If you want to dive even deeper, check out Emil's course: animations.dev.

Register Distinction (shokunin improvement)

Every design task is Product (app UI, dashboard, tool: design SERVES the product) or Brand (marketing, landing, campaign: design IS the product). Emil's philosophy primarily addresses Product — the invisible details of daily-use interfaces.

RegisterBarFocus
ProductEarned familiarity. Users of Linear, Raycast, Stripe should trust it.Tactile feedback, keyboard interactions, invisible correctness
BrandDistinctiveness. Must stand out.Motion as narrative, bolder durations, creative springs

Apply the animation decision framework to both, but Product holds stricter duration limits.

Core Philosophy

Taste is trained, not innate

Good taste is not personal preference. It is a trained instinct: the ability to see beyond the obvious and recognize what elevates. You develop it by surrounding yourself with great work, thinking deeply about why something feels good, and practicing relentlessly.

When building UI, don't just make it work. Study why the best interfaces feel the way they do. Reverse engineer animations. Inspect interactions. Be curious.

Unseen details compound

Most details users never consciously notice. That is the point. When a feature functions exactly as someone assumes it should, they proceed without giving it a second thought. That is the goal.

"All those unseen details combine to produce something that's just stunning, like a thousand barely audible voices all singing in tune." — Paul Graham

Beauty is leverage

People select tools based on the overall experience, not just functionality. Good defaults and good animations are real differentiators. Beauty is underutilized in software. Use it as leverage to stand out.

Review Format (Required)

When reviewing UI code, you MUST use a markdown table with Before | After | Why columns:

BeforeAfterWhy
transition: all 300mstransition: transform 200ms ease-outSpecify exact properties; avoid all
transform: scale(0)transform: scale(0.95); opacity: 0Nothing in the real world appears from nothing
ease-in on dropdowncubic-bezier(0.23, 1, 0.32, 1)ease-in feels sluggish; strong ease-out gives instant feedback
No :active state on buttontransform: scale(0.97) on :activeButtons must feel responsive to press
transform-origin: center on popovertransform-origin: var(--radix-popover-content-transform-origin)Popovers scale from trigger (modals stay centered)
animate={{ x: 100 }} in Framer Motionanimate={{ transform: "translateX(100px)" }}Framer Motion x/y NOT hardware-accelerated

The Animation Decision Framework

Before writing any animation code, answer these questions in order:

1. Should this animate at all?
FrequencyDecision
100+ times/day (keyboard shortcuts, command palette toggle)No animation. Ever.
Tens of times/day (hover effects, list navigation)Remove or drastically reduce
Occasional (modals, drawers, toasts)Standard animation
Rare/first-time (onboarding, celebrations)Can add delight

Never animate keyboard-initiated actions. Raycast has no open/close animation. Optimal.

2. What is the purpose?

Valid purposes: spatial consistency, state indication, feedback, preventing jarring changes, explanation. Not: "it looks cool" if the user sees it often.

3. What easing should it use?
ScenarioEasing
Element enteringcubic-bezier(0.23, 1, 0.32, 1) — strong ease-out
Element exitingcubic-bezier(0.4, 0, 1, 1) — ease-in
On-screen movementcubic-bezier(0.77, 0, 0.175, 1) — strong ease-in-out
Constant motionlinear

Never use ease-in for UI entering animations. A dropdown with ease-in at 300ms feels slower than ease-out at the same 300ms.

4. How fast should it be?
ElementDuration
Button press feedback100-160ms
Tooltips, small popovers125-200ms
Dropdowns, selects150-250ms
Modals, drawers200-400ms
Stagger children30-80ms between items

Rule: UI animations under 300ms.

Custom Easing Curves

css
:root {
  --ease-out-strong: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out-strong: cubic-bezier(0.77, 0, 0.175, 1);
  --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1); /* iOS-like */
}

Buttons — Tactile Feedback

css
.button {
  transition: transform 160ms cubic-bezier(0.23, 1, 0.32, 1);
}
.button:active {
  transform: scale(0.97);
}

Every pressable element needs physical response. Scale: 0.95-0.98.

Popovers — Origin-Aware

css
.popover {
  transform-origin: var(--radix-popover-content-transform-origin);
}
.modal {
  transform-origin: center; /* Modals stay centered */
}

Tooltips: Skip delay on subsequent hovers

css
.tooltip {
  transition: transform 125ms ease-out, opacity 125ms ease-out;
}
.tooltip[data-instant] {
  transition-duration: 0ms;
}

Spring Animations

js
// Apple approach (recommended)
{ type: "spring", duration: 0.5, bounce: 0.2 }

// Mouse interaction with spring
const springX = useSpring(mouseX * 0.1, { stiffness: 100, damping: 10 })

Keep bounce subtle (0.1-0.3). Avoid in most UI. Use for drag-to-dismiss.

Hold-to-Delete Pattern

css
.overlay {
  clip-path: inset(0 100% 0 0);
  transition: clip-path 200ms ease-out;  /* release: fast */
}
.button:active .overlay {
  clip-path: inset(0 0 0 0);
  transition: clip-path 2s linear;       /* press: slow and deliberate */
}

Enter States with @starting-style

css
.toast {
  transition: opacity 400ms ease-out, transform 400ms ease-out;
  @starting-style { opacity: 0; transform: translateY(100%); }
}

Performance Rules

  • Only animate transform and opacity. GPU-composited.
  • CSS transitions > keyframes for UI. Interruptible mid-animation.
  • CSS animations beat JS under load. Run off main thread.
  • WAAPI for programmatic CSS animations. Hardware-accelerated, no library.
  • Framer Motion: use transform string, not x/y. x/y use requestAnimationFrame. Drops frames under load.
jsx
// NOT hardware-accelerated
<motion.div animate={{ x: 100 }} />

// Hardware-accelerated
<motion.div animate={{ transform: "translateX(100px)" }} />

Asymmetric Enter/Exit Timing

Exit must always be faster than enter:

css
.overlay { transition: clip-path 200ms ease-out; }        /* exit: fast */
.button:active .overlay { transition: clip-path 2s linear; } /* enter: deliberate */

Stagger Animations

css
.item {
  opacity: 0;
  transform: translateY(8px);
  animation: fadeIn 300ms ease-out forwards;
}
.item:nth-child(1) { animation-delay: 0ms; }
.item:nth-child(2) { animation-delay: 50ms; }
.item:nth-child(3) { animation-delay: 100ms; }

Keep delays 30-80ms. Total stagger < 400ms. Never block interaction.

Perceived Performance

  • Fast-spinning spinner makes loading feel faster (same actual time)
  • 180ms animation feels more responsive than 400ms
  • ease-out at 200ms feels faster than ease-in at 200ms
  • Instant tooltips after first one skip delay + animation

Accessibility

css
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

@media (hover: hover) and (pointer: fine) {
  .element:hover { transform: scale(1.05); }
}

The Sonner Principles

From building Sonner (13M+ weekly npm downloads):

  1. DX is key. No hooks, no context. <Toaster /> once, toast() from anywhere.
  2. Good defaults > options. Most users never customize. Defaults must be excellent.
  3. Naming creates identity. "Sonner" (French for "to ring") more elegant than "react-toast".
  4. Handle edge cases invisibly. Pause timers when tab hidden. Fill gaps with pseudo-elements. Users never notice. That's the point.
  5. Transitions, not keyframes. Dynamic UI. Keyframes restart from zero.
  6. Great docs. Let people touch the product before they use it.

Debugging Animations

  • Slow motion: increase duration to 2-5x. Spot issues invisible at full speed.
  • Frame-by-frame: Chrome DevTools Animations panel.
  • Test on real devices: USB + Safari remote devtools for touch interactions.
  • Review next day with fresh eyes.

Pre-Flight Checklist (shokunin improvement)

  • No animation on keyboard-initiated actions
  • Every animation has stated purpose
  • Easing matches scenario (entering → ease-out)
  • UI duration < 300ms (button 100-160ms, dropdown 150-250ms)
  • Exit faster than enter
  • Only transform and opacity animated
  • prefers-reduced-motion respected
  • Hover gated behind @media (hover: hover)
  • Popover transform-origin anchors to trigger
  • Button: scale(0.97) on :active
  • Framer Motion: transform string over x/y
  • No transition: all — exact properties
  • No scale(0) entries
  • Tested on real device for touch

Sources

  • Emil Kowalski — animations.dev, Sonner, Vaul, Linear
  • Paul Lewis — "Stick to compositor-only properties" (Google Chrome)
  • easing.dev, easings.co
  • WCAG 2.1 §2.3.3 — Animation from Interactions

Workflow

Step 1: Audit existing interactions

Before writing any animation code, inspect current state:

  1. List every animated element on the page
  2. Check easing, duration, and animated-properties for each
  3. Flag violations: transition: all, ease-in on entering elements, animations on keyboard shortcuts, durations > 300ms for UI
Step 2: Apply the Animation Decision Framework

For each interaction, answer in strict order:

  1. Should this animate? Check frequency. 100+/day = no animation. Tens/day = reduce. Occasional = standard. Rare = delight allowed.
  2. What is the purpose? Must be: spatial consistency, state indication, user feedback, or preventing jarring changes. Not "it looks cool."
  3. What easing? Entering → cubic-bezier(0.23, 1, 0.32, 1). Exiting → cubic-bezier(0.4, 0, 1, 1). On-screen movement → cubic-bezier(0.77, 0, 0.175, 1).
  4. How fast? Button: 100-160ms. Tooltip: 125-200ms. Dropdown: 150-250ms. Modal: 200-400ms. Exit faster than enter.
Step 3: Implement with compositor-only properties
  1. Animate only transform and opacity — GPU-composited
  2. Use CSS transitions for interruptible UI elements (hover, toggle, expand)
  3. Use CSS animations only for looping or self-triggered animations
  4. For Framer Motion: write transform: "translateX(100px)" as a string, never x: 100 (which uses requestAnimationFrame)
  5. Set transform-origin to trigger anchor for popovers, center for modals
Show full SKILL.md (725 more words)Show less
Step 4: Add tactile micro-feedback
  1. Every pressable element: scale(0.97) on :active, 160ms cubic-bezier(0.23, 1, 0.32, 1)
  2. Popovers/dropdowns scale from trigger point using --radix-popover-content-transform-origin
  3. Tooltips: 125ms entry, skip delay on subsequent hovers (data-instant)
  4. Stagger list items 30-80ms apart, total stagger < 400ms
Step 5: Add accessibility and performance gates
  1. Wrap all animations in @media (prefers-reduced-motion: reduce) — set duration to 0.01ms
  2. Gate hover effects behind @media (hover: hover) and (pointer: fine)
  3. Test on real device with touch input (USB + Safari remote devtools)
  4. Slow-motion pass: increase all durations 2-5x to spot issues invisible at full speed
Step 6: Review and ship
  1. Review next day with fresh eyes
  2. Frame-by-frame in Chrome DevTools Animations panel
  3. Verify: no transition: all, no ease-in on enter, no animation on keyboard actions, no scale(0) entries
  4. Run the Pre-Flight Checklist

Error Handling

CauseFix
Animation jank/stutter on low-end mobile devicesReduce duration, lower stagger count, or disable entirely via prefers-reduced-motion. Animate only transform + opacity — never layout properties
Popover entry animates from wrong origin after scroll or resize--radix-popover-content-transform-origin updates on reposition. Ensure the CSS variable is set dynamically by the popover library, not hardcoded. Verify after scroll
Hold-to-delete clip-path animation doesn't trigger on iOS Safari touchTouch events require explicit handling. Use touchstart/touchend alongside :active. Test clip-path transition on real iOS Safari — some versions have clipping bugs
Framer Motion x/y drops frames on scroll-heavy pagesReplace <motion.div animate={{ x: 100 }} /> with <motion.div animate={{ transform: "translateX(100px)" }} />. The x/y shortcuts bypass GPU compositor
@starting-style dialog/toast entry animation missing in productionRequires Chrome 117+ or Safari 17.2+. For broader support, use two-class approach (.toast + .toast-enter) toggled via JavaScript
Stagger animation blocks user interaction while items are appearingKeep total stagger < 400ms. Items should be interactive as they appear — do not set pointer-events: none on parent during stagger
Button :active scale not firing on iOS SafariiOS suppresses :active by default on div/span. Use native <button> element or add touch-action: manipulation to get immediate touch feedback
transform-origin on modal causes flicker when combined with backdropModals must use transform-origin: center. If backdrop is animated separately, synchronize timing: both use same duration and easing curve

Anti-Patterns

PatternProblemFix
transition: all 300ms ease-inTriggers expensive layout property transitions. ease-in on enter feels sluggish and laggy. all causes unintended side-effect transitionsSpecify exact properties: transition: transform 200ms ease-out, opacity 200ms ease-out
Entry animation from scale(0) or opacity: 0 with no intermediate stateNothing in physics appears from total nothingness. Feels unnatural and jarringStart from scale(0.95) with opacity: 0. Minimum visible scale >= 0.9 for UI. The element should feel like it's expanding into existence
Animating Cmd+K palette toggle, Escape to close, or any keyboard shortcutUsers trigger these 100+ times/day. Any delay, even 100ms, accumulates to significant daily frictionZero animation. Instant state change. Raycast, Spotlight, VS Code Command Palette all do this correctly
ease-in on dropdowns, tooltips, modals enteringPerceived as slower than ease-out at the exact same duration. Users interpret as interface lagAlways cubic-bezier(0.23, 1, 0.32, 1) (strong ease-out) for entering elements. The eye catches the fastest part first
Elastic/bounce easing on functional UI (buttons, toggles, form elements)Distracting, feels toy-like, undermines professional credibility. Bounce reads as "trying too hard"Reserve subtle spring (bounce: 0.2, duration: 0.5) for drag-to-dismiss and celebrations only. Never on standard UI transitions
Animating width, height, top, leftTriggers layout recalculation on every frame. Runs on CPU, not GPU. Janky at any frame ratetransform: scale() instead of width/height. transform: translate() instead of top/left. Compositor-only properties always
Same duration and easing for enter and exitExit must feel faster. Users want elements to appear smoothly but disappear instantly so they can continue their taskExit duration = 50-70% of enter duration. Use ease-in (starts fast, slows) on exit. Use ease-out (starts fast, slows) on enter
Hero text reveal with animation-delay > 500msUser has scrolled past before animation plays. Animation served zero purpose and just annoyedHero animations trigger on mount, not on scroll. If scroll-triggered, start when element top is 20% visible from viewport bottom

Checklist

  • Skill loads without errors in the AI agent
  • YAML frontmatter is valid (description, compatibility, audience)
  • Workflow section provides clear step-by-step instructions
  • Error handling section covers common failure modes
  • All referenced files (references/, scripts/, assets/) exist
  • Skill triggers correctly for intended use cases
  • No broken links or missing resources

© EliasOulkadi, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .pack/skills/emil-design-eng of EliasOulkadi/shokunin.

Open the folder on GitHubat commit 4c68e5b

Compare with similar skills

Emil Design Eng 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.

Emil Design Eng compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Emil Design Eng this skillEliasOulkadi/shokunin114—~4.5kAutomated safety check: PassApache-2.0
Design Taste Frontendalisamadiii/Portfolio1806 repos~5.3kAutomated safety check: PassNone
Collaborating With Geminibkywksj/knowledge-base330—~1.5kAutomated safety check: PassCustom licence
Tabler Dashboard UI Kittabler/tabler42k—~1.5kAutomated safety check: PassMIT
Ant Design CLIant-design/antd-skill136—~2.2kAutomated safety check: PassMIT
UI StylingOhh-889/skyroc79513 repos~2.5kAutomated safety check: PassMIT

Similar skills

  • Design Taste Frontend

    alisamadiii/Portfolio

    Senior UI/UX Engineer. An agent skill from alisamadiii/Portfolio.

    180 GitHub starsUsed in 6 repos~5.3k tokens
    Frontend & DesignAuto-check passed
  • Collaborating With Gemini

    bkywksj/knowledge-base

    当用户明确点名要用 Google Gemini CLI 协同时使用此 Skill,把指定任务委托给 Gemini 执行并整合结果。

    330 GitHub stars~1.5k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Creates admin dashboards and app pages with the Tabler UI kit on Bootstrap 5, using the published docs for real markup instead of guessed class names.

    42k GitHub stars~1.5k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Ant Design CLI

    ant-design/antd-skill

    Looks up antd component props, docs, demos and changelogs with the offline @ant-design/cli, and helps debug, migrate between versions and audit usage in a project.

    136 GitHub stars~2.2k tokensUpdated 6 mo ago
    Frontend & DesignAuto-check passed
  • 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.

    795 GitHub starsUsed in 13 repos~2.5k tokens
    Frontend & DesignAuto-check passed
  • 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.

    83k GitHub stars~1.6k tokensUpdated today
    Frontend & DesignAuto-check passed

More from EliasOulkadi/shokunin

All 49 skills in this repo
  • CI CD

    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)…

    114 GitHub stars~3.4k tokensUpdated 6 days ago
    Auto-check: notes
  • Component Forge

    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…

    114 GitHub stars~3.6k tokensUpdated 6 days ago
    Auto-check: notes
  • DB Admin

    EliasOulkadi/shokunin

    PostgreSQL database administration — backup/restore (pgdump, PITR, WAL archiving), health monitoring (connections, bloat, cache hit ratio, dead tuples), connection pooling (PgBouncer), replication…

    114 GitHub stars~2k tokensUpdated 6 days ago
    Auto-check: notes
  • DB Sculptor

    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…

    114 GitHub stars~3.1k tokensUpdated 6 days ago
    Auto-check: notes
  • Docker

    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…

    114 GitHub stars~3.8k tokensUpdated 6 days ago
    Auto-check: notes
  • Error Handler

    EliasOulkadi/shokunin

    Design error handling, structured logging, and observability with OpenTelemetry (traces, metrics, logs), error classification, recovery patterns (retry with jitter, circuit breaker, bulkhead…

    114 GitHub stars~3.6k tokensUpdated 6 days ago
    Auto-check: notes

Works with

Questions about Emil Design Eng

What does Emil Design Eng do?

Encode Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great. Emil Design Eng is an agent skill from EliasOulkadi/shokunin. Encode Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.

When should I use Emil Design Eng?

Emil Design Eng fits situations like: user wants to polish UI; audit animations; review component interactions; add micro-feedback.

How do I install Emil Design Eng in Claude Code?

Run `npx skills add EliasOulkadi/shokunin --skill emil-design-eng -a claude-code`. Or copy the skill folder (.pack/skills/emil-design-eng in EliasOulkadi/shokunin) into .claude/skills/emil-design-eng in your project. Claude Code loads it when a task matches its description.

How do I install Emil Design Eng in Codex?

Run `npx skills add EliasOulkadi/shokunin --skill emil-design-eng -a codex`. Or copy the skill folder (.pack/skills/emil-design-eng in EliasOulkadi/shokunin) into .agents/skills/emil-design-eng in your project. Codex loads it when a task matches its description.

Can I use Emil Design Eng in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add EliasOulkadi/shokunin --skill emil-design-eng -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/emil-design-eng, .gemini/skills/emil-design-eng, .github/skills/emil-design-eng and .opencode/skills/emil-design-eng in your project.

What does Emil Design Eng need to run?

SKILL.md names no scripts, command-line tools or credentials: Emil Design Eng is instructions for the agent only. Compatibility (from SKILL.md): opencode.

Does Emil Design Eng access the network?

SKILL.md names 1 domain. As links in the text: animations.dev. This is read from the text; nothing was executed.

Is Emil Design Eng safe to install?

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.

What licence does Emil Design Eng use?

Emil Design Eng is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Emil Design Eng use?

About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Emil Design Eng?

Skills that share tags, products or a category with Emil Design Eng: Design Taste Frontend (alisamadiii/Portfolio, 180 stars), Collaborating With Gemini (bkywksj/knowledge-base, 330 stars), Tabler Dashboard UI Kit (tabler/tabler, 42k stars) and Ant Design CLI (ant-design/antd-skill, 136 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Emil Design Eng?

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.