# Claude Code 官方推出 Playground Skill 快速創建方便給 AI 讀取的互動式 HTML 工具 ![image](https://hackmd.io/_uploads/S1vJzi6LZl.png) > 官方文檔:https://skills.sh/anthropics/claude-plugins-official/playground --- ## 什麼是 Playground Skill? ### 核心概念 Playground Skill 是 Anthropic 官方推出的 Claude Code 插件,它能幫助你快速創建**互動式 HTML 工具**。每個 Playground 都是一個自包含的 HTML 檔案,包含三大核心元素: ``` ┌─────────────────────────────────────────────┐ │ 📊 左側:互動控制面板 │ │ 調整參數、切換選項 │ ├─────────────────────────────────────────────┤ │ 👁️ 中間:即時預覽區域 │ │ 視覺化顯示當前設定的效果 │ ├─────────────────────────────────────────────┤ │ 📝 底部:智能提示詞輸出 │ │ 自動生成可複製的自然語言指令 │ │ [Copy] 按鈕 │ └─────────────────────────────────────────────┘ ``` ### 工作流程 ``` 你調整控制面板 → 預覽即時更新 → 系統生成提示詞 → 複製提示詞 → 貼回 Claude → 執行任務 ``` ### 為什麼需要它? **傳統方式的痛點:** - ❌ 純文字描述難以精確表達視覺設計 - ❌ 需要反覆來回調整參數 - ❌ 容易產生理解誤差 **Playground 的優勢:** - ✅ 視覺化探索所有選項組合 - ✅ 即時看到每個調整的效果 - ✅ 自動生成精確的自然語言指令 - ✅ 無縫整合回 Claude Code 工作流 --- ## 快速開始:安裝與設定 ### 三步驟安裝 ```bash # Step 1: 添加官方 Marketplace /plugin marketplace add anthropics/claude-plugins-official # Step 2: 安裝 Playground Plugin /plugin install playground@claude-plugins-official # Step 3: 重啟 Claude Code exit claude code ``` ### 驗證安裝 安裝完成後,試試這個指令: ``` 請建立一個設計 playground,讓我可以調整按鈕的圓角和顏色 ``` 如果 Claude 開始創建 HTML 檔案,就表示安裝成功! --- ## 核心概念與設計原則 ### 使用流程 **1. 用關鍵字觸發** 包含這些關鍵字的請求會自動觸發 Playground: - 「互動工具」、「playground」 - 「視覺化探索」、「調整設計」 - 「架構圖」、「關係圖」 **2. Claude 自動處理** Claude 會: - 識別最適合的模板類型 - 載入對應模板 - 生成自定義 HTML 檔案 - 自動在瀏覽器開啟 **3. 互動探索** - 🎛️ 調整控制面板參數 - 👀 觀察預覽即時更新 - 📋 查看生成的提示詞 - 🔘 點擊 Copy 按鈕 **4. 應用結果** 將提示詞貼回 Claude Code,繼續你的工作流程。 ### 七大設計原則 每個優質的 Playground 都應該遵循: #### 1. 📦 單一 HTML 檔案 ```html <!-- ✅ 正確:所有資源內嵌 --> <style>/* CSS 寫在這裡 */</style> <script>// JS 寫在這裡 </script> <!-- ❌ 錯誤:依賴外部資源 --> <link rel="stylesheet" href="external.css"> ``` **原因**:確保離線可用、無依賴問題。 #### 2. ⚡ 即時預覽 ```javascript // ✅ 正確:input 事件立即觸發 input.addEventListener('input', () => updateAll()); // ❌ 錯誤:需要點擊按鈕才更新 button.addEventListener('click', () => updateAll()); ``` **原因**:即時反饋讓探索更流暢。 #### 3. 📝 自然語言輸出 ```javascript // ✅ 正確:像人類的描述 "創建一個按鈕,使用 12px 圓角、藍色背景、柔和陰影" // ❌ 錯誤:純數據列表 "borderRadius: 12, color: #3b82f6, shadow: 8" ``` **原因**:Claude 需要自然語言才能正確理解。 #### 4. 📋 一鍵複製 ```javascript copyBtn.addEventListener('click', async () => { await navigator.clipboard.writeText(prompt); copyBtn.textContent = '✓ Copied!'; setTimeout(() => copyBtn.textContent = 'Copy', 2000); }); ``` #### 5. 🎯 合理的預設值 ```javascript const DEFAULTS = { borderRadius: 8, padding: 16, color: '#3b82f6' }; const PRESETS = { minimal: { borderRadius: 4, shadow: 0 }, bold: { borderRadius: 16, shadow: 20 } }; ``` **原因**:載入時就能看到好看的效果。 #### 6. 🌑 深色主題 ```css body { background: #1a1a1a; color: #e0e0e0; font-family: system-ui, sans-serif; } ``` #### 7. 🔄 集中式狀態管理 ```javascript const state = { /* 所有配置 */ }; function updateAll() { renderPreview(); // 更新視覺 updatePrompt(); // 重建提示詞 } ``` --- ## 六種模板完整介紹 ### 模板總覽 | 模板 | 適用場景 | 觸發關鍵字 | |------|---------|-----------| | 🎨 Design Playground | UI 組件設計 | 設計工具、樣式調整 | | 🗺️ Code Map | 專案架構視覺化 | 架構圖、組件關係 | | 📊 Data Explorer | 數據查詢建構 | SQL、API、查詢建構 | | 🧭 Concept Map | 知識結構展示 | 概念地圖、學習路徑 | | 📄 Document Critique | 文件審查 | 文件審查、評論工具 | | 🔍 Diff Review | 程式碼審查 | code review、diff 檢視 | ### 1. 🎨 Design Playground **功能**: - 組件樣式調整(按鈕、卡片、表單) - 布局配置(間距、對齊、排列) - 顏色系統(主題色、背景、文字) - 字體設定(大小、粗細、行高) **使用案例**: ``` 請建立一個設計 playground,讓我可以調整卡片組件的圓角、陰影和間距 ``` **適合誰**:UI/UX 設計師、前端工程師、產品經理 ### 2. 🗺️ Code Map **功能**: - 組件關係圖 - 資料流向視覺化 - 系統分層結構 - 依賴關係展示 **使用案例**: ``` 請用 playground 為這個專案建立互動式架構圖 ``` **適合誰**:技術 Lead、架構師、新團隊成員 ### 3. 📊 Data Explorer **功能**: - SQL 查詢建構器 - API 端點測試 - 資料管道視覺化 - 正則表達式測試器 **使用案例**: ``` 幫我建立一個 SQL 查詢的互動工具,可以視覺化選擇表格和欄位 ``` **適合誰**:數據分析師、後端工程師 ### 4. 🧭 Concept Map **功能**: - 概念關係圖 - 知識結構展示 - 學習路徑規劃 - 範圍映射 **使用案例**: ``` 建立一個概念地圖,幫我理解這個技術的核心概念和它們之間的關係 ``` **適合誰**:學習者、技術寫作者、教育者 ### 5. 📄 Document Critique **功能**: - 段落級別評論 - 建議批准/拒絕流程 - 改進建議追蹤 - 版本對比 **使用案例**: ``` 創建一個文件審查工具,讓我可以對每個章節添加評論 ``` **適合誰**:技術寫作者、文檔管理員 ### 6. 🔍 Diff Review **功能**: - Git diff 視覺化 - 逐行評論 - 提交歷史檢視 - Pull Request 審查 **使用案例**: ``` 建立一個 code review playground,幫我審查 Git diff ``` **適合誰**:開發團隊、Code Reviewer --- ## 深度實戰:Design Playground ### 完整案例:設計現代按鈕組件 #### Phase 1:提出需求 ``` 請建立一個 Design Playground,幫我設計現代化的按鈕組件。 需要調整: - 圓角大小 - 顏色(Primary、Secondary、Danger) - 尺寸(Small、Medium、Large) - 陰影效果 - Hover 狀態 ``` #### Phase 2:生成的介面結構 **控制面板**: ``` 基本樣式 ├── 圓角 [0-24px] ━━━━━●━━━━━ ├── 顏色方案 │ ├── ● Primary (藍色) │ ├── ○ Secondary (灰色) │ └── ○ Danger (紅色) └── 尺寸 ├── ○ Small ├── ● Medium └── ○ Large 進階設定 ▼ ├── 陰影強度 [0-20px] ━━━●━━━━━ ├── 邊框寬度 [0-4px] ━●━━━━━━━ └── 內邊距 [8-32px] ━━━━●━━━━ 預設組合 ├── [極簡風格] [標準樣式] [大膽設計] ``` **預覽區域**: ``` ┌──────────────────────┐ │ │ │ [ Click Me ] │ ← 正常狀態 │ │ │ [ Click Me ] │ ← Hover 狀態(變亮) │ │ │ [ Click Me ] │ ← Active 狀態(按下) │ │ └──────────────────────┘ ``` **提示詞輸出**: ``` 創建一個按鈕組件,使用 12px 圓角、藍色背景(#3b82f6)、 中等尺寸(padding: 12px 24px)、柔和陰影(0 4px 8px rgba(0,0,0,0.1))。 Hover 時背景變為 #2563eb,陰影增強至 0 6px 12px。 [Copy] 按鈕 ``` #### Phase 3:操作步驟演示 **步驟 1:調整圓角** - 移動滑桿至 12px - ✅ 預覽按鈕圓角立即更新 - ✅ 提示詞加入「12px 圓角」 **步驟 2:選擇顏色** - 點擊 Primary 單選按鈕 - ✅ 按鈕變藍色 - ✅ 提示詞更新「藍色背景(#3b82f6)」 **步驟 3:調整陰影** - 陰影滑桿設為 8 - ✅ 預覽顯示柔和陰影 - ✅ 提示詞描述「柔和陰影效果」 **步驟 4:測試預設組合** - 點擊「大膽設計」 - ✅ 所有參數自動調整:圓角 16px、陰影 20px - ✅ 提示詞完整更新 **步驟 5:複製並應用** - 點擊 Copy - 貼回 Claude Code - ✅ Claude 生成完整 React/Vue 組件程式碼 #### Phase 4:生成的程式碼範例 ```typescript // Button.tsx import React from 'react'; import './Button.css'; interface ButtonProps { children: React.ReactNode; onClick?: () => void; variant?: 'primary' | 'secondary' | 'danger'; size?: 'small' | 'medium' | 'large'; } export const Button: React.FC<ButtonProps> = ({ children, onClick, variant = 'primary', size = 'medium' }) => { return ( <button className={`btn btn-${variant} btn-${size}`} onClick={onClick} > {children} </button> ); }; ``` ```css /* Button.css */ .btn { border-radius: 12px; border: none; cursor: pointer; font-weight: 500; transition: all 0.2s ease; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .btn-primary { background: #3b82f6; color: white; } .btn-primary:hover { background: #2563eb; box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); transform: translateY(-1px); } .btn-medium { padding: 12px 24px; font-size: 16px; } ``` ### 實戰案例 2:電商產品卡片 #### 需求定義 ``` 請建立 Design Playground,設計電商產品卡片: - 卡片圓角、陰影層次 - 內部間距、圖片高度 - 字體大小(標題、價格、描述) - 主題切換(日間/夜間模式) ``` #### 預設方案對比 | 方案 | 圓角 | 陰影 | 內邊距 | 風格 | |------|------|------|--------|------| | 極簡電商 | 8px | 柔和 | 16px | 簡潔易讀 | | 豪華精品 | 4px | 明顯 | 24px | 高端精緻 | | 現代時尚 | 16px | 中等 | 20px | 潮流年輕 | #### 生成的提示詞 ``` 創建產品卡片組件,採用現代時尚風格: - 16px 圓角營造柔和感 - 卡片 320px 寬,圖片 240px 高 - 內邊距 20px,元素間距 12px - 柔和陰影(0 8px 16px rgba(0,0,0,0.08)) - 標題 20px 粗體,價格 24px 醒目 - Hover 時卡片上浮 2px,陰影增強 - 底部按鈕使用品牌主色 #3b82f6 ``` --- ## 深度實戰:Code Map ### 完整案例:React 電商專案架構 #### Phase 1:提供專案上下文 ``` 這是我的 React 電商專案: src/ ├── components/ │ ├── ProductCard.tsx │ ├── ShoppingCart.tsx │ └── Checkout.tsx ├── pages/ │ ├── HomePage.tsx │ ├── ProductPage.tsx │ └── CartPage.tsx ├── services/ │ ├── api.ts │ └── auth.ts ├── store/ │ ├── cartSlice.ts │ └── userSlice.ts └── App.tsx 請用 playground 建立互動式架構圖, 顯示各層關係和資料流向。 ``` #### Phase 2:生成的介面 **控制面板**: ``` 顯示層級 ├── ☑ Pages (頁面層) ├── ☑ Components (組件層) ├── ☑ Services (服務層) └── ☑ Store (狀態層) 顯示關係 ├── ☑ 組件依賴 ├── ☑ 資料流向 ├── ☑ API 呼叫 └── ☐ Props 傳遞(細節) 視圖模式 ├── ● 分層視圖 ├── ○ 依賴關係圖 └── ○ 資料流視圖 搜尋功能 └── [搜尋組件...] 🔍 ``` **預覽區域**: ``` ┌──────────────────────────────────────────┐ │ App.tsx │ │ │ │ │ ┌──────────────┼──────────────┐ │ │ │ │ │ │ │ HomePage ProductPage CartPage │ │ │ │ │ │ │ │ ┌─────┴─────┐ │ │ │ │ │ │ │ │ │ ProductCard ProductCard ShoppingCart │ │ │ │ │ │ │ │ └────────┴───────────┴────────┘ │ │ │ │ │ │ api.ts cartSlice.ts │ │ │ │ ■ Pages ■ Components ■ Services │ └──────────────────────────────────────────┘ ``` #### Phase 3:互動功能演示 **功能 1:點擊組件查看詳情** 點擊 `ProductCard`: ``` ╔════════════════════════════════╗ ║ ProductCard.tsx ║ ╠════════════════════════════════╣ ║ 使用於: ║ ║ • HomePage ║ ║ • ProductPage ║ ║ ║ ║ 依賴: ║ ║ • api.ts (獲取產品) ║ ║ • cartSlice.ts (加購物車) ║ ║ ║ ║ Props: ║ ║ • productId: string ║ ║ • showDetails: boolean ║ ║ • onAddToCart: () => void ║ ╚════════════════════════════════╝ ``` **功能 2:切換資料流視圖** ``` ┌────────────────────────────────┐ │ 用戶互動 │ │ ↓ │ │ Pages (路由層) │ │ ↓ │ │ Components (UI 層) │ │ ↓ │ │ Services (API 請求) │ │ ↓ │ │ Store (狀態更新) │ │ ↓ │ │ Components (重新渲染) │ └────────────────────────────────┘ ``` **功能 3:搜尋與聚焦** 搜尋 `cart`: ``` 結果高亮: ✓ ShoppingCart.tsx (黃色高亮) ✓ CartPage.tsx (黃色高亮) ✓ cartSlice.ts (黃色高亮) ✓ 相關連線變為紅色 ✓ 其他組件半透明化 ``` #### Phase 4:生成的提示詞 ``` 這個 React 電商專案採用四層架構: 1. 頁面層(Pages): - HomePage、ProductPage、CartPage - 負責路由和頁面佈局 2. 組件層(Components): - ProductCard(HomePage 和 ProductPage 共用) - ShoppingCart、Checkout(CartPage 使用) 3. 服務層(Services): - api.ts:處理 HTTP 請求 - auth.ts:管理認證 - 被 Pages 和 Components 呼叫 4. 狀態層(Store): - cartSlice.ts:購物車狀態 - userSlice.ts:用戶狀態 - 使用 Redux Toolkit 關鍵資料流: 用戶點擊 ProductCard → 觸發 cartSlice.addToCart → ShoppingCart 自動更新 → Checkout 讀取資料結帳 建議: - Checkout 可拆分為更小的子組件 - 為 services 添加錯誤處理中間件 ``` ### 實戰案例 2:微服務架構 #### 系統描述 ``` 我們有以下微服務: - API Gateway(入口) - User Service、Product Service - Order Service、Payment Service - Notification Service 透過 RabbitMQ 進行非同步通訊。 請建立互動式架構圖。 ``` #### 特殊功能:時間軸動畫 **控制面板**: ``` 場景模擬 ├── [下訂單流程] ├── [用戶註冊流程] └── [支付完成流程] 時間軸 ├── [▶️ 播放] [⏸️ 暫停] [🔄 重置] └── 速度:[1x] [2x] [4x] ``` **動畫演示(下訂單流程)**: ``` Step 1: Client → API Gateway [POST /api/orders] Step 2: API Gateway → Order Service [創建訂單] Step 3: Order Service → Product Service [檢查庫存] Step 4: Order Service → Payment Service [處理支付] Step 5: Payment Service → RabbitMQ [發送 payment.completed 事件] Step 6: RabbitMQ → Order Service [更新訂單狀態] Step 7: RabbitMQ → Notification Service [發送確認郵件] ``` --- ## 進階技巧與最佳實踐 ### Design Playground 進階技巧 #### 技巧 1:響應式設計預覽 ``` 請在 Design Playground 中加入響應式預覽, 讓我看到手機、平板、桌面三種尺寸下的效果 ``` 生成的介面會包含: ``` [📱 Mobile] [📱 Tablet] [💻 Desktop] ``` #### 技巧 2:動畫時間軸 ``` 請加入動畫展示,讓我看到 hover、focus、active 狀態的轉場效果,並可以調整動畫速度 ``` #### 技巧 3:直接匯出程式碼 ``` 請在 Playground 底部加入「匯出 CSS」和「匯出 Tailwind」 按鈕,讓我直接取得對應程式碼 ``` #### 技巧 4:A/B 測試對比 ``` 請建立雙欄預覽,讓我可以同時看兩種設計方案, 方便比較和選擇 ``` ### Code Map 進階技巧 #### 技巧 1:效能熱點分析 ``` 請在 Code Map 中加入效能熱點標示, 用顏色深淺表示組件的渲染頻率 ``` 視覺效果: ``` 🔴 熱點(高頻渲染) 🟡 中等 🟢 冷點(低頻) ``` #### 技巧 2:版本對比 ``` 請建立可以對比兩個版本架構差異的 Code Map, 顯示重構前後的變化 ``` #### 技巧 3:自動生成文檔 ``` 請加入「生成架構文檔」按鈕, 自動將視覺化架構轉為 Markdown 文檔 ``` #### 技巧 4:整合專案統計 ``` 在 Code Map 中顯示每個模組的統計: - 程式碼行數 - 複雜度評分 - 測試覆蓋率 - 最後修改時間 ``` ### 提示詞生成最佳實踐 #### 原則 1:只提及非預設值 ```javascript function updatePrompt() { const parts = []; if (state.borderRadius !== DEFAULTS.borderRadius) { parts.push(`圓角 ${state.borderRadius}px`); } // 只在有改變時才加入 if (parts.length > 0) { return `更新卡片使用${parts.join('、')}`; } else { return '使用預設樣式的卡片'; } } ``` #### 原則 2:使用定性描述 ```javascript if (state.shadowBlur > 16) { parts.push('明顯的陰影'); } else if (state.shadowBlur > 0) { parts.push('微妙的陰影'); } // 而非只寫 shadowBlur: 8 ``` #### 原則 3:提供足夠上下文 ```javascript // ❌ 錯誤 "8px、藍色、16px" // ✅ 正確 "創建按鈕組件,使用 8px 圓角、藍色背景(#3b82f6)、 16px 內邊距。整體風格應該簡約內斂。" ``` ### 常見錯誤與解決方案 #### 錯誤 1:控制項過多 **問題**:介面雜亂,使用者不知從何開始 **解決**: ```html <div class="controls"> <section> <h3>基本樣式</h3> <!-- 最常用的 3-5 個控制項 --> </section> <details> <summary>進階選項 ▼</summary> <!-- 進階控制項摺疊在這裡 --> </details> </div> ``` #### 錯誤 2:預覽不即時更新 **問題**:調整滑桿,畫面沒反應 **解決**: ```javascript // ✅ 使用 'input' 事件 slider.addEventListener('input', (e) => { state.value = e.target.value; updateAll(); // 立即更新 }); // ❌ 避免用 'change' 事件(只在失焦時觸發) ``` #### 錯誤 3:沒有預設值 **問題**:頁面載入時是空白的 **解決**: ```javascript const DEFAULTS = { borderRadius: 8, shadowBlur: 8, padding: 16 }; // 初始化 window.addEventListener('DOMContentLoaded', () => { Object.assign(state, DEFAULTS); updateAll(); }); ``` --- ## 總結與資源 ### 核心價值 Playground Skill 的三大價值: 1. **🎨 視覺化探索** - 將抽象概念轉為可互動介面 - 降低溝通成本,提高精確度 2. **⚡ 即時反饋** - 每個調整立即看到效果 - 快速試錯,找到最佳方案 3. **🔄 無縫整合** - 自動生成自然語言指令 - 輕鬆整合回 Claude Code 工作流 ### 使用時機 記住這三個關鍵場景: | 場景 | 使用模板 | 範例 | |------|---------|------| | 🎨 視覺設計 | Design Playground | 難以用文字描述 UI 外觀時 | | 📊 複雜配置 | Data Explorer | 選項組合太多需要視覺化探索 | | 🗺️ 系統理解 | Code Map | 需要互動式理解專案架構 | ### 快速開始指令 ```bash # Design Playground 請建立一個設計 playground,幫我調整按鈕的樣式 # Code Map 請用 playground 為這個專案建立互動式架構圖 # Data Explorer 幫我建立一個 SQL 查詢的視覺化工具 # Concept Map 建立概念地圖,幫我理解這個技術的核心概念 # Document Critique 創建文件審查工具,讓我可以添加評論 # Diff Review 建立 code review playground,幫我審查 Git diff ``` ### 延伸資源 - 📚 [Claude Code 官方文檔](https://code.claude.com/docs) - 🔌 [Anthropic 插件庫](https://github.com/anthropics/claude-plugins-official) - 🛠️ [Skills 市場](https://skills.sh) - 💬 [社群討論](https://github.com/anthropics/claude-plugins-official/discussions) ### 下一步行動 1. ✅ 立即安裝 Playground Skill 2. 🎨 試試 Design Playground 設計一個按鈕 3. 🗺️ 用 Code Map 視覺化你的專案架構 4. 💡 探索其他四種模板的可能性 5. 🚀 將 Playground 整合進你的日常工作流 --- **記住**:Playground 不只是工具,更是你和 Claude 之間精確溝通的橋樑。 當你下次需要設計 UI、理解架構、建構查詢時,別忘了說: > 「請建立一個 playground 工具...」 你會發現工作效率大幅提升!✨