Communitygithub.com

smyrna-pergamum/aperture-topology-story

開発者ツール、データ、ネットワーク、OSINT製品のウェブサイトを、暗いエンジニアリンググリッドの中に一つの輝くアイデアを持つ形で構築します。SVGノードトポロジーのヒーローセクション、ピン留めスクロールストーリー、明るいワークスペースへの絞り(アパチャー)開閉アニメーションが特徴です。

aperture-topology-story とは?

このスキルは、技術志向の製品ウェブサイト、特にパイプラインを持ちその流れを示せるツール(推論メッシュ、OSINTツール、データパイプライン、CI、同期エンジン、パッケージレジストリなど)のためのUIテンプレートです。暗い工学グリッドの背景に、SVGで描かれたノードトポロジーのヒーロー(円形アイコンノード、モノラルラベル、破線の曲線リンク、双方向に流れるパケット)と、大きな発光するコンデンスディスプレイ見出しを配置します。その中心的なインタラクションは「絞りストーリー(aperture story)」で、ユーザーがスクロールすると、ネットワークの一つのノードからカメラの絞りのように円形に切り抜かれた明るい紙のグリッドワークスペースが開き、その中で入力→結果→解釈→出力の4フェーズのワークフローがカードやチップのアニメーションで表現されます。最後に、統合ストリップ、実際のスクリーンショットを使ったタブ切り替えアーキテクチャ図、パズルタブ付きモジュールブロック、カタログテーブルなどの静かな技術セクションが続きます。このスキルは、製品のREADMEやソースコードから正確な色や数値を取得し、派手な約束ではなく具体的な機能に焦点を当てた文章を生成します。対応プラットフォームはウェブ(単一のindex.html)で、Google Fonts(Rajdhani, Geist, Geist Mono)を使用し、i18n(英語/トルコ語)、アクセシビリティ、アニメーション軽減設定に対応します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/smyrna-pergamum/web-design-skills/tree/HEAD/skills/aperture-topology-story

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Aperture Topology Story

一つの映画的な動きを持つ、静かなエンジニアリングドキュメントのように振る舞う製品ページです。読者はネットワークのノードの中にスクロールし、暗いページがカメラの絞りのように明るい紙のワークスペースに開き、そこで製品の実際のワークフローがカードで表現されます。これは、見せられるパイプライン(入力→ソース/ピア→結果→出力)を持つツールに適しています。推論メッシュ、OSINTおよびリサーチツール、データパイプライン、CI、同期エンジン、パッケージレジストリなどです。ライフスタイルやファッションブランドには適していません。

リファレンスビルドは example/index.html です。これは OSINT-Book(Android と Windows 向けのパッシブかつソースファーストな OSINT ノートブック)の実際のウェブサイトで、EN/TR、アプリ独自の色を使用しています。詳細なコードは references/components.md にあります。screenshots/ にはすべてのセクション、すべてのストーリーフェーズ、トルコ語版、動きの抑制モード、モバイル版のスクリーンショットがあります。

ユーザーが参照サイトを指定した場合は、そのスタイルのみを採用してください。そのレンダリング、製品名、コピー、ロゴ、データを決してコピーしないでください。

1. デザイン前の準備

  1. まず製品のソースを読む: README、ユーザーガイド、プライバシー/脅威モデル、APIまたはソースレジストリ、リリースノート、CHANGELOG。ページ上のすべての主張は、それらのいずれかに対応します。数値(バージョン、ファイル名、サイズ、SHA-256、ポート)は正確にコピーします。2つのソースが矛盾する場合(例:「22モジュール」と20行のテーブル)、テーブルが証明する内容を示します。
  2. 製品自体から色を取得する: ランチャーアイコン、Android の colors.xml / Compose の lightColorScheme と darkColorScheme、Web CSS カスタムプロパティ。アプリのダークスキームを暗い基盤に、ライトスキームを絞りワークスペースにマッピングします。これにより、ページはアプリの一方のテーマからもう一方のテーマに文字通り切り替わります。
  3. ストーリーを見つける: 製品のワークフローを4つの動詞として書きます(OSINT-Book: ターゲット → 発見 → 分析 → レポート; 推論メッシュ: モデル → スライス → 配置 → 提供。フェーズごとに1つの動詞)。各フェーズには6ワード以内の見出しが必要です。
  4. ストーリー内のサンプルデータは明らかにサンプルであること: example.org、ドキュメント用IP(192.0.2.x、203.0.113.x)、各カードに「sample data」チップ。統計、ユーザー数、ベンチマーク、推薦文を決してでっち上げないでください。
  5. アーキテクチャセクションには実際のアプリのスクリーンショット(WebP、約800px幅)を使用します。

