Spotkit logo

Spotkit

Community
Devesh-Shirsath
spotkit

Generate minimal, abstract, UI-inspired illustrations for software product features — as deterministic SVG. Use when asked for a feature illustration, product illustration, spot illustration, empty-state graphic, feature-card artwork, docs or developer-portal illustration, or a consistent illustration set/family for a product. Also use to turn a feature description or a product screenshot into an abstract UI illustration, to add a new illustration to an existing family, or to retheme an existing set.

Overview

PublisherDevesh-Shirsath
Repositoryspotkit
Skill namespotkit
Stars
102
Forks
9
Bundled files
77
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.

  • 77 bundled files

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

  • Open source

    Published by Devesh-Shirsath on GitHub. Read the source before you install it.

Installation

Install the Spotkit 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/Devesh-Shirsath/spotkit/tree/main
  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/Devesh-Shirsath/spotkit.git \
  .claude/skills/spotkit
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

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

Spotkit

Turn a feature description into a quiet, abstract illustration that looks like a product interface reduced to its most recognizable primitives.

The governing principle:

Abstract the interface, not the idea.

Someone should look at the result and think "I understand what this feature does" — not "that's a screenshot of the product."

Output format

Default to SVG. This style is pure geometry — hairline borders, exact radii, repeated placeholder bars, one stroke weight. Writing it directly gives exact, repeatable output and makes every illustration in a set provably identical in treatment. Image models fail at precisely these things, and fail hardest at consistency across a set.

Use references/image-prompt.md only when the user explicitly wants a prompt for an external image model.

Workflow

Read SPEC.md first. It holds every number, the SVG template, the building blocks and a complete example — enough to draw from. The references below are for the decisions; open one only when a step needs it.

  1. Interpret the feature. One sentence: what does it actually do? → references/metaphor.md
  2. Choose the metaphor. What relationship is this feature about — grouping, connecting, gating, packaging, reviewing, sequencing?
  3. Pick 2–5 primitives that carry that relationship. Not more.
  4. Pick one of the twelve layouts — then adapt it, don't invent. → SPEC.md §7. Choose by the relationship, then by how many elements the idea needs, then by what its neighbour already uses.
  5. Start from that layout's example file (SPEC.md §7 names it) and keep its geometry: panel, backdrop, float, card sizes and positions. Change only the content — the icon, what sits inside the cards, how many rows within the layout's limit. Icon paths come from references/icons.md. If you can run Python here, copy the layout's function in build.py and edit its content.
  6. Check it. Run python3 check.py your.svg if you can, then the list in SPEC.md §9. Simplify what they flag.

If the concept is genuinely ambiguous, offer 2–3 conceptual directions before drawing — different metaphors, never different styling.

The standing rule: adapt, don't invent

Composition is where models drift. Given the same brief, one run that adapted the Split layout produced something that sat in the family at a glance; another that invented a new arrangement produced a busier, off-centre piece that didn't — and the same brief in a different tool drifted further still. The twelve layouts have been balanced against each other; a fresh composition has not.

So, every time, in every tool:

  • Adapt the nearest layout. Its geometry is fixed; its content is yours. Invent a new composition only when none of the twelve can carry the relationship — and say so in the delivery note, naming the rule that forced it.
  • Centred and square. Weight on x=80, filling the 160 square. A landscape strip with empty space above and below is not a spot illustration.
  • Few, large elements. Nothing that carries meaning is smaller than 9 units — that is 9 pixels at display size. If an idea needs more detail than that, it needs fewer elements, not smaller ones.
  • Show change as states. A flow reads fastest as before → after: two cards and an arrow (L12), or one rail (L11). Not a rail and cards and a badge.
  • Never improvise a value. Every number, colour and snippet comes from SPEC.md. If a value you need is not there, reuse the nearest one that is.

What is fixed and what is yours

The skill separates the method from the look.

Fixed — these hold for any illustration in this genre:

  • Abstract the interface, not the idea
  • Text-independence — it must read with every label removed
  • One dominant visual idea per illustration
  • ~20–40% of real UI fidelity
  • Legible depth hierarchy, however it is achieved
  • Whitespace as structure, not leftover space
  • Restraint: few icons, few colors, one interaction cue
  • Internal consistency across a set

Yours — set once per project, then inherited by the whole family:

elevation model · edge treatment · overhang · corner language · stroke weight · icon style · palette · accent · density

A coherent combination of those is a style spec. One ships today — soft shadow, fade-out edge, overhanging float, generous radii, hairline strokes, monoline icons, warm grayscale, optional single accent, sparse density — and it is what assets/ and examples/ implement. Additional directions are additive; nothing in the method changes when one is added.

