typography-spacing-enforcer
This skill scans React component code for typography and spacing violations against a design system. It identifies raw HTML headings, incorrect spacing utilities, and provides specific fix suggestions with file references. It helps maintain UI consistency during component development and code reviews.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install sgcarstrends-backend-typography-spacing-enforcer
Repository
Skill path: apps/web/.claude/skills/typography-spacing-enforcer
This skill scans React component code for typography and spacing violations against a design system. It identifies raw HTML headings, incorrect spacing utilities, and provides specific fix suggestions with file references. It helps maintain UI consistency during component development and code reviews.
Open repositoryBest for
Primary workflow: Design Product.
Technical facets: Frontend, Designer.
Target audience: Frontend developers working on React projects with established design systems, particularly those using Tailwind CSS and component libraries.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: sgcarstrends.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install typography-spacing-enforcer into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/sgcarstrends/backend before adding typography-spacing-enforcer to shared team environments
- Use typography-spacing-enforcer for frontend workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
--- name: typography-spacing-enforcer description: Enforce Typography system and modern spacing conventions. Use when implementing new UI components to ensure design consistency with project standards. --- # Typography & Spacing Enforcer Skill This Skill ensures all UI components follow the project's Typography system and modern spacing conventions for consistent design. ## When to Activate - After creating new UI components - When refactoring existing components - During code reviews before PR approval - When migrating legacy code to new standards ## What to Check ### Typography Violations **Raw HTML Headings**: - ❌ `<h1>`, `<h2>`, `<h3>`, `<h4>` - ✅ `Typography.H1`, `Typography.H2`, `Typography.H3`, `Typography.H4` **Raw Paragraph Tags**: - ❌ `<p className="text-lg">...</p>` - ✅ `Typography.TextLg`, `Typography.Text`, `Typography.TextSm` **Incorrect Heading Hierarchy**: - Multiple H1 elements on a page - Skipping heading levels (H1 → H3) - Using wrong semantic level for content **Missing Semantic Colors**: - Components should use HeroUI semantic colors: - `text-foreground` (primary text) - `text-default-900` (strong emphasis) - `text-default-600` (secondary text) - `text-muted-foreground` (metadata) ### Spacing Violations **Space-y Utilities** (Legacy Pattern): - ❌ `<div className="space-y-4">` - ✅ `<div className="flex flex-col gap-4">` **Margin-Top on Siblings**: - ❌ `<CardComponent className="mt-4" />` - ✅ Parent uses `flex flex-col gap-4` **Odd Gap Values**: - ❌ `gap-1`, `gap-3`, `gap-5` (without justification) - ✅ `gap-2`, `gap-4`, `gap-6`, `gap-8` **Redundant Height/Width** (Tailwind v3.4+): - ❌ `<div className="h-4 w-4">` (equal dimensions) - ✅ `<div className="size-4">` (use size-* utility) - ⚠️ Exception: Different dimensions still use `h-*` and `w-*` (e.g., `h-4 w-6`) **Exception**: `mt-*` is acceptable ONLY for icon alignment with text (e.g., `<Icon className="mt-1" />`) ## Actions Performed 1. **Scan Component Files**: Use Grep to find violations 2. **Report Violations**: List each issue with file:line reference 3. **Provide Auto-Fix Suggestions**: Show before/after code examples 4. **Check Typography Imports**: Ensure `Typography` is imported from `@web/components/typography` 5. **Check Size Utility Usage**: Detect `h-* w-*` patterns with equal values and suggest `size-*` ## Example Output ``` Typography & Spacing Violations Found: src/app/(dashboard)/coe/_components/category-card.tsx:15 ❌ <h3 className="text-2xl">Category A</h3> ✅ <Typography.H3>Category A</Typography.H3> src/components/charts/trend-chart.tsx:42 ❌ <div className="space-y-4"> ✅ <div className="flex flex-col gap-4"> src/app/blog/_components/post-list.tsx:28 ❌ <PostCard className="mt-6" /> ✅ Parent should use: <div className="flex flex-col gap-6"> src/components/icons/search-icon.tsx:8 ❌ <svg className="h-4 w-4"> ✅ <svg className="size-4"> ``` ## Spacing Scale Reference - `gap-2` (0.5rem / 8px) - Small spacing, compact lists - `gap-4` (1rem / 16px) - Standard spacing, most common - `gap-6` (1.5rem / 24px) - Medium spacing, section groups - `gap-8` (2rem / 32px) - Large spacing, major sections ## Typography Components Reference **Headings**: - `Typography.H1` - Page titles (text-4xl, font-semibold) - `Typography.H2` - Section titles (text-3xl, font-semibold) - `Typography.H3` - Card titles (text-2xl, font-medium) - `Typography.H4` - Nested sections (text-xl, font-medium) **Body Text**: - `Typography.TextLg` - Lead paragraphs (text-lg) - `Typography.Text` - Standard body (text-base) - `Typography.TextSm` - Secondary info (text-sm) **UI Labels**: - `Typography.Label` - Form labels, tabs (font-medium, text-sm) - `Typography.Caption` - Metadata, timestamps (text-xs) ## Tools Used - **Grep**: Search for violation patterns across component files - **Read**: Examine specific files for detailed analysis - **Glob**: Find all component files in specific directories ## Target Directories - `src/app/**/_components/` (co-located components) - `src/components/` (shared components) - Exclude: `src/components/ui/` (shadcn/ui - DO NOT MODIFY)