Communitygithub.com

mveplus/claude-skills

為當前專案建立一個互動式、多頁面的「運作原理」網站,涵蓋背後理念、架構、每個元件,並附有真實邏輯的即時模擬,並透過 GitHub Pages 或 GitLab Pages 發佈。

claude-skills 是什麼?

此技能「如何運作網站」能自動為你的程式碼庫建立一個無依賴的幻燈片式解說網站,存放在 `site/` 目錄中。它不只是靜態頁面,而是從「為什麼這樣設計」開始,一路講解到實際程式碼,並包含反映專案真實邏輯的即時互動模擬。技能支援 GitHub Pages 與 GitLab Pages 的 CI/CD 自動部署,並提供完整的模板檔案(HTML、CSS、JS、CI 設定檔),讓開發者能快速客製化。運作流程包括先詢問使用者偏好(託管平台、目標受眾、互動展示類型),接著仔細閱讀專案程式碼(不僅是 README),確保所有宣稱的邏輯都來自真實原始碼,最後建立約 12-20 頁的分章節簡報、實作模擬、並處理圖片 EXIF 安全問題。模擬必須複製專案的實際演算法,而非僅外觀相似;同時會自動比對文件與程式碼之間的差異,並在最後報告給使用者。此技能適用於任何想要為其專案建立技術文檔展示的開發者,特別是希望提供互動式、可部署的說明網站,而非傳統靜態文件的使用者。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mveplus/claude-skills/tree/HEAD/how-it-works-site/skills/how-it-works-site

在你喜歡的 AI 中提問

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

說明文件

運作原理網站

產生一個無依賴的幻燈片簡報,放在 site/ 目錄中,用來從「為什麼」到「程式碼」層層解說程式碼庫,包含反映專案真實邏輯的互動展示,以及一個負責發佈的 CI 工作。參考實作: https://mveplus.github.io/onair-led-sign-firmware/(19 張投影片,4 個模擬;原始碼在 https://github.com/mveplus/onair-led-sign-firmware/tree/main/site)。

此技能 templates/ 目錄中的模板:

檔案複製到用途
index.htmlsite/index.html頁面外框 + 可供複製的投影片模式
deck.csssite/deck.css主題變數、版面、元件
deck.jssite/deck.js導覽、概覽、雜湊路由、影格迴圈、逐步輔助程式
app.jssite/app.js專案展示的起點(逐步連接、影格掛鉤)
github-pages.yml.github/workflows/pages.ymlGitHub Pages 部署
gitlab-ci.yml合併到 .gitlab-ci.ymlGitLab Pages 部署

專屬的展示程式碼放在 site/app.js(以及選用的樣式 site/app.css);保持 deck.js 和 deck.css 通用。

流程

1. 開始前先詢問(一次 AskUserQuestion 呼叫)

首先執行 git remote -v,以便託管問題能反映實際情況。如果遠端是 GitHub 但使用者說是 GitLab(或相反),請向使用者確認。最多問四個問題:

  • 託管: GitHub Pages、GitLab Pages,或兩者都有。
  • 受眾/深度: 混合(先理念,再深入探討;這是預設選項)、開發者、或非開發者。
  • 互動展示: 提出 3–4 個專屬於此專案的候選項目(透過快速瀏覽發現,例如狀態機、計時/邏輯判斷、請求流程、數學或公式、設定建置器)。多選。
  • 選擇性:語言或品牌限制,如果儲存庫有相關提示。

2. 仔細閱讀程式碼

閱讀進入點、主要模組、README/文件以及 CI 檔案。投影片中提到的每個宣稱(超時、臨界值、預設值、主題、端點、重置清除的內容)都必須來自程式碼,而非 README。記錄一份文件與程式碼不一致以及死路(例如,某個 CI 工作的消費者不存在)的清單。在投影片上展示程式碼的真實行為,並在最後將清單報告給使用者。切勿默默「修正」投影片以符合文件。

3. 大綱(約 12–20 張投影片),分為章節

