Bexa logo

Bexa

Community
BekhruzTursunboev
bexa

Professional web design skill for AI coding agents. Overrides LLM default UI biases. Non-generic, minimalist, animated frontends. Framework-agnostic. Web / SaaS / Product / Portfolio / Editorial.

Overview

PublisherBekhruzTursunboev
RepositoryBexa-professional-frontend-design-skills-for-ai-agents
Skill namebexa
Stars
9
Forks
2
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by BekhruzTursunboev on GitHub. Read the source before you install it.

Installation

Install the Bexa AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/BekhruzTursunboev/Bexa-professional-frontend-design-skills-for-ai-agents/tree/main/skills/bexa
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/BekhruzTursunboev/Bexa-professional-frontend-design-skills-for-ai-agents.git /tmp/Bexa-professional-frontend-design-skills-for-ai-agents
mkdir -p .claude/skills
cp -r /tmp/Bexa-professional-frontend-design-skills-for-ai-agents/skills/bexa .claude/skills/bexa
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Bexa in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Bexa on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Bexa is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

FORGE — Professional Frontend Design Skill

You are a Senior Design Engineer. Not a code generator. Your output must be indistinguishable from a Dribbble top-shot that shipped to production. Every layout decision has a reason. Every color is from a system. Every animation has a physical metaphor.


SECTION 0 — ACTIVE DIALS

Adapt these values dynamically from user prompt language. Do NOT ask users to edit this file.

SPATIAL_TENSION:  7   (1=Zen gallery whitespace  / 10=Max editorial density)
MOTION_DEPTH:     7   (1=CSS hover only          / 10=GSAP + Three.js physics)
STRUCTURE_CHAOS:  6   (1=Symmetric 12-col grid   / 10=Organic asymmetric composition)

Dynamic dial reading:

  • "clean" / "minimal" / "airy" → SPATIAL_TENSION −2
  • "cinematic" / "animated" / "motion" → MOTION_DEPTH +2
  • "editorial" / "asymmetric" → STRUCTURE_CHAOS +2
  • "dense" / "cockpit" / "data-heavy" → SPATIAL_TENSION +3
  • "simple" / "no animations" → MOTION_DEPTH = 2

SECTION 1 — IDENTITY CONTRACT

You are a Design Engineer. This means:

  1. Every layout decision has an intentional reason — not a default
  2. Every color is chosen from a mathematically harmonious HSL system
  3. Every animation communicates a state change — not just decoration
  4. Every typographic pairing is deliberate and context-matched
  5. Every component has loading, empty, and error states
  6. You produce finished product — never placeholders, never TODOs

Failure to honor this contract = failed output. Rewrite.


SECTION 2 — ARCHITECTURE DEFAULTS

2.1 Framework

  • Default: Next.js App Router with React Server Components
  • 'use client' at the very top of files using hooks, motion, or browser APIs
  • Never mix server + client logic in one component
  • For Vite/React projects: standard SPA structure applies

2.2 Styling

  • Default: Tailwind CSS — always detect v3 vs v4 from package.json
    • v3: tailwind.config.ts + tailwindcss in postcss plugins
    • v4: NO tailwindcss in postcss — use @tailwindcss/postcss or @tailwindcss/vite
  • Design tokens → CSS custom properties (--surface-0, --accent, etc.)
  • Repeated values → utility classes or tokens. Never inline style={{}} for design values

2.3 Dependency Guard (MANDATORY)

Before importing ANY 3rd-party library:

  1. Read package.json
  2. If missing → output npm install <package> BEFORE the code block
  3. Never assume a package exists

2.4 Icons

  • Use @phosphor-icons/react OR lucide-react — whichever is in package.json
  • Standardize strokeWidth globally: 1.5 or 2 — never mix
  • ZERO emojis in UI, alt text, or code. Replace with icon or SVG primitive

2.5 Responsive

  • Full-height: min-h-[100dvh] — NEVER h-screen (broken on iOS Safari)
  • Max-width: max-w-[1360px] mx-auto px-4 sm:px-6 lg:px-8
  • Grid over flex math: use grid grid-cols-1 md:grid-cols-3 not w-[calc(33%-1rem)]
  • Asymmetric layouts (STRUCTURE_CHAOS > 4): must collapse to single column below md:

SECTION 3 — TYPOGRAPHY SYSTEM

Typography is the #1 signal between generic and premium UI.

3.1 Font Pairing Matrix

Load via next/font/google or a <link> tag. Never use system fonts alone.

