Impeccable logo

Impeccable

Community
boraoztunc
impeccable

Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.

Overview

Publisherboraoztunc
Repositoryskills
Skill nameimpeccable
Stars
433
Forks
65
Bundled files
62
LicenseApache-2.0
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.

  • 62 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

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

Installation

Install the Impeccable 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/boraoztunc/skills/tree/main/impeccable
  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/boraoztunc/skills.git /tmp/skills
mkdir -p .claude/skills
cp -r /tmp/skills/impeccable .claude/skills/impeccable
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Impeccable 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 Impeccable 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 Impeccable 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.

Designs and iterates production-grade frontend interfaces. Real working code, committed design choices, exceptional craft.

Setup

Before any design work or file edits:

  1. Load context (PRODUCT.md / DESIGN.md) via the loader script.
  2. Identify the register and load the matching register reference (brand.md or product.md).
  3. If the user invoked a sub-command (e.g. craft, shape, audit), load its reference file too. This is non-negotiable: craft without craft.md loaded means you'll skip the shape-and-confirm step the user expects.

Skipping these produces generic output that ignores the project.

1. Context gathering

Two files, case-insensitive. The loader looks at the project root by default and falls back to .agents/context/ and docs/ if the root is clean. Override with IMPECCABLE_CONTEXT_DIR=path/to/dir (absolute or relative to cwd).

  • PRODUCT.md: required. Users, brand, tone, anti-references, strategic principles.
  • DESIGN.md: optional, strongly recommended. Colors, typography, elevation, components.

Load both in one call:

bash
node {{scripts_path}}/load-context.mjs

Consume the full JSON output. Never pipe through head, tail, grep, or jq. The output's contextDir field tells you where the files were resolved from.

If the output is already in this session's conversation history, don't re-run. Exceptions requiring a fresh load: you just ran {{command_prefix}}impeccable teach or {{command_prefix}}impeccable document (they rewrite the files), or the user manually edited one.

{{command_prefix}}impeccable live already warms context via live.mjs. If you've run live.mjs, don't also run load-context.mjs this session.

If PRODUCT.md is missing, empty, or placeholder ([TODO] markers, <200 chars): run {{command_prefix}}impeccable teach, then resume the user's original task with the fresh context. If the original task was {{command_prefix}}impeccable craft, resume into {{command_prefix}}impeccable shape before any implementation work.

If DESIGN.md is missing: nudge once per session ("Run {{command_prefix}}impeccable document for more on-brand output"), then proceed.

2. Register

Every design task is brand (marketing, landing, campaign, long-form content, portfolio: design IS the product) or product (app UI, admin, dashboard, tool: design SERVES the product).

Identify before designing. Priority: (1) cue in the task itself ("landing page" vs "dashboard"); (2) the surface in focus (the page, file, or route being worked on); (3) register field in PRODUCT.md. First match wins.

If PRODUCT.md lacks the register field (legacy), infer it once from its "Users" and "Product Purpose" sections, then cache the inferred value for the session. Suggest the user run {{command_prefix}}impeccable teach to add the field explicitly.

Load the matching reference: reference/brand.md or reference/product.md. The shared design laws below apply to both.

Shared design laws

Apply to every design, both registers. Match implementation complexity to the aesthetic vision: maximalism needs elaborate code, minimalism needs precision. Interpret creatively. Vary across projects; never converge on the same choices. {{model}} is capable of extraordinary work. Don't hold back.

Color

  • Use OKLCH. Reduce chroma as lightness approaches 0 or 100; high chroma at extremes looks garish.
  • Never use #000 or #fff. Tint every neutral toward the brand hue (chroma 0.005–0.01 is enough).
  • Pick a color strategy before picking colors. Four steps on the commitment axis:
    • Restrained: tinted neutrals + one accent ≤10%. Product default; brand minimalism.
    • Committed: one saturated color carries 30–60% of the surface. Brand default for identity-driven pages.
    • Full palette: 3–4 named roles, each used deliberately. Brand campaigns; product data viz.
    • Drenched: the surface IS the color. Brand heroes, campaign pages.
  • The "one accent ≤10%" rule is Restrained only. Committed / Full palette / Drenched exceed it on purpose. Don't collapse every design to Restrained by reflex.

Theme

Dark vs. light is never a default. Not dark "because tools look cool dark." Not light "to be safe."

Before choosing, write one sentence of physical scene: who uses this, where, under what ambient light, in what mood. If the sentence doesn't force the answer, it's not concrete enough. Add detail until it does.

"Observability dashboard" does not force an answer. "SRE glancing at incident severity on a 27-inch monitor at 2am in a dim room" does. Run the sentence, not the category.

Typography

  • Cap body line length at 65–75ch.
  • Hierarchy through scale + weight contrast (≥1.25 ratio between steps). Avoid flat scales.

Layout

  • Vary spacing for rhythm. Same padding everywhere is monotony.
  • Cards are the lazy answer. Use them only when they're truly the best affordance. Nested cards are always wrong.
  • Don't wrap everything in a container. Most things don't need one.

Motion

  • Don't animate CSS layout properties.
  • Ease out with exponential curves (ease-out-quart / quint / expo). No bounce, no elastic.

Absolute bans

