build-an-app について
デジタルヘルスアプリの構想から計画、実装への移行を対話形式で支援するスキルです。プロジェクトに応じて計画スキルを選び、成果物をまとめて開発へ引き継ぎます。
主な機能
- 01対話による要件整理
- 02計画スキルの条件付き選択
- 03計画ドキュメントの調整
- 04実装計画の引き継ぎ
- 05既存プロジェクトの再開
活用シーン
- 01新しいデジタルヘルスアプリの範囲策定
- 02健康データや FHIR の要件計画
- 03コンプライアンスや研究要件への対応
- 04既存の計画からプロジェクトを継続
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ stanfordspezi/ spezivibe --skill build-an-appインストール後、Claude Code で/build-an-appを入力して読み込まれたか確認します。
詳細
アプリを構築する
ユーザーがデジタルヘルスアプリを最初から最後まで構築できるように案内します。このスキルは、このリポジトリにある計画スキルと構築スキルを連携させ、ユーザーに必要なものを判断し、適切な計画スキルを実行して、実装へ引き継ぎます。リリースユーティリティの keep-a-changelog-generator と release-notes-generator はプロジェクトの後半で使うもので、このフローには含まれません。
使用するタイミング
次のような希望があるユーザーには、このスキルを使用してください。
- 新しいデジタルヘルスアプリをゼロから構築したい
- ヘルスアプリのアイデアについて、何から始めればよいかを知りたい
- 各段階でガイダンスを受けながら、アイデアから実行可能なコードまで進めたい
ユーザーが特定のスキルを直接実行したい場合(例:FHIR データモデルの設計を依頼された場合)は、このスキルを使用しないでください。そのスキルを単独で使用してもらってください。
作業スタイル
会話形式でユーザーを案内します。簡潔に進め、最初から質問を次々と投げかけないでください。ユーザーの話を聞き、推測できることは推測し、判断できないことだけを尋ねてください。ユーザーのペースに合わせて進めてください。
Step 1: 話を聞く
まず、作業ディレクトリをざっと確認します。docs/planning/ または docs/implementation-plan.md がすでに存在する場合は、続きからの再開です。最初の質問は省き、既存のものを確認したことを伝え、Step 2 の「前回の続きから始める」に進んでください。
それ以外の場合は、まず自由回答形式の質問を 1 つします。
"何を作りたいですか?"
ユーザーには、思いついたままにアイデアを説明してもらいます。1 文でも 3 段落でもかまいません。
回答から、次のような兆候を探します。
| 兆候 | そこからわかること |
|---|---|
| 特定の病気、症状、または臨床ワークフローへの言及 | ヘルスデータが関係し、FHIR も関わる可能性があります |
| 研究、臨床試験、または登録への言及 | 研究計画が必要です |
| 患者データ、PHI、HIPAA、または規制上の懸念への言及 | コンプライアンス計画が必要です |
| HealthKit、バイタル、ウェアラブル、またはセンサーデータへの言及 | ヘルスデータのモデリングが必要です |
| EHR、Epic、SMART on FHIR、または相互運用性への言及 | FHIR データモデルの設計が必要です |
| 患者が自身の医療記録を取り込むこと、患者ポータル、MyChart、または Fasten への言及 | EHR 記録の連携(fasten-ehr-integration)が必要です |
| すでにリポジトリまたはプロジェクトがあるという言及 | プラットフォームの選定を省略します |
| Spezi テンプレート以外のフレームワーク(Flutter、Kotlin、Web など)への言及、またはスターターテンプレートを使いたくないという発言 | プラットフォームの選定を省略します。独自のフレームワークを使って構築します(Step 4 を参照) |
| すでにデザインやワイヤーフレームがあるという言及 | UX 計画を簡略化するか、省略できる可能性があります |
| 「何から始めればいいかわからない」と言う、または漠然としたアイデアを説明する | ニーズの把握が役立ちます |
アプリがヘルスデータを扱うか、臨床システムに接続するか、研究の一部か判断できない場合は、不足している点をまとめた質問を 1 つだけしてください。たとえば、次のように尋ねます。
"このアプリはヘルスデータを収集または保存しますか?また、研究に関連していますか?"
追加で質問するのは 1 つまでにしてください。それでも曖昧な点がある場合は、該当するスキルを提案する計画に含めてください。ユーザーは不要なスキルを除外できます。
Step 2: 計画を提案する
聞き取った内容をもとに、利用可能なスキルから計画を組み立てます。各スキルを含めるかどうかは状況に応じて判断し、ユーザーの状況に必要なものだけを含めてください。
スキル選択ガイド
| スキル | 含める場合 |
|---|---|
biodesign-needs-finding | ユーザーが課題を明確にできていない、アイデアが漠然としている、または範囲の絞り込みを求めている場合 |
spezi-platform-selection | ユーザーがまだプロジェクトリポジトリを持っておらず、Spezi テンプレートから始めたい場合 — 最後に実行し、React Native または Apple ネイティブを選択して対応するテンプレートプロジェクトをセットアップし、計画書をそのプロジェクトに移します。別のフレームワークを希望するユーザーはこの手順を省略します。その場合、ステップ 4 でプロジェクトをセットアップします |
digital-health-ux-planning | ユーザーがまだデザインやワイヤーフレームを用意していない場合 |
health-data-model-planning | アプリが健康データ(バイタル、評価、患者記録)を保存または処理する場合 |
fhir-data-model-design | アプリに FHIR との相互運用性が必要な場合、または EHR に接続する場合 |
digital-health-compliance-planning | アプリが PHI を扱う場合、または規制上の懸念がある場合 |
fasten-ehr-integration | アプリで Fasten Connect を介して患者が自分の EHR 記録を取得する必要がある場合 |
digital-health-study-planning | アプリが参加登録と評価を伴う研究の一部である場合 |
app-build-planner | 常に含めます — ビルドの指針となる実装計画を作成します |
project-wiki | ユーザーがプロジェクトとともに成長する永続的なナレッジベースを希望する場合 — ここで選択されていなくても、計画の最後(ステップ 4)に提案します |
計画は、各スキルが何をするのかを 1 行で説明する、短い番号付きリストとして提示してください。計画に spezi-platform-selection が含まれる場合、テンプレートは任意であり、ユーザーは好きなフレームワークで開発できること、Spezi テンプレートを使いたくない場合はその手順を省略できることを伝えてください(その場合、ステップ 4 でプロジェクトをセットアップします)。そのうえで、次のように尋ねてください。
「この内容でよさそうですか?追加または削除したい項目はありますか?」
先に進む前に、ユーザーが調整できるようにしてください。
続きから再開する
ユーザーがすでにプロジェクトを持っている場合は、docs/planning/ に既存の計画ドキュメントがあるか確認してください。出力がすでに存在するスキルは省略します。すでに docs/implementation-plan.md がある場合は、ステップ 4(ビルド開始)に進んでください。
ステップ 3:各スキルを実行する
以下の順序で、選択したスキルを実行します。それぞれについて、次の手順に従ってください。
- スキルの内容と、作成するものをユーザーに 1 文で伝えます
- スキルの SKILL.md を読み、その指示に従います
- 完了後、出力が正しいパスに保存されていることを確認します
- 次に進む前に、作成したものを簡潔に要約します
以下の 2 つのルールは、全体を通して適用されます。出力パスは現在の作業ディレクトリからの相対パスです。ステップ 4(または spezi-platform-selection)でプロジェクトが作成されるまでは、作業ディレクトリがスキルで言及される「プロジェクトリポジトリ」として扱われます。また、スキルが尋ねる内容について、ユーザーがこのやり取りの中ですでに回答している場合は、再度尋ねず、その回答を引き継いでください。
実行順序と出力パス
すべてのプランニングスキルは spezi-platform-selection より前に実行するため、プランが完成するまではプラットフォームが確定しません。
次の順序でスキルを実行します(選択されていないものはスキップします)。
| スキル | 出力パス | 生成されるもの |
|---|---|---|
biodesign-needs-finding | docs/planning/need-statement.md | ニーズステートメント:課題、対象者、成果 |
digital-health-ux-planning | docs/planning/ux-brief.md | ユーザージャーニー、オンボーディング、ワークフロー |
digital-health-study-planning | docs/planning/study-brief.md | 研究プロトコル、登録、評価 |
health-data-model-planning | docs/planning/data-model-brief.md | エンティティ、関係、FHIR の推奨事項 |
fhir-data-model-design | docs/planning/fhir-data-model.md | FHIR リソース、用語、関係 |
digital-health-compliance-planning | docs/planning/compliance-brief.md | プライバシー領域、制御、必要な決定事項 |
fasten-ehr-integration | docs/planning/ehr-connection-brief.md | 動作する Fasten Connect の統合と、プライバシー/アーキテクチャに関する決定事項 |
app-build-planner | docs/implementation-plan.md | マイルストーンに基づくビルド手順 |
spezi-platform-selection | テンプレートプロジェクト | 選択したテンプレートから作成した動作するプロジェクトディレクトリ。プランニング概要をその中に移動します |
spezi-platform-selection は、ユーザーがビルドを開始する準備ができた段階で最後に実行します。プランニング概要を使ってプラットフォームを推奨し、対応する Spezi テンプレートプロジェクトをセットアップします(React Native の場合は公式 CLI でアプリを生成し、Apple ネイティブの場合はクローンします)。その後、既存の docs/planning/ と docs/implementation-plan.md をプロジェクト内に移動し、コーディングエージェントがすべてのコンテキストを参照できるようにします。
ユーザーが Spezi テンプレートを使用しない場合、クローンの手順はありません。プランニング概要と実装計画はフレームワークに依存しないため、ステップ 4 ではユーザーが選んだフレームワークでプロジェクトをセットアップします。
fasten-ehr-integration は、プランニングと実装の両方を担います。成果物は、動作確認済みの統合です。アプリがまだ存在しない場合は、この時点で実行し、開発者アカウントのセットアップと、docs/planning/ehr-connection-brief.md を作成するプライバシー/アーキテクチャに関する決定を行います。そして、動作する統合の実装はマイルストーンとして app-build-planner に計画させ、そのマイルストーンの段階でスキルを再度実行し、実際のプロジェクト内で統合を構築して検証します。
各スキルの実行後に、「次に進みますか? それとも、何か調整しますか?」と尋ねます。
ステップ 4:ビルドを開始する
このステップは、選択したすべてのスキルの実行が完了した後にのみ実行します。特に、spezi-platform-selection を選択した場合は、ビルドを開始する前に実行する必要があります。実装はプランニングディレクトリではなく、テンプレートプロジェクト内で行います。
プロジェクトをセットアップする(テンプレートを使わない場合)
ユーザーが Spezi テンプレートを使用しない場合は、ビルドを開始する前にコードの配置先を決めます。
- 既存のリポジトリがある場合 — そのリポジトリでビルドします。計画ドキュメントが別のディレクトリに作成されている場合は、
docs/planning/とdocs/implementation-plan.mdをリポジトリに移動します(移動前に確認し、docs/planning/がすでに存在する場合は統合します)。 - まだリポジトリがない場合 — プロジェクトの配置先を尋ねます(計画ディレクトリの隣にアプリ名のディレクトリを作成するのが適切な既定値です)。ユーザーが選んだフレームワークの標準ツール(例:
npx create-expo-app、flutter create、npm create vite@latest、空の Xcode プロジェクト)を使ってプロジェクトのひな形を作成し、docs/planning/とdocs/implementation-plan.mdをそこに移動します。必要なツールがインストールされていない場合は、まずインストールを支援するか、最小限の手動のひな形を用意してその旨を伝えます。必要に応じて、アプリ名をフレームワークのパッケージ命名規則に合わせて正規化します(スペースを含む表示名はディレクトリ名にそのまま使い、パッケージ名にはsnake_caseを使えます)。ひな形の README とエージェント向けの指示ファイルを読み、実装がその規約に従うようにします。ツールが Git リポジトリを初期化していない場合は初期化し、ビルドの開始前に依存関係をインストールします。
移動した場合は、計画ディレクトリに残った空の docs/ ディレクトリを削除します。計画の Platform フィールドにまだ「To be decided」と記載されている場合(計画後にユーザーがテンプレートを使わないことにした場合)は、ここで計画の範囲を絞ります。Platform を選択したフレームワークに設定し、Spezi パッケージを併用する場合の注記をカスタム実装の作業量を示すフラグに置き換え、未解決の質問にあるプラットフォーム項目を解決します。いずれの場合も、実装は計画だけのディレクトリではなく、プロジェクトディレクトリ内で行います。テンプレートを使わない場合、あらかじめ Spezi のひな形として用意された(オンボーディング/同意フロー、HealthKit 統合、FHIR マッピングなどの)機能は利用できないため、計画のマイルストーンでは、より多くのカスタム実装が必要になることを想定します。計画時にプラットフォームが決まっていた場合は計画自体に、決まっていなかった場合は上記の範囲を絞る手順で、その旨が示されます。どの方法でも、ビルドの開始前にプロジェクト内で docs/planning/ と docs/implementation-plan.md をコミットするようユーザーに勧めてください。コーディングエージェントや今後の貢献者が、これらを繰り返し参照するためです。
要約して引き継ぐ
project-wiki がまだセットアップされておらず(wiki/ ディレクトリがない)、ユーザーが以前に不要と断っていない場合は、要約する前に一度だけ提案します。
「ビルドを進めながら知識を蓄積していくために、プロジェクト Wiki をセットアップしますか?計画ドキュメントを基に作成し、インタビュー、論文、臨床観察を追加するたびに内容を充実させていきます。」
ユーザーが承諾した場合は、project-wiki スキルを実行し(SKILL.md を読み、その指示に従ってください)、ここに戻ります。
次に、プロジェクトの状態を要約します。今のセッションで作成したものでも、以前のセッションで見つかったものでも、実際にディスク上に存在するドキュメントだけを一覧にします。
Here's what we have:
Project: [the template project path, the user's existing repo, or the newly scaffolded project]
Planning documents:
[list only the docs that were created]
Implementation plan:
docs/implementation-plan.md
[N] milestones, next up: [first milestone not yet built]
Ready to start building?
ユーザーがビルドを始める準備ができたら、docs/implementation-plan.md を読み、まだ構築されていない最初のマイルストーンを見つけて実装を開始します(再開時は、どのマイルストーンが完了済みかをユーザーに確認してください)。
ガードレール
app-build-plannerを除き、すべてのスキルは任意です。 固定のチェックリストではなく、ユーザーが説明した内容に基づいてスキルを含めてください。- テンプレートは任意です。 Spezi のテンプレートは手早く進める方法であり、必須ではありません。ユーザーが別のフレームワーク(Flutter、Kotlin、Web など)を希望する場合は、
spezi-platform-selectionを省略し、ステップ 4 でプロジェクトをセットアップしてください。計画ブリーフと実装計画は、どのコードベースでも利用できます。 - 質問を先回りして並べないでください。 「何を作りたいですか?」から始め、追加の質問は最大 1 つにしてください。
- 迷った場合は、計画に含めてください。 スキルが必要かどうか判断に迷った場合は、提案してユーザーが削除できるようにしてください。手順を後から省くほうが、必要なものを見落としたと後から気づくより簡単です。
- ユーザーのペースを尊重してください。 各スキルの完了後に、ユーザーが内容を確認して調整できるようにしてください。確認せずに自動で次へ進まないでください。
- 「コーディングへ進む」ケースに対応してください。 計画ドキュメントがすでにある場合は、その旨を確認し、続きから進めてください。
- 各スキルは対話形式です。 スキルの
SKILL.mdを読み、その指示に従う際は、ユーザーにも参加してもらう必要があります。質問に答えたり、出力を確認したり、情報を提供したりしてもらってください。ユーザーの回答を捏造しないでください。