Communitygithub.com

decoy-frontend

為產品建立精美的展示登陸頁面,視覺風格完全仿照一個或多個參考網站。當使用者想要「仿照某個網站風格」建立展示網站、登陸頁面或行銷頁面時使用。

decoy-frontend 是什麼?

這個技能能將任何產品概念快速轉化為風格精緻的展示登陸頁面。它會先透過問答收集使用者的產品內容、參考網站、字體偏好和主題,接著實際研究參考網站的視覺語言(包括色板、排版、版面結構與動態效果),然後建立一個可執行的 Next.js + GSAP 專案。特別強調「複製風格,而非內容」——參考網站提供外觀,使用者提供原創文案,確保成品不會侵犯著作權。技能內建完整的工具鏈,包含模板、腳本驗證、部署與 Lighthouse 稽核,支援單一風格或章節式多風格切換,適合需要快速打造高品質展示頁面的開發者與行銷團隊。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/r0wh4n/decoy-frontend/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

風格展示建構器

將任何產品轉化為精美的展示登陸頁面,借用參考網站的視覺風格——包括其色板、排版、版面模式與動態——同時呈現使用者自己的產品故事。

黃金規則:複製 風格,絕不複製 內容。 參考網站提供外觀;使用者的網站/產品提供文字。產出不得複製參考網站的文案,也不應只是重新換膚使用者現有的版面——它應該是以借用風格打造的全新頁面。

這是第一大錯誤。 只複製參考網站的色板,卻保留使用者自己網站的區塊骨架(編號的功能區塊、卡片元素、順序),產生的頁面看起來仍像是用新顏色重新塗裝的原始網站。重新配色不等於重新設計風格。你必須借用參考網站的版面骨架與標誌性元件,而不僅僅是它的十六進位色值。一定要同時研究使用者自己網站的結構(步驟 2),這樣你才知道該從哪些地方偏離。

支援的版面模式(依需求選用):

  • 單一借用風格 — 整個頁面使用一個參考網站的風格。
  • 逐區風格導覽 — 每個區塊借用不同網站的風格(例如 Hero → ProjectDiscovery,Pricing → Linear,CTA → Superhuman)。每個 <section> 有自己獨立的主題區塊:背景、強調色、字體、圓角半徑,以及一個標誌性元件。適合使用者說「每個區塊要有自己的主題」。除非使用者想要對比效果,否則應保持整體協調(例如全部暗色系)。

工具包(隨此技能提供——請優先使用,不要自行推導)

路徑相對於此技能目錄。請優先使用這些工具而非手刻,因為它們已內建了常見陷阱的處理方式,讓你避免重蹈覆轍。

  • template/ — 一個可建置的 Next 14 + GSAP + Lenis 框架,動態層已預先串接(SmoothScroll、ScrollProgress、Reveal、已代幣化的 globals.css、一個起始的 page.tsx)。每次建置都從這個模板開始。
  • template-html/index.html — 相同的代幣 + 動態層,打包成一個自包含的檔案(GSAP/Lenis 透過 CDN 載入)。當使用者選擇單一 HTML 檔案輸出時使用;無需框架或安裝。
  • scripts/new-demo.sh <dest> — 將模板複製到 <dest> 並執行 npm install。
  • scripts/verify.sh <dir> — 步驟 5 的腳本化版本:在 next dev 執行時拒絕建置、執行型別檢查、建置靜態匯出、檢查 out/index.html。
  • scripts/extract-style.js — 在開啟的參考頁面中,透過 Chrome 開發者工具的 javascript_tool 執行,以擷取真實的字體、顏色、圓角半徑與比例尺,輸出為規格草稿(步驟 2)。
  • scripts/shoot.mjs <url> — 使用無頭 Playwright 進行螢幕截圖,僅適用於無顯示器的沙箱或 CI 環境。在本機上,請改用 Chrome 開發者工具截圖。
  • scripts/deploy.sh [dir] [--prod] — 將建置完成的靜態目錄(out/ 或單一 HTML 檔案的資料夾)部署至公開網址。預設使用 Vercel;因為僅是靜態檔案,任何主機服務都適用。對外公開——請先建置並與使用者確認後,再使用 --prod。
  • scripts/audit.sh <url> — 針對開發伺服器或部署版本執行 Lighthouse 評分(效能/無障礙/最佳實踐/SEO)。
  • references/patterns.md — 動畫配方與標誌性元件藍圖,根據參考網站的能量特質選用。

