Testing patterns for PHPUnit and Playwright E2E tests. Use when writing tests, debugging test failures, setting up test coverage, or implementing test patterns for ActivityPub features.
日本語の概要は準備中です。原文の説明を表示しています。
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.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Validates consistency across three documentation layers in SEED Design System.
이 스킬은 SEED Design System의 문서 레이어 간 일관성을 검증합니다. 디자인 가이드라인, Rootage 컴포넌트 스펙, React 구현 문서가 서로 일치하는지 확인하고, 불일치하거나 누락된 부분을 찾아냅니다.
다음 상황에서 이 스킬을 사용하세요:
트리거 키워드: "docs consistency", "documentation audit", "validate docs", "check documentation", "pre-release validation"
./docs/content/docs/components/{component-id}.mdx./packages/rootage/components/{component-id}.yaml./docs/content/react/components/{component-id}.mdx검증 항목:
title ≡ Rootage metadata.nametitle ≡ Design guidelines title예시:
# 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
검증 항목:
예시:
# Design Guidelines
description: 사용자가 특정 액션을 실행할 수 있도록 도와주는 컴포넌트입니다.
# React Docs - MUST match exactly
description: 사용자가 특정 액션을 실행할 수 있도록 도와주는 컴포넌트입니다.
검증 로직:
designDocs.description === reactDocs.description
검증 항목:
검증 워크플로우:
variant=*), sizes (size=*), states (base.*) 추출예시:
# 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
검증 항목:
<PlatformStatusTable componentId="X" /> ≡ Rootage metadata.id<ComponentSpecBlock id="X" /> ≡ Rootage metadata.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
검증 항목:
예시:
# 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
검증 기준:
검증 항목:
Coverage Matrix:
Component ID | Rootage YAML | Design Docs | React Docs | Status
-------------|--------------|-------------|-----------|-------
action-button| ✓ | ✓ | ✓ | Complete
checkbox | ✓ | ✓ | ✓ | Complete
new-comp | ✓ | ✗ | ✗ | Missing docs
컴포넌트 인벤토리 구축:
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)
}
각 컴포넌트 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' })
}
완전한 세트(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
})
}
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
})
}
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
})
}
검증 결과를 사용자 친화적 리포트로 생성:
# 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}
사용자 요청:
"Run docs consistency checker on all components"
실행 과정:
사용자 요청:
"Check docs consistency for action-button"
실행 과정:
사용자 요청:
"Find components with missing documentation"
실행 과정:
사용자 요청:
"Validate that all component props match Rootage specs"
실행 과정:
간단한 상태 요약:
✅ action-button - Fully consistent
⚠️ checkbox - Warning: Description differs slightly
❌ badge - Critical: Missing Props table
📋 divider - Missing: Design guidelines not found
상태 아이콘:
상세한 검증 결과:
## 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
전체 프로젝트 상태:
# 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
rootage.metadata.name === designDocs.title === reactDocs.title
designDocs.description === reactDocs.description
extractedPropsFromYAML ⊆ documentedPropsInDesignDocs
// Documented props should cover all YAML-defined props
<PlatformStatusTable componentId="X" /> where X === rootage.metadata.id
<ComponentSpecBlock id="X" /> where X === rootage.metadata.id
if (rootageYAML.exists()) {
designDocs.shouldExist() // Warning if missing
reactDocs.shouldExist() // Info if missing (may be WIP)
}
Read:
Grep:
Glob:
try {
const content = await read(filePath)
} catch (error) {
if (error.code === 'ENOENT') {
issues.push({ type: 'file_not_found', path: filePath })
} else {
throw error
}
}
이미지 경로 검증:
예시 코드 검증:
접근성 검사:
로컬라이제이션 검증:
검증 실행 전 확인 사항:
검증 실행 후 확인 사항:
유사 도구:
SEED Design 문서 레이어:
정기 실행:
점진적 개선:
자동화:
문서 품질:
팀 협업:
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Testing patterns for PHPUnit and Playwright E2E tests. Use when writing tests, debugging test failures, setting up test coverage, or implementing test patterns for ActivityPub features.
日本語の概要は準備中です。原文の説明を表示しています。
Cloud laboratory platform for automated protein testing and validation. Use when designing proteins and needing experimental validation including binding assays, expression testing, thermostability measurements, enzyme activity assays, or protein sequence optimization. Also use for submitting experiments via API, tracking experiment status, downloading results, optimizing protein sequences for better expression using computational tools (NetSolP, SoluProt, SolubleMPNN, ESM), or managing protein design workflows with wet-lab validation.
日本語の概要は準備中です。原文の説明を表示しています。
Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.
日本語の概要は準備中です。原文の説明を表示しています。
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
日本語の概要は準備中です。原文の説明を表示しています。
Master advanced AgentDB features including QUIC synchronization, multi-database management, custom distance metrics, hybrid search, and distributed systems integration. Use when building distributed AI systems, multi-agent coordination, or advanced vector search applications.
日本語の概要は準備中です。原文の説明を表示しています。
Create and train AI learning plugins with AgentDB's 9 reinforcement learning algorithms. Includes Decision Transformer, Q-Learning, SARSA, Actor-Critic, and more. Use when building self-learning agents, implementing RL, or optimizing agent behavior through experience.
日本語の概要は準備中です。原文の説明を表示しています。