Generate accurate Japanese UI with proper CJK typography using DESIGN.md specifications for 186+ Japanese web services
Scanned 9/8/2026
Install to Claude Code
npx -y skills add Aradotso/design-skills --skill awesome-design-md-jp --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Awesome Design Md Jp?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aradotso-awesome-design-md-jp)More formats (shields.io, HTML) on the badges page.
---
name: awesome-design-md-jp
description: Generate accurate Japanese UI with proper CJK typography using DESIGN.md specifications for 186+ Japanese web services
triggers:
- use Japanese design system
- apply Japanese typography rules
- create Japanese UI with proper fonts
- implement CJK typographic standards
- generate Japanese web interface
- follow Japanese design guidelines
- add Japanese font fallback chain
- use DESIGN.md for Japanese site
---
# Awesome Design MD JP Skill
> Skill by [ara.so](https://ara.so) — Design Skills collection.
## What This Project Does
Awesome Design MD JP is a curated collection of `DESIGN.md` files for 186+ Japanese web services, enabling AI agents to generate accurate Japanese UI with proper CJK typography. It extends the Google Stitch DESIGN.md format with Japanese-specific typographic rules including font stacks, line-height, letter-spacing, OpenType features, and kinsoku shori (禁則処理).
Unlike Western DESIGN.md collections, this addresses fundamental differences in Japanese typography:
- Japanese font fallback chains (和文 → 欧文 → generic)
- Wider line-height (1.5-2.0 vs 1.4-1.5 for Latin)
- Letter-spacing for body text (0.04-0.1em)
- Kinsoku shori (禁則処理) for punctuation placement
- OpenType features (`palt`, `kern`) for proportional typesetting
- Mixed script composition rules (和文 + 欧文)
## Installation
Clone the repository:
```bash
git clone https://github.com/kzhrknt/awesome-design-md-jp.git
cd awesome-design-md-jp
```
No build step required — all DESIGN.md files are ready to use.
## Repository Structure
```
awesome-design-md-jp/
├── design-md/
│ ├── apple/
│ │ ├── DESIGN.md
│ │ ├── preview.html
│ │ └── preview-screenshot.png
│ ├── muji/
│ ├── mercari/
│ ├── studio/
│ └── [186+ other services]/
├── gallery.html # Visual gallery of all designs
└── README.md
```
## Using DESIGN.md Files
### 1. Copy to Your Project
Copy the relevant DESIGN.md to your project root:
```bash
# Example: Using MUJI design system
cp design-md/muji/DESIGN.md ./DESIGN.md
```
### 2. Reference in AI Agent Context
Add to your AI agent's context (`.cursorrules`, `.clinerules`, etc.):
```markdown
Follow the design specifications in DESIGN.md for all UI implementation.
Pay special attention to Japanese typography rules in the Typography section.
```
### 3. Direct Integration
Import design tokens programmatically:
```javascript
// Example: Parsing DESIGN.md for design tokens
import fs from 'fs';
import path from 'path';
function parseDesignMd(filePath) {
const content = fs.readFileSync(filePath, 'utf-8');
const tokens = {
colors: {},
typography: {},
spacing: {}
};
// Extract color palette
const colorMatch = content.match(/### Color Palette\n\n```css\n([\s\S]*?)```/);
if (colorMatch) {
const colorLines = colorMatch[1].split('\n');
colorLines.forEach(line => {
const match = line.match(/--([^:]+):\s*([^;]+);/);
if (match) {
tokens.colors[match[1]] = match[2].trim();
}
});
}
return tokens;
}
const tokens = parseDesignMd('./DESIGN.md');
console.log(tokens.colors);
// { primary: '#1976d2', background: '#ffffff', ... }
```
## Japanese Typography Patterns
### Font Stack Implementation
```css
/* Proper Japanese font fallback chain */
body {
font-family:
"Hiragino Kaku Gothic ProN", /* macOS Japanese */
"Hiragino Sans", /* macOS modern */
"Yu Gothic Medium", /* Windows 8.1+ */
"Meiryo", /* Windows fallback */
"Noto Sans JP", /* Web font */
sans-serif; /* Generic fallback */
}
/* For mixed Japanese + English content */
.body-text {
font-family:
"Hiragino Kaku Gothic ProN",
"Helvetica Neue", /* English portions */
Arial,
"Noto Sans JP",
sans-serif;
}
```
### Line Height for Japanese
```css
/* Japanese text requires more vertical space */
.ja-body {
line-height: 1.8; /* vs 1.5 for English */
}
.ja-heading {
line-height: 1.6; /* vs 1.2 for English */
}
.ja-caption {
line-height: 1.7; /* vs 1.4 for English */
}
```
### Letter Spacing
```css
/* Japanese body text needs slight letter-spacing */
.ja-body {
letter-spacing: 0.05em; /* 0.04-0.1em typical */
}
.ja-heading {
letter-spacing: 0.08em; /* Slightly more for headings */
}
/* No letter-spacing for Latin text */
.en-text {
letter-spacing: 0;
}
```
### OpenType Features
```css
/* Enable proportional metrics for Japanese fonts */
.ja-text {
font-feature-settings:
"palt" 1, /* Proportional alternate metrics */
"kern" 1; /* Kerning */
}
/* For vertical text */
.vertical-text {
writing-mode: vertical-rl;
font-feature-settings:
"vpal" 1, /* Vertical proportional alternates */
"vkrn" 1; /* Vertical kerning */
}
```
### Kinsoku Shori (禁則処理)
```css
/* Proper line-breaking rules for Japanese */
.ja-text {
word-break: normal;
overflow-wrap: break-word;
line-break: strict; /* Enforce strict kinsoku */
/* or auto, normal, loose, anywhere, strict */
}
/* Prevent widows/orphans */
.ja-paragraph {
orphans: 2;
widows: 2;
}
```
## Common Implementation Patterns
### Pattern 1: Apply Complete DESIGN.md System
```css
/* Import design tokens from MUJI DESIGN.md */
:root {
/* Colors from DESIGN.md */
--primary: #000000;
--background: #ffffff;
--text: #333333;
--border: #e0e0e0;
/* Typography from DESIGN.md */
--font-ja: "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", "Noto Sans JP", sans-serif;
--font-en: "Helvetica Neue", Arial, sans-serif;
/* Spacing from DESIGN.md */
--space-xs: 4px;
--space-sm: 8px;
--space-md: 16px;
--space-lg: 24px;
--space-xl: 32px;
}
body {
font-family: var(--font-ja);
line-height: 1.8;
letter-spacing: 0.05em;
color: var(--text);
background: var(--background);
}
h1, h2, h3 {
line-height: 1.6;
letter-spacing: 0.08em;
}
```
### Pattern 2: Mix Japanese and English Typography
```html
<style>
.mixed-content {
font-family: "Hiragino Kaku Gothic ProN", "Helvetica Neue", sans-serif;
}
/* Target Japanese characters */
.mixed-content:lang(ja) {
line-height: 1.8;
letter-spacing: 0.05em;
}
/* Target English characters */
.mixed-content:lang(en) {
line-height: 1.5;
letter-spacing: 0;
}
</style>
<div class="mixed-content">
<p lang="ja">これは日本語のテキストです。</p>
<p lang="en">This is English text.</p>
</div>
```
### Pattern 3: Responsive Japanese Typography
```css
/* Mobile-first Japanese typography */
.ja-heading {
font-size: 1.5rem;
line-height: 1.6;
letter-spacing: 0.08em;
}
@media (min-width: 768px) {
.ja-heading {
font-size: 2rem;
line-height: 1.5;
letter-spacing: 0.1em;
}
}
@media (min-width: 1024px) {
.ja-heading {
font-size: 2.5rem;
line-height: 1.4;
}
}
```
### Pattern 4: Component with DESIGN.md Tokens
```jsx
// React component using parsed DESIGN.md tokens
import React from 'react';
import designTokens from './design-tokens.json';
const JapaneseCard = ({ title, description }) => {
const styles = {
card: {
backgroundColor: designTokens.colors.background,
border: `1px solid ${designTokens.colors.border}`,
borderRadius: designTokens.radii.md,
padding: designTokens.spacing.lg,
},
title: {
fontFamily: designTokens.typography.fontFamily.japanese,
fontSize: designTokens.typography.fontSize.h3,
lineHeight: designTokens.typography.lineHeight.heading,
letterSpacing: designTokens.typography.letterSpacing.heading,
color: designTokens.colors.text,
marginBottom: designTokens.spacing.md,
},
description: {
fontFamily: designTokens.typography.fontFamily.japanese,
fontSize: designTokens.typography.fontSize.body,
lineHeight: designTokens.typography.lineHeight.body,
letterSpacing: designTokens.typography.letterSpacing.body,
color: designTokens.colors.textSecondary,
},
};
return (
<div style={styles.card}>
<h3 style={styles.title}>{title}</h3>
<p style={styles.description}>{description}</p>
</div>
);
};
export default JapaneseCard;
```
### Pattern 5: CSS-in-JS with Japanese Typography
```javascript
// Styled-components with Japanese typography
import styled from 'styled-components';
const JapaneseText = styled.p`
font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", "Noto Sans JP", sans-serif;
line-height: 1.8;
letter-spacing: 0.05em;
font-feature-settings: "palt" 1, "kern" 1;
word-break: normal;
overflow-wrap: break-word;
line-break: strict;
`;
const JapaneseHeading = styled.h2`
font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", "Noto Sans JP", sans-serif;
font-size: 2rem;
line-height: 1.6;
letter-spacing: 0.08em;
font-weight: 600;
font-feature-settings: "palt" 1, "kern" 1;
`;
// Usage
const App = () => (
<div>
<JapaneseHeading>見出しテキスト</JapaneseHeading>
<JapaneseText>
本文のテキストです。適切な行間と字間が設定されています。
</JapaneseText>
</div>
);
```
## Browsing the Collection
### View Gallery
Open `gallery.html` in your browser or visit:
```
https://kzhrknt.github.io/awesome-design-md-jp/gallery.html
```
### Preview Individual Designs
Each design includes a `preview.html` file:
```bash
# Open MUJI preview
open design-md/muji/preview.html
# Open Apple preview
open design-md/apple/preview.html
```
## Available Design Systems (186+)
**Tech Companies**: Apple, LINE, Mercari, SmartHR, freee, note, Cybozu, Qiita, Zenn, pixiv, connpass, Sansan, PayPay, MOSH, STORES, Wantedly
**Media & Publishing**: WIRED, 日経電子版, BRUTUS, Casa BRUTUS, Pen Online, POPEYE, ほぼ日
**E-commerce & Retail**: MUJI, UNIQLO, Rakuten, Tabelog, Cookpad, 一休.com, Snow Peak, JINS, BEAMS
**Design & Creative**: STUDIO, nendo, Takram, teamLab, 21_21 DESIGN SIGHT, NDC, Droga5
**Automotive**: Toyota, Mazda, LEXUS
**Government**: デジタル庁 (Digital Agency)
**Traditional & Crafts**: とらや, 中川政七商店, 吉田カバン, SOU・SOU, カキモリ
**Luxury & Fashion**: ISSEY MIYAKE, AURALEE, ミナ ペルホネン, 45R
**Home & Lifestyle**: 星野リゾート, BALMUDA, ±0, KINTO, IDÉE, ACTUS, Karimoku New Standard
**Beauty & Cosmetics**: Shiseido, POLA, OSAJI
And 140+ more…
## Configuration
### Create design-tokens.json
```javascript
// scripts/extract-tokens.js
const fs = require('fs');
const path = require('path');
function extractTokens(designMdPath) {
const content = fs.readFileSync(designMdPath, 'utf-8');
const tokens = {
colors: {},
typography: {
fontFamily: {},
fontSize: {},
lineHeight: {},
letterSpacing: {}
},
spacing: {},
radii: {}
};
// Extract CSS custom properties
const cssBlocks = content.match(/```css\n([\s\S]*?)```/g) || [];
cssBlocks.forEach(block => {
const css = block.replace(/```css\n|```/g, '');
const lines = css.split('\n');
lines.forEach(line => {
const match = line.match(/--([^:]+):\s*([^;]+);/);
if (match) {
const [, key, value] = match;
if (key.startsWith('color-')) {
tokens.colors[key.replace('color-', '')] = value.trim();
} else if (key.startsWith('font-family-')) {
tokens.typography.fontFamily[key.replace('font-family-', '')] = value.trim();
} else if (key.startsWith('font-size-')) {
tokens.typography.fontSize[key.replace('font-size-', '')] = value.trim();
} else if (key.startsWith('line-height-')) {
tokens.typography.lineHeight[key.replace('line-height-', '')] = value.trim();
} else if (key.startsWith('letter-spacing-')) {
tokens.typography.letterSpacing[key.replace('letter-spacing-', '')] = value.trim();
} else if (key.startsWith('space-')) {
tokens.spacing[key.replace('space-', '')] = value.trim();
} else if (key.startsWith('radius-')) {
tokens.radii[key.replace('radius-', '')] = value.trim();
}
}
});
});
return tokens;
}
// Usage
const tokens = extractTokens('./design-md/muji/DESIGN.md');
fs.writeFileSync(
'./design-tokens.json',
JSON.stringify(tokens, null, 2)
);
```
### Tailwind CSS Integration
```javascript
// tailwind.config.js
const designTokens = require('./design-tokens.json');
module.exports = {
theme: {
extend: {
colors: designTokens.colors,
fontFamily: {
ja: designTokens.typography.fontFamily.japanese?.split(',').map(f => f.trim()) || [],
en: designTokens.typography.fontFamily.english?.split(',').map(f => f.trim()) || [],
},
fontSize: designTokens.typography.fontSize,
lineHeight: designTokens.typography.lineHeight,
letterSpacing: designTokens.typography.letterSpacing,
spacing: designTokens.spacing,
borderRadius: designTokens.radii,
},
},
plugins: [],
};
```
## Troubleshooting
### Font Not Loading Properly
**Problem**: Japanese fonts not displaying correctly.
**Solution**: Ensure font fallback chain is complete and in correct order:
```css
/* Wrong - missing fallbacks */
font-family: "Noto Sans JP", sans-serif;
/* Correct - full fallback chain */
font-family:
"Hiragino Kaku Gothic ProN",
"Hiragino Sans",
"Yu Gothic Medium",
"Meiryo",
"Noto Sans JP",
sans-serif;
```
### Line Breaking Issues
**Problem**: Punctuation appearing at beginning of lines.
**Solution**: Enable proper kinsoku shori:
```css
.ja-text {
word-break: normal; /* Not 'break-all' */
overflow-wrap: break-word;
line-break: strict; /* Enforce kinsoku */
}
```
### Mixed Script Spacing
**Problem**: English words too close to Japanese text.
**Solution**: Add word-spacing for mixed content:
```css
.mixed-content {
word-spacing: 0.25em; /* Space between words */
letter-spacing: 0.05em; /* Space between Japanese chars */
}
```
### Web Font Loading
**Problem**: Flash of unstyled text (FOUT) with Japanese web fonts.
**Solution**: Use font-display and preload:
```html
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700&display=swap" rel="stylesheet">
```
```css
@font-face {
font-family: 'Noto Sans JP';
font-display: swap; /* or 'fallback', 'optional' */
src: url('...') format('woff2');
}
```
### OpenType Features Not Working
**Problem**: `font-feature-settings` not applying.
**Solution**: Ensure font supports the feature and use correct syntax:
```css
/* Check if font supports 'palt' */
.ja-text {
font-feature-settings: "palt" 1, "kern" 1;
/* Not "palt" on or "palt" true */
}
/* Alternative: use font-variant */
.ja-text {
font-variant-ligatures: common-ligatures;
font-kerning: normal;
}
```
### Vertical Text Issues
**Problem**: Vertical text not rendering correctly.
**Solution**: Use proper writing-mode and text-orientation:
```css
.vertical-text {
writing-mode: vertical-rl; /* or vertical-lr */
text-orientation: upright; /* Keep characters upright */
font-feature-settings: "vpal" 1, "vkrn" 1;
}
/* For mixed vertical/horizontal */
.vertical-mixed {
writing-mode: vertical-rl;
text-orientation: mixed; /* Rotate Latin text */
}
```
## Best Practices
1. **Always include complete font fallback chains** — don't rely on single web fonts
2. **Use appropriate line-height** — 1.8+ for Japanese body text vs 1.5 for English
3. **Apply letter-spacing** — 0.04-0.1em for Japanese body text
4. **Enable OpenType features** — `palt` and `kern` for better spacing
5. **Enforce kinsoku shori** — use `line-break: strict` for proper punctuation handling
6. **Test on multiple platforms** — macOS, Windows, iOS, Android have different default fonts
7. **Consider web font loading** — use `font-display: swap` to avoid FOUT
8. **Separate Japanese and English styles** — use `:lang()` or separate classes
## Resources
- [Google Stitch DESIGN.md Documentation](https://stitch.withgoogle.com/docs/design-md/overview/)
- [W3C Japanese Layout Task Force](https://www.w3.org/TR/jlreq/)
- [CSS Writing Modes Level 3](https://www.w3.org/TR/css-writing-modes-3/)
- [OpenType Feature Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!