소스 정보
- 저장소
- takemo101/compose-workflow
- 최근 소스 활동
- 2026년 1월 29일 15:10
- 감지된 SKILL.md 언어
- 일본어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
파일 탐색기
48 개 파일SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- name
- wireframe-generator
- description
- YAML定義からChakra UIベースのワイヤーフレーム画像を自動生成する
# Wireframe Generator
YAML定義から設計レビュー用ワイヤーフレーム画像を自動生成するスキル。
## 概要
| 項目 | 内容 |
|------|------|
| 入力 | YAML定義(画面設計書内の ```yaml wireframe``` ブロック) |
| 出力 | PNG画像(スクリーンショット) |
| UIフレームワーク | Chakra UI |
| スクリーンショット | Playwright |
| スキーマ | [wireframe.schema.json](./wireframe.schema.json) |
## 使用タイミング
- `/detailed-design-workflow` の Phase 1.5(モックアップ生成)
- 画面設計書作成時のワイヤーフレーム生成
## 実行方法
```bash
cd <skill-dir>/wireframe-generator/scripts
bun install
bun run generate.ts <markdown-file> [output-dir]
```
> **Note**: `<skill-dir>` は `.opencode/skill` または `.claude/skills` のいずれか(シンボリックリンクで同一)
---
## JSON Schema
AIがYAMLを生成する際は、以下のスキーマに従ってください。
**スキーマファイル**: `wireframe.schema.json`(このスキルディレクトリ内)
### 対応UIパターン(type)
#### 基本タイプ
| type | 用途 | 必須プロパティ |
|------|------|---------------|
| `form` | 入力フォーム | `screen`, `type`, `fields` |
| `table` | 一覧表示 | `screen`, `type`, `columns` |
| `detail` | 詳細表示 | `screen`, `type`, `sections` |
| `dashboard` | ダッシュボード | `screen`, `type` |
| `crud` | CRUD画面 | `screen`, `type`, `table`, `form` |
#### レイアウト・ナビゲーション
| type | 用途 | 必須プロパティ |
|------|------|---------------|
| `layout` | ヘッダー/サイドバー付きレイアウト | `screen`, `type`, `content` |
| `tabs` | タブ付き画面 | `screen`, `type`, `tabs` |
#### コンテンツ表示
| type | 用途 | 必須プロパティ |
|------|------|---------------|
| `card-grid` | カードグリッド一覧 | `screen`, `type`, `cards` |
| `timeline` | アクティビティ履歴 | `screen`, `type`, `items` |
| `gallery` | 画像ギャラリー | `screen`, `type`, `items` |
#### ウィザード・状態表示
| type | 用途 | 必須プロパティ |
|------|------|---------------|
| `wizard` | ステップフォーム | `screen`, `type`, `steps` |
| `empty-state` | 空状態/エラー画面 | `screen`, `type`, `title` |
| `alert` | 通知/警告 | `screen`, `type`, `alerts` |
#### モーダル・ダイアログ
| type | 用途 | 必須プロパティ |
|------|------|---------------|
| `modal` | モーダルダイアログ | `screen`, `type`, `title`, `content` |
| `drawer` | スライドパネル | `screen`, `type`, `content` |
| `confirm` | 確認ダイアログ | `screen`, `type`, `title`, `message` |
#### ビジネス・マーケティング
| type | 用途 | 必須プロパティ |
|------|------|---------------|
| `pricing` | 料金プラン | `screen`, `type`, `plans` |
| `faq` | FAQ | `screen`, `type`, `items` |
| `hero` | ランディングページヒーロー | `screen`, `type`, `title` |
| `stats` | 統計カード | `screen`, `type`, `stats` |
#### コラボレーション
| type | 用途 | 必須プロパティ |
|------|------|---------------|
| `kanban` | カンバンボード | `screen`, `type`, `columns` |
| `calendar` | カレンダー | `screen`, `type` |
| `chat` | チャット画面 | `screen`, `type`, `messages` |
#### プロフィール・設定
| type | 用途 | 必須プロパティ |
|------|------|---------------|
| `profile` | ユーザープロフィール | `screen`, `type`, `user` |
| `settings` | 設定画面 | `screen`, `type`, `sections` |
| `auth` | ログイン/登録/2FA等 | `screen`, `type`, `variant`, `fields` |
---
## YAML記法リファレンス
### type: form
入力フォーム画面(ログイン、登録、設定など)
```yaml
screen: ログインフォーム
type: form
fields:
- name: email # 必須: フィールド識別子
label: メールアドレス # 必須: 表示ラベル
type: email # 必須: text|email|password|number|textarea|select|checkbox|radio|date|file|pin
required: true # 任意: 必須フラグ
placeholder: example`email` skill.com # 任意
- name: password
label: パスワード
type: password
required: true
- name: role
label: 権限
type: select
options: # select/radioの場合は必須
- value: admin
label: 管理者
- value: user
label: 一般ユーザー
- name: remember
label: ログイン状態を保持
type: checkbox
- name: pin
label: 認証コード
type: pin # PIN/OTP入力
pinLength: 6 # 任意: 桁数(デフォルト: 6)
required: true
buttons: # 任意
- label: ログイン
variant: primary # primary|secondary|danger|ghost
- label: キャンセル
variant: secondary
```
### type: table
一覧表示画面(ユーザー一覧、注文一覧など)
```yaml
screen: ユーザー一覧
type: table
columns:
- name: id # 必須: データキー
label: ID # 必須: ヘッダーラベル
width: 80 # 任意: カラム幅(px)
- name: name
label: 名前
- name: status
label: ステータス
type: badge # 任意: text|badge|date|currency|number
- name: createdAt
label: 登録日
type: date
actions: # 任意: search|pagination|create-button|row-edit|row-delete|bulk-select|export
- search
- pagination
- create-button
- row-edit
- row-delete
data: # 任意: サンプルデータ(省略時はダミー表示)
- id: 1
name: 山田太郎
status: active
createdAt: 2025-01-01
```
### type: detail
詳細表示画面(ユーザー詳細、商品詳細など)
```yaml
screen: ユーザー詳細
type: detail
sections:
- title: 基本情報 # 必須: セクションタイトル
fields:
- label: 名前 # 必須
value: 山田太郎 # 必須
- label: ステータス
value: アクティブ
type: badge # 任意: text|badge|date|link
- title: 登録情報
fields:
- label: 登録日
value: 2025-01-01
type: date
actions: # 任意
- label: 編集
variant: primary
- label: 削除
variant: danger
```
### type: dashboard
ダッシュボード画面(統計、KPI表示)
```yaml
screen: 管理ダッシュボード
type: dashboard
stats: # 任意: 統計カード
- label: 総ユーザー数 # 必須
value: "1,234" # 必須
icon: users # 任意: users|currency|activity|chart|inbox|settings
trend: "+12%" # 任意: トレンド表示
- label: 今月の売上
value: "¥1,234,567"
icon: currency
trend: "+5%"
widgets: # 任意: ウィジェット
- type: chart # 必須: chart|table|list
title: 月別売上推移 # 必須
chartType: line # chart時: line|bar|pie
- type: table
title: 最近の注文
columns: # table時
- label: 注文ID
- label: 顧客名
- label: 金額
```
### type: crud
CRUD画面(一覧 + 作成/編集モーダル)
```yaml
screen: 商品管理
type: crud
table: # 必須: 一覧テーブル定義
columns:
- name: name
label: 商品名
- name: price
label: 価格
type: currency
actions:
- search
- pagination
- create-button
- row-edit
- row-delete
form: # 必須: モーダルフォーム定義
title: 商品登録
fields:
- name: name
label: 商品名
type: text
required: true
- name: price
label: 価格
type: number
required: true
```
### type: confirm
確認ダイアログ(削除確認、操作確認など)
```yaml
screen: 削除確認ダイアログ
type: confirm
title: 削除の確認 # 必須: ダイアログタイトル
message: この操作は取り消せません。本当に削除しますか? # 必須: 確認メッセージ
variant: danger # 任意: info|warning|danger|success(デフォルト: info)
icon: warning # 任意: アイコン(省略時はvariantに応じた自動選択)
confirmLabel: 削除する # 任意: 確認ボタンラベル(デフォルト: 確認)
cancelLabel: キャンセル # 任意: キャンセルボタンラベル(デフォルト: キャンセル)
confirmVariant: danger # 任意: 確認ボタンのvariant(デフォルト: variantに応じて自動選択)
```
### type: modal
モーダルダイアログ(編集フォーム、詳細表示など)
```yaml
screen: ユーザー編集モーダル
type: modal
title: ユーザー情報を編集 # 必須: モーダルタイトル
size: md # 任意: xs|sm|md|lg|xl|full(デフォルト: md)
closable: true # 任意: 閉じるボタン表示(デフォルト: true)
content: # 必須: コンテンツ定義
type: form # form|table|detail|dashboard|card-grid|timeline|empty-state|custom
config: # 重要: typeに応じた設定をconfigの中に記述
fields:
- name: name
label: 名前
type: text
required: true
- name: email
label: メールアドレス
type: email
required: true
footer: # 任意: フッターボタン
align: right # 任意: left|center|right(デフォルト: right)
actions:
- label: キャンセル
variant: secondary
- label: 保存
variant: primary
```
### type: drawer
スライドパネル(設定、フィルター、サイドメニューなど)
```yaml
screen: 設定ドロワー
type: drawer
title: 表示設定 # 任意: ドロワータイトル
placement: right # 任意: left|right|top|bottom(デフォルト: right)
size: md # 任意: xs|sm|md|lg|xl|full(デフォルト: md)
closable: true # 任意: 閉じるボタン表示(デフォルト: true)
content: # 必須: コンテンツ定義
type: form # form|table|detail|dashboard|card-grid|timeline|empty-state|custom
config: # 重要: typeに応じた設定をconfigの中に記述
fields:
- name: theme
label: テーマ
type: select
options:
- value: light
label: ライト
- value: dark
label: ダーク
- name: notifications
label: 通知を有効にする
type: checkbox
footer: # 任意: フッターボタン
actions:
- label: 適用
variant: primary
```
> **注意**: `modal`と`drawer`の`content`内では、`type`で指定したコンポーネントの設定を**必ず`config`の中に**記述してください。直接`fields`などを書くとエラーになります。
---
## 画面設計書での記述例
画面設計書.md 内に以下のように記述:
````markdown
## 3.1 SC-001: ログイン画面
### ワイヤーフレーム定義
```yaml wireframe
screen: ログイン画面
type: form
fields:
- name: email
label: メールアドレス
type: email
required: true
- name: password
label: パスワード
type: password
required: true
buttons:
- label: ログイン
variant: primary
```
### 生成されたワイヤーフレーム

````
---
## 生成フロー
```mermaid
flowchart LR
A[画面設計書.md] --> B[YAML抽出]
B --> C[Chakra UI レンダリング]
C --> D[Playwright スクリーンショット]
D --> E[PNG保存]
E --> F[画面設計書に埋め込み]
```
## ディレクトリ構成
```
wireframe-generator/
├── SKILL.md # このファイル
├── wireframe.schema.json # JSON Schema定義
└── scripts/
├── package.json
├── tsconfig.json
├── types.ts # TypeScript型定義
├── generate.ts # CLIエントリポイント
├── extract.ts # YAML抽出
├── screenshot.ts # Playwright撮影
├── vite.config.ts
├── index.html
├── sample.md # サンプル
└── src/
├── main.tsx
├── App.tsx
└── components/
├── FormRenderer.tsx
├── TableRenderer.tsx
├── DetailRenderer.tsx
├── DashboardRenderer.tsx
└── CrudRenderer.tsx
```
## 制限事項
- デザイン性は考慮しない(設計レビュー用ワイヤーフレーム目的)
- カスタムCSSは非対応
- 複雑なインタラクションは非対応(静的表示のみ)
GitHub에서 보기