Interface Craft logo

Interface Craft

Community
harun-yardimci
interface-craft

Review, improve, or build a whole interface across usability, task flow, microcopy, system states, accessibility, theming, layout resilience and visual polish. Use for broad requests like "review this screen/UX", "improve this interface", "make this form/onboarding/checkout better", "UX audit", "fix the empty/error/loading states", "check dark/light mode", "cards have different heights", "button does nothing / tap opens the wrong thing", "keyboard covers the button", "breaks on iPad/small screens", "inconsistent spacing/fonts", "arayüzü iyileştir", "bu ekranı incele", "dark/light mode tutarsızlıklarını denetle", "kartlar aynı boyda değil", "buton tıklanmıyor", "looks generic / AI-made", "make it feel polished", "animations feel off", "çok jenerik duruyor", "gözden kaçan şeyler var". For narrow requests prefer a narrower installed skill (design:ux-copy for copy only, make-interfaces-feel-better for visual polish, design:accessibility-review for WCAG audits, ui-compliance for HIG/Material compliance); if none is installed, handle it here with only the relevant reference. Not for backend-only work or marketing copy.

Overview

Publisherharun-yardimci
Repositoryinterface-craft
Skill nameinterface-craft
Stars
3
Forks
0
Bundled files
18
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.

  • 18 bundled files

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

  • Open source

    Published by harun-yardimci on GitHub. Read the source before you install it.

Installation

Install the Interface Craft 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/harun-yardimci/interface-craft/tree/main/skills/interface-craft
  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/harun-yardimci/interface-craft.git /tmp/interface-craft
mkdir -p .claude/skills
cp -r /tmp/interface-craft/skills/interface-craft .claude/skills/interface-craft
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Interface Craft 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 Interface Craft 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 Interface Craft 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.

Interface Craft

Infer the mode from the request; do not present a menu:

  • Review: report actionable issues; do not edit.
  • Improve: review, implement scoped fixes, verify.
  • Create: build the screen or component with these principles from the start. Before code, name the surface (operate / persuade / read) and write the short direction in generic tells; build the real states, not only the happy path.

Scope the scan to the request. Broad requests ("review this screen", "improve this flow"): scan all seven dimensions below. Narrow requests ("only microcopy", "just the error states", "keep the layout"): check only those dimensions plus states directly affected by your change (e.g. a longer label must still fit and stay accessible). In both cases change only what has a real problem.

Theme consistency is always in scope when the product supports light and dark appearances and the task touches UI colors, surfaces, overlays or a screen review. Invisible or low-contrast text in one theme is a priority-1 accessibility issue. Use the theming reference.

