Synthesizes multiple screenshot extractions into unified design systems by inventorying sources, consolidating tokens for color, typography, spacing, elevation, and normalizing components.
From humaninloopnpx claudepluginhub deepeshbodh/human-in-loop --plugin humaninloopThis skill uses the workspace's default tool permissions.
references/implementation-output-templates.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Synthesize individual screenshot extractions produced by humaninloop:analysis-screenshot into a unified, coherent design system. Every token in the final system traces back to its source screenshot, every conflict is documented with resolution rationale, and the output is implementation-ready.
humaninloop:patterns-interface-design)humaninloop:analysis-screenshot first)REQUIRED: Run humaninloop:analysis-screenshot on each reference screenshot before invoking this skill. Each extraction provides the raw material for assembly.
Gather all extraction documents. Each extraction should contain: color palette, typography scale, spacing scale, component catalog, layout structure, and border/elevation system.
Before merging anything, catalog what exists.
EXTRACTION INVENTORY
Source 1: [Name]
Platform: [platform]
Color tokens: [count] | Typography levels: [count] | Spacing values: [count]
Components: [list]
Gaps: [list]
Source 2: [Name]
...
OVERLAP MATRIX:
Colors: Sources [1, 2, 3] — merge required
Typography: Sources [1, 3] — merge required
Spacing: Sources [1, 2] — merge required
Components: Sources [1, 2, 3] — normalization required
Elevation: Source [2] only — adopt directly
UNIQUE CONTRIBUTIONS:
Source 1: [specific tokens or components only this source provides]
Source 2: [specific tokens or components only this source provides]
Merge color palettes, typography scales, and spacing scales from all sources into unified scales.
UNIFIED COLOR PALETTE
NEUTRALS:
bg-base: #1A1A2E (from: Source 1 — Notion dark mode)
bg-elevated: #222240 (from: Source 2 — Linear cards)
bg-surface: #2A2A4A (derived: midpoint between Source 1 and Source 2)
...
CONFLICTS RESOLVED:
bg-base: Source 1 used #1A1A2E, Source 2 used #1C1C1C
Decision: Adopted Source 1 value — warmer tone aligns with brand direction
Harmonize component variants from different sources into a consistent library.
COMPONENT: Button
Sources: [Source 1, Source 3]
Variants: primary, secondary, ghost, icon-only
Resolved tokens:
Height: var(--space-xl) (40px)
Padding: var(--space-xs) var(--space-md)
Border radius: var(--radius-md)
Font: var(--font-size-label) / var(--font-weight-medium)
Colors:
Primary BG: var(--color-brand-primary)
Primary text: var(--color-text-inverse)
Secondary BG: var(--color-bg-elevated)
Conflict notes:
Source 1 used 8px radius, Source 3 used 12px.
Decision: 8px — matches the overall compact density.
Define primary/secondary/tertiary relationships across the entire system.
| Level | Purpose | Example Assignment |
|---|---|---|
| Primary | Main actions, brand expression | Brand color for buttons, links |
| Secondary | Supporting actions, alternative paths | Muted brand for secondary buttons |
| Tertiary | Background accents, hover states | Tinted surfaces |
| Neutral | Content, structure, text | Gray scale for text and borders |
| Semantic | Status communication | Success, warning, error, info |
| Level | Role | Tokens |
|---|---|---|
| Display | Hero content, landing sections | Largest size, heaviest weight |
| Heading | Section titles, page headers | h1 through h3 |
| Body | Primary content, descriptions | Standard reading size |
| UI | Labels, buttons, inputs | Slightly smaller, medium weight |
| Caption | Metadata, timestamps, help text | Smallest, muted color |
| Context | Scale Range | Application |
|---|---|---|
| Component internals | 2xs through sm | Icon gaps, input padding, tight pairs |
| Between elements | sm through lg | Form fields, button groups, list items |
| Section separation | lg through 2xl | Content sections, card groups |
| Layout structure | 2xl through 3xl | Page margins, major divisions |
All conflicts identified during Phases 2-4 MUST be documented in a single conflict log.
CONFLICT LOG
ID: C-001
Category: Color
Description: Background base color differs between sources
Source 1: #1A1A2E (warm dark blue)
Source 2: #1C1C1C (neutral dark gray)
Resolution: Adopted #1A1A2E
Rationale: Warm undertone creates more inviting feel; neutral gray reserved
for elevated surfaces to create natural contrast hierarchy.
ID: C-002
Category: Spacing
Description: Base unit differs between sources
Source 1: 4px base
Source 3: 8px base
Resolution: Adopted 8px base
Rationale: 8px produces fewer fractional values at standard component sizes;
4px granularity available through 0.5x multiplier where needed.
Mark every conflict with a unique ID. Reference these IDs in the final system documentation when a token's origin involves a resolved conflict.
Produce the final design system document.
SOURCE ATTRIBUTION INDEX
Token Source Conflict?
──────────────────────── ─────────────── ─────────
--color-brand-primary Source 1 No
--color-bg-base Source 1 C-001
--color-bg-elevated Source 2 No
--font-family-primary Source 1 No
--space-base Source 3 C-002
--radius-md Source 1 C-003
Translate the unified system into code-ready formats. See references/implementation-output-templates.md for complete templates.
Produce at least ONE of the following based on the target platform:
| Platform | Output |
|---|---|
| Web (vanilla) | CSS custom properties on :root |
| Web (Tailwind) | tailwind.config.js theme extension |
| iOS | SwiftUI DesignTokens enum |
| Android | Compose Theme.kt tokens |
| Cross-platform | All applicable formats |
/* from: Linear dashboard */)| Mistake | Fix |
|---|---|
| Merging colors without checking delta-E proximity | Compare colors numerically; near-duplicates within delta-E 3.0 should merge |
| Dropping source attribution during consolidation | Carry attribution through every phase; final system traces every token to a screenshot |
| Choosing one source's tokens wholesale and ignoring others | Evaluate each token category independently; best values may come from different sources |
| Resolving conflicts without documenting rationale | Every conflict resolution needs a written justification in the conflict log |
| Creating components with hard-coded values instead of system tokens | Every component value must reference a unified token; no magic numbers |
| Skipping the gaps section because "the system is complete" | Aggregate gaps from all extractions; assembly introduces additional gaps (e.g., untested combinations) |
| Producing implementation code without source comments | Code-level comments connect tokens back to design decisions and source screenshots |
| Treating spacing from different sources as additive instead of deduplicating | Merge overlapping values; the unified scale should be smaller than the sum of all source scales |
Before delivering the assembled design system:
Inventory:
Consolidation:
Normalization:
Hierarchy:
Transparency:
Implementation: