Communitygithub.com

hubeiqiao/apple-bento-grid

建立 Apple 風格的 Bento Grid 簡報卡片,用於展示專案統計數據、時間軸與成就。可產生獨立 HTML 檔案,內含無間距網格、統計卡片、標籤膠囊、長條圖與深色引言卡片,最佳化螢幕截圖輸出。同時支援淺色 (#f5f5f7) 與深色 (#000) 主題。

apple-bento-grid 是什麼?

這個技能可以生成 Apple 風格的 Bento Grid 佈局,輸出為自包含的 HTML 檔案,適用於 Claude Code、Cursor 與 Codex 等 AI 代理開發工具。使用者只需要提供統計數字、里程碑、類別與引言等內容,技能便會自動選擇合適的主題(淺色或深色)與版面範本(4 欄、3 欄或 2 欄),並組合英雄卡、統計卡、類別卡、長條圖、徽章卡、引言卡與重點標示卡等多種卡片類型。輸出為單一 HTML 檔案,內嵌所有 CSS 與 Google Fonts 連結,無需額外依賴。設計核心在於「零間距網格」規則,透過 6px 間隙與 `aspect-ratio` 鎖定容器比例,產生無縫的 Apple 質感排版。技能也內建 Playwright 螢幕截圖腳本,可捕捉 2x 解析度的 PNG 影像,並提供完整的視覺檢查流程(孤立行、空白空間、文字溢出、網格斷裂、字體備用等),確保輸出品質。此外,技能支援使用者加入自己的 Logo 或圖片(英雄卡角落、徽章卡圖示、整張卡片背景或獨立圖片卡),並根據資料量推薦最合適的版面與卡片組合。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add hubeiqiao/apple-bento-grid

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

預覽

來自技能 README

apple-bento-grid preview

說明文件

Apple Bento Grid

問題

製作視覺上精緻的簡報圖形通常需要 Figma 或 Keynote 等設計工具。這個技能可以產生 Apple 品質的 Bento Grid 版面,輸出為自包含的 HTML 檔案,截圖後即為像素完美的圖片 — 完全不需要設計工具。

概觀

產生自包含的 HTML 檔案,呈現 Apple 風格的 Bento 卡片網格。每個輸出都是單一 HTML 檔案,內嵌 CSS(除了 Google Fonts 外無其他依賴)。卡片填滿緊密的 CSS 網格,間隙極小,準備好以 2x 解析度透過 Playwright 進行螢幕截圖匯出。提供淺色與深色兩種主題。

工作流程

  1. 選擇性地閱讀設計系統:視需要參考 design-system.md:
    • 務必閱讀:第 2 節(零間距網格)+ 第 3 節(版面範本)— 網格基礎
    • 依卡片類型閱讀:依需求閱讀第 5.1–5.7 節,了解要使用的卡片
    • 依主題閱讀:第 1 節(淺色代碼)或第 9 節(深色代碼)
    • 首次產生時閱讀一次:第 8 節(HTML 骨架)作為結構起點
  2. 收集使用者內容 — 要展示哪些統計數據、里程碑、類別與引言
  3. 選擇主題 — 根據情境建議淺色、深色或兩者皆提供(請參閱主題選擇)
  4. 選擇版面 — 根據卡片數量與方向,從 3 個版面範本中挑選
  5. 組合卡片 — 選擇卡片類型並填入使用者內容;優先考量密度(避免卡片感覺空蕩)
  6. 詢問 Logo/圖片 — 如果使用者有 Logo 或圖片,將其融入(請參閱 Logo 與圖片)
  7. 產生 HTML — 產生單一自包含的 HTML 檔案
  8. 視覺檢查 — 在瀏覽器中開啟 HTML 並截圖檢查問題(請參閱視覺檢查)
  9. 提供直式版本 — 產生橫式網格後,詢問:「想要直式(肖像)版本用於社群媒體嗎?」若需要,則產生範本 C 的改編版本
  10. 螢幕截圖(選擇性)— 使用 Playwright 腳本以 2x 解析度捕捉 PNG

視覺檢查

產生 HTML 後,務必檢視輸出以在呈現給使用者之前發現視覺問題。使用 Playwright、瀏覽器 MCP 工具或 open 來渲染檔案,然後檢查以下項目:

孤立行 — 單一膠囊標籤或文字獨自換行到新的一行。修正方式:移除一個膠囊,使剩餘膠囊均勻排列,或增加足夠的膠囊填滿兩行。

空白空間 — 卡片看起來稀疏,有過多空白。修正方式:增加副標題、徽章或額外說明文字來填滿卡片。

文字溢出 — 數字或標籤對於卡片寬度來說太長。修正方式:縮小字型大小或使用縮寫(例如 "$2.4M" 而非 "$2,400,000")。

網格斷裂 — 可見的行間隙或卡片未對齊。檢查:無 align-items: start,間隙確實為 6px,所有網格儲存格均已佔用。

字體備用 — 文字以系統字體而非 Sora/DM Sans 呈現。確保 Google Fonts 連結存在且頁面能存取網路。

螢幕截圖裁剪 — 匯出的 PNG 中卡片的右側或底部邊緣被切掉。修正方式:確保視窗寬度與網格 CSS 寬度完全一致,且裁剪使用 boundingBox() 的 box.x/box.y,而非 x: 0, y: 0。

如果發現任何問題,修正 HTML 並重新檢查。在輸出通過視覺檢查之前,不要呈現給使用者。

主題選擇

根據情境建議主題。如果不確定,則同時產生兩種。

情境建議主題
幻燈片 / 簡報深色 — 在投影機上視覺衝擊力更高
社群媒體 / 作品集深色 — 在資訊流中突出
報告 / 文件嵌入淺色 — 與白色頁面背景搭配
列印 / PDF淺色 — 省墨,閱讀性更好
使用者說「Apple 風格」淺色 — Apple 的標誌性外觀
使用者說「現代」或「時尚」深色 — 現代感
未表達偏好兩者 — 產生兩個檔案,讓使用者選擇

請參閱 design-system.md 第 9 節取得完整的深色主題代碼,或第 1 節取得淺色主題代碼。

輸出格式

務必產生單一自包含的 HTML 檔案,包含:

  • <!DOCTYPE html> + <html lang="en">
  • 在 <head> 中的 Google Fonts <link> 標籤
  • 所有 CSS 在單一 <style> 區塊中
  • 所有內容在 <body> 中 — 不需要 JavaScript

可用的卡片類型

卡片用途主要特色
英雄卡標語、標題漸層邊框,跨 2 行
統計卡數字 + 標籤每類別有顏色編碼強調
類別卡分組項目(階段、團隊、季度)顏色標籤 + 副標題 + 膠囊標籤
長條圖卡隨時間成長/比較漸層長條,標題徽章
徽章卡工具歸屬、特色呼籲圖示膠囊 + 統計數字
引言卡使命宣言、推薦深色背景,白色文字,綠色 <em>
重點標示卡重點數字(3x, 10x, 100%)全漸層背景

版面範本

範本欄數寬度長寬比最適合
A:橫式4 欄1200px52/2512-16 張卡片,幻燈片
B:橫式3 欄1100px52/228-10 張卡片,重點
C:直式2 欄600px無(內容決定)8-14 張卡片,社群媒體

關鍵:零間距網格規則

這 5 條規則對於 Apple 風格的外觀是強制性的。詳細資訊請參閱 design-system.md 第 2 節。

  1. 絕對不要設定 align-items: start — 預設的 stretch 會填滿儲存格
  2. 在橫式版面上使用 aspect-ratio 鎖定容器形狀
  3. 行:橫式使用 1fr,直式使用 auto
  4. 間隙:6px(非 8px)
  5. 每個網格儲存格都必須被佔用 — 不得有空儲存格

螢幕截圖匯出

使用 scripts/screenshot.mjs 的 Playwright 腳本捕捉像素完美的 PNG。

cd scripts
npm install
npx playwright install chromium
node screenshot.mjs

編輯 screenshot.mjs 中的 pages 陣列,指向您的 HTML 檔案。每個項目需要:file(HTML 路徑)、output(PNG 路徑)、viewportWidth(與網格寬度一致)。

關鍵:視窗寬度必須與網格寬度一致。 如果視窗比網格寬,網格會居中,導致裁剪可能切掉右邊緣。務必將 viewportWidth 設定為網格 CSS 的實際寬度(4 欄為 1200,3 欄為 1100,2 欄為 600)。

關鍵:裁剪必須使用元素位置。 當裁剪到網格元素時,使用 boundingBox() 的 box.x 和 box.y,而非 x: 0, y: 0。如果網格在較寬的視窗中居中,x: 0 會從網格之前開始裁剪,從而切掉右側。

螢幕截圖後,務必檢視輸出圖片,確認沒有邊緣被裁剪。檢查最右側和最下方的卡片是否完全可見,圓角是否完整。

Logo 與圖片

使用者可以將自己的 Logo 或圖片加入 Bento Grid 卡片。詢問使用者是否有任何想要包含的 Logo 或圖片。

放置選項:

位置方式最適合
英雄卡角落<img> 搭配 position: absolute; top: 20px; right: 20px; width: 40px;公司 Logo
徽章卡圖示將 .badge-pill 中的 SVG 取代為 <img> 標籤(width: 16px; height: 16px; border-radius: 4px;)工具/框架 Logo
整張卡片背景background-image: url(...) 搭配疊加漸層以提高文字可讀性功能截圖
獨立圖片卡<img> 填滿卡片,搭配 object-fit: cover; border-radius: 18px;產品照片

指南:

  • 使用帶有本地檔案路徑的 <img src="path/to/file.png"> — HTML 是用於螢幕截圖匯出,而非託管
  • 保持 Logo 小巧(24–48px),以免主導卡片
  • 對於深色主題,確保 Logo 在深色背景上正常顯示(使用白色/淺色版本)
  • 務必為無障礙性添加 alt 文字

內容適應

使用者的資料建議範本卡片組合
3–5 個統計數據,無類別C(2 欄直式)1 張英雄卡 + 3–5 張統計卡 + 1 張引言卡
6–8 個統計數據,1–2 個類別B(3 欄橫式)1 張英雄卡 + 4–6 張統計卡 + 1–2 張類別卡 + 1 張圖表卡
8–12 個統計數據,3 個以上類別A(4 欄橫式)完整組合:英雄卡、統計卡、類別卡、圖表卡、徽章卡、引言卡、重點標示卡
社群媒體 / 肖像格式C(2 欄直式)任意組合,較小字型

密度規則:每張卡片都應感覺充實。如果卡片看起來稀疏,請添加副標題、徽章或膠囊標籤。如果網格有明顯的空白空間,請將一張卡片跨越多個儲存格,或添加輔助卡片。

自訂檢查清單

  1. 收集內容 — 統計數據、類別、里程碑、引言
  2. 選擇主題 — 淺色、深色或兩者
  3. 選擇版面 — 4 欄、3 欄或 2 欄
  4. 命名網格區域 — 可讀的名稱,與內容相符
  5. 選擇卡片類型 — 英雄卡、統計卡、類別卡、圖表卡、徽章卡、引言卡、重點標示卡
  6. 指定強調色 — 每個類別一種,最多 3–4 種強調色
  7. 設定尺寸 — 視窗寬度與網格寬度一致
  8. 鎖定長寬比 — 僅限橫式;直式省略
  9. 驗證密度 — 沒有感覺空洞的卡片,沒有未使用的網格儲存格,間隙 6px
  10. 根據方向調整比例 — 直式使用較小的字型、內距與圓角
  11. 螢幕截圖 — Playwright 2x 解析度,視窗寬度與網格寬度一致

驗證

產生 Bento Grid HTML 檔案後:

  1. 在 Chrome 或 Safari 中開啟 — 確認所有網格儲存格都已填滿,沒有可見的行間隙
  2. 檢查字體載入 — 應渲染 Sora 和 DM Sans(而非系統備用字體)
  3. 對於深色主題 — 確認卡片背景為 #1a1a1a,而非 #fff
  4. 以正確的視窗寬度(1200/1100/600)和 2x 解析度截圖
  5. 確認密度 — 沒有卡片有過多的空白

備註

  • Google Fonts 需要網路連線;離線時網格會回退到系統字體
  • Playwright 截圖為選擇性;使用者可以手動進行瀏覽器截圖
  • aspect-ratio 僅適用於橫式版面;直式版面的高度由內容決定
  • 每個網格最多使用 3–4 種強調色,以保持 Apple 風格的低調
  • 此技能產生用於螢幕截圖匯出的靜態 HTML,而非互動儀表板
  • 對於少於 6 個數據點的網格,範本 C(2 欄直式)通常效果最佳

參考檔案

相關技能