步驟 1 — 訪談使用者(請先執行此步驟)

使用 AskUserQuestion 工具。一次詢問這些問題。前兩個為自由文字(請使用者透過「其他」欄位或在對話中輸入);其餘為單選題,附有合理選項。務必包含「自行輸入」的選項。

  1. 你的網站 / 產品 —— 一個網址(例如 www.acme.com)或簡短描述。這是 內容 的來源。
  2. 參考網站 —— 一個或多個要借用其 風格 的網址(例如 granola.ai、linear.app、stripe.com)。這是 外觀 的來源。
  3. 字體風格 (可複選) —— 例如:編輯襯線體 · 乾淨無襯線體 · 等寬/技術感 · 圓潤/友善 · 與參考網站一致。
  4. 主題 (可選,可複選) —— 例如:淺色/紙質 · 深色/電影感 · 大膽色塊 · 極簡/大量留白 · 與參考網站一致。

加入這些額外問題(它們會明顯改變結果):

  1. 氛圍 / 調性 —— 冷靜 & 編輯感 · 電影感 & 戲劇化 · 活潑 & 樂觀 · 企業感 & 可信賴。
  2. 動態程度 —— 細微(柔和揭露) · 豐富的滾動動畫(視差、與滾動連動的章節) · 互動式(訪客可操作的點擊展示)。預設:豐富的滾動動畫。
  3. 強調色 —— 與參考網站一致 · 指定顏色 · 讓我選擇。
  4. 深度 —— 僅 Hero + 幾個區塊 · 完整故事(說明一切:運作方式、功能、證明、CTA)。預設:完整故事。
  5. 輸出格式 —— 可執行的 Next.js 專案(建議) · 單一自包含的 HTML 檔案。

如果使用者已在訊息中提供部分答案,請勿重複詢問。

步驟 2 — 研究參考網站

你必須實際查看參考網站,而非猜測。

  1. 先嘗試 mcp__workspace__web_fetch。行銷網站通常是客戶端渲染,因此常會回傳空白——這是預期情況。
  2. 切換到 Chrome 瀏覽器工具(如果為延遲載入,請透過 ToolSearch 載入):使用 navigate → get_page_text 取得文案與結構,然後使用 computer 螢幕截圖(向下捲動並擷取 3–5 個畫面)來讀取實際的視覺語言。以最保護隱私的方式關閉 Cookie 橫幅。
  3. 快速取得證據草稿:將 scripts/extract-style.js 貼入 Chrome 開發者工具的 javascript_tool,在開啟的參考頁面上執行——它會回傳真實的字體、顏色頻率、字體比例尺與圓角半徑。然後撰寫簡短的風格規格(填入 references/style-extraction.md 中的架構):背景、色板 + 強調色、字體搭配、區塊/版面模式、標誌性元件(例如浮動產品模型),以及動態特徵。腳本能捕捉肉眼誤判的值;你的螢幕截圖能捕捉版面與標誌性「特徵」。兩者都使用。
  4. 也以同樣方式閱讀使用者的網站——取得真實的產品內容,並注意其本身的版面/區塊骨架、字體與頁尾。你需要這些資訊,以便故意偏離它(借用參考網站的結構,而非產品本身的結構),並能逐字重用產品真實的頁尾/法律文字,而不是自行編造。
  5. 非拉丁語系內容: 如果產品的文案包含天城文、中日韓越文、阿拉伯文、西里爾文等(例如一個混用印地語 + 英語的展示),現在就記錄下來——你必須載入支援該語系的字體(請參閱建置指南中的陷阱)。

