Search

PythonReactSEOPDF
GitHub Skill

dcyfr-design-tokens

Enforce DCYFR design token patterns and fix hardcoded values

dcyfr☆ 2 Repository stars0 Repository forks

Installation

Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.

View source ↗Guides

Skill instructions

What I do

I enforce strict design token compliance across the DCYFR portfolio project by:

  • Detecting hardcoded Tailwind values (gap-8, text-3xl, max-w-4xl, etc.)
  • Replacing them with proper design tokens from @/lib/design-tokens
  • Validating color, spacing, typography, and container width usage
  • Providing ESLint auto-fix guidance for common violations

When to use me

✅ Use this skill when:

  • Fixing ESLint design token violations (@dcyfr/design-tokens/*)
  • Converting legacy code to use design tokens
  • Reviewing PRs for token compliance
  • Implementing new components following DCYFR patterns

❌ Don't use this skill for:

  • General Tailwind CSS questions (use documentation)
  • Non-DCYFR projects (patterns are project-specific)
  • Performance optimization (use dcyfr-performance skill)

Core Rules (NON-NEGOTIABLE)

1. Import Design Tokens

// ✅ CORRECT: Import tokens
import { SPACING, TYPOGRAPHY, CONTAINER_WIDTHS, COLORS } from "@/lib/design-tokens";

// ❌ WRONG: Hardcoded values
<div className="gap-8 text-3xl max-w-4xl text-gray-900">

2. Use Token Categories

Category Import Example Usage
Spacing SPACING.section, SPACING.content mt-${SPACING.section}
Typography TYPOGRAPHY.h1.standard className={TYPOGRAPHY.h1.standard}
Containers CONTAINER_WIDTHS.standard className={CONTAINER_WIDTHS.standard}
Colors COLORS.text.primary className={COLORS.text.primary}

3. Common Replacements

// Spacing
gap-8     → gap-${SPACING.content}
mt-16     → mt-${SPACING.section}
p-4       → p-${SPACING.card}

// Typography
text-3xl  → ${TYPOGRAPHY.h1.standard}
text-sm   → text-base (use standard sizes)

// Containers
max-w-4xl → ${CONTAINER_WIDTHS.standard}
max-w-7xl → ${CONTAINER_WIDTHS.wide}

// Colors
text-gray-900     → ${COLORS.text.primary}
bg-neutral-50     → ${COLORS.background.subtle}

Validation Commands

# Check design token compliance
npm run lint

# Auto-fix violations
npm run lint -- --fix

# Enhanced validation (OpenCode-specific)
npm run check:opencode

ESLint Rules

The project uses custom ESLint rules to enforce design tokens:

  • @dcyfr/design-tokens/no-hardcoded-spacing - Blocks gap-*, mt-*, p-*
  • @dcyfr/design-tokens/no-hardcoded-typography - Blocks text-* size utilities
  • @dcyfr/design-tokens/no-hardcoded-containers - Blocks max-w-*

Target: ≥90% design token compliance

Common Patterns

Blog Post Card

import { SPACING, TYPOGRAPHY, CONTAINER_WIDTHS } from "@/lib/design-tokens";

export function PostCard() {
  return (
    <article className={`flex flex-col gap-${SPACING.content}`}>
      <h2 className={TYPOGRAPHY.h2.standard}>
        {title}
      </h2>
      <div className={`mt-${SPACING.content}`}>
        {excerpt}
      </div>
    </article>
  );
}

Page Layout

import { PageLayout } from "@/components/layouts";
import { CONTAINER_WIDTHS, SPACING } from "@/lib/design-tokens";

export default function Page() {
  return (
    <PageLayout>
      <div className={`mx-auto ${CONTAINER_WIDTHS.standard}`}>
        <div className={`mt-${SPACING.section}`}>
          Content
        </div>
      </div>
    </PageLayout>
  );
}

Related Documentation

  • Full enforcement rules: .github/agents/enforcement/DESIGN_TOKENS.md
  • Quick reference: docs/ai/quick-reference.md
  • Component patterns: .github/agents/patterns/COMPONENT_PATTERNS.md

Approval Gates

Design token violations are STRICT (hard block):

  • ❌ PR builds fail with ESLint errors
  • ❌ Pre-commit hooks warn about violations
  • ✅ Must fix before merging

No exceptions - design tokens are mandatory for visual consistency.

Examples

Read the usage examples in the source repository.

View source ↗

Source history

Indexed on
2026-01-20
Index updated
2026-01-26
Branch
main

Index and sync dates describe this directory. View the source repository for code history.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!