Communitygithub.com

HuanEnzie/agent-build-effect

為任何網頁添加「網站正在被 30 個 AI 代理建構」的視覺效果——30 個有名字的彩色游標飛入,依序在虛線線框後方建構區塊。純 JavaScript、無依賴項,附帶 React/Next 封裝。

agent-build-effect 是什麼?

這是一個用於展示「多 AI 代理協作建構頁面」動畫效果的輕量級前端工具。當使用者進入網頁時,頁面區塊會先隱藏在虛線線框後方,接著一群有名字(如 layout-07、copy-12)的彩色游標飛入畫面,拖曳出帶有握把與標籤(如 h1.hero-title)的選取框,再將實際區塊內容建構出來。下方區塊則會在捲動時才被建構。工具條會顯示「30 agent · N 編輯中 · 跳過」的狀態列。整個效果完全使用 DOM 和 CSS transition 實現,不需要 Canvas 或第三方函式庫,因此幾乎不消耗資源。它支援純 HTML 網頁(透過 <script> 標籤載入)以及 React/Next.js(透過提供的 JSX 元件)。適合用於展示「AI 代理編輯頁面」、「頁面自行建構」或「游標協作」等場景。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/HuanEnzie/ai-agent-portfolio-skills/tree/HEAD/skills/agent-build-effect

在你喜歡的 AI 中提問

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

說明文件

AgentBuild:30 個 AI 代理在觀眾眼前建構頁面

進站效果:頁面的每個區塊都隱藏在線框後方,一群有名字的游標飛入,拖曳選取框並「建構」出區塊內容。僅使用 DOM 和 CSS transition(無 Canvas、無函式庫),30 個游標幾乎不耗費資源。

assets/ 中的檔案:

檔案用途時機
agent-build.js核心。透過 <script>(建立 window.AgentBuild)或經由 bundler import(CommonJS)使用。
agent-build.css必要,需與核心一同引入。透過 --ab-* 變數更改顏色。
agent-build.d.ts核心的 TypeScript 型別定義。
AgentBuild.tsxReact/Next(客戶端元件)的封裝版本。
demo.html可直接於瀏覽器開啟的範例頁面。

如何嵌入

一般 Web HTML

  1. 將 agent-build.js 和 agent-build.css 複製到專案中。
  2. 在 <head> 中引入 CSS,在 <body> 結尾處引入 script,然後在 DOM 內容載入後呼叫 start:
<link rel="stylesheet" href="agent-build.css" />
<script src="agent-build.js"></script>
<script>
  AgentBuild.start({
    root: "main",                       // 要建構的區域;游標層會位於此區域內
    targets: "main h1, main p, .card",  // 區塊,依優先順序排列
    seenKey: "home",                     // 每個頁面一個金鑰
    labels: { status: "{agents} agent · {edits} 編輯中", building: "正在建構頁面", done: "建構完成", skip: "跳過" },
  });
</script>

React / Next.js (App Router)

  1. 將 agent-build.js、agent-build.d.ts、AgentBuild.tsx 複製到同一個目錄,例如 src/components/agent-build/。
  2. 在通用樣式表中一次性引入 agent-build.css(@import "../components/agent-build/agent-build.css";)。
  3. 將元件放在需要建構區域的第一個子元素位置。元件會將父元素作為 root:
<div className="landing">
  <AgentBuild targets=".landing h1, .landing p, .card" seenKey="landing" />
  ...
</div>

伺服端渲染的頁面仍可正常運作,因為元件僅在客戶端執行,並在 useLayoutEffect(首次繪製之前)中隱藏區塊,因此不會有內容閃爍的問題。

正確選擇 targets

這是決定效果美觀或雜亂的關鍵。

  • 選擇有意義的區塊:標題、段落、按鈕、卡片、圖片。不要選擇包覆整個 section 的 div,因為一個巨大的線框看起來就像錯誤。
  • 按優先順序列出。位於已選取區塊內的元素會自動被忽略。例如已選取 .card,則卡片內的 p 不會被單獨建構。若想同時建構整個卡片,請將 .card 放在 p 之前。
  • 使用 skipInside: ".tagline" 跳過已有獨立效果(如捲動動畫、Canvas)的區域。
  • 開始時寬度或高度為零的元素會被忽略。
  • 大約 30 到 140 個區塊效果最佳。maxTargets 預設值為 140。
  • 如果專案中已有「隨捲動漸顯」的效果,請在代理運作期間將其關閉,否則兩種效果會疊加。例如:[data-agent-build] .reveal { opacity: 1; transform: none; transition: none; }(data-agent-build 屬性會在運作期間附加在 root 上)。

選項

選項預設值說明
rootdocument.body元素或選擇器。運作期間會被設為 position: relative。
targetsh1, h2, h3, p, img, figure, li, button, .card區塊列表。
count30(螢幕寬度小於 640px 時為 16)代理數量。
once / seenKeytrue / "agent-build"每個分頁僅執行一次。
forceParam"agents"在 URL 中加入 ?agents 可強制重新執行,方便錄製影片。
respectReducedMotiontrue若使用者開啟減少動畫效果,則不執行。
pilltrue顯示包含「跳過」按鈕的狀態列。
labels英文status(包含 {agents}、{edits})、building、done、skip。
colors、roles8 種顏色、10 種角色游標的顏色與名稱(layout-07)。

start() 會回傳 { skip(), destroy(), started }。destroy() 會將頁面還原為原始狀態。在離開頁面時(SPA)或元件卸載時呼叫。

使用 CSS 變數自訂外觀:--ab-wire(線框顏色)、--ab-pill-bg、--ab-pill-text、--ab-pill-muted、--ab-mono、--ab-ease。

以數字測試,無需頻繁截圖

使用 Playwright 開啟帶有 ?agents 的頁面,然後讀取:

({
  cursors: document.querySelectorAll(".ab-cursor:not([data-hidden])").length, // 初始時約 30
  waiting: document.querySelectorAll('[data-ab="wait"]').length,              // 隨著捲動逐漸減少
  on: !!document.querySelector("[data-agent-build]"),                          // 完成時為 false
})

使用 window.scrollTo 逐步捲動(如果頁面使用 Lenis 平滑捲動,請不要使用 mouse.wheel),等待數秒。正確結果:waiting 變為 0,on 變為 false。測試「跳過」按鈕:點擊 .ab-skip,之後不應存在任何 [data-ab]。僅在需要評估視覺效果時拍攝一張截圖。

已知問題

  • 線框或游標位置偏移:root 未涵蓋所有區塊。請選擇包含所有 targets 的元素作為 root。
  • fill 圖片(Next/Image)覆蓋整個頁面:非本技巧的錯誤。fill 圖片的父容器需要 position: relative。
  • 效果未重新執行:已在分頁中執行過一次。請在 URL 中加入 ?agents 或開啟新分頁。
  • React StrictMode(開發模式會執行兩次 effect):核心會在 1.2 秒後才標記「已執行」,因此第二次掛載時仍會正常執行。

Individual skills in this repo

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

相關技能