典型架構:標題(帶有有趣的互動元素)→ 理念/問題 → 總覽(可點擊的架構圖)→ 請求/資料流程(動畫逐步)→ 每個主要元件一張投影片 → 彈性/錯誤處理 → 安全性/密碼 → 建置、CI、交付 → 設計原則回顧(附連結)。每張投影片都需要 data-chapter 和 data-title 屬性。

4. 建置

  • 複製模板並在 index.html 中複製投影片模式(英雄區、帶卡片的雙欄、逐步、資訊網格)。
  • 模擬重複使用專案的實際演算法:移植函式(整數運算、臨界值、排序)並在投影片上標示其名稱。一個看起來對但實際不對的模擬就是個錯誤。
  • 使用 Deck.onFrame(slideId, fn) 進行動畫,這樣只有可見的投影片會動畫。使用 Deck.stepper(...) 處理點擊逐步序列。
  • 圖表:使用 CSS 變數的內聯 SVG;不使用任何外部資源。不使用 CDN 和不需下載的字型,這樣網站才能離線運作,也能在鎖定的 Pages 環境中執行。
  • 圖片:將它們複製到 site/img/,調整大小並移除中繼資料(使用 ImageMagick:magick in -auto-orient -strip -resize 1200x -quality 80 out.jpg)。檢查儲存庫原始圖片的 GPS EXIF(例如 identify -format '%[EXIF:GPSLatitude]' 或 exiftool -gps:all),如果發現任何 GPS 資料,請警告使用者。手機照片通常會攜帶拍攝地點的位置。一旦推送上去,它們就會留在 git 歷史中,因此移除它們需要改寫歷史,這由使用者決定。

5. 發佈設定

  • GitHub:複製 github-pages.yml。Pages 必須啟用一次,且來源設定為 Actions(設定 → Pages),或使用下面的指令。提供使用者可直接複製的圍籬程式碼區塊,區塊後不要有任何內容。如果句子結尾的句號連同指令一起被複製,會變成參數的一部分(build_type=workflow.),API 會拒絕:
    gh api -X POST repos/OWNER/REPO/pages -f build_type=workflow
    
    它只會從預設分支部署。
  • GitLab:將 pages 工作合併到任何現有的 .gitlab-ci.yml 中;不要覆蓋它。Pages 會自動開啟;URL 會顯示在「部署 → Pages」下。
  • 在 README 的概覽/「運作原理」區段中,加入一段簡短的連結說明。

6. 回報前進行驗證

  • node --check site/*.js
  • 使用 python3 -m http.server 8765 --bind 127.0.0.1 --directory site(在背景執行)來提供服務。如果有可用的瀏覽器自動化工具(例如 Claude 在 Chrome 中),開啟網站,為每個章節截圖,並透過在頁面中執行 JavaScript(.click()、分發 PointerEvents)來驅動每個展示,而不是點擊座標:螢幕截圖通常會相對於 CSS 像素縮放,因此座標點擊會失準。如果無法調整視窗大小,請透過在 380 像素寬的 iframe 中載入網站來檢查手機寬度,並尋找 getBoundingClientRect().right > 381 的元素。
  • 如果沒有瀏覽器工具,告訴使用者需要手動檢查哪些頁面和展示。不要將網站回報為已測試。
  • 關閉你開啟的任何分頁,並在之後停止伺服器。

7. 交接

在提交或推送前先詢問使用者。然後,在一個分支上:為網站建立一個提交,為使用者要求的任何程式碼修正建立單獨的提交。回報:建置了什麼、如何啟用 Pages、不一致清單,以及任何未測試的項目(例如硬體)。

風格規則

  • 預設為深色主題(在 deck.css 中設定變數),搭配紅色強調色,您可以透過 --accent 為每個專案重新調整顏色。
  • 樸實、具體的文字。解釋為什麼存在某個設計選擇,而不僅僅是它做什麼。
  • 程式碼片段簡短且真實(從原始碼中擷取,並加上命名該檔案的註解)。
  • 鍵盤:←/→/空白鍵/PageUp/PageDown/Home/End,O 開啟概覽,Esc 關閉。觸控支援滑動。每張投影片都有自己專屬的 URL(#/slide-id)。

相關技能