--- name: function-usecase-map description: >- Persona・ビジョン・要件メモから、Actor がユーザーに見える機能を通じて達成するユースケースを Mermaid 図にする。全体俯瞰と機能別図を `docs/usecase-map.md` へ出す。Triggers on ユースケース図, 利用関係, function-usecase-map, usecase-mapper, usecase map. context: fork disable-model-invocation: true allowed-tools: Bash(node:*), Bash(pnpm:*), Bash(git:*), Bash(which:*), Bash(ls:*), Bash(mkdir:*), Bash(python:*), Read, Glob, Grep, Agent, Write, Artifact, Skill rank: core categories: - design --- # ユースケーススケッチ生成 Persona・ビジョン・要件メモ・議事録などから、プロダクトや機能のユースケースを**スケッチ段階で可視化**し、`docs/usecase-map.md` にまとめる。 このスキルの主役は **Mermaid のユースケース図っぽい図**。機能一覧やユースケース一覧は、図を描くための補助情報として扱う。 > 人間向けの概要・使い方は [`README.md`](README.md) を参照。 --- ## 基本方針 - **コードベース前提にしない**。入力が文書だけでも成立させる - **Persona 起点**で考える。各ユースケースは「誰が」「何を達成したいか」を中心に書く - **実装依存情報は出さない**。API、エンドポイント、画面パス、DB、内部フロー、技術構成は出力対象外 - **ドメイン一覧ではなく機能一覧**を作る。これは図を描く単位を揃えるための補助整理 - **全体俯瞰モード** と **機能別詳細モード** の 2 つに対応する - **推測で実装を捏造しない**。不明点は「未確定」「仮説」と明示する --- ## Step 0: モードを確定する ユーザーの依頼文から、今回の出力モードを決める。 ### Mode A: 全体俯瞰 プロダクト全体を見たいときに使う。 - 出力するもの: - アクター、ペルソナ一覧 - 機能一覧 - ユースケース一覧 - 全体のユースケース図 - 機能ごとのユースケース図 ### Mode B: 機能別詳細 特定機能だけ深掘りしたいときに使う。 - 出力するもの: - 対象 Actor / Persona 一覧 - 対象機能の情報 - 対象機能のユースケース表 - 対象機能の簡単な説明(200字以内) - 対象機能のユースケース図本体 - 必要なら「前提 / 未確定事項」 ユーザーが明示していない場合は以下で判断する: - 「全体像」「俯瞰」「全部」→ Mode A - 「この機能だけ」「予約機能だけ」「認証まわりだけ」→ Mode B --- ## Step 1: 入力ソースを読む 入力はコードである必要はない。以下を単独または複数組み合わせて使う。 | 入力種別 | 例 | 主に拾う情報 | |---|---|---| | Persona / Segment 定義 | persona doc, interview synthesis | アクター、状況、達成したいこと | | Vision / Concept | vision doc, concept memo | 何を実現するプロダクトか、何を優先するか | | 要件メモ | 要求一覧、ユーザーストーリー | 機能候補、利用シーン | | 議事録 / ヒアリング | MTG メモ、インタビュー | 生の利用文脈、困りごと、目的 | | 既存コード / 仕様書 | 任意 | 補助的に機能名や既知の挙動を確認するためだけに使う | ### 抽出する要素 - **Actor / Persona**: 誰が使うか - **Situation**: どんな状況で使うか - **Goal**: 何を達成したいか - **Function**: その goal を支える機能のまとまり - **Use case**: Actor が Function を使って達成する具体的な行為 ### 抽出しない要素 - API / endpoint - DB / schema - 画面パス / コンポーネント構成 - 内部処理フロー - 実装済み / 未実装 の断定 --- ## Step 2: 機能一覧を組み立てる ユースケースを図にしやすくするため、まず**機能一覧**に整理する。 ### 機能一覧の作り方 1. Persona の目的や JTBD を読む 2. 目的達成に必要な行為を抽出する 3. 近い行為をまとめて「機能」に束ねる 4. 各機能に対して、代表的なユースケースを 2-5 個ほど紐づける ### 機能名のルール - ドメイン名や内部概念ではなく、**ユーザーに伝わる機能名**にする - 名詞だけで曖昧なら「何を可能にするか」が分かる表現にする - 例: - `認証` より `アカウントに入る・本人確認する` - `通知基盤` より `更新や対応依頼に気づける` - `案件管理ドメイン` より `案件の状況を整理して追える` --- ## Step 3: ユースケースへ展開する 各機能について、Persona / Actor 視点でユースケースを書く。 ### ユースケースの書き方 - 「アクターがシステムを使って何を達成するか」を一文で書く - CRUD の粒度ではなく、**目的単位**でまとめる - 1 機能あたり 2-5 件を目安にする - 書式は `〜できる` または `〜する` ### 例 - バンドの方向性を共有できる - 顧客ヒアリング前に仮説を揃えられる - 次に検証すべき論点を洗い出せる - 提案のたたき台を短時間で作れる ### 付与する列 | 列 | 内容 | |---|---| | UC ID | `UC-F01-01` のように採番 | | 機能ID | `F01` 形式 | | 機能名 | 機能一覧と対応 | | ユースケース | Actor の目的単位の行為 | | 主アクター | Primary persona / secondary actor など | | 利用シーン | いつ・どんな文脈か | | 期待結果 | 何が達成されると成功か | | 確度 | `Fact` / `Assumption` / `Unknown` | --- ## Step 4: `docs/usecase-map.md` を生成する 以下の構成で Markdown を生成する。 ````markdown # <プロダクト名> ユースケーススケッチ > Persona が固まった段階で、機能と利用シーンを粗く揃えるための土台。 > 実装仕様ではなく、誰にどんな価値を返すかを確認するための資料。 ## 前提 - 参照した入力ソース - 今回のモード: 全体俯瞰 / 機能別詳細 - 対象 Persona / Actor ## アクター、ペルソナ一覧 | Actor / Persona | 概要 | 主な状況 | 主な目的 | |---|---|---|---| ## 機能一覧 | 機能ID | 機能名 | 何を可能にするか | 主な対象 Actor | 代表ユースケース数 | |---|---|---|---|---| ## ユースケース一覧 | UC ID | 機能ID | 機能名 | ユースケース | 主アクター | 利用シーン | 期待結果 | 確度 | |---|---|---|---|---|---|---|---| ## 全体のユースケース図 ```mermaid flowchart LR actor1([案件初期フェーズを前に進める
バンドメンバー]) actor2([後から参加する
バンドメンバー]) actor3([バンドリーダー /
バンドマネージャー]) subgraph F01["F01 ヒアリング準備を揃える"] uc101(誰が何を聞くかを揃える) end subgraph F02["F02 ヒアリング直後の論点を整理する"] uc201(論点と示唆を切り出す) end subgraph F03["F03 誰に提案するかを絞り込む"] uc301(候補を比較する) end actor1 --> uc101 actor1 --> uc201 actor1 --> uc301 actor2 --> uc201 actor3 --> uc301 ``` ## 機能ごとのユースケース図
F01 方向性を揃える ### 機能の簡単な説明 (この機能が何のためにあるかを 200字以内で書く) ### ユースケース図本体 ```mermaid flowchart LR actor([バンドメンバー]) subgraph F01["F01 ヒアリング準備を揃える"] uc1(誰が何を聞くかを揃える) uc2(仮説の粒度を揃える) uc3(進行カードを作る) end actor --> uc1 actor --> uc2 actor --> uc3 ``` ### 前提 / 未確定事項 - 例: 共同編集を含むかは未確定 - 例: 1人利用を優先するかチーム利用を優先するかは仮説段階
```` ### Mode A の補足 - 出力順は `アクター、ペルソナ一覧` → `機能一覧` → `ユースケース一覧` → `全体のユースケース図` → `機能ごとのユースケース図` に固定する - 一覧は図を描くための前提情報として短くまとめる - `機能ごとのユースケース図` では、各機能に `機能の簡単な説明` と `ユースケース図本体` を必ず置く - `機能の簡単な説明` は 200字以内にする ### Mode B の補足 - `全体ユースケース図` は省略可 - 対象機能だけでも、`アクター、ペルソナ一覧` → `機能一覧` → `ユースケース一覧` → `機能ごとのユースケース図` の順序は維持する - `機能の簡単な説明` は 200字以内にする - 一覧表は短くてよい - 代わりに対象機能の `前提 / 未確定事項` を少し厚めに書く --- ## Step 5: Mermaid 図のルール - 図は Mermaid の `flowchart LR` を使う - Mermaid には正式な UML ユースケース図記法がないため、**ユースケース図っぽい近似表現**として出す - アクターは `([ ... ])` のスタジアム型で表す - ユースケースは `( ... )` の丸ノードで表す - 機能単位のまとまりは `subgraph` で囲う - **図はユースケース図だけ**にする。フロー図は出さない - 表より図を優先する。情報量が多いときも、まず図で関係を見せ、表は補助に回す ### 全体図 - 左に Actor / Persona - 右に Function ごとの `subgraph` - 各 `subgraph` の中に主要 use case を 1-3 個だけ置く - ノードが増えすぎる場合は主要 use case だけに絞る ### 機能別図 - 左に Actor - 右に use case - 機能境界は `subgraph` で表す - 1 図 6-9 ノード程度までに抑える ## Step 6: ユーザーへの案内 完了後は以下を案内する: ```text docs/usecase-map.md にユースケーススケッチを生成しました。 - Mermaid の全体図と機能別ユースケース図をそのまま Markdown で見られます - 実装仕様ではなく、何を誰のために作るかの確認用です - 全体俯瞰と機能別詳細の両方に対応しています ``` ## Documenting with prhythm-docs After the skill run, when the user asks to save or present results(まとめて / ドキュメントにして / スライドにして): 1. Use `/prhythm-docs` (or follow that meta-skill) 2. Fill `templates/docs/index.md` and `templates/docs/sections.html` in this skill 3. Build the deck: `node skills/prhythm-docs/scripts/build-deck.mjs skills/function-usecase-map/templates/docs/sections.html docs/prhythm/function-usecase-map/index.html --title "…"` 4. Write `docs/prhythm/function-usecase-map/index.md` Do not dump full catalogs into those files. Markdown is a briefing (Answer / Frame / Evidence / Gates / Next) — see `skills/prhythm-docs/references/md-grammar.md`.