Brand from codebase (コードベースからのブランド抽出)
概要
製品リポジトリがブランドに関する唯一の信頼できる情報源です。ブランドキットは marketing-videos/<brand>/brand.md に一度抽出され、すべての値にはそのソース file:line が付与されます。また、ファイルは読み取った時点のリポジトリコミットを記録するため、再読み取りではなくリフレッシュが可能です。
brand.md コントラクト
以下のセクションをこの順序で記述します。すべての値の末尾には、ソースとして (path:line) を付けます。
- Sources (ソース): リポジトリパス、ブランチ、リポジトリごとの
git rev-parse --short HEAD、抽出日、およびパイプラインゲート G1 が読み取ってキットが古くなったことを検出するためのリポジトリごとの機械可読ブロック:```refresh repo: <product-repo> ref: HEAD commit: c8fb26e paths: src/data/content.ts src/app/globals.css public/brand ```repoはD:\Projects配下のフォルダ名です。git を使用していないリポジトリの場合は、refとcommitの代わりにmtime: <ISO date>を使用します。 - Identity (アイデンティティ): 製品名、一行でのポジショニング、タグライン、トーン(コピーファイルを引用し、言い換えないこと)。
- Color tokens (カラートークン): まずセマンティックブランドトークン(
--color-brand-*、primary、AppColors.primary)を、次に補助トークンを記述します。サーフェス(landingvsapp)ごとに異なる場合は、サーフェスごとに1つのテーブルを作成します。 - Typography (タイポグラフィ): サーフェスごとに記述します。ランディングページのフォントはアプリのフォントと異なることがよくあります。ルートレイアウトと、セクションレベルの
fonts.tsの両方を確認します。 - Logos and imagery (ロゴと画像): ファイルパス、実際の製品レンダリングかストックフォトか(ストックフォトを実際のユーザーとして提示してはいけません)、およびそのライセンスまたはクレジットファイル。
- Allowed claims (許可される主張): 機能、モード、価格、CTAラベル、URL、連絡先。各項目は直接引用し、ソースを明記します。サンプルデータは
SAMPLE(ダミー数値でのレンダリング)とマークし、動画で「Contoh」とラベル付けできるようにします。 - Forbidden claims (禁止される主張): もっともらしく聞こえるがソースがないものすべて:ユーザー数、収益、評価、推薦の言葉、パートナーロゴ、「terpercaya」、「#1」。
- Capture targets (キャプチャ対象): 本番環境とステージング環境のURL、キャプチャする価値のあるルート、アプリのスクリーンショットフォルダ、Play StoreのURL。
- Ambiguities (曖昧な点): 重複または競合するトークン、サイトとアプリで異なるコピー、他の場所のブリーフで使用されているがコードが矛盾している値。これらをユーザーにリストアップし、黙って解決しないでください。
抽出チェックリスト
| 探すもの | 一般的な場所 |
|---|---|
| コピー、CTA、価格 | src/data/content.ts、src/content/*.ts、ランディングセクションコンポーネント、RELEASE_NOTES.md、docs/features/ |
| Webトークン | globals.css @theme / :root、tailwind.config.*、palette.ts |
| Flutterトークン | lib/core/constants/app_colors.dart、app_text_styles.dart、pubspec.yaml のフォント |
| フォント | app/layout.tsx (next/font)、セクション fonts.ts、pubspec.yaml |
| ロゴ | public/brand/、docs/brand/、assets/icons/brand/ |
| URL | src/ 全体で grep -rn "https://<brand-domain>"、metadataBase、site.ts、利用規約ページ |
値を宣言して見つからないとする前に検索してください:ドメイン、CTAテキスト、トークン名を src/ 全体でgrepします。
.env*、.mcp.json、google-services.json、キーストア、および鍵やトークンはスキップします。それらの値をbrand.mdにコピーしないでください。
ソースリポジトリがチェックアウトされていない場合(クラウドセッション)
ゲートG1は brand_repo_absent を情報として報告し、G2はリポジトリの代わりにbrand.md内の正確な引用に対してすべての主張を検証します(claim_verified_brand_kit)。これは、brand.mdがコピーを path:line 付きで逐語的に引用している場合にのみ機能します。したがって、引用は文字通りに抽出し、決して言い換えないでください。brand.mdのリフレッシュにはリポジトリが必要です。ラップトップで行うか、製品リポジトリをクラウドセッションに追加し、MV_PROJECTS_ROOT をその親フォルダに設定してください。
リフレッシュルール
ゲートG1は、すべてのリフレッシュブロックに対して git -C <repo> log --oneline <commit>..<ref> -- <paths> を実行し、何か変更があった場合に brand_stale で失敗します。修正するには、変更されたファイルのみを再読み取りし、それらの行を更新し、ブロック内の commit を更新します。git以外のリポジトリは、ファイルの更新日時を mtime と比較します。
実際のUIのキャプチャ
| プロダクトサーフェス | 方法 |
|---|---|
| ライブWebサイト | 本番URLからのHyperFrames Webサイトキャプチャ(product-launch-video ルートでこれを行います)。ステージングは、ユーザーが機能が未リリースであると明示した場合のみ。 |
| ローカル開発サーバー | ユーザーが未リリースの画面を要求した場合のみ。その画面をブリーフ内で未リリースとラベル付けします。 |
| Flutterアプリ | 既存の実際のスクリーンショット(サイト screens/、Play Storeアセット)またはエミュレーターのスクリーンショット。デバイスフレームに配置します。 |
| 小さなアニメーション要素(CTAボタン、統計カード) | brand.mdのトークンを使用してHTMLで再構築します。存在しない画面を発明しないでください。 |
ストーリーボードの主張参照
STORYBOARD.md内のすべての画面上の主張には、brand.mdのソースが付与されます。例: "Biaya layanan 2%" (<product-repo>/src/data/content.ts:212)。ソースのない主張はストーリーボードから削除され、緩和されません。
よくある間違い
- 見つけた最初のネイビー(
--navy-main)をセマンティックブランドトークン(--color-brand-navy)の代わりに選んでしまう。セマンティック名を優先し、もう一方を曖昧な点としてリストアップしてください。 - ランディングページの動画にアプリのフォントを使用する、またはその逆。
- 1つのファイルだけを確認した後でURLが「見つからない」と宣言する。
- ストックフォトを顧客であるかのように表示する。