Match-and-refuse. If you're about to write any of these, rewrite the element with different structure.

  • Side-stripe borders. border-left or border-right greater than 1px as a colored accent on cards, list items, callouts, or alerts. Never intentional. Rewrite with full borders, background tints, leading numbers/icons, or nothing.
  • Gradient text. background-clip: text combined with a gradient background. Decorative, never meaningful. Use a single solid color. Emphasis via weight or size.
  • Glassmorphism as default. Blurs and glass cards used decoratively. Rare and purposeful, or nothing.
  • The hero-metric template. Big number, small label, supporting stats, gradient accent. SaaS cliché.
  • Identical card grids. Same-sized cards with icon + heading + text, repeated endlessly.
  • Modal as first thought. Modals are usually laziness. Exhaust inline / progressive alternatives first.

Copy

  • Every word earns its place. No restated headings, no intros that repeat the title.
  • No em dashes. Use commas, colons, semicolons, periods, or parentheses. Also not --.

The AI slop test

If someone could look at this interface and say "AI made that" without doubt, it's failed. Cross-register failures are the absolute bans above. Register-specific failures live in each reference.

Category-reflex check. Run at two altitudes; the second one catches what the first one misses.

  • First-order: if someone could guess the theme + palette from the category alone ("observability → dark blue", "healthcare → white + teal", "finance → navy + gold", "crypto → neon on black"), it's the first training-data reflex. Rework the scene sentence and color strategy until the answer isn't obvious from the domain.
  • Second-order: if someone could guess the aesthetic family from category-plus-anti-references ("AI workflow tool that's not SaaS-cream → editorial-typographic", "fintech that's not navy-and-gold → terminal-native dark mode"), it's the trap one tier deeper. The first reflex was avoided; the second wasn't. Rework until both answers are not obvious. The brand register's reflex-reject aesthetic lanes list catches the currently-saturated families.

Commands

CommandCategoryDescriptionReference
craft [feature]BuildShape, then build a feature end-to-endreference/craft.md
shape [feature]BuildPlan UX/UI before writing codereference/shape.md
teachBuildSet up PRODUCT.md and DESIGN.md contextreference/teach.md
documentBuildGenerate DESIGN.md from existing project codereference/document.md
extract [target]BuildPull reusable tokens and components into design systemreference/extract.md
critique [target]EvaluateUX design review with heuristic scoringreference/critique.md
audit [target]EvaluateTechnical quality checks (a11y, perf, responsive)reference/audit.md
polish [target]RefineFinal quality pass before shippingreference/polish.md
bolder [target]RefineAmplify safe or bland designsreference/bolder.md
quieter [target]RefineTone down aggressive or overstimulating designsreference/quieter.md
distill [target]RefineStrip to essence, remove complexityreference/distill.md
harden [target]RefineProduction-ready: errors, i18n, edge casesreference/harden.md
onboard [target]RefineDesign first-run flows, empty states, activationreference/onboard.md
animate [target]EnhanceAdd purposeful animations and motionreference/animate.md
colorize [target]EnhanceAdd strategic color to monochromatic UIsreference/colorize.md
typeset [target]EnhanceImprove typography hierarchy and fontsreference/typeset.md
layout [target]EnhanceFix spacing, rhythm, and visual hierarchyreference/layout.md
delight [target]EnhanceAdd personality and memorable touchesreference/delight.md
overdrive [target]EnhancePush past conventional limitsreference/overdrive.md
clarify [target]FixImprove UX copy, labels, and error messagesreference/clarify.md
adapt [target]FixAdapt for different devices and screen sizesreference/adapt.md
optimize [target]FixDiagnose and fix UI performancereference/optimize.md
liveIterateVisual variant mode: pick elements in the browser, generate alternativesreference/live.md

Plus two management commands: pin <command> and unpin <command>, detailed below.

Routing rules

  1. No argument: render the table above as the user-facing command menu, grouped by category. Ask what they'd like to do.
  2. First word matches a command: load its reference file and follow its instructions. Everything after the command name is the target.
  3. First word doesn't match: general design invocation. Apply the setup steps, shared design laws, and the loaded register reference, using the full argument as context.

Setup (context gathering, register) is already loaded by then; sub-commands don't re-invoke {{command_prefix}}impeccable.

If the first word is craft, setup still runs first, but reference/craft.md owns the rest of the flow. If setup invokes teach as a blocker, finish teach, refresh context, then resume the original command and target.

Pin / Unpin

Pin creates a standalone shortcut so {{command_prefix}}<command> invokes {{command_prefix}}impeccable <command> directly. Unpin removes it. The script writes to every harness directory present in the project.

bash
node {{scripts_path}}/pin.mjs <pin|unpin> <command>

Valid <command> is any command from the table above. Report the script's result concisely. Confirm the new shortcut on success, relay stderr verbatim on error.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

and 2 more files.

Frequently asked questions

What does the Impeccable AI skill do?

Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and...

Why use Impeccable on TypingMind?

Because you install it once and use it with any model. Impeccable 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 Impeccable in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/boraoztunc/skills/tree/main/impeccable. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Impeccable?

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 Impeccable?

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

Is the Impeccable AI skill free?

Yes. It is published on GitHub by boraoztunc under the Apache-2.0 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 👇