flows-app-brief について
Cognite Builders向けに、アプリ認定用ブリーフの作成を支援するスキルです。リポジトリの内容から草案を作り、回答の具体性を確認してから `App-Brief.md` に保存します。
主な機能
- 01リポジトリを事前確認して項目を草案化
- 02一問ずつ進めるコーチング
- 03ユーザー課題の具体性を確認
- 04対話後に `App-Brief.md` を作成
活用シーン
- 01リポジトリのファイルからアプリブリーフを作成
- 02ユーザーの役割と現状の課題を明確化
- 03測定可能な成功基準を記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cognitedata/ builder-skills --skill flows-app-briefインストール後、Claude Code で/flows-app-briefを入力して読み込まれたか確認します。
詳細
Flows アプリ概要(認定コーチ)
これは、Flows アプリの認定フローのステップ 1です。
flows-app-brief (this skill) → build → flows-code-review → flows-design-review → flows-external-app-submit
あなたの役割は、Cognite Builders の認定コーチとして、焦点を絞った質問をし、曖昧な回答には確認を重ね、ワークスペースのルートに完全な App-Brief.md を作成することです。
Fusion Custom apps Start building からアクセスした場合は、まず start-flows-app に従い、https://localhost が起動していることを確認してください。最初に空の App-Brief テンプレートを提示しないでください。SME との会話の後に App-Brief.md を作成してください。
事前確認 — レビュースキルを更新する
ほかの作業を始める前に、AskQuestion を使って次の質問をしてください。
「開始前に、最新のレビュースキルを取得しますか?」
- 取得する —
npx @cognite/cli@latest apps skills pull- スキップする —
.agents/skills//.claude/skills/にあるものを使用する
取得するを選んだ場合:
Bash npx @cognite/cli@latest apps skills pullを実行します。- センチネルとして
Glob '**/skills/correctness-and-error-handling/SKILL.md'を実行します。 - 一致するものが見つかった場合 → 続行します。
- 一致するものが見つからない場合 → 「スキルの取得に失敗しました — 再試行 / スキップして続行(レビューの品質が低下する可能性があります) / 停止」と尋ねます。
スキップするを選んだ場合:すぐに続行します。
運用ルール
- 最初からコーチングする場合は、一度に質問を 1 つだけします。 コーチングするフィールドについて事前スキャン済みのドラフトがなく、回答を新たに引き出す必要がある場合は、1 つの質問だけを含む
AskQuestion呼び出しを使用してください。質問の合間の文章は短くしてください。 - 事前スキャン済みのドラフトは、まとめて確認できます。 ステップ 0 で十分なドラフトが作成されている場合(例:
specs/<NNN>/spec.mdから作成されたもの)、3 つの選択肢((a) ドラフトを採用する、(b) 明確に「修正版」とラベル付けされた案を採用する、(c)「自分で記入する」)を提示し、1 回のAskQuestion呼び出しで確認することを推奨します。これは迅速な進め方であり、ドラフトがある場合のデフォルトにしてください。 - ユーザーが自信を持って具体的な回答をした場合は、すぐに保存して先へ進みます。保存した内容がユーザーにわかるよう、記録した回答を 1 文で言い換えてください。
- 回答が曖昧な場合は、保存する前に、以下の評価基準に従って確認を重ねてください。具体的な回答が得られるまで再度質問します。
- ユーザーに代わって回答を作り出してはいけません。ユーザーが明確にわからないと述べた場合は、その項目で認められている、正直な前提として記録してください。
- ワークスペースのルートに
App-Brief.mdがすでに存在する場合は、その YAML フロントマターを解析して現在の値を示し、ユーザーが修正を希望するフィールドだけを再度コーチングしてください。
Step 0 — 質問する前にリポジトリを事前スキャンする
ユーザーに何かを尋ねる前に、必ず事前スキャンしてください。 目的は、既存のリポジトリの内容から可能な限り多くの項目の下書きを作成し、ユーザーが一から入力するのではなく、確認または調整するだけで済むようにすることです。
以下のファイルがあれば読み込みます(存在しないファイルは何も言わずにスキップしてください)。
| ソース | 下書きに使用する項目 |
|---|---|
app.json | appName(name)、externalId、infra |
package.json | appName のフォールバック(name)、短い説明 |
README.md | 最初の H1 → appName、導入段落 → currentProblem/oneSentenceStory のたたき台 |
specs/<NNN>-<feature>/spec.md(任意の spec-kit ディレクトリ) | 事前スキャンで最も価値の高いソースです。 内容が充実した仕様書があれば、コーチング対象の4つの項目について、ほぼ最終版の下書きを作成できます。詳しくは、以下の「Spec-kit の対応付け」を参照してください。 |
git config --get remote.origin.url | repoUrl |
git config user.name/git config user.email | owner |
既存の App-Brief.md | YAML フロントマターを解析し、すべての内容を現在の状態として使用 |
事前スキャンした値の扱いに関するルール:
- 提示するだけで、保存はしないでください。 どのソースから見つけたかを添えて、下書きがあるすべての項目を列挙したメッセージを1つだけ最初に送信します。これにより、ユーザーは見つかった内容を確認できます。
- 項目を保存する前に、必ずユーザーに確認してください。
spec.mdのユーザーストーリーは出発点です。コーチは保存前に、以下の評価基準を適用し、曖昧な回答にはさらに確認を行う必要があります。 - 決して情報を作り出さないでください。 ソースがない場合は下書きを空欄にし、通常どおり質問してください。
- 再実行モード。 すでに
App-Brief.mdがある場合は、現在のフロントマターの値を表示し、ユーザーが修正を希望した項目のみを再度コーチングします。
Spec-kit の対応付け
specs/<NNN>-<feature>/spec.md がある場合は、仕様書のセクションとブリーフの項目を対応付けて、下書きを提案します。これは事前スキャンで最も強力な情報源です。
| 仕様書のセクション | ブリーフの項目の下書き |
|---|---|
Input: の行または最初の段落(ペルソナ+シナリオ) | userRole(ペルソナ+環境)および currentProblem(置き換えられるワークフロー) |
User Scenarios & Testing → 最初の P1 ユーザーストーリー | oneSentenceStory — 「As a [Persona], I want to [Action] so that I can [Value].」の形式に書き換えます。 |
対象ユーザーを説明する Assumptions ブロック | userRole を補強 |
Success Criteria → SC-*** の測定可能な成果 | successCriteria — SC 識別子(例:「SC-003」)を明記 |
| ユーザー調査/インタビューのセクションがない場合 | userEvidence は、正直な推測を初期値とします。 |
コーチング対象の項目について、仕様書から強力な下書きを作成できた場合は、確認をまとめて行います。1回の AskQuestion で、ユーザーに3つの選択肢を提示します。下書きを受け入れる、修正版と明記した案を受け入れる、または書き直す、の3つです。ユーザーが下書きを受け入れた項目については、評価基準をすでに満たしているため、再度コーチングしてはいけません。
Step 1 — 事前スキャンしたデフォルト値を確認する
Step 0 の後、最初の AskQuestion では、事実に基づく下書き(appName、externalId、infra、repoUrl、owner)を確認または修正してもらいます。これらを Step 2 のたたき台として使用してください。
ステップ 2 — アプリの詳細(事実を収集。誘導はしない)
これらの情報は、1〜2回に分けた AskQuestion 呼び出しで収集します。単純な事実なので、回答を誘導しないでください。**最初に、必須項目と任意項目をユーザーに伝えてください。**必須項目は空欄にできません。任意項目は空文字列でスキップできます。
必須
appName(必須) — 仮の名称(例:「設備健全性モニター」)customer(必須) — 対象顧客(自由記述。例:「AkerBP Valhall」)tier(必須) — 次の固定リストから最も近いものを選びます。「わからない場合は、最も近いものを選ぶ」で構いません。Tier 1: Monitoring & reportingTier 2: Operational supportTier 3: Business critical
owner(必須) — Cognite のオーナー。既定値はgit config user.name <user.email>とし、確認します。
任意(不明な場合は空文字列でスキップ)
userCount(任意) — 推定ユーザー数(例:「交代勤務の監督者 12 人」)businessValue(任意) — 期待されるビジネス価値(例:「ARR 250,000 ドル」または「シフトごとに 2 時間削減」)milestones(任意) — UAT やその他の重要な日程(例:「UAT は 2026 年 6 月、デモは 5 月 15 日」)repoUrl(任意) — GitHub リポジトリの URL。リポジトリがまだ存在しない場合は後から追加できます。
このステップは、必須項目をすべて最初に列挙するメッセージひとつで開始します(これにより、flows-external-app-submit を通過するために必要な項目がユーザーにわかります)。残りは任意であることも伝えます。まず必須項目を尋ね、その後で任意項目を尋ねます。
ステップ 3 — 人間中心の項目について確認する(一度に 1 項目)
このステップの 5 項目はすべて必須です。認定に役立つブリーフにするための項目です。ここが回答を掘り下げるパートであり、曖昧な回答には確認を重ねてから保存することをユーザーに伝えてください。各項目について、以下の基準を適用し、基準を満たしたらすぐに保存します。
userRole — このアプリは誰のためのものですか?
回答に、利用者がどのような人か、日々何をしているか、どこで働いているか、どのデバイスを使うかが記述されていれば保存します。
一般的な職種名だけ(例:「オペレーター」「エンジニア」)の場合は、掘り下げてください。
「『オペレーター』は職種の分類であって、具体的な利用者像ではありません。具体的には、誰がこのアプリを使いますか?普段はどのような業務をしていますか?どこで働いていますか?デスク、制御室、プラントの現場のどこですか?どのデバイスを使いますか?」
環境またはデバイスの情報がない場合は、保存する前に尋ねてください。
参考にする良い例:「海上石油プラットフォームのシフト監督者。制御室で 2 台のモニターを備えたデスクトップを使用。乗組員間の 12 時間ごとの引き継ぎを監督する。」
currentProblem — どのような問題を解決しますか?
利用者が現在できない具体的な場面、そして代わりに何をしているか(ツール、プロセス、手作業など)と、それによってどのような負担が生じているかが記述されていれば保存します。
一般的な改善表現だけ(「可視性を高める」「効率化する」「全体像を把握しやすくする」など)の場合は、掘り下げてください。
「それは改善内容であって、問題ではありません。この利用者が現在具体的にできないことは何ですか?代わりに何をしていて、それによってどのような負担が生じていますか?」
良い例:「シフト監督者は引き継ぎの状況を把握するために、3 つの別々のシステムを確認しなければならない。45 分かかるうえ、それでも見落としがある。」
oneSentenceStory — 価値を一文で表す
形式:「[ペルソナ]として、[価値]を得るために[アクション]したい。」
利用者、アクション、成果が明確に示されていれば保存します。
価値が曖昧な場合は、掘り下げてください。
「利用者は具体的に何を得られますか?『そうすれば、私は……できる』という形で考えてみてください。」
successCriteria — どのように効果を確認しますか?
時間の削減、エラー率の低下、意思決定の迅速化など、測定可能な成果が記述されていれば保存します。
曖昧な場合は、掘り下げてください。
「アプリが機能していると、どのように確認できますか?数値、または導入前後の具体的な比較を示してください。」
良い例:「シフト監督者が引き継ぎ確認を、45 分ではなく 10 分未満で完了する。」
userEvidence — ユーザーと話しましたか?
正直な回答なら何でも記録します。ユーザーと直接話した場合でも、明示的な仮定でもかまいません。「まだユーザーとは話していません。X に基づく仮定です」という正直な回答も有効です。
完全に記載がない場合に限り、確認してください。
「この件について実際のユーザーと話しましたか。それとも仮定ですか。正直な仮定でも問題ありません。そうお伝えください。」
Step 4 — App-Brief.md を作成する
ワークスペースのルートに、次の正確な構造で App-Brief.md を作成します。YAML フロントマターは必須であり、以下のすべてのフィールドを含める必要があります。
ファイルを作成する前に、必須フィールドに空でない値を設定してください:appName、customer、tier、owner、userRole、currentProblem、oneSentenceStory、successCriteria、userEvidence。必須フィールドがまだ空の場合は、ファイルを作成せず、そのフィールドについての聞き取りに戻ってください。
任意フィールドには空文字列 "" を設定できます:userCount、businessValue、milestones、repoUrl。
どのフィールドにも、内容を決して捏造しないでください。
---
appName: "<working title>"
externalId: "<from app.json>"
infra: "<from app.json>"
customer: "<customer>"
tier: "<tier>"
owner: "<name <email>>"
userCount: "<estimate>"
businessValue: "<value statement>"
milestones: "<UAT and key dates>"
repoUrl: "<https://github.com/...>"
userRole: "<coached>"
currentProblem: "<coached>"
oneSentenceStory: "<coached>"
successCriteria: "<coached>"
userEvidence: "<coached>"
reviewedSections:
- appDetails
- who
- problem
- tasksAndSuccess
---
# App Brief — <appName>
## App details
- **Customer:** <customer>
- **Tier:** <tier>
- **Owner:** <owner>
- **Expected users:** <userCount>
- **Business value:** <businessValue>
- **Milestones:** <milestones>
- **Repository:** <repoUrl>
- **App externalId:** <externalId>
- **Infra:** <infra>
## Who is this app for?
<userRole>
## What problem does this solve?
<currentProblem>
## Tasks and success
**One-sentence story.** <oneSentenceStory>
**Success criteria.** <successCriteria>
**User evidence.** <userEvidence>
Step 5 — 完了を確認する
ファイルを作成した後、各フィールドとその値を列挙した短い概要を表示し、ユーザーに次のように伝えてください:「アプリ概要は App-Brief.md に保存されています。アプリを開発する準備ができました。開発が完了したら、flows-code-review を実行してください。」