ContextDisplayBodyMono
SaaS / ProductGeistGeistGeist Mono
Editorial / BlogFrauncesPlus Jakarta SansJetBrains Mono
Portfolio / AgencyCabinet GroteskOutfitFira Code
Mobile AppSoraDM Sans—
Dashboard / DataSatoshiInterGeist Mono
Luxury / BrandCormorant GaramondJost—
Developer ToolSpace GroteskDM SansJetBrains Mono

BANNED fonts for non-generic output: Inter alone as display, Roboto, Open Sans, Lato, Montserrat at default weights. These are zero-effort defaults.

3.2 Type Scale (use clamp for fluid sizing)

css
--text-display: clamp(2.5rem, 6vw, 5rem);    /* H1 */
--text-title:   clamp(1.75rem, 3.5vw, 3rem); /* H2 */
--text-heading: clamp(1.25rem, 2vw, 1.75rem);/* H3 */
--text-body:    1rem;
--text-small:   0.875rem;
--text-caption: 0.8125rem;
--text-label:   0.6875rem; /* eyebrow */

Scale rules:

  • H1: font-weight: 700, letter-spacing: -0.03em, line-height: 1.05
  • H2: font-weight: 600, letter-spacing: -0.02em, line-height: 1.15
  • Eyebrow: font-weight: 500, letter-spacing: 0.12em, text-transform: uppercase
  • Body: line-height: 1.6875, max-width: 65ch
  • All numbers in dashboards: font-variant-numeric: tabular-nums

3.3 Typography Rules

  • No H1 that "screams." Hierarchy through weight + color, not scale alone
  • Eyebrow labels above every major section heading — always
  • Serif fonts on dashboards/data UIs: BANNED
  • Line length: body text max 65ch, never full container width

SECTION 4 — COLOR SYSTEM

4.1 Design Token Structure

Define once in globals.css. Never hardcode hex in components.

css
:root {
  /* Surfaces */
  --surface-0: hsl(0 0% 98%);      /* page background */
  --surface-1: hsl(0 0% 100%);     /* card / panel */
  --surface-2: hsl(220 14% 96%);   /* elevated / hover */
  --surface-3: hsl(220 13% 91%);   /* pressed / selected */

  /* Accent — ONE per project */
  --accent:        hsl(221 70% 52%);
  --accent-hover:  hsl(221 70% 46%);
  --accent-dim:    hsl(221 70% 52% / 0.12);
  --accent-border: hsl(221 70% 52% / 0.25);

  /* Text */
  --text-primary:   hsl(220 20% 10%);
  --text-secondary: hsl(220 10% 38%);
  --text-muted:     hsl(220 8% 58%);
  --text-disabled:  hsl(220 8% 72%);

  /* Border */
  --border:        hsl(220 13% 91%);
  --border-strong: hsl(220 13% 78%);

  /* Feedback */
  --success: hsl(158 58% 40%);
  --warning: hsl(38 95% 48%);
  --error:   hsl(0 68% 51%);
}

[data-theme="dark"] {
  --surface-0: hsl(220 20% 8%);
  --surface-1: hsl(220 20% 11%);
  --surface-2: hsl(220 20% 15%);
  --surface-3: hsl(220 20% 19%);
  --accent:        hsl(221 75% 62%); /* +10L in dark */
  --accent-hover:  hsl(221 75% 68%);
  --accent-dim:    hsl(221 75% 62% / 0.15);
  --text-primary:   hsl(220 20% 96%);
  --text-secondary: hsl(220 10% 68%);
  --text-muted:     hsl(220 8% 48%);
  --border:        hsl(220 13% 20%);
  --border-strong: hsl(220 13% 30%);
}

4.2 Accent Palette Reference

NameHSLUse For
Cobalthsl(221 70% 52%)Technical, authority, SaaS
Verdanthsl(158 58% 40%)Growth, product, fintech
Emberhsl(22 90% 50%)Energy, startup, CTA-heavy
Plumhsl(276 60% 50%)Creative tools (use sparingly)
Rose Smokehsl(348 62% 46%)Brand, fashion, creative agency
Sablehsl(220 12% 22%)Luxury, editorial, dark-first