如果無法擷取某個網域或遭到封鎖,請告知使用者,並從螢幕截圖/他們的描述繼續進行——切勿嘗試繞過擷取限制。

步驟 3 — 規劃

將使用者的產品內容映射到參考網站的結構模式上。建立簡短的區塊大綱。選擇字體(與參考網站最接近的免費 Google Fonts)、色板與動態計畫。確認任何真正不明確的部分,然後開始建置。

步驟 4 — 建置

預設技術棧:Next.js 14(App Router,靜態匯出)+ GSAP ScrollTrigger + Lenis,使用手寫 CSS,在 globals.css 頂部定義設計代幣。

從模板建構框架——不要手寫技術棧。 執行 scripts/new-demo.sh <dest>;它會複製 template/(動態層已預先串接且已知可建置)並安裝相依套件。然後:

  1. 根據你的風格規格,在 app/globals.css 的 :root 中設定設計代幣,並在 app/layout.tsx 中將字體替換為已配對的 Google Fonts。
  2. 將 app/page.tsx 替換為真實的區塊——使用者的內容映射到參考網站的版面骨架(而非使用者自己網站的)。
  3. 建立標誌性元件,並從 references/patterns.md 中選取 2–4 個動畫配方;references/build-guide.md 包含黏性標籤和模型展示的起手式。對於其餘部分,重複使用 .rise、[data-speed] 和 <Reveal>。

如果使用者選擇單一 HTML 檔案,則改從 template-html/index.html 開始(相同的代幣 + 動態層,GSAP/Lenis 透過 CDN 載入,無需安裝)並替換其內容。有關多主題變體的逐區導覽說明,請參閱建置指南。

務必遵從 prefers-reduced-motion。保留參考網站的感覺,但撰寫原創的標記與文案。

步驟 5 — 驗證

執行 scripts/verify.sh <dir>——它會進行型別檢查、建置靜態匯出,並檢查 out/index.html。加入你自己的檢查,用於驗證真實的產品文案、強調色十六進位值與字體名稱(腳本會提醒你)。修正所有問題直到全部通過。

檢視結果。 在本機工作階段中,你可以看到渲染結果:啟動 npm run dev,將 Chrome 開發者工具指向 http://localhost:3000,然後用 computer 截圖(向下捲動)。這是真正的品質檢查——請務必執行,不要只依賴 grep。在無法連線至 localhost 的無顯示器沙箱中,請使用 scripts/shoot.mjs http://localhost:3000(或針對部署版本)進行無頭截圖,並在無法使用時明確告知。

絕對不要在 npm run dev 執行期間執行 npm run build。 兩者都會寫入 .next 目錄;建置過程會破壞正在執行的開發伺服器區塊,導致頁面出現 Error: Cannot find module './31.js'(或類似錯誤)。我們曾經遇到這個問題,它看起來像程式碼錯誤,但實際上不是。當開發伺服器正在執行時:

  • 使用 npx tsc --noEmit 進行型別檢查(不會觸碰 .next);
  • 要執行真正的 npm run build,請先停止 dev;
  • 如果開發伺服器已損毀:執行 pkill -f "next dev",rm -rf .next,然後重新啟動 npm run dev。

在編輯執行中的開發伺服器時,建議使用 tsc --noEmit + 執行 curl localhost:3000 | grep 來確認內容已編譯,而非執行完整建置。

步驟 6 — 打包與交付

移除 node_modules、.next、out 目錄,壓縮專案,並透過 mcp__cowork__present_files 分享。提供執行指令(npm install && npm run dev)以及一段簡短的摘要,說明參考網站的風格如何被應用。

