docs-consistency-checker
Validate consistency across SEED Design component documentation layers (design guidelines in ./docs/content/docs/components, Rootage specs in ./packages/rootage/components, and React docs in ./docs/content/react/components). Use when auditing documentation completeness, before releases, or validating new component docs.
$ Instalar
git clone https://github.com/daangn/seed-design /tmp/seed-design && cp -r /tmp/seed-design/.claude/skills/docs-consistency-checker ~/.claude/skills/seed-design// tip: Run this command in your terminal to install the skill
name: docs-consistency-checker description: Validate consistency across SEED Design component documentation layers (design guidelines in ./docs/content/docs/components, Rootage specs in ./packages/rootage/components, and React docs in ./docs/content/react/components). Use when auditing documentation completeness, before releases, or validating new component docs. allowed-tools: Read, Grep, Glob
Documentation Consistency Checker
Validates consistency across three documentation layers in SEED Design System.
Purpose
์ด ์คํฌ์ SEED Design System์ ๋ฌธ์ ๋ ์ด์ด ๊ฐ ์ผ๊ด์ฑ์ ๊ฒ์ฆํฉ๋๋ค. ๋์์ธ ๊ฐ์ด๋๋ผ์ธ, Rootage ์ปดํฌ๋ํธ ์คํ, React ๊ตฌํ ๋ฌธ์๊ฐ ์๋ก ์ผ์นํ๋์ง ํ์ธํ๊ณ , ๋ถ์ผ์นํ๊ฑฐ๋ ๋๋ฝ๋ ๋ถ๋ถ์ ์ฐพ์๋ ๋๋ค.
When to Use
๋ค์ ์ํฉ์์ ์ด ์คํฌ์ ์ฌ์ฉํ์ธ์:
- ๋ฆด๋ฆฌ์ค ์ ๊ฐ์ฌ: ๋ฉ์ด์ ๋ฆด๋ฆฌ์ค ์ ๋ชจ๋ ์ปดํฌ๋ํธ ๋ฌธ์ ์์ ์ฑ ๊ฒ์ฆ
- ์ ์ปดํฌ๋ํธ ๊ฒํ : ์ ์ปดํฌ๋ํธ ๋ฌธ์ ๋ฐํ ์ ์ผ๊ด์ฑ ํ์ธ
- ๋ฌธ์ ์ ๋ฆฌ: ๊ณ ์ ํ์ผ(orphaned files) ๋ฐ ์ค๋๋ ๋ฌธ์ ์๋ณ
- Props ๊ฒ์ฆ: ์ปดํฌ๋ํธ Props๊ฐ Rootage ์คํ๊ณผ ์ผ์นํ๋์ง ํ์ธ
- ์ ๊ธฐ ๊ฐ์ฌ: ์๊ฐ/๋ถ๊ธฐ๋ณ ๋ฌธ์ ํ์ง ์ ๊ฒ
ํธ๋ฆฌ๊ฑฐ ํค์๋: "docs consistency", "documentation audit", "validate docs", "check documentation", "pre-release validation"
Documentation Layers
Layer 1: Design Guidelines
- Path:
./docs/content/docs/components/{component-id}.mdx - Purpose: ๋์์ธ ๋ช ์ธ ๋ฐ ์ฌ์ฉ ๊ฐ์ด๋๋ผ์ธ
- Key Sections: Props, Anatomy, Guidelines, Spec
Layer 2: Rootage Component Spec
- Path:
./packages/rootage/components/{component-id}.yaml - Purpose: ๊ธฐ์ ์ ์ปดํฌ๋ํธ ๋ช ์ธ
- Key Data: metadata.id, metadata.name, schema.slots, definitions
Layer 3: React Implementation Docs
- Path:
./docs/content/react/components/{component-id}.mdx - Purpose: React API ๋ฌธ์ ๋ฐ ์์
- Key Sections: Installation, Props, Examples
Consistency Requirements
1. Component Naming Consistency
๊ฒ์ฆ ํญ๋ชฉ:
- Design guidelines
titleโก Rootagemetadata.name - React docs
titleโก Design guidelinestitle - ๋ชจ๋ ๋ฌธ์๊ฐ ๋์ผํ ๋์๋ฌธ์์ ํ์ ์ฌ์ฉ
์์:
# Rootage YAML
metadata:
id: action-button
name: Action Button
# Design Guidelines MDX
---
title: Action Button # Must match
---
# React Docs MDX
---
title: Action Button # Must match
---
๊ฒ์ฆ ๋ก์ง:
rootage.metadata.name === designDocs.title === reactDocs.title
2. Description Consistency
๊ฒ์ฆ ํญ๋ชฉ:
- React docs description โก Design guidelines description
- ์์ชฝ ๋ชจ๋ ๋์ผํ ์ฌ์ฉ์ ์ค๋ช ์ ๊ณต
์์:
# Design Guidelines
description: ์ฌ์ฉ์๊ฐ ํน์ ์ก์
์ ์คํํ ์ ์๋๋ก ๋์์ฃผ๋ ์ปดํฌ๋ํธ์
๋๋ค.
# React Docs - MUST match exactly
description: ์ฌ์ฉ์๊ฐ ํน์ ์ก์
์ ์คํํ ์ ์๋๋ก ๋์์ฃผ๋ ์ปดํฌ๋ํธ์
๋๋ค.
๊ฒ์ฆ ๋ก์ง:
designDocs.description === reactDocs.description
3. Props/Variants Consistency
๊ฒ์ฆ ํญ๋ชฉ:
- Design guidelines Props ํ ์ด๋ธ์ด Rootage YAML definitions๋ฅผ ๋ฐ์
- Variants, sizes, states๊ฐ YAML์์ ์ถ์ถํ ๊ฒ๊ณผ ์ผ์น
๊ฒ์ฆ ์ํฌํ๋ก์ฐ:
- Rootage YAML definitions ์ฝ๊ธฐ
- Variants (
variant=*), sizes (size=*), states (base.*) ์ถ์ถ - Design guidelines Props ํ ์ด๋ธ๊ณผ ๋น๊ต
- ๋ถ์ผ์น ๋๋ ๋๋ฝ๋ ๋ฌธ์ํ ํ๋๊ทธ
์์:
# Rootage defines
definitions:
variant=brandSolid: {...}
variant=neutralSolid: {...}
size=medium: {...}
size=large: {...}
# Design guidelines MUST document
| ์์ฑ | ๊ฐ |
| variant | brand solid, neutral solid | # Must match YAML
| size | medium, large | # Must match YAML
๊ฒ์ฆ ๋ก์ง:
extractedPropsFromYAML โ documentedPropsัะฝDesignDocs
// Documented props should cover all YAML-defined props
4. Component ID Consistency
๊ฒ์ฆ ํญ๋ชฉ:
<PlatformStatusTable componentId="X" />โก Rootagemetadata.id<ComponentSpecBlock id="X" />โก Rootagemetadata.id
์์:
# Design Guidelines
<PlatformStatusTable componentId="action-button" /> # Must match metadata.id
<ComponentSpecBlock id="action-button" /> # Must match metadata.id
๊ฒ์ฆ ๋ก์ง:
<PlatformStatusTable componentId="X" /> where X === rootage.metadata.id
<ComponentSpecBlock id="X" /> where X === rootage.metadata.id
5. Slot/Part Documentation
๊ฒ์ฆ ํญ๋ชฉ:
- Design guidelines์์ Rootage schema์ ์ฃผ์ slots ์ธ๊ธ
- Anatomy ์น์ ์ด ์ฃผ์ ์ํคํ ์ฒ parts ์ปค๋ฒ
์์:
# Rootage defines
schema:
slots:
root: {...}
label: {...}
icon: {...}
prefixIcon: {...}
suffixIcon: {...}
# Design guidelines should explain:
- Icon usage (prefixIcon, suffixIcon, icon-only layout)
- Label positioning
- Root container behavior
๊ฒ์ฆ ๊ธฐ์ค:
- ๋ชจ๋ ์ฃผ์ slots๊ฐ ๋ฌธ์์ ์ธ๊ธ๋๋์ง ํ์ธ
- Anatomy ๋๋ Props ์น์ ์์ ์ค๋ช ํ์ธ
6. File Existence Check
๊ฒ์ฆ ํญ๋ชฉ:
- Rootage YAML ์กด์ฌ โ Design guidelines ์กด์ฌํด์ผ ํจ
- Design guidelines ์กด์ฌ โ React docs ์กด์ฌํด์ผ ํจ
- ๊ณ ์ ํ์ผ ํ๋๊ทธ
Coverage Matrix:
Component ID | Rootage YAML | Design Docs | React Docs | Status
-------------|--------------|-------------|-----------|-------
action-button| โ | โ | โ | Complete
checkbox | โ | โ | โ | Complete
new-comp | โ | โ | โ | Missing docs
Workflow
Step 1: Discovery
์ปดํฌ๋ํธ ์ธ๋ฒคํ ๋ฆฌ ๊ตฌ์ถ:
1. Glob all Rootage YAML files: packages/rootage/components/*.yaml
2. Extract component IDs from metadata.id
3. Build component inventory
๋๊ตฌ ์ฌ์ฉ:
// Glob to find all YAML files
const yamlFiles = await glob('packages/rootage/components/*.yaml')
// Read each file and extract metadata.id
for (const file of yamlFiles) {
const content = await read(file)
const yaml = parseYAML(content)
const componentId = yaml.metadata.id
inventory.push(componentId)
}
Step 2: Cross-Reference Check
๊ฐ ์ปดํฌ๋ํธ ID์ ๋ํด ํ์ผ ์กด์ฌ ํ์ธ:
For each component ID:
1. Check existence:
- docs/content/docs/components/{id}.mdx
- docs/content/react/components/{id}.mdx
2. Flag missing files
๋๊ตฌ ์ฌ์ฉ:
for (const id of inventory) {
const designDocsPath = `docs/content/docs/components/${id}.mdx`
const reactDocsPath = `docs/content/react/components/${id}.mdx`
const designExists = await fileExists(designDocsPath)
const reactExists = await fileExists(reactDocsPath)
if (!designExists) issues.push({ id, type: 'missing_design_docs' })
if (!reactExists) issues.push({ id, type: 'missing_react_docs' })
}
Step 3: Content Validation
์์ ํ ์ธํธ(YAML + Design + React)์ ๋ํด ๋ด์ฉ ๊ฒ์ฆ:
For each complete set:
1. Read all three files
2. Extract metadata:
- Names (title, metadata.name)
- Descriptions
- Props/variants/sizes
- Component references (componentId, id)
3. Compare values
4. Report inconsistencies
๋๊ตฌ ์ฌ์ฉ:
// Read files
const yamlContent = await read(yamlPath)
const designContent = await read(designPath)
const reactContent = await read(reactPath)
// Parse frontmatter
const designFrontmatter = parseFrontmatter(designContent)
const reactFrontmatter = parseFrontmatter(reactContent)
// Compare names
if (yaml.metadata.name !== designFrontmatter.title) {
issues.push({
id,
type: 'name_mismatch',
expected: yaml.metadata.name,
actual: designFrontmatter.title
})
}
// Compare descriptions
if (designFrontmatter.description !== reactFrontmatter.description) {
issues.push({
id,
type: 'description_mismatch',
design: designFrontmatter.description,
react: reactFrontmatter.description
})
}
Step 4: Props Deep Validation
Props ์์ธ ๊ฒ์ฆ:
For each component:
1. Parse Rootage YAML definitions
2. Extract:
- Variants: keys matching "variant="
- Sizes: keys matching "size="
- States: base.* keys
3. Read design guidelines Props table
4. Compare extracted vs documented
5. Flag missing or extra props
๋๊ตฌ ์ฌ์ฉ:
// Extract props from YAML
const definitions = yaml.data.definitions
const variants = Object.keys(definitions)
.filter(key => key.startsWith('variant='))
.map(key => key.replace('variant=', ''))
const sizes = Object.keys(definitions)
.filter(key => key.startsWith('size='))
.map(key => key.replace('size=', ''))
const states = Object.keys(definitions.base || {})
// Extract props from design docs (using Grep)
const propsTableMatch = await grep({
pattern: '\\| variant\\s+\\|.*\\|',
path: designPath,
output_mode: 'content'
})
// Parse table and compare
const documentedVariants = parsePropsTable(propsTableMatch)
const missingVariants = variants.filter(v => !documentedVariants.includes(v))
if (missingVariants.length > 0) {
issues.push({
id,
type: 'missing_variants',
missing: missingVariants
})
}
Step 5: Component ID Validation
Design guidelines์์ ์ปดํฌ๋ํธ ID ์ฐธ์กฐ ํ์ธ:
// Check PlatformStatusTable componentId
const platformStatusMatch = await grep({
pattern: '<PlatformStatusTable componentId="([^"]+)"',
path: designPath,
output_mode: 'content'
})
const extractedId = extractComponentId(platformStatusMatch)
if (extractedId !== yaml.metadata.id) {
issues.push({
id,
type: 'platform_status_id_mismatch',
expected: yaml.metadata.id,
actual: extractedId
})
}
// Check ComponentSpecBlock id
const specBlockMatch = await grep({
pattern: '<ComponentSpecBlock id="([^"]+)"',
path: designPath,
output_mode: 'content'
})
const specId = extractComponentId(specBlockMatch)
if (specId !== yaml.metadata.id) {
issues.push({
id,
type: 'spec_block_id_mismatch',
expected: yaml.metadata.id,
actual: specId
})
}
Step 6: Report Generation
๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์ ์นํ์ ๋ฆฌํฌํธ๋ก ์์ฑ:
# Consistency Report
## Summary
- Total components: 28
- Fully consistent: 22
- Issues found: 6
## Issues
### Critical (Must Fix)
1. **badge**: Design docs missing Props table
2. **chip**: Description mismatch between design/react docs
### Warnings (Review)
1. **avatar**: Rootage defines size=xlarge but design docs don't document it
2. **callout**: ComponentSpecBlock id="callouts" (should be "callout")
### Missing Documentation
1. **divider**: Has YAML, missing design guidelines
2. **dialog**: Has YAML, missing React docs
## Recommendations
{Actionable fixes with file paths and specific changes}
Usage Scenarios
Scenario 1: Full Audit
์ฌ์ฉ์ ์์ฒญ:
"Run docs consistency checker on all components"
์คํ ๊ณผ์ :
- ๋ชจ๋ Rootage YAML ํ์ผ ๊ฒ์
- ๊ฐ ์ปดํฌ๋ํธ์ ๋ํด 6๊ฐ์ง ๊ฒ์ฆ ํญ๋ชฉ ์คํ
- Comprehensive ๋ฆฌํฌํธ ์์ฑ
Scenario 2: Single Component
์ฌ์ฉ์ ์์ฒญ:
"Check docs consistency for action-button"
์คํ ๊ณผ์ :
- action-button์ ๋ํด์๋ง ๊ฒ์ฆ
- Detailed ๋ชจ๋๋ก ๊ฒฐ๊ณผ ์ถ๋ ฅ
Scenario 3: Focus on Missing Docs
์ฌ์ฉ์ ์์ฒญ:
"Find components with missing documentation"
์คํ ๊ณผ์ :
- ํ์ผ ์กด์ฌ ํ์ธ๋ง ์คํ (Step 2)
- ๋๋ฝ๋ ๋ฌธ์ ๋ชฉ๋ก ์ถ๋ ฅ
Scenario 4: Props Validation
์ฌ์ฉ์ ์์ฒญ:
"Validate that all component props match Rootage specs"
์คํ ๊ณผ์ :
- Props ๊ฒ์ฆ๋ง ์คํ (Step 4)
- ๋ถ์ผ์นํ๋ props ๋ชฉ๋ก ์ถ๋ ฅ
Output Formats
Compact Mode (default)
๊ฐ๋จํ ์ํ ์์ฝ:
โ
action-button - Fully consistent
โ ๏ธ checkbox - Warning: Description differs slightly
โ badge - Critical: Missing Props table
๐ divider - Missing: Design guidelines not found
์ํ ์์ด์ฝ:
- โ Fully consistent: ๋ชจ๋ ๊ฒ์ฆ ํต๊ณผ
- โ ๏ธ Warning: ๊ฒฝ๋ฏธํ ๋ถ์ผ์น, ๊ฒํ ํ์
- โ Critical: ์ค์ํ ๋ฌธ์ , ์ฆ์ ์์ ํ์
- ๐ Missing: ํ์ผ ๋๋ฝ
Detailed Mode (--verbose)
์์ธํ ๊ฒ์ฆ ๊ฒฐ๊ณผ:
## action-button
Status: โ
Fully consistent
Checks performed:
- โ
Name consistency (Action Button)
- โ
Description matches
- โ
Props table matches YAML (6/6 props documented)
- โ
Component IDs correct
- โ
All files exist
## checkbox
Status: โ ๏ธ Warning
Checks performed:
- โ
Name consistency (Checkbox)
- โ ๏ธ Description differs:
- Design: "์ฌ์ฉ์๊ฐ ํ๋ ์ด์์ ์ต์
์ ์ ํํ ์ ์๊ฒ ํด์ฃผ๋..."
- React: "์ฌ์ฉ์๊ฐ ํ๋ ์ด์์ ์ต์
์ ์ ํํ ์ ์๊ฒ ํด์ฃผ๋..."
- Diff: Extra text in react docs
- โ
Props table matches YAML
- โ
Component IDs correct
- โ
All files exist
Recommendation: Align descriptions in both files
Summary Report
์ ์ฒด ํ๋ก์ ํธ ์ํ:
# SEED Design Documentation Consistency Report
Generated: 2025-01-21
## Overall Status
- Total Components: 58
- Fully Consistent: 48 (82.8%)
- With Warnings: 6 (10.3%)
- Critical Issues: 2 (3.4%)
- Missing Docs: 2 (3.4%)
## Critical Issues (Must Fix Immediately)
### 1. badge
**Issue**: Design docs missing Props table
**Impact**: Users cannot understand component options
**Fix**: Add Props table to `/docs/content/docs/components/badge.mdx`
### 2. chip
**Issue**: Description mismatch
**Details**:
- Design: "์ ๋ณด๋ฅผ ํํํ๊ณ ์ ํ์ ๋ํ๋ด๋ ์ปดํฌ๋ํธ์
๋๋ค."
- React: "์ฌ์ฉ์ ์
๋ ฅ์ ๋ํ๋ด๋ ์ปดํฌ๋ํธ์
๋๋ค."
**Fix**: Align descriptions in both files
## Warnings (Review Soon)
### 1. avatar
**Issue**: Missing variant documentation
**Details**: Rootage defines `size=xlarge` but design docs only show small, medium, large
**Fix**: Add xlarge size to Props table
### 2. callout
**Issue**: ComponentSpecBlock ID typo
**Details**: Uses `id="callouts"` but should be `id="callout"`
**Fix**: Change ComponentSpecBlock id in design docs
## Missing Documentation
### 1. divider
**Missing**: Design guidelines
**Path**: `/docs/content/docs/components/divider.mdx`
**Status**: Rootage YAML exists, React docs exist
### 2. dialog
**Missing**: React documentation
**Path**: `/docs/content/react/components/dialog.mdx`
**Status**: Rootage YAML exists, design docs exist
## Recommendations
1. **Immediate Actions** (Critical):
- Fix badge Props table
- Align chip descriptions
2. **This Week** (Warnings):
- Document avatar xlarge size
- Fix callout ComponentSpecBlock ID
3. **This Sprint** (Missing Docs):
- Create divider design guidelines
- Write dialog React documentation
## Next Steps
1. Assign issues to owners
2. Create tracking tasks
3. Re-run validation after fixes
4. Schedule regular monthly audits
Validation Rules
Rule 1: Exact Name Match
rootage.metadata.name === designDocs.title === reactDocs.title
Rule 2: Exact Description Match
designDocs.description === reactDocs.description
Rule 3: Props Coverage
extractedPropsFromYAML โ documentedPropsInDesignDocs
// Documented props should cover all YAML-defined props
Rule 4: Component ID Match
<PlatformStatusTable componentId="X" /> where X === rootage.metadata.id
<ComponentSpecBlock id="X" /> where X === rootage.metadata.id
Rule 5: File Completeness
if (rootageYAML.exists()) {
designDocs.shouldExist() // Warning if missing
reactDocs.shouldExist() // Info if missing (may be WIP)
}
Implementation Guidelines
Tool Usage
Read:
- YAML ํ์ผ ํ์ฑ
- MDX frontmatter ์ถ์ถ
- ํ์ผ ์กด์ฌ ํ์ธ
Grep:
- Props ํ ์ด๋ธ ์ถ์ถ
- Component ID ์ฐธ์กฐ ์ฐพ๊ธฐ
- ํน์ ํจํด ๊ฒ์
Glob:
- ๋ชจ๋ ์ปดํฌ๋ํธ YAML ํ์ผ ์ฐพ๊ธฐ
- ๋ฌธ์ ํ์ผ ๋ชฉ๋ก ์์ฑ
Error Handling
try {
const content = await read(filePath)
} catch (error) {
if (error.code === 'ENOENT') {
issues.push({ type: 'file_not_found', path: filePath })
} else {
throw error
}
}
Performance
- ๋ณ๋ ฌ ์ฒ๋ฆฌ: ๋ ๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ ๊ฒ์ฆ์ ๋ณ๋ ฌ๋ก ์คํ
- ์บ์ฑ: ๋์ผ ํ์ผ์ ์ฌ๋ฌ ๋ฒ ์ฝ์ง ์๋๋ก ์บ์ฑ
- ์กฐ๊ธฐ ์ข ๋ฃ: Critical ๋ฌธ์ ๋ฐ๊ฒฌ ์ ์ฆ์ ๋ณด๊ณ (์ ํ์ )
Extensibility
Future Enhancements
-
์ด๋ฏธ์ง ๊ฒฝ๋ก ๊ฒ์ฆ:
- Design guidelines์์ ์ฐธ์กฐํ๋ ์ด๋ฏธ์ง ํ์ผ ์กด์ฌ ํ์ธ
- ์ด๋ฏธ์ง ํ์ผ์ด WebP ํฌ๋งท์ธ์ง ๊ฒ์ฆ
-
์์ ์ฝ๋ ๊ฒ์ฆ:
- React ์์๊ฐ ์ฌ๋ฐ๋ฅธ props ์ฐธ์กฐํ๋์ง ํ์ธ
- ์์ ์ฝ๋๊ฐ ์ค์ ๋ก ์คํ ๊ฐ๋ฅํ์ง ๊ฒ์ฆ
-
์ ๊ทผ์ฑ ๊ฒ์ฌ:
- Design docs์์ a11y ๊ธฐ๋ฅ ์ธ๊ธ ํ์ธ
- ARIA attributes ๋ฌธ์ํ ๊ฒ์ฆ
-
๋ก์ปฌ๋ผ์ด์ ์ด์ ๊ฒ์ฆ:
- ํ๊ตญ์ด ์ค๋ช ์ผ๊ด์ฑ ํ์ธ
- ๋ฒ์ญ ํ์ง ๊ฒ์ฌ
Checklist
๊ฒ์ฆ ์คํ ์ ํ์ธ ์ฌํญ:
- ๋ชจ๋ Rootage YAML ํ์ผ์ด ์ต์ ์ํ์ธ๊ฐ?
- Git ์ํน ๋๋ ํ ๋ฆฌ๊ฐ ๊นจ๋ํ๊ฐ? (์ปค๋ฐ๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ ์์)
- ๊ฒ์ฆ ๋ฒ์๊ฐ ๋ช ํํ๊ฐ? (์ ์ฒด vs ํน์ ์ปดํฌ๋ํธ)
- ์ถ๋ ฅ ํ์์ด ๊ฒฐ์ ๋์๋๊ฐ? (Compact vs Detailed)
๊ฒ์ฆ ์คํ ํ ํ์ธ ์ฌํญ:
- Critical ์ด์๊ฐ ๋ชจ๋ ๋ฌธ์ํ๋์๋๊ฐ?
- ๊ฐ ์ด์์ ์์ ๋ฐฉ๋ฒ์ด ๋ช ์๋์๋๊ฐ?
- ์ด์๊ฐ tracking ์์คํ ์ ๋ฑ๋ก๋์๋๊ฐ?
- ๋ด๋น์๊ฐ ํ ๋น๋์๋๊ฐ?
- ๋ค์ ๊ฒ์ฆ ์ผ์ ์ด ๊ณํ๋์๋๊ฐ?
Reference
์ ์ฌ ๋๊ตฌ:
- ESLint (์ฝ๋ ์ผ๊ด์ฑ ๊ฒ์ฌ)
- Vale (๋ฌธ์ ์คํ์ผ ๊ฒ์ฌ)
- markdownlint (Markdown ๊ท์น ๊ฒ์ฌ)
SEED Design ๋ฌธ์ ๋ ์ด์ด:
- Design Guidelines: ๋์์ธ ์์น๊ณผ ์ฌ์ฉ ๊ฐ์ด๋
- Rootage Spec: ๊ธฐ์ ์ ๋ช ์ธ์ ์คํ์ผ ์ ์
- React Docs: ๊ตฌํ API์ ์ฌ์ฉ ์์
Tips
-
์ ๊ธฐ ์คํ:
- ๋ฆด๋ฆฌ์ค ์ ํ์ ์คํ
- ์๊ฐ ์ ๊ธฐ ๊ฐ์ฌ ์ผ์ ์๋ฆฝ
- CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉ ๊ณ ๋ ค
-
์ ์ง์ ๊ฐ์ :
- Critical ์ด์ ๋จผ์ ํด๊ฒฐ
- Warning์ ์คํ๋ฆฐํธ ๊ณํ์ ํฌํจ
- Missing docs๋ ๋ฐฑ๋ก๊ทธ์ ์ถ๊ฐ
-
์๋ํ:
- GitHub Actions๋ก PR ์ ์๋ ๊ฒ์ฆ
- Slack/Discord๋ก ์ด์ ์๋ฆผ
- Dashboard๋ก ์๊ฐํ
-
๋ฌธ์ ํ์ง:
- ๊ฒ์ฆ ํต๊ณผ๊ฐ ๋ชฉํ๊ฐ ์๋
- ์ฌ์ฉ์ ๊ด์ ์ ๋ช ํ์ฑ์ด ์ฐ์
- ์ผ๊ด์ฑ์ ์๋จ, ํ์ง์ ๋ชฉ์
-
ํ ํ์ :
- ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ๊ณผ ๊ณต์
- ๋ฌธ์ ํจํด ๋ถ์ ๋ฐ ๊ฐ์
- ๋ฌธ์ ์์ฑ ๊ฐ์ด๋ ์ ๋ฐ์ดํธ
Repository
