Technical Impact Presentation (TIP) ビルダー は何をしますか?
ブランド化された顧客向けテクニカルインパクトプレゼンテーションを構築します。このプレゼンテーションは、顧客の成功基準を、ライブテナントの数値とスクリーンショットを撮るべき正確なビューへのディープリンクで裏付けながら、Dynatraceが提供したものにマッピングします。ブランドルールは dynatrace-pptx-skill から継承します。最初にそちらを読んで色・フォントを確認してください。
黄金律: メトリクスを絶対に捏造しないこと。スライド上のすべての数値は、このセッションで実行された dtctl クエリから取得しなければなりません。基準が「進行中(In Process)」の場合はその旨を正直に伝えます。正直さは外観に勝ります。
ユーザーから必要な入力
| 入力 | 必須 | 備考 |
|---|---|---|
DT PowerPoint テンプレート (.pptx) | はい | ベースとなるデッキ。そのレイアウト/テーマが継承されます。 |
記入済みサンプルデッキ (.pptx) | 任意 | スライドフローをミラーリングします(例:過去の顧客のPOV)。 |
| 成功基準(画像/表/テキスト) | はい | コンテンツの骨格。ユースケース・目的・現状の方法・ステータス。 |
| テナント / dtctl コンテキスト | はい | 例:<tenant-id> → dtctl --context <ctx>。 |
| 発表者名 / 日付 | 任意 | デフォルトは認証済みユーザー + 当月。 |
パイプライン(順番に実行)
1 — 事前検証(必須、スキップ不可)
両方のチェックが合格してから構築を開始します。最初に dtctl チェック、次に MCP チェックを実行します。
1a. dtctl 検証 — scripts/preflight.sh <context> を実行します:
bash scripts/preflight.sh <dtctl-context>
これにより以下が検証されます: 現在のコンテキスト、auth whoami(トークン期限切れでないこと)、読み取りアクセス(簡単なDQL)、書き込みアクセス(ダッシュボードをアップロードする場合に必要)、インストール済みアプリIDの一覧(ディープリンクに必要)。トークンが期限切れの場合は再認証コマンドが表示されます。ユーザーにセッション内で !dtctl auth login --context <ctx> を実行するよう伝えてください(OAuthはインタラクティブなので、エージェントは実行できません)。
1b. Dynatrace MCP 検証 — エージェント は Dynatrace MCP サーバーに到達可能であることを確認する必要があります(スクリプトは MCP を呼び出せないため)。軽量な MCP 読み取りツールを1つ呼び出します。例:get_dql_knowledgebase または list_strato_components(ツール名は mcp__<サーバー>__<ツール> のようになります)。
- 成功 → 「MCP: 接続済み」と記録し、DQL とダッシュボードの検証/承認に使用します。
- 失敗/不在 → 「MCP: 利用不可 — dtctlのみで続行」と記録し、続行します(MCPは推奨、必須ではありません)。動作していることを暗黙に想定しないでください。
両方の結果を、処理を続ける前に短い事前検証行として記録します。例:
Preflight ✓ dtctl(read+write, 47 apps) · MCP(connected)
2 — ライブテナントデータの収集
scripts/gather_tenant_data.sh <context> を実行して、主要統計(ホスト、サービス、プロセスグループ/インスタンス、K8sクラスター/ネームスペース/ワークロード、スパン/2h、ログ/2h、個別問題/7d)、インストール済みアプリID(ディープリンク用)、およびプレミアムリンク候補のエンティティID(主要サービス、ホストグループ、データベースシステム)を取得します。出力をキャプチャし、これらの数値を後で設定ファイルに貼り付けます。必要に応じて、基準固有のクエリを追加します(例:db.system、Oracle/MSSQLサービス、Azureリージョン、gen_aiスパン)。
3 — 設定ファイルの構築
references/example_config.json をコピーし、この顧客用に編集します: カバー、エグゼクティブ概要、顧客POV(4カード)、タイムライン、成功基準行、基準ごとのフィーチャーエントリ(+付加価値)、価値サマリー、クロージング。各フィーチャー = {title, done, status, bullets[], url, capture}。url は実際のアプリディープリンク(手順1/2の <base>/<appId>); capture はユーザーにスクリーンショットを撮る場所を正確に指示する1行のテキストです。
ディープリンクベース = https://<tenant>.apps.dynatrace.com/ui/apps/。一般的なアプリID(手順1でテナントごとに確認): dynatrace.infraops、dynatrace.discovery.coverage、dynatrace.classic.smartscape、dynatrace.services、dynatrace.distributedtracing、dynatrace.database.overview、dynatrace.clouds、dynatrace.automations(Workflows/ServiceNow)、dynatrace.davis.problems(Problems)、dynatrace.logs、dynatrace.kubernetes、dynatrace.devobs.debugger(Live Debugger)、dynatrace.dashboards、dynatrace.security.vulnerabilities。
4 — デッキの生成
python3 scripts/build_tip.py config.json
build_tip.py はテンプレートを読み込み、スケルトンスライドを適切に削除し(リレーションシップを削除して重複パーツや破損が発生しないようにする)、テンプレートレイアウトから再構築し、レイアウトごとに背景がダークかライトかを自動検出します。ダークなカバー/セクションスライドには白いテキスト、ライトなコンテンツスライドにはネイビーのテキストを自動的に選択します。カスタムカード、タイムラインノード、リンクボックス、テーブルは常にダーク塗りつぶし+ライトテキストなので、どのスライドでも読みやすくなります。
5 — QA(必須)
python3 scripts/qa_tip.py "<output>.pptx"
以下の場合にエラーを出力します: 白地に白(不可視)のテキスト、壊れた/空のハイパーリンク、残っているスケルトンテキスト(「Use Case 1」「Customer Name」「Lorem」)、空のテーブル。修正してクリーンになるまで再実行します。LibreOffice/soffice が利用可能な場合は、PDFもエクスポートして目視確認します。利用できない場合は、ユーザーにファイルを開いて密集したスライドでテキストが収まっているか確認するよう伝えます。
6 — 納品
絶対パスと file:// リンクを提供します。open で開くことを提案します。スライド構成、使用したメトリクス、スライドごとのスクリーンショットリンクを要約します。
デッキの設計図(デフォルトフロー)
カバー → アジェンダ → エグゼクティブ概要 → 顧客の視点(4カード)→ POVタイムライン → 成功基準表 → セクション区切り → 成功基準ごとのフィーチャースライド → 付加価値スライド(Problems/RCA、Logs、Kubernetes、Live Debugger、提供ダッシュボード、Security)→ セクション区切り → 結果スコアカード → 提供価値と次のステップ → 謝辞。
各フィーチャースライド: タイトル + ステータスチップ(✅ 完了 / 🔄 進行中)+ 3–4個の価値箇条書き + 右側にティール色の「スクリーンショットプレースホルダー」ボックス(キャプチャ指示とクリック可能なディープリンク付き)。
スクリプトに組み込まれた苦労して得た教訓(後退させないこと)
- ライト vs ダークレイアウト。 DT「Technical Impact」テンプレートはライト(白)のコンテンツレイアウトとダークのカバー/セクションレイアウト(フルブリード画像)を出荷します。白いスライドに白いテキストは見えません。
build_tip.pyは自動検出し(フルブリード画像または暗い塗りつぶし ⇒ ダーク)、それに応じてテキストの色を付けます。コンテンツレイアウトに白いテキストをハードコードしないでください。 - スライドは適切に削除すること。
sldIdエントリだけを削除すると、スライドパーツが孤立し、重複名によるzip破損が発生します。必ずprs.part.drop_rel(rId)とsldIdの削除を両方行ってください。 - ブランド用語の置換は大文字小文字を区別すること。 例:表示される
DavisはDynatrace Intelligenceに置き換えますが、アプリIDのURL内の小文字davis(dynatrace.davis.problems)はそのままにします。壊すとリンクが切れます。qa_tip.pyはURLをフラグしません。 - 実際のアプリIDのみ使用すること。
dtctl get apps(手順1)から取得し、推測しないでください。dynatrace.database.overview(dynatrace.databasesではない)、dynatrace.davis.problemsなど。 - ステータスは正直に。 顧客の Completed/In-Process フラグを保持します。In-Process は琥珀色に着色します。
このスキルの共有
このスキルはこのディレクトリに自己完結しています。共有するには、~/.claude/skills/technical-impact-presentation/ をチームメイトの ~/.claude/skills/(または ~/.agents/skills/)にコピーするか、共有スキルリポジトリにコミットします。python-pptx(pip3 install python-pptx)と dtctl 以外の外部依存関係はありません。