Skip to main content
Impeccable uses a sophisticated build system to maintain one source of truth for design skills and commands, then automatically transform them into provider-specific formats. Each AI tool has different capabilities, so we adapt the output rather than limiting the source.

Architecture Overview

Impeccable uses Option A: Feature-Rich Source architecture:
1

Source Files

Full metadata with YAML frontmatter, args, descriptions. Located in source/ directory.
2

Build System

Transforms source → provider-specific formats using Bun. Located in scripts/ directory.
3

Distribution

Committed output files for 6 providers in dist/ directory. Users can copy directly without build tools.

Why Option A?

Different providers have different capabilities:
  • Cursor: No frontmatter or arguments support (lowest common denominator)
  • Claude Code: Full YAML frontmatter, arguments, modular files
  • Gemini CLI: TOML commands, modular skills with imports
  • Codex CLI: Custom prompt format, arguments as variables
  • Agents: Agent Skills standard for VS Code Copilot, Antigravity
  • Kiro: Custom skill format
Instead of limiting all providers to Cursor’s capabilities, we:
  1. Author with full metadata in source files
  2. Generate full-featured versions for providers that support it
  3. Generate downgraded versions for Cursor
This allows each provider to use its native features while maintaining a single source of truth.

Source File Format

All skills follow the Agent Skills specification with YAML frontmatter:

Skills vs Commands

Impeccable previously distinguished between skills and commands, but has now unified to a skills-only architecture:
  • Skills can be user-invokable (like commands) or non-invokable (like traditional skills)
  • The userInvokable: true frontmatter flag determines if a skill appears as a slash command
  • This simplifies the codebase while maintaining the same functionality

User-Invokable Skills

Skills with userInvokable: true appear as slash commands like /audit, /polish, /critique

Reference Skills

Skills like frontend-design are loaded automatically and provide context, not direct commands

Build System

The build system uses Bun for fast, zero-config builds. It follows a modular transformer pattern:

Architecture

Build Process

1

Read Source Files

Parse all skills with YAML frontmatter from source/.claude/skills/
2

Transform for Each Provider

Apply provider-specific transformations (6 providers × 2 versions = 12 outputs)
3

Assemble Universal

Combine all provider outputs into universal bundles
4

Create ZIPs

Generate downloadable ZIP files for each provider
5

Build Website

Compile Tailwind CSS and bundle static site with Bun
Run the build:
Bun is 2-4x faster than Node.js and includes TypeScript support, package management, and bundling—no additional tools needed.

Provider Transformations

Each provider has a focused transformer file (~30-85 lines). Here’s how each works:

1. Cursor (Agent Skills Standard)

Format: Agent Skills standard
  • Skills: dist/cursor/.cursor/skills/{name}/SKILL.md
    • Full YAML frontmatter with name/description
    • Reference files in skill subdirectories
  • Installation: Extract ZIP into project root, creates .cursor/ folder
  • Limitation: Requires Cursor nightly channel
Format: Full YAML frontmatter (matches Anthropic Skills spec)
  • Skills: dist/claude-code/.claude/skills/{name}/SKILL.md
  • Preserves: All metadata, all args
  • Installation: Extract ZIP into project root or ~/.claude/ for global
This is the reference implementation—full metadata, modular structure, maximum flexibility.
Format: Modular with imports
  • Skills: dist/gemini/GEMINI.{name}.md (root level)
    • Main GEMINI.md uses @./GEMINI.{name}.md import syntax
    • Gemini automatically loads imported files for better context management
  • Installation: Extract ZIP into project root, creates .gemini/ folder + skill files
Format: Agent Skills standard
  • Skills: dist/codex/.codex/skills/{name}/SKILL.md
    • Same SKILL.md format as Claude Code with YAML frontmatter
    • Reference files in skill subdirectories
  • Installation: Extract ZIP into project root, creates .codex/ folder

5. Agents (VS Code Copilot + Antigravity)

Format: Agent Skills standard
  • Skills: dist/agents/.agents/skills/{name}/SKILL.md
  • Installation: Extract ZIP into project root, creates .agents/ folder

6. Kiro

Format: Kiro custom format
  • Skills: dist/kiro/.kiro/skills/{name}/SKILL.md
  • Installation: Extract ZIP into project root, creates .kiro/ folder

Prefixed Versions

All providers are built in two versions:

Standard

Commands like /audit, /polish, /critique

Prefixed

Commands prefixed with i-: /i-audit, /i-polish, /i-critique. Useful for avoiding conflicts with existing commands.
The build system generates both automatically:

Universal Bundle

The universal bundle contains all providers in one package:
These are hidden folders (dotfiles). On macOS, press Cmd+Shift+. in Finder to see them.

Key Design Decisions

Why Commit dist/?

End users can copy files directly without needing build tools. This makes installation trivial—just download and extract.

Why Separate Transformers?

  • Each provider ~30-85 lines, easy to understand
  • Can modify one without affecting others
  • Easy to add new providers (just add a new transformer file)

Why Bun?

Speed

Much faster than Node.js (2-4x)

All-in-One

Runtime + package manager + bundler

Zero Config

TypeScript native, no configuration needed

Compatible

Works with existing Node.js code

Why Modular Skills?

For Gemini and other providers that support it:
  • Better context management: Load only what’s needed
  • Cleaner organization: Each skill is independent
  • Native imports: Gemini uses @file.md syntax to load dependencies

Adding New Content

To add a new skill or update existing ones:
1

Edit Source Files

Create or modify files in source/.claude/skills/. Always edit source, never edit dist/ directly.
2

Add Frontmatter

Include YAML frontmatter with name, description, and userInvokable (if it’s a command).
3

Write Instructions

Write the skill body with clear instructions for the LLM.
4

Build

Run bun run build to generate all provider outputs.
5

Test

Test with your provider to verify the transformation works correctly.
6

Commit

Commit both source and dist files to keep them in sync.
Source is truth: Always edit source/, never edit dist/ directly. The build system overwrites dist/ on every run.

Website Integration

The build system also handles the website at impeccable.style:

Tech Stack

  • Frontend: Vanilla JavaScript, modern CSS
  • Styling: Tailwind CSS v4 with @theme directive
  • Development: Bun server with native routes (server/index.js)
  • Production: Vercel Functions with Bun runtime (/api directory)

Dual Server Setup

Development

Monolithic Bun server at server/index.js for fast local iteration

Production

Individual Vercel Functions in /api directory for serverless deployment
Both share the same handler logic from server/lib/api-handlers.js—zero duplication.

API Endpoints

Transformer Pattern

Each transformer follows the same interface:
This pattern makes it easy to:
  • Add new providers (just implement the interface)
  • Test transformations in isolation
  • Maintain consistency across providers

Design Principles

Learn the design principles encoded in the skills

Contributing

Guidelines for contributing to Impeccable