なぜ整理するか
タスク管理・問い合わせ管理・Zustand Playground と小システムが増え、外部 Playground も扱い始めたことで、Build と Playbook の役割が混ざりやすくなりました。Admin Content Inventory で公開状態を確認する前提になったことも踏まえ、次の追加で構造が崩れないよう設計ルールを明文化します。
用語定義
Demo
実際に触る画面です。2 種類あります。
- 内部 Demo: TOOLS BOX 内の route(例:
/tasks) - 外部 Demo: Vercel など外部の URL(例:
https://zustand-test-gamma.vercel.app/zustand-demo)
Build
完成例を見せるページです。「何ができるか」「どこへ行けるか」「どの Playbook と関係するか」を説明します。実装手順は書きません。
Playbook
作り方を説明するページです。フェーズ構成・実装手順・設計判断・完了条件・次に足せるものを説明します。完成例の紹介だけにはしません。
役割分担表
| 種類 | URL 例 | 役割 | 書くこと | 書きすぎないこと |
|---|---|---|---|---|
| Demo | /tasks | 実際に触る | UI・動作 | 長い説明 |
| External Demo | https://... | 外部で触る | 実験・Playground | 本体依存コード |
| Build | /builds/tasks | 完成例 | 何ができるか・導線 | 細かい手順 |
| Playbook | /playbooks/tasks | 作り方 | 手順・設計判断 | 完成例だけの紹介 |
frontmatter ルール
Build
---
title: "タスク管理"
slug: tasks
summary: "..."
status: reviewed
tags:
- tasks
demoPath: "/tasks" # 内部 route のみ
externalDemoUrl: "https://..." # 外部 URL のみ(内部と混ぜない)
repo:
url: "https://github.com/..."
isPrivate: true # private の場合のみ追加(省略 = public)
relatedPlaybooks:
- tasks
relatedSamples:
- example-sample
createdAt: "YYYY-MM-DD"
updatedAt: "YYYY-MM-DD"
---
ルール:
demoPathは内部 route のみ(/始まり)externalDemoUrlは外部 URL のみ(https://始まり)- 内部 Demo と外部 Demo を同じフィールドに混ぜない
- 外部 Demo URL がない場合は
externalDemoUrlを省略する(空文字は入れない) repo.urlはコードを見る導線。GitHub の場合でも他のホストでも可repo.isPrivate: trueは private リポジトリの場合のみ設定する(省略 = public)。設定すると/builds一覧と詳細ページで「Private Repo」と表示され、リンクは非表示になる
Playbook
---
title: "タスク管理画面を作る"
slug: tasks
summary: "..."
status: reviewed
tags:
- tasks
createdAt: "YYYY-MM-DD"
updatedAt: "YYYY-MM-DD"
---
ルール:
- 5 フェーズ構造を基本にする
- 完成例リンク(Demo または外部 Demo)を冒頭に置く
- Build リンクを冒頭に置く
- 設計判断まとめを入れる
- 次に足せるものを入れる
status 公開ルール
| status | 公開 | 用途 |
|---|---|---|
reviewed | 公開 | レビュー済み、一般公開 |
review_required | 非公開 | レビュー待ち |
draft | 非公開 | 作成中 |
deprecated | 非公開 | 廃止済み |
hidden | 非公開 | 意図的に非表示 |
注意事項:
- Admin Content Inventory で全コンテンツの公開状態を確認できる
review_requiredを暫定公開しない- 公開前に
npm run validate/npm run build/npm run test:e2eを通す
hidden の扱い
非表示にしたいコンテンツは status: hidden で管理します。hidden: true のような専用フィールドは使いません。公開判定は status のみを見るため、フィールドを増やす必要がありません。
ルール:
status: hiddenで非表示にする(hidden: trueは使わない)- 公開かどうかは
status === "reviewed"のみで判定する - hidden にするときは Admin Actions の status select で変更する
- hidden toggle ボタンは実装しない
導線ルール
内部 Demo がある Build
demoPath: "/tasks"
/builds/[slug] ページに「デモを見る」ボタン(青)が表示されます。
外部 Demo がある Build
externalDemoUrl: "https://..."
/builds/[slug] ページに「外部デモを見る」ボタン(緑)が表示されます。
repo がある Build
repo:
url: "https://github.com/..."
/builds/[slug] ページに「GitHub で見る」ボタン(グレー)が表示されます。
Playbook 連携
Build の relatedPlaybooks に slug を設定し、Playbook 本文にも Build へのリンクを置きます。双方向の導線が揃っている状態を保ちます。
既存コンテンツへの適用例
問い合わせ管理
| 項目 | 値 |
|---|---|
| Demo | /contact-requests(内部) |
| Build | /builds/contact-requests |
| Playbook | /playbooks/contact-requests |
demoPath | /contact-requests |
タスク管理
| 項目 | 値 |
|---|---|
| Demo | /tasks(内部) |
| Build | /builds/tasks |
| Playbook | /playbooks/tasks |
demoPath | /tasks |
Zustand Playground
| 項目 | 値 |
|---|---|
| External Demo | https://zustand-test-gamma.vercel.app/zustand-demo(外部) |
| Build | /builds/zustand-playground |
| Playbook | /playbooks/zustand-playground |
| Repo | https://github.com/kei-juness/zustand_test(現在 private) |
externalDemoUrl | https://zustand-test-gamma.vercel.app/zustand-demo |
repo.url | https://github.com/kei-juness/zustand_test |
Admin Content Inventory との関係
Admin Content Inventory(/admin/content)で Build・Playbook の公開状態を一覧確認できます。
reviewed以外のコンテンツは公開 route に出ない- 追加・変更後は admin で公開状態を確認する
- 将来的に
externalDemoUrlの有無・repoの private/public 状態も admin で確認できると運用しやすい(現時点は拡張候補)
新規追加時のチェックリスト
内部 Demo を追加するとき
- route がある(
src/app/xxx/page.tsx) - Build に
demoPathがある - Playbook がある(5 フェーズ構造)
- E2E がある(
tests/xxx-flow.spec.ts) - Admin で public 確認できる
外部 Demo を追加するとき
- 外部 URL がある(デプロイ済み)
- Build に
externalDemoUrlがある - repo リンクがある場合は
repo.urlを設定 - repo が private なら本文に注記
- Playbook がある
- 本体に直接組み込まない理由を Build または Playbook に書く
今後の改善候補
- Admin Content Inventory に
externalDemoUrlの有無を表示する - Build 一覧で内部 Demo / 外部 Demo をアイコンや badge で区別する
- Playbook 一覧でカテゴリ(admin-ui / playground / patterns)を表示する