2. ビジュアルDNA

要素ルール
暗い基盤ほぼ黒で、ブランドでわずかに色合いを付ける: --bg-2(ページ)/ --bg / --surface / --surface-2 / --surface-3。本文全体に1px線の36pxグリッドを、明るいインクの約7%で配置。ヒーローとステージの背後に放射状のグローのプール(ブランドカラー約13%、セカンドシグナル約6%)。
明るいワークスペースアプリの明るい背景(--paper)に、約5.5%のインクの34pxグリッドと、中央にブランドコンテナカラーの柔らかな放射状ウォッシュ。アパチャーの内側のみ。
インク暗い方: --fg / --fg-2 / --muted(ミュートは基盤に対して4.5:1以上)。明るい方: --ink / --ink-2 / --ink-muted。
ブランドターゲットノード、アパチャー原点、「sample data」チップ、アテンション状態、アクティブなレールアイテム、ホバーボーダーに使用する製品カラー。暗い方では明るいトーン(--brand-2)、紙の上では深いトーン(--brand-ink)を使用。
シグナルさらに2つの色相。それぞれ意味を持つ: ティール = フリー / OK / 発見が返ってきた; ゴールド = キーが必要 / オプション / 不足。送信パケットはブランド、戻りパケットはティール。重大度は常に色 + アイコン + 単語。
ディスプレイRajdhani 700、行間 .84–.98、文字間隔 0、文の先頭のみ大文字。ヒーローは 2.6–5.2rem で4層のグローを持つ: 0 0 2px #fff·86%, 0 0 18px brand-2·36%, 0 0 48px teal·14%, 0 18px 52px #000·60%。紙の上では同じ書体で 0 1px #fff, 0 14px 34px ink·12%。
本文 / UIGeist 400–700、14–17px。
ラベルGeist Mono 10–13px: ノードラベル、サブラベル、チップ、テーブルクォータ、ターミナル、レール、アイブロウ(01 / ai analysis、大文字 + .14em はここだけ)。
カードダークパネル: 16px 半径、1px --line-2、垂直グラデーション表面。ペーパーカード: 白、14px 半径、1px 暖色線、0 14px 34px -14px シャドウ。チップはピル型(高さ20px)。発見行には左側に6×18pxのグラデーションハンドル。
ボタンプライマリ = ほぼ白の塗りつぶしに濃いインク(8px 半径、40px)。ゴースト = 1px 線、ホバー時に brand-2 に変化。ナビ内のピルボタンにはモノサフィックス(· web-v0.2.2)が付く。
アイコン24グリッドの1.7px線のシングルストロークアイコンをインラインの <symbol> スプライトに; 同じスプライトがSVGグラフ内でも <use> される。

