workspace-ui-kit/CLAUDE.md
snc777 f6a781c47e initial commit
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 14:24:17 +09:00

75 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# workspace-ui-kit
採用管理ドメインの **4ペイン Next.js 16 × shadcn/ui ワークスペース雛形**
受講生向けの動かし方・業種変更手順は README を参照。
## 視覚 SSoT
画面の SSoTSingle Source of Truth = 情報の正本)は `components/workspace/Workspace.tsx`
**ADR と実装で矛盾したら ADR-003 が正、実装は段階的に追従する**
ADR-0015 仕様への追従は別タスクで進める。詳細は ADR-003 §13 R1 参照)
- [ADR 一覧](openspec/decision/) — ペイン責務・デザインシステム・shadcn idiom 等の決定記録
## 同梱スキル
| スキル | いつ発動するか | パス |
| --------------------------- | ----------------------------------------------------- | --------------------------------------------------------------- |
| designing-workspace-ui | ペイン変更・色変更・コンポーネント追加など UI 作業 | [SKILL.md](.claude/skills/designing-workspace-ui/SKILL.md) |
| shadcn | shadcn 部品の追加・カスタマイズ | [SKILL.md](.claude/skills/shadcn/SKILL.md) |
| next-best-practices | Next.js 16 のファイル規約・RSC 境界・async パターン等 | [SKILL.md](.claude/skills/next-best-practices/SKILL.md) |
| vercel-react-best-practices | React 性能最適化70 ルール / 8 カテゴリ) | [SKILL.md](.claude/skills/vercel-react-best-practices/SKILL.md) |
MUST: Next.js のコードを書く前に `node_modules/next/dist/docs/` の該当ドキュメントを読む。学習データではなくバンドル版が正。
## 編集の方針
IMPORTANT: 以下を守ること。
- **UI 変更を始める前に `/designing-workspace-ui` スキルを起動する**。トークン・部品・レイアウトで足りないときは決定木 3a〜3d でユーザー確認し、独断で SSoT を広げない
- **フィールド編集は `components/primitives/Inline*`shadcn 標準フォーム、border-input + bg-cardを再利用**。鉛筆 / 「編集」ボタン / 編集専用モーダルに逃がさない。業務 Dialog追加・削除・プレビュー等は既存パターン踏襲で可
- **shadcn 部品の更新は `npx shadcn@latest add ... --diff` で確認**。`--overwrite` は本人の明示許可なしに使わない(独自 variant が消えるため)
## コード生成ルール
`components/` 配下のファイルを編集する際は、以下を必ず守る。詳しい根拠と Incorrect/Correct ペアは [coding-rules.md](.claude/skills/designing-workspace-ui/references/coding-rules.md) に集約している:
- 子要素の間隔は親で管理する(`flex flex-col gap-*` を使う、`space-y-*` は使わない)
- 部品の見た目を呼び出し側で打ち消さない(色・フォントサイズ・フォントウェイトの `className` 上書きはしない。部品側に variant を追加する)
- 色は役割で名前付けされたトークンを使う(`bg-primary` 等。`bg-blue-500` のような色番号は使わない)
- 正方形の要素には `size-N` を使う(`w-N h-N` ではなく)
- このプロジェクトは shadcn の **base**Base UIを使用。カスタムトリガーには `asChild` ではなく `render` を使う
- shadcn の部品Button / Card / Badge / Dialog 等)が使えるなら、自前の div で代替しない
- UI の変更前に `/designing-workspace-ui` スキルを必ず読む
- 派生 state を Effect で複製しないレンダーで計算する。props 変更追従の Effect+setState は避け、リセットは key でリマウント。ユーザー操作起因の副作用は state フラグ+Effect より直接イベントハンドラに置く
## 技術スタック
- Next.js 16 / React 19 / TypeScriptstrict
- Tailwind CSS v4`@theme` で CSS 変数)
- shadcn/uibase-nova / `@base-ui/react`
- lucide-reactアイコン
- `zod`(ランタイム検証)
## コマンド
```bash
npm run dev # 開発サーバー起動
npm run build # 本番ビルド
npm run lint # ESLint
npm run test # Vitest スモークテスト
npm run format # Prettier
npm run check:radius # 角丸ドリフト検出
```
## 配布制約
- `.distignore``openspec/` `AGENTS.md` は配布対象外(受講生の Gitea リポジトリに含まれない)
- `CLAUDE.md``.claude/skills/*` は配布される(受講生環境の AI が読む)
- 配布手順は親リポジトリの `managing-ads-gitea` スキルに従う
## やらないこと
- DB 接続・認証(次フェーズ)
- `react-beautiful-dnd`(廃止ライブラリ)への置き換え