Workflow

  1. Inspect the interface, relevant code, design tokens, existing components, user-facing text, and the main task. For screenshots, separate what is visible from behavior you cannot see. Ask only when missing information blocks the work. Web UI that can be opened in a browser (URL, dev server, .html): render and measure before judging. Run node scripts/render_audit.mjs <url> --out ui-audit, then do the region scan in visual scan: every tile, every lens, in both themes. Add --stress for broad reviews (longer Turkish text and 2× text expose breaks the sample data hides) and --states … when states are reachable by URL (stress and states). For a screenshot the user sent, tile it with --tile-image and do the same scan. A visual review is not finished until every tile has been opened. For broad reviews, finish with the fresh-eyes/persona pass (visual scan, Pass D). Skip this only for narrow copy-only or code-only requests.
  2. Scan the in-scope dimensions (all seven for broad work): task/flow, information & decision load, microcopy, interaction, visual craft, system states (empty/loading/error/success), accessibility. For broad reviews, walk all ten Nielsen heuristics (interaction reference).
  3. Diagnose: each issue = observed trigger → user consequence → concrete fix. Mark hypotheses as hypotheses. Never claim conversion gains or user testing from an expert review.
  4. Prioritize: (1) task blockers and accessibility, (2) errors, ambiguity, decision burden, (3) wording, hierarchy, consistency, (4) decorative polish. Merge overlapping findings into one fix. High on sight, whatever else is going on: content clipped or overlapping at 320px or 200% text; text or a control invisible in one theme; a control covered by another layer; state shown only by color or only by motion; the danger color on a non-destructive action (or a safe color on a destructive one); success claimed before it is confirmed; focus lost or invisible; a layout that breaks only with real-length data. Static lead-finders (paths relative to this skill; confirm every hit visually or in code):
    • python3 scripts/theme_audit.py <ui-source-dir> when the product has light and dark appearances.
    • python3 scripts/token_audit.py <ui-source-dir> on broad reviews or "inconsistent spacing/fonts" complaints: it finds literal font sizes, off-grid spacing, one-off radii and fonts that ignore Dynamic Type.
    • python3 scripts/hit_area_audit.py <ui-source-dir> on broad reviews and whenever a control "does nothing" or a tap opens the wrong thing: it finds clipped fill-scaled media whose invisible overflow still takes taps, tap targets under 44 pt / 48 dp, near-invisible layers that catch taps and full-cover web overlays.
  5. Implement the cheapest fix that solves the problem, in this order: delete something → use the platform's native behavior → reuse an existing token or component → correct a value → add something new. Work with the existing design language, tokens, components and dependencies. Before using a platform or library API, check the project's deployment target / dependency versions and confirm availability in current docs; use a compatible alternative or an availability guard when needed. When advice conflicts: user intent > accessibility > platform conventions > existing system > aesthetics. Do not add a library just for polish.
  6. Verify proportionally. Use preview/browser/simulator and project checks when available; never claim a check you did not run. Web: re-run render_audit.mjs with the same arguments and compare counts per rule across all runs; a fix must not add hits elsewhere (often dark or 375px). Visual work: narrow + wide layouts, long text, and both light and dark, including overlays (sheets, menus, alerts) and every chip/button state. For layout and loading (see layout resilience): smallest and largest widths, landscape/iPad where supported, keyboard open on forms, largest text size, slow network and a failed image load. For repeated content, render the shortest and longest real items side by side. Comparable cards in the same row, carousel or grid row should share one height (reserved text lines, fixed media ratio). Vertical lists may keep natural row heights; check that media size and alignment stay consistent there. Never change simulator or device appearance on a shared device without recording and restoring the previous value. Interaction work: keyboard/focus, loading/success/error, recovery paths. Tap-test (see layout resilience, Hit areas): on the widest supported layout, tap every control that sits directly above or below media or a card, and tap just outside each card edge; a control that does nothing or a tap that opens the neighbour means a hit area does not match what is drawn.

Platform routing

  • Web (HTML/CSS/React/Tailwind): visual-craft values are the starting point; existing tokens and observed rendering win.
  • Native iOS (SwiftUI/UIKit) / Android (Compose): use the SwiftUI/Compose column in visual-craft; follow HIG/Material 3 over web values. For component-level platform compliance, also load ui-compliance if available; otherwise apply HIG/Material 3 directly.
  • If make-interfaces-feel-better is installed and the task is heavy on web animation/surface code, load its reference files for full code samples.

Reference routing (load only what the task needs)

  • Visual scan: web render audit (scripts/render_audit.mjs: overflow, clipping, overlap, real contrast, near-miss alignment, uneven gaps, unequal cards, covered/small targets, focus, images, token inventory) + region-by-region tile scan. Default for any visual review of web UI.
  • Stress and states: --stress runs, break harness with worst-case content, state workbench (?__state=), variants on one axis. Use when reviewing components/flows and when building.
  • Generic tells: surface types (operate/persuade/read), direction before code, generic-look tells and copy tells (EN/TR). Use for Create, redesigns and "looks generic" complaints.
  • Visual craft: design-token consistency (scripts/token_audit.py), surface separation (tone / line / shadow), radius, typography and spacing values, motion (frequency gate, easing tokens, durations, gestures), hit areas, performance - web and native.
  • Interaction and feedback: ten Nielsen heuristics, forms, navigation, states, recovery, help.
  • Cognitive principles: Laws of UX - choice, memory, grouping, progress, attention.
  • Microcopy: labels, buttons, helper text, errors, empty states, confirmations, localization (incl. Turkish).
  • Theming: light/dark consistency - fixed vs adaptive color pairing, overlays, assets, audit procedure, scripts/theme_audit.py.
  • Layout resilience: safe areas, keyboard, narrow/wide/iPad/landscape, large text, clipped controls, extreme data; loading states, skeleton parity, layout shift, image fallbacks.
  • Accessibility: semantics, keyboard, focus, contrast, targets, reduced motion, screen readers.