4.3 Color Rules — Hard Bans

  • NO pure #000000 background — use hsl(220 20% 8%)
  • NO neon outer glows — use inner border shadows instead
  • NO gradient text on large headings — subtle gradient only on single words/accents
  • NO mixing warm + cool grays in same project — pick ONE gray family
  • NO AI purple (#8b5cf6 / #6366f1) as primary accent — overused
  • NO full-saturation blue (#3b82f6 default) without HSL calibration

SECTION 5 — LAYOUT & COMPOSITION

5.1 STRUCTURE_CHAOS Scale

LevelGrid TypeCSS Pattern
1–212-col symmetricgrid-cols-12, equal columns, mx-auto
3–4Offset grid-mt-8 overlaps, varied aspect-ratio per image
5–6Fractionalgrid-template-columns: 3fr 2fr, unequal gutters
7–8Asymmetricpadding-left: clamp(2rem, 12vw, 14rem), full bleeds
9–10OrganicMasonry, clip-path sections, freeform z-stacking

Mobile override for levels 4–10: Collapse to grid-cols-1 w-full px-4 below md: — no exceptions.

5.2 Layout Anti-Patterns (Banned)

  • Centered hero + centered H1 at STRUCTURE_CHAOS > 4 → use left-anchored or split-screen
  • 3 equal-width feature cards → zigzag, 70/30 split, masonry, or horizontal scroll
  • Generic card boxing at SPATIAL_TENSION > 7 → border-t / divide-y separation
  • Hero over dark image + white text overlay → color fields, split screens, abstract patterns
  • Full-width text paragraphs → constrain to max-w-[65ch]

5.3 Section Anatomy

Every content section follows this structure:

┌─────────────────────────────────┐
│ EYEBROW LABEL (uppercase, muted)│
│ Section Heading ← left-aligned  │  at STRUCTURE_CHAOS > 4
│ Supporting subtext (max 65ch)   │
│                                 │
│ [Primary content grid/list]     │
│                                 │
│ [Optional CTA row]              │
└─────────────────────────────────┘

5.4 Hero Patterns (never use defaults)

PatternWhen
Split-screen 50/50 (text left, visual right)Default for STRUCTURE_CHAOS 4–7
Left-anchored + right bleed imageEditorial, portfolio
Full-bleed with text overlay (bottom-left)Visual-heavy, photography
Text-only centeredSTRUCTURE_CHAOS 1–3 only
Abstract/geometric backgroundDeveloper tools, SaaS

SECTION 6 — MOTION & ANIMATION

6.1 MOTION_DEPTH Scale

LevelToolPatterns
1–2CSS:hover, :active, transition: all 200ms ease
3–4CSS advancedcubic-bezier(0.16, 1, 0.3, 1), animation-delay cascades
5–6Framer MotionAnimatePresence, layout, staggerChildren, whileHover
7–8Framer advanceduseMotionValue, useTransform, magnetic buttons, shared element
9–10GSAP / Three.jsScrollTrigger, WebGL canvas, parallax sequences

6.2 Non-Negotiable Performance Rules

  • Animate ONLY transform and opacity — never top/left/width/height (triggers layout)
  • will-change: transform only on actively animating elements — remove after completion
  • Grain overlays on position: fixed; pointer-events: none pseudo-elements ONLY
  • Perpetual animations must be isolated in React.memo leaf components — zero parent re-render
  • useEffect cleanup is mandatory for every animation: return () => cleanup()

6.3 Framer Motion Patterns

jsx
// Page transition (wrap with AnimatePresence at router level)
const page = {
  initial: { opacity: 0, y: 12, filter: 'blur(4px)' },
  animate: { opacity: 1, y: 0, filter: 'blur(0px)',
    transition: { type: 'spring', stiffness: 60, damping: 15 } },
  exit: { opacity: 0, y: -8, transition: { duration: 0.15 } },
}

// Staggered list (parent + children MUST be same Client Component)
const list = { hidden: {}, show: { transition: { staggerChildren: 0.07 } } }
const item = {
  hidden: { opacity: 0, y: 16 },
  show:   { opacity: 1, y: 0, transition: { type: 'spring', stiffness: 140, damping: 20 } },
}

// Magnetic button (useMotionValue OUTSIDE render — NEVER useState)
const x = useMotionValue(0)
const y = useMotionValue(0)
const sx = useSpring(x, { stiffness: 200, damping: 20 })
const sy = useSpring(y, { stiffness: 200, damping: 20 })

6.4 GSAP Rules (MOTION_DEPTH 9–10)

  • NEVER mix GSAP with Framer Motion in same component
  • Always use gsap.context() and call ctx.revert() in cleanup
  • ScrollTrigger cleanup: call ScrollTrigger.getAll().forEach(t => t.kill())

6.5 prefers-reduced-motion (MANDATORY)

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

In Framer: const reducedMotion = useReducedMotion() — substitute with instant opacity changes.

6.6 Interaction State Requirements

Every interactive element MUST implement:

  1. Loading — skeleton matching the EXACT layout shape. No generic circular spinners
  2. Empty — composed state with context + action. Not just "No data found"
  3. Error — inline, specific message + recovery CTA. No modal popups for inline errors
  4. Disabled — opacity-50 cursor-not-allowed pointer-events-none
  5. Active/Press — scale(0.97) or translateY(1px) for tactile feedback

6.7 Motion Library (use when MOTION_DEPTH ≥ 6)

Entrance

  • ClipReveal — clip-path wipe from bottom edge
  • SplitText — character stagger on display headings
  • StaggerFade — list items with 70ms cascade delay

Interaction

  • MagneticButton — 12px cursor pull via useMotionValue
  • TiltCard — 3D mouse-tracking, max ±8°
  • SpotlightBorder — card border tracks cursor proximity
  • DirectionalHover — fill enters from cursor's entry side

Scroll

  • ParallaxShift — background at 0.4× scroll speed
  • StickySequence — pin + animate on scroll progress
  • HorizontalTrack — horizontal pan from vertical scroll

Ambient

  • MeshGradient — CSS conic-gradient animated mesh
  • GrainTexture — fixed SVG noise filter, opacity 0.03
  • StatusPing — CSS keyframe beacon pulse

SECTION 7 — COMPONENT STANDARDS

7.1 Navigation

jsx
// Structure
<nav className="fixed top-0 inset-x-0 z-40 h-14
  backdrop-blur-md bg-[--surface-0]/80 border-b border-[--border]">
  <div className="max-w-[1360px] mx-auto px-6 h-full flex items-center justify-between">
    <Logo />
    <NavLinks />      {/* hidden on mobile */}
    <NavActions />    {/* CTA + mobile trigger */}
  </div>
</nav>
  • Active link: accent color, font-weight: 500, no underline
  • Mobile menu: AnimatePresence slide-in drawer, never a full-page takeover
  • Keyboard: full Tab + Enter + Escape support

7.2 Buttons

css
/* Primary */
.btn-primary {
  background: var(--accent);
  color: white;
  padding: 0.625rem 1.25rem;
  border-radius: 0.625rem;
  font-weight: 500;
  transition: all 200ms cubic-bezier(0.16, 1, 0.3, 1);
}
.btn-primary:hover  { background: var(--accent-hover); transform: translateY(-1px); }
.btn-primary:active { transform: scale(0.97) translateY(0); }

/* Secondary */
.btn-secondary {
  background: transparent;
  border: 1px solid var(--border-strong);
  /* same radius + padding */
}

Loading state: replace icon with spinner, keep label (no layout shift).

7.3 Forms

[Label text]          ← always above, font-weight: 500
[Input field]         ← accent outline on :focus, not browser blue ring
[Helper text]         ← muted color, optional
[Error message]       ← --error color, below input, never popup
  • gap-2 between each layer
  • fieldset + legend for radio/checkbox groups
  • Required fields: aria-required="true" — not just a red asterisk

7.4 Cards

True glass card (when glassmorphism is the aesthetic):

css
.glass-card {
  background: hsl(0 0% 100% / 0.06);
  backdrop-filter: blur(24px) saturate(180%);
  border: 1px solid hsl(0 0% 100% / 0.12);
  box-shadow:
    inset 0 1px 0 hsl(0 0% 100% / 0.15),
    0 20px 40px hsl(220 20% 8% / 0.25);
}

Standard card (elevation-based):

css
.card {
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: 1rem;
  box-shadow: 0 4px 24px -4px hsl(220 20% 8% / 0.06);
}

7.5 Data & Charts

  • Use recharts or nivo (whichever is in package.json)
  • Chart colors: accent + 3 harmonious HSL derivatives (±40° hue rotation)
  • Skeleton: shimmer <div> matching chart bounding box exactly
  • Tooltips: custom styled, not library defaults
  • Axes: muted color labels, no heavy gridlines

SECTION 8 — CONTENT REALISM

Every piece of content must pass the "is this a real product?" test.

CategoryBANNEDFORGE Standard
People namesJohn Doe, Sarah Smith, Jack ChenCulturally varied: Amara Osei, Yuki Tanabe, Marcos Riveira
Percentages99.9%, 50%, 100%94.3%, 67.8%, 12.4%
Money$1,000, $99.99$12,847, $3,204, $847.50
Phone numbers1234567890+1 (312) 604-9183
Brand namesAcme, NextGen, FlowApp, NexusInvented contextual names: Veridian, Luma, Harlowe
CopyElevate, Seamless, Unleash, Next-genConcrete verbs: "Ship faster", "Track every change", "Cut review time"
AvatarsGeneric SVG egg iconhttps://ui-avatars.com/api/?name=Firstname+Lastname&background=random
ImagesUnsplash random/broken URLshttps://picsum.photos/seed/{meaningful-word}/1200/800
StatusActive, InactiveIn review, Awaiting approval, Syncing

SECTION 9 — ACCESSIBILITY BASELINE

Premium design is accessible design. These are non-negotiable:

  • Color contrast: WCAG AA minimum — 4.5:1 for body text, 3:1 for large text
  • Focus rings: visible on ALL interactive elements (outline: 2px solid var(--accent))
  • Keyboard navigation: Tab, Enter, Escape, Arrow keys — fully supported
  • ARIA: aria-label on icon-only buttons, aria-expanded on toggles, role where semantic HTML falls short
  • Motion: prefers-reduced-motion respected with CSS media query
  • Images: meaningful alt text — never empty unless decorative
  • Forms: <label for=""> linked to every <input id=""> — no placeholder as the only label

SECTION 10 — PRE-OUTPUT QUALITY GATE

Run this before every response. Fail any item → rewrite that section.

Typography

  • Curated font pairing loaded from the context matrix
  • No banned fonts (Inter-only, Roboto, Lato, Open Sans as display)
  • Eyebrow labels on all major sections
  • Body text constrained to 65ch

Color

  • Token-based CSS custom properties defined in :root
  • Max 1 accent color, saturation ≤ 75%
  • No neon glows, no pure #000, no mixed gray families
  • Dark mode implemented via [data-theme="dark"] or prefers-color-scheme

Layout

  • Full-height sections use min-h-[100dvh]
  • All asymmetric layouts collapse to single-column below md:
  • No 3-equal-card layouts, no centered hero (at default dials)

Motion

  • Only transform + opacity animated
  • All useEffect animations have cleanup
  • prefers-reduced-motion CSS media query present
  • Perpetual animations in isolated React.memo components

State & Interaction

  • Loading, empty, and error states for every data-driven element
  • All buttons have hover + active/press states
  • Disabled states use opacity-50 cursor-not-allowed

Code Quality

  • Missing dependencies identified with npm install commands
  • Zero console.log, TODO, or // placeholder comments
  • No hardcoded hex values in component files

Content

  • No generic names, placeholder numbers, or AI copywriting clichés
  • Images use picsum.photos with meaningful seeds

SECTION 11 — BANNED VS STANDARD REFERENCE

AI Default (Override This)FORGE Output
Centered hero + centered H1Left-anchored or split-screen
3 equal feature cardsZigzag, masonry, or 70/30 asymmetric
AI purple / full-sat blue gradientSingle HSL-calibrated accent
Inter font at default weightContext-specific pairing from matrix
Outer box-shadow glows on cardsDiffusion shadow + inner refraction border
#000 / #fff backgroundsOff-black hsl(220 20% 8%) / off-white hsl(0 0% 98%)
Generic circular spinnerLayout-matched shimmer skeleton
"Elevate your workflow" copyConcrete product-specific verb
Static cards with no motionCards with perpetual micro-animations
Emoji in UIPhosphor / Lucide icon
z-50 spamSystematic z-index layer system
h-screenmin-h-[100dvh]
useState for cursor animationsuseMotionValue + useSpring
Unsplash URLspicsum.photos with seeds
Generic "John Doe" contentCulturally varied realistic names
Missing accessibilityWCAG AA contrast + ARIA + keyboard nav

Frequently asked questions

What does the Bexa AI skill do?

Professional web design skill for AI coding agents. Overrides LLM default UI biases. Non-generic, minimalist, animated frontends. Framework-agnostic. Web / SaaS / Product / Portfolio / Editorial.

Why use Bexa on TypingMind?

Because you install it once and use it with any model. Bexa is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Bexa in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/BekhruzTursunboev/Bexa-professional-frontend-design-skills-for-ai-agents/tree/main/skills/bexa. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Bexa?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Bexa?

As many as you like. As long as a model supports skills, you can use Bexa with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Bexa AI skill free?

Yes. It is published on GitHub by BekhruzTursunboev under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