步驟 7 — 上線與稽核(可選)

如果使用者想要可分享的網址或品質分數:

  • 稽核: scripts/audit.sh http://localhost:3000(開發伺服器正在執行)會輸出 Lighthouse 的效能/無障礙/最佳實踐/SEO 分數。目標是 90 分以上;無障礙性和 SEO 是出貨前最容易修正的低成本項目。
  • 部署: 先建置(scripts/verify.sh <dir> 產生 out/),然後執行 scripts/deploy.sh out 取得預覽網址。部署是對外公開的——在使用者確認前,請不要執行 scripts/deploy.sh out --prod,也不要部署過時的 out/。這些是靜態檔案,因此 Vercel/Netlify/任何主機服務都適用。
  • 針對正式網址重新執行 audit.sh <deploy-url> 以取得真實網路的評分。

護欄

  • 原創性: 絕不複製參考網站的文字,也不要嵌入其標誌或商標圖像資產——請改用 CSS 產生的紋理/形狀。在比較或文字脈絡中使用公司名稱則無妨。
  • 敏感領域: 如果產品涉及健康、金融、法律等領域,請保持語氣負責且準確,將展示資料標示為說明用途,避免保證,並包含適當的聲明(例如心理健康網站應提供危機資源專線)。保持載入/行銷語言的非驚嚇性。
  • 說明性資料: 請註明顯示的任何姓名、數字、引述或可用性皆為佔位的展示內容——但應保持小而低調(一行簡短文字),不要使用巨大的免責聲明區塊,也絕對不要塞進頁尾,彷彿它是網站的正式頁尾。如果使用者想要產品的真實頁尾,請複製該頁尾(見下文),並將說明性註記放在其他地方,或者如果使用者明確要求覆蓋則直接移除——然後告知他們不再有任何標示來說明資料為說明性質。
  • 頁尾: 優先使用目標產品的真實頁尾——擷取並逐字重用其標語、連結與版權資訊——而不是自行編造或留下建置備註。
  • 動態: 每個動畫必須能在減少動態設定下優雅降級。

已學到的陷阱(請勿重蹈覆轍)

這些是從實際執行中辛苦學到的教訓。完整技術細節請參閱 references/build-guide.md。

  1. 重新配色 ≠ 重新設計風格。 不要保留使用者自己網站的區塊骨架而只更換顏色——這樣看起來仍像原網站。請借用參考網站的結構與標誌性元件。(請見黃金規則。)
  2. 對包含行內標記(<b>、<span>)的文字列表項/段落使用 display:flex 會將每個行內區塊分割成獨立的 flex 欄位——文字會碎裂成不完整的欄位。請使用定位的 ::before 來製作項目符號;將文字容器保持為 display:block。僅對外層容器使用 flex,絕對不要對內文的文字行本身使用。
  3. 絕對不要在 npm run dev 執行期間執行 npm run build(會損毀 .next)。在開發伺服器執行時,請使用 npx tsc --noEmit 進行驗證。(請見步驟 5。)
  4. 非拉丁語系文字需要專用的網路字體。 天城文/中日韓越文/阿拉伯文無法使用 Inter 或 JetBrains Mono 渲染;請載入對應的 next/font 並指定正確的 subsets(例如 Noto_Sans_Devanagari,subsets:["devanagari"]),然後套用 .hi{font-family:var(--f-deva)} 類別。不要依賴作業系統的後備字體。
  5. 重複使用產品的真實頁尾,不要自行編造或在那裡留下建置備註(請見頁尾護欄)。

品質標準

目標是讓成品看起來能通過真實上線頁面的考驗:自信的字體比例尺、克制的色板、參考網站中的一個標誌性視覺元素,以及能隨著滾動揭露內容而非裝飾內容的動態效果。不要為不同的參考網站重複使用相同的版面——重點在於每個結果都應看起來像它所借鏡的網站。

相關技能