Hard rules

  • Every change must solve a named problem.
  • Never: fake progress, false urgency, guilt-based opt-outs, hidden costs, hover-only actions, placeholder-as-label, arbitrary "max 7 items" menus, animating everything.
  • Don't ship a fixed/adaptive color pairing (e.g. Color.white background with a dynamic text token, bg-white with text-foreground) unless its contrast is verified in both themes. The default is a background and foreground from the same theme source.
  • Motion: no animation on high-frequency or keyboard-driven actions; never ease-in in UI (exits use a strong ease-out, shorter than the enter); never start from scale(0).
  • Surfaces: tone separates regions, lines mark boundaries people must find (inputs need 3:1), shadows mean elevation. No resting decorative shadows, no border + wide shadow on one element.
  • Never trade readable labels, discoverability, user control or accessibility for decoration.
  • Preserve product claims, prices and business behavior unless changing them is in scope.
  • For library/framework API details, use the environment's documentation workflow (e.g. Context7); do not rely on remembered syntax.

Output

Lead with the outcome in one or two sentences. Respond in the user's language; keep the interface's existing locale unless asked.

For substantial reviews or edits, one table sorted by priority. Omit dimensions with no findings - never pad. Give each visual finding its run (viewport + theme, state, stress) so it can be found again. Then:

  • Verification performed: runs, states, tiles and checks actually done. Mark anything you could not check as "Not verified".
  • Considered and rejected: audit hits or ideas you dropped, one line each with the reason.
  • Verdict for reviews: Block / Needs changes / Approve. Do not approve a screen that has an open "high on sight" finding.

Example (review of a sign-up form):

#PriorityLocationBeforeAfterUser impact
1BlockerSignUp.tsx:42Submit stays enabled while pending; repeated taps send repeated requestsDisable during request, show spinner + "Hesap oluşturuluyor…"Reduces repeat submissions while pending; visible status. Not verified: whether the backend deduplicates (idempotency) - flag for follow-up
2A11ySignUp.tsx:18Email field has placeholder only, no labelPersistent <label> "E-posta"; placeholder ornek@alanadi.comLabel stays visible while typing; screen readers announce it
3Errorvalidation.ts:9"Invalid input""E-posta adresinde @ işareti eksik." next to the fieldUser knows exactly what to fix
4A11y (Dark)FilterSheet.swift:120Sheet uses Color(hex: "F8FAFC") and chips Color.white, but text uses the adaptive ink token → white on white in dark modeSurface and chip backgrounds use adaptive surface tokens; verified in both themesChip labels and section titles readable in dark mode
5PolishCard.tsx:7rounded-xl on card and inner button with p-2Card rounded-2xl (8 + 8), button rounded-lgNested corners look concentric

For a small copy edit: the revised text plus one line of reasoning is enough.

Bundled files

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

Frequently asked questions

What does the Interface Craft AI skill do?

Review, improve, or build a whole interface across usability, task flow, microcopy, system states, accessibility, theming, layout resilience and visual polish. Use for broad requests like "review this screen/UX", "improve this interface", "make this form/onboarding/checkout better", "UX audit", "fix the empty/error/loading states", "check dark/light mode", "cards have different heights", "button does nothing / tap opens the wrong thing", "keyboard covers the button", "breaks on iPad/small screens", "inconsistent spacing/fonts", "arayüzü iyileştir", "bu ekranı incele", "dark/light mode tutar...

Why use Interface Craft on TypingMind?

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

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/harun-yardimci/interface-craft/tree/main/skills/interface-craft. 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 Interface Craft?

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 Interface Craft?

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

Is the Interface Craft AI skill free?

Yes. It is published on GitHub by harun-yardimci 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 👇