3. セクションパターン

  1. 固定ナビ (64px、半透明暗色 + 16px ぼかし、下にヘアライン) – アイコン + 2トーンのワードマーク、小さなリンク、バージョン付きGitHubピル、EN/TRトグル、プライマリボタン。
  2. ヒーロー – 全幅SVGトポロジー(viewBox 1200×520; 中央にターゲットノード(ハロー+リング付き); 5~7個のソースノードが曲線の破線エッジ上に配置され、各ノードにモノラルラベルとアクセスを示すモノラルサブラベル(key-free、your key)。ディスプレイ見出しはグラフの左下に配置。その下に: 1文のリードと3カラムの行 – 「run it」(コピー付きコマンドチップ + プライマリ/ゴーストダウンロードボタン + 「follow …」リンク)、「what it is」(太字の最初の文 + 色付きドットのファクト行)、および小さなブランドバッジ。製品にトポロジーが示さない特徴的な機能がある場合(OSINT-Book: オプションのAI分析)、リード内で名前を挙げ、その下に1つのピルを追加する: 塗りつぶしブランドタグ(AI analysis)+ 1行 + 矢印、そのセクションにリンクする。そのセクションはストーリーの後に最初に来る。
  3. アパチャーストーリー(ピン留め、約640vh)– §4 を参照。
  4. 統合ストリップ – 左にモノラル大文字ラベル、右に折り返された点線名のリスト、上下にヘアライン。
  5. アーキテクチャスイッチャー – セクションヘッド(左に大きなディスプレイタイトル、右に段落)、次に1つのダークパネル: タブリスト(塗りつぶしピル = 選択状態)、テキストカラム(タイトル、1段落、✓リスト)、およびアニメーションする破線コネクタ(ブランド = 送信、ティール = 戻り、ゴールド = オプション)上のSVG上のHTMLノードの図、次にモノラルキャプション付きの実際のスクリーンショットの水平ストリップ、最後に凡例フッター。
  6. モジュールブロック – 上部エッジに2つの小さな「パズルタブ」を持つブロック: 入力行 → サイド/センター/サイド行(中央ブロックは大きく、ブランド色味、ディスプレイフォント)→ 6つの出力の行; その下に1つのモノノート。
  7. カタログテーブル – 検索フィールド + モノラルラベル付きセレクト、名前 + モノラルID、タイプピル、色付きドットのアクセスカラム、モノラルクォータカラム、ノートがあるテーブル; フッターに「Showing x–y of n · source file」とページャー。その下に <details> 「left out, on purpose」リスト。
  8. スコープ分割 – 2つのダークパネル、「What it does」(ティールの四角)/「What it never does」(赤の四角)、各項目は太字のリードイン + 1文、左ヘアライン。
  9. インストール – 2つのダウンロードカード(アイコンタイル、名前、モノファイル名·サイズ)、次にターミナルウィンドウ(信号機、モノタブ、COPY はコマンドのみコピー、色付きプロンプト/コマンド/フラグ/コメント/出力)、ステータスフッター(発光ライブドット)、最後に正直なゴールド「Early releases」ノート。
  10. フッター – テキスト + 言語ピル、2つのリンクカードリスト(矢印付き行; ↗ 外部、→ 文書)、最下行にワードマーク、バージョンチップ、帰属行。

4. シグネチャーインタラクション: アパチャーストーリー

section.story(高さ約640vh)は position:sticky; top:0; height:100svh のステージを保持し、2つのレイヤーを持つ:

  • 暗いレイヤー – 同じトポロジーグラフ、モノヒント(scroll · follow one target)、および閉じる線。
  • 明るいレイヤー – clip-path: circle(R at X Y)。X/Y はターゲットノードの画面位置(getBoundingClientRect で測定)。内部: 4つの積み重ねられた見出し(.on は1つだけ)、論理的なボード(ワイド時 1120×560、ナロー時 360×640、フィットするようにスケール)、モノフェーズレール。

単一の進行値 p = -rect.top / (story.offsetHeight - innerHeight) がすべてを駆動する; すべての要素は [p, {x, y, s, o}] のキーフレームを持ち、イーズインアウトキュービックで補間され、translate() scale() + opacity として適用される。スクロールバックは正確に巻き戻る。

pフェーズ動くもの
.015 → .10アパチャーオープンR が0から最も遠い角まで成長; ヒントがフェードアウト。その後 clip-path:none。
.00 → .331 · 入力入力カードが上昇表示; チェックリスト行が1つずつチェックされる(p > .13 + i·.026); キーゲート行はチェックされずに残る。
.31 → .562 · 結果入力カードがフェードアウト; 「notebook」カードが取って代わる; 6つのソースカードがその周りに現れる; 各ソースから1つのチップがカードから飛び出し、ノートブック内のスロットに入る(st = .37 + i·.024、st + .04 で着地)。ギャップチップは破線。
.56 → .793 · 解釈ソースカードがドットに縮小; ノートブックが左にスライド(チップはそのtransformに従う); 3つの観察カードが右からスライドイン; 引用されたチップから各カードへの破線コネクタが描画される; 「no verdict」ピルが表示される。
.79 → .924 · 出力すべてが1つのレポートカードに折りたたまれる; その下にコミットカードが上昇し、その6つのルートドットが点灯する。
.915 → .975アパチャークローズR がノードに戻って0に縮小; 暗いレイヤーに発光する閉じる線がフェードイン。
  • スクロール中は transform、opacity、clip-path および SVG 属性のみが変更される(1つの rAF スロットルされたハンドラ)。
  • グラフパケットは、グラフが画面に表示されている間のみ rAF ループで実行され、動きの抑制時や非表示タブでは決して実行されない。
  • 狭い画面 (< 760px): 2番目のボードレイアウト(ソースは上部に3×2のピルグリッド、フェーズ3ではノートブックは .6 にスケール、観察は積み重ね、コネクタは非表示)。同じタイムライン。
  • 動きの抑制(またはレビュー用に ?motion=reduce): ピン留めなし、アパチャーなし; ストーリーは4つの静的なペーパーフレーム(p = .30、.55、.78、1 でのボード)を見出しとともにレンダリングする。
  • ボードは aria-hidden; sr-only の順序付きリストが同じ4つのステップを伝える。

5. ビルドルール

  • 単一のスタンドアロン index.html: doctype、charset、viewport、color-scheme: dark、theme-color; インラインCSSとJS; Google Fonts(Rajdhani、Geist、Geist Mono)のみ; 画像はページの隣にWebPとして配置; アイコンはインラインSVGスプライトとして。
  • トークンは :root 上に; ページのすべての色はそれらから来る(§2)。役割に基づいて名前を付け、製品の16進値を維持する。
  • i18n: 英語はHTML内に存在する(data-i18n キーは英語のソースとして一度だけ読み取られる); 他の言語はJSディクショナリ内に; JSによって構築される文字列は T({en, tr}) を使用する。選択を localStorage に try/catch 内で永続化する。アイブロウも翻訳する(大文字 + トルコ語ロケールは「install」を「İNSTALL」にする)。
  • アクセシビリティ: 両方の基盤でAAコントラスト、可視のフォーカスリング(brand-2)、スキップリンク、role=tab のタブ、aria-selected、ロービング tabindex と矢印キー、実際の <table> と <details>、ラベル付きコピーボタン。
  • レスポンシブ: ≥1060px はフルレイアウト; <1060px はヒーローサイドバッジ非表示、AIグリッドスタック、エディションスタック; <760px は1カラム、グラフ viewBox をクロップ(150 40 900 480)、ラベルを大きくしサブラベルなし、狭いストーリーボード、サブラインなしの図ノード。360px で水平スクロールなし; grid の子に min-width:0 があることを確認する。
  • innerHTML でレンダリングするデータ文字列内で < と > をエスケープする(http://&lt;server-ip&gt;)。

6. コピーの書き方

  • 見出しは、約束ではなくプロパティを述べる2つの短い行: 「Every finding keeps its source.」「Two editions. One file format.」「AI that reads findings. Never rewrites them.」
  • 段落: 具体的な名詞(ポート、フォーマット、アルゴリズム、ファイル名)を含む1つまたは2つの平易な文。
  • 制限事項は機能と同じ重みを得る(「What it never does」「Early releases」「left out, on purpose」)。
  • モノラルラベルは小文字で簡潔に(key-free、your key、target · sample、sha-256 3f9a…)。

7. 完了チェックリスト

  • すべての主張、番号、ファイル名、ハッシュが製品の実際のファイルと最新リリースと一致している。
  • カラートークンは製品から来ている(アイコン + ライト/ダークスキーム); 重大度は色だけで示されていない。
  • ストーリーは双方向で同期しており、アパチャーはノードから開きノードに閉じ、p = .27/.5/.75/.9 で重なるものがない。
  • 狭いレイアウトと動き抑制フレームの両方が正しく読める; パケットは画面外で停止する。
  • タブ、ページャー、検索、フィルター、コピーボタンがキーボードで動作する; フォーカスが可視。
  • EN/TR切り替えがボード、図、テーブル、ターミナル、アイブロウを再レンダリングする。
  • 360/390px で水平スクロールがない; コンソールエラーがない。
  • 1440×900 と 390×844 でのスクリーンショット: node scripts/screenshots.mjs example/index.html screenshots。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル