Communitygithub.com

cdesiles/design-doc

建構可列印的文件 — 報告、備忘錄、提案書、信件、一頁摘要 — 以單一自包含的 HTML 檔案產出,並能乾淨地列印至 A4 或 Letter 紙張。在製作任何可交付文件前請先閱讀。

design-doc 是什麼?

這個技能專注於建立可直接列印於 A4 或 Letter 紙張的 HTML 文件。它強調文件是線性閱讀且實際列印的事實,因此版面設計必須考慮文字單欄、真實分頁,以及避免使用依賴滑鼠懸停的效果。技能文件明確區分兩種主要的分頁策略:「流動排版」適用於報告、文章等長度不固定的內容,由瀏覽器列印引擎自動分頁;「固定頁面」則用於履歷表、傳單等需要精確控制頁數的設計,透過 `<section class="page">` 手動定義每一頁。此技能支援在 Cursor、Claude Code 與 Codex 等平台使用,開發者需遵循文件中提供的 CSS 幾何設定、字體選用原則,並透過 `design-verify` 工具進行最終的版面校驗,確保文字無裁剪、標題無孤行、表格分割正常,最後再手動輸出 PDF 確認實際頁數與內容無偏移。

相容平台~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/cdesiles/opencode-kit/tree/HEAD/skills/design-doc

在你喜歡的 AI 中提問

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

說明文件

文件

文件是依序閱讀並列印在紙上的產物。這兩個事實限制了版面設計:單一欄位的文字、真實的分頁,以及任何不能依賴滑鼠懸停的效果。

先決定分頁方式

  • 流動排版(預設)— 單一連續的文字流;瀏覽器的列印引擎會自動將其分割成多頁。適用於報告、備忘錄、信件、論文,以及任何長度不受你控制的內容。
  • 固定頁面 — 明確使用 <section class="page"> 區塊,每個區塊代表一頁。適用於頁數本身就是設計重點的情況:一頁的履歷表、雙面的傳單、證書、海報。

如果對方要求「兩頁」,表示固定頁面。如果對方要求「一份報告」,表示流動排版。當真的不清楚時,請詢問 — 採用錯誤的製作方式會浪費整份文件。

幾何設定

在 <head> 中連結 Token 檔案,如果文件使用了其元件,也一併連結 components.css,並使用其變數來設定色彩、字體和間距。以下規則僅為紙張幾何設定:

@page { size: A4; margin: 0; }        /* 或:size: letter; */
body  { margin: 0; background: white; }
.page { width: 210mm; min-height: 297mm; padding: 24mm 22mm; box-sizing: border-box; }
.page + .page { break-before: page; }

@media screen {
  body { background: gainsboro; padding: 32px 0; }
  .page { margin: 0 auto 24px; box-shadow: 0 2px 24px color-mix(in srgb, black 12%, transparent); }
}

對於流動排版的文件,請移除固定的 .page 並在 @page { margin: 22mm } 中設定一個 max-width: 66ch 的欄寬。紙張大小:除非使用者明顯是美國人,否則使用 A4;若是美國人則使用 Letter。如果他們提供了尺寸,則使用他們的尺寸。

字體

  • 內文 11–12pt,行高 1.5–1.6。任何需要閱讀的內容,字體大小不得低於 10.5pt。
  • 每行字數 60–75 個字元。超過此寬度,眼睛會難以對齊。
  • 內文使用一種字體家族,標題可選擇性地使用第二種。如果存在設計系統,則使用相同的配對方式。
  • 標題應按照比例縮放,其中頂層標題應明顯較大 — 28–36pt — 而不是 14pt 粗體。
  • 強調應透過字重和間距來實現,而非僅依賴顏色。一份以灰階列印的文件仍需能正常閱讀。

結構

  • 使用真正的語意元素:h1–h3、p、ul、table、figure、blockquote。不要使用已設定樣式的 div。
  • 如果文件長度超過兩頁,則透過 @page 計數器設定頁碼:
    @page { @bottom-center { content: counter(page); } }
    
    瀏覽器支援有限 — 在每個固定頁面上使用類似註腳的數字是一種可靠的備用方案。
  • 表格:數字靠右對齊,文字靠左對齊,使用細線而非完整邊框,透過 thead { display: table-header-group } 讓表頭在跨頁時重複顯示。
  • 避免在高度超過頁面三分之一的元素上使用 break-inside: avoid。
  • 圖表必須有標題。沒有標題,就不要使用圖表。

內容

保留使用者的文字。你可以依照要求進行刪減和重新排序,但不得改寫。如果某個章節因為使用者尚未撰寫而為空,請留下明確標示的空白區域,而非自行編造文字。

不使用圖庫照片,也不使用僅作為裝飾的生成圖像。當文件需要真實圖片時,如果 FLUX 工具可用,則使用它來生成;否則,使用一個帶有等寬字體註記的佔位框,說明該處應放置什麼內容。

最後校驗

在以列印寬度執行 design-verify 後,檢視截圖:

node ~/.config/opencode/lib/design/verify.mjs "design/Report.html" \
  --width 900 --height 1200 --full --out design/.verify/report.png

檢查項目:文字是否被頁面邊緣裁切、標題是否在頁面底部孤行、表格是否分割不當,以及任何水平溢出 — 在列印中這意味著內容遺失於右側邊緣之外。

接著,請親自將文件輸出為 PDF 一次(Cmd-P,另存為 PDF),以確認頁數以及內容在實際紙張尺寸下不會位移。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相關技能