Claude Skills Guide

Claude Code for RTL Right-to-Left Layout Workflow

Building web applications that support right-to-left (RTL) languages like Arabic, Hebrew, Persian, and Urdu requires more than just flipping text alignment. It demands a comprehensive approach to layout, typography, navigation, and user experience. Claude Code can significantly streamline RTL implementation, helping you create polished multilingual experiences without the typical headaches. This guide walks you through a practical workflow for RTL layout development using Claude Code.

Understanding RTL Layout Challenges

RTL layouts mirror the entire user interface, not just the text direction. Every component, from navigation bars to form inputs, needs careful consideration. The main challenges include:

Claude Code can help you anticipate these issues and implement comprehensive solutions.

Setting Up Your RTL Project Foundation

Start by establishing a solid foundation for RTL support in your project. Create a dedicated skill or context for RTL work that Claude Code can reference throughout development.

Creating an RTL Development Context

When starting a new multilingual project, provide Claude Code with clear context about your RTL requirements:

// In your project documentation or CLAUDE.md
// RTL Support Requirements:
// - Primary RTL languages: Arabic (ar), Hebrew (he), Persian (fa)
// - Use logical CSS properties (margin-inline-start, not margin-left)
// - Implement dir="rtl" on the html or body element for RTL languages
// - Test all components in both LTR and RTL modes
// - Use CSS logical properties exclusively for spacing and sizing

This context helps Claude Code generate appropriate code from the start, preventing the common mistake of using physical CSS properties that break RTL layouts.

CSS Logical Properties Workflow

The most important shift when building RTL-compatible interfaces is adopting CSS logical properties. Instead of margin-left and margin-right, use margin-inline-start and margin-inline-end. Claude Code can help you convert existing code or write new code using these modern properties.

When working with Claude Code, explicitly request logical properties:

“Write a navigation component using CSS logical properties so it works in both LTR and RTL directions”

This approach ensures your styles automatically adapt when the direction changes, reducing the need for separate stylesheets or conditional styling.

Implementing Directional Components

Certain UI elements require special attention in RTL layouts. Here’s how to handle them effectively with Claude Code’s assistance.

Navigation components need to mirror correctly. The menu items that appear on the right in LTR should appear on the left in RTL:

.navbar {
  display: flex;
  justify-content: space-between;
  padding-inline: 1rem;
}

.nav-links {
  display: flex;
  gap: 1rem;
  flex-direction: row;
}

.nav-links li {
  padding: 0.5rem;
}

Notice how padding-inline replaces padding-left and padding-right. This single property handles both directions automatically. Claude Code can refactor your existing navigation code to use these logical properties, making it RTL-ready.

Form Inputs and Labels

Form labels should appear on the correct side based on direction. In LTR, labels are typically on the left of inputs; in RTL, they should be on the right:

.form-group {
  display: flex;
  flex-direction: column;
}

.form-label {
  margin-block-end: 0.5rem;
}

.form-input {
  padding-inline: 0.75rem;
  border-inline-start-width: 2px;
}

The border-inline-start property creates a left border in LTR and a right border in RTL—exactly what you want for input focus indicators.

Icons and Directional Elements

Icons with directional meaning need special handling. An arrow pointing right in English should point left in Arabic. Create a system for handling these:

// Directional icon mapping
const directionalIcons = {
  'arrow-right': 'arrow-left', // Flip for RTL
  'chevron-forward': 'chevron-back',
  'back-arrow': 'forward-arrow',
  'caret-right': 'caret-left'
};

function getDirectionalIcon(iconName, isRTL) {
  if (!isRTL) return iconName;
  return directionalIcons[iconName] || iconName;
}

Claude Code can help you audit your icon library and identify which icons need flipping or mapping for RTL support.

Building an RTL Toggle for Testing

One of the most valuable tools for RTL development is a live direction toggle. This allows you to instantly switch between LTR and RTL views during development:

// RTL toggle component
function createDirectionToggle() {
  const toggle = document.createElement('button');
  toggle.id = 'rtl-toggle';
  toggle.textContent = 'Toggle RTL';
  toggle.style.cssText = 'position:fixed;top:10px;right:10px;z-index:9999;';
  
  toggle.addEventListener('click', () => {
    const html = document.documentElement;
    const isRTL = html.dir === 'rtl';
    html.dir = isRTL ? 'ltr' : 'rtl';
    document.body.classList.toggle('rtl', !isRTL);
  });
  
  document.body.appendChild(toggle);
}

// Initialize based on URL parameter
if (new URLSearchParams(window.location.search).has('rtl')) {
  document.documentElement.dir = 'rtl';
  document.body.classList.add('rtl');
}

With this toggle, you can test your entire application in both directions without reloading or using browser dev tools. Claude Code can generate this component and integrate it into your project quickly.

Content Bidirectional Handling

RTL pages often contain LTR content—code snippets, numbers, English brand names, or technical terms. The Unicode bidirectional algorithm handles most cases, but you sometimes need manual intervention.

Using the dir Attribute

Wrap mixed-direction content with the appropriate dir attribute:

<p>The product costs <span dir="ltr">$199.99</span> USD.</p>

<blockquote>
  <p dir="rtl">النص العربي هنا</p>
  <p dir="ltr">English quote here</p>
</blockquote>

Claude Code can scan your content and suggest appropriate dir attributes for mixed-content sections.

The <bdi> Element

For dynamic content where the direction is unknown, use the bidirectional isolation element:

<ul>
  <li><bdi>用户名称</bdi>: 150 points</li>
  <li><bdi> пользователь</bdi>: 200 points</li>
  <li><bdi>משתמש</bdi>: 175 points</li>
</ul>

This prevents the surrounding text’s direction from affecting the embedded content’s display.

Testing Your RTL Implementation

Comprehensive testing is essential for RTL success. Here’s a practical testing workflow:

  1. Visual inspection: Use the RTL toggle to review every page in both directions
  2. Content overflow: Check that text truncation and ellipsis work correctly
  3. Form validation: Ensure error messages appear on the correct side
  4. Responsive behavior: Test at multiple breakpoints—RTL layouts sometimes need different breakpoints
  5. Screen reader testing: Verify that content reading order makes sense in RTL

Create a testing checklist document that Claude Code can reference when making changes. This ensures new features don’t break RTL support.

Best Practices Summary

Follow these key principles for successful RTL implementation:

Claude Code becomes an invaluable partner in RTL development when you provide clear context about your requirements. By establishing good patterns from the start and maintaining comprehensive documentation, you can build applications that feel natural in any language direction.

The initial investment in proper RTL architecture pays dividends as your application grows. With logical CSS properties, proper content handling, and thorough testing, you’ll create experiences that feel truly localized for RTL language speakers.

Built by theluckystrike — More at zovo.one