Invariants of the shipped spec

  • One base panel, sized to its content. Not a fixed box — a timeline gets a narrow frame, a table of rows a wide one. Its edge either fades (open bottom: there is more) or is contained (closed: this is all of it). Choose by meaning.
  • One thing carries the shadow. Usually a floating element breaking past the panel's edges; sometimes a raised row or the middle card of a fan. (The corner-chip layout's diagonal pair counts as one.)
  • The elevation goes on the record being acted on, not on a decorative circle above it. When a medallion sits over a prominent first row, the row floats and the medallion stays flat.
  • Placeholder bars, never words, always short-over-long, never equal widths.
  • A backdrop is optional and varied — none, a plate, an offset sheet, or a twin stack. The same plate behind every illustration is what makes a set look mechanical.
  • One stroke width and one stroke colour, everywhere. Width 0.5, --il-line. Hierarchy comes from fills, opacity and elevation — never line weight. Separators are filled hairlines, not strokes.
  • Equal top and bottom padding inside every card, bottom never zero. This fails silently more than anything else here — verify it by arithmetic.
  • The panel sits above its backdrop, and no two sheets share a top edge.
  • Nothing overlaps what it sits between. A glyph in a gap fits inside it with clearance; a rail is capped by its first node. build.py has guards (fits, rail, padded) that raise rather than ship these — use them.
  • One icon family, one radius language, one shadow across the entire set.
  • Every card carries a hairline, not just a shadow — at 160px there is no text to hold the hierarchy, so the surfaces have to, and a shadow alone does not separate white on near-white.
  • The last content block sits inside the fade and half-dissolves. That half-visible row says "and more" without adding anything. Equally: nothing important may land below y=112, or it dissolves mid-content.
  • Vary the layout, never the language. Monotony is the failure mode of this style — a set where every piece is "header card, then rows" reads as one image twelve times. See archetypes.md.

Two things that will bite you

  • Icons are Phosphor regular, filled, on a 256 grid. Set fill, never stroke. Bold reads heavy against 0.5-unit structural strokes. Paste the paths from references/icons.md; never draw a glyph yourself.
  • CSS custom properties do not cross into <img> or <object>. An SVG loaded that way shows fallback colors forever and will not follow dark mode. Inline the markup to theme it — and suffix every id when you do, or masks and filters cross-apply between illustrations.

Reference files

Read the one you need; don't load them all.

FileRead it when
SPEC.mdAlways, first. Every number, the template, one full example.
references/examples.mdYou picked a layout — its finished SVG, to adapt.
references/icons.mdYou need an icon — paste-ready Phosphor paths.
references/metaphor.mdTranslating a feature into a concept. Catalog of ~24 common SaaS features.
references/archetypes.mdChoosing a layout. Twelve compositions and the four choices that generate them.
references/primitives.mdYou need the reasoning behind a building block.
references/theme.mdColors, tokens, light/dark, accent rules, deriving your own palette.
references/scaling.mdAny canvas that is not a ~160px square.
references/screenshots.mdThe user supplied a screenshot of the real UI.
references/sets.mdProducing or extending a family.
references/checklist.mdBefore delivering. Always.
references/image-prompt.mdThe user explicitly wants an image-model prompt.

Delivering

The minimum useful answer is a short concept note plus the SVG:

Feature interpretation — one line. Metaphor — one line. Primitives — the 2–5 used. The SVG.

Don't pad it with explanation the user didn't ask for.

Assets

  • assets/illustration.css — token definitions, light and dark. Drop into a site.
  • examples/ — twelve exemplars, one per layout. Open examples/gallery.html for the contact sheet in both themes.
  • icons.py — embedded Phosphor geometry (regular is what the system uses; bold is kept for anyone who wants a heavier variant).
  • check.py — lints an SVG against the rules that fail silently (python3 check.py file.svg), and the docs against build.py (--docs).
  • build.py — the generator that produced them. Every constant in one place; change one and the whole family moves together. Worth copying for any set larger than about eight.

Bundled files

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

and 17 more files.

Frequently asked questions

What does the Spotkit AI skill do?

Generate minimal, abstract, UI-inspired illustrations for software product features — as deterministic SVG. Use when asked for a feature illustration, product illustration, spot illustration, empty-state graphic, feature-card artwork, docs or developer-portal illustration, or a consistent illustration set/family for a product. Also use to turn a feature description or a product screenshot into an abstract UI illustration, to add a new illustration to an existing family, or to retheme an existing set.

Why use Spotkit on TypingMind?

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

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Devesh-Shirsath/spotkit/tree/main. 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 Spotkit?

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

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

Is the Spotkit AI skill free?

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