Communitygithub.com

PM 頁面編輯器

幫助非開發者(產品經理、設計師、行銷人員)透過自然語言描述,對任何前端頁面進行文字、文案、樣式及小幅佈局調整。與任何框架相容(React、Next.js、Vue、Nuxt、Astro、SvelteKit、Angular、靜態 HTML)。自動偵測技術棧、進行編輯、驗證建置,並建立 GitHub PR 以供開發者審核。

PM 頁面編輯器 是什麼?

這項技能是一個對話式工作流程,讓非技術團隊成員能夠透過自然語言直接更新前端頁面。它專門用於處理內容或視覺調整,例如修改標題、按鈕文字、價格方案、常見問題答案、顏色、間距、字型大小,以及如重新排序或顯示/隱藏區塊等輕微版面變動。技能會自動偵測專案的技術棧(框架、套件管理器、樣式方案和內容模式),並指導使用者從確認需求、查看編輯計畫、建立 PR 的完整流程。在整個過程中,它會使用純粹的語言,避免技術術語,並在對任何檔案進行編輯之前要求明確確認。它支援所有主流前端框架,並可搭配可選的設定檔進行自訂。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LakshitXD/landing-page-edior-skill/tree/HEAD/.cursor/skills/pm-landing-page-editor

在你喜歡的 AI 中提問

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

說明文件

PM 頁面編輯器 是做什麼的?

一個對話式工作流程,讓非技術團隊成員能透過自然語言更新前端頁面。代理會逐步引導使用者,在執行前提問並確認決定。

適用對象

產品經理、設計師、行銷人員,或任何需要在無需撰寫程式碼的情況下,對前端頁面進行內容或小幅視覺調整的人。

支援的變更類型

分類範例
文字與文案標題、描述、按鈕標籤、常見問題答案、推薦語
定價方案名稱、價格、功能列表、CTA 標籤
樣式顏色、字型大小、間距、邊框圓角、背景
小幅版面重新排序項目、新增/移除列表項目、顯示/隱藏區塊
素材更換圖片引用、更新替代文字
i18n / 內容檔案翻譯字串、MDX 內容、JSON/YAML 資料檔案

不支援的範圍 — 如果請求落在以下類別,請清楚說明為何需要開發者處理,並提議協助建立工單:

  • 新增全新的頁面或路由
  • 新增相依套件
  • 修改建置設定或環境變數
  • 後端、API 或資料庫變更
  • 複雜的互動行為或新的狀態邏輯
  • 對受保護路徑中的檔案進行變更(請參閱設定)

互動風格

**這是對話,不是腳本。**使用者是非技術人員。請隨時遵守以下規則:

  • 使用日常語言。 永遠不要對使用者說「JSX」、「元件」、「資料陣列」或「Tailwind class」。請說「標題文字」、「定價區塊」、「按鈕顏色」。
  • 詢問,不要假設。 如果使用者說「把它變大」——請問要多大。如果他們說「改顏色」——請問要什麼顏色。使用 AskQuestion 提供具體選項。
  • 每次編輯前務必確認。 總是描述你即將進行的變更,並在觸碰任何檔案前獲得「是」的回應。
  • 說明發生了什麼。 每次行動後,用簡單的話告訴使用者你做了什麼。
  • 一次只做一件事。 如果使用者要求多項變更,請逐項處理,並分別確認。

工作流程

階段 1:了解他們的需求(務必執行此步驟)

目標:以一份明確且已確認的變更清單結束此階段。

首先從專案根目錄讀取 .pm-editor.yml(如果存在)以獲取專案提示。請參閱 config-reference.md 了解架構。然後靜默地探索專案結構(框架、頁面、樣式——請參閱下方的探索參考)。不要告訴使用者框架或設定相關資訊。

接著與使用者互動。即使請求看似明確,務必透過複述來確認你的理解:

「為了確保我理解正確——你想要 [變更描述]。對嗎?」

如果請求缺少以下任何一項,請使用 AskQuestion 提問:

  1. 哪個頁面? — 如果專案有多個頁面,請詢問是哪個。以友善的名稱(「登陸頁面」、「定價頁面」、「關於頁面」)顯示,而不是檔案路徑。
  2. 哪個區塊? — 如果頁面有多個區塊,請詢問是哪個。讀取頁面檔案並以日常語言列出區塊(「頂部的英雄區」、「定價卡片」、「常見問題區塊」)。
  3. 具體要改什麼? — 取得確切的新文字、確切的顏色、確切的價格。不要用模糊的指示繼續。
  4. 還有其他要改的嗎? — 詢問他們是否在同一頁面上還有其他想做的變更,以便合併到同一個 PR 中。

對話範例:

PM:「更新登陸頁面上的定價」

代理:「好的!我看到登陸頁面上有三個定價方案:精簡版($0)、專業版($12)和企業版($49)。您想更新哪個方案,新的價格是多少?」

PM:「專業版改成 $15」

代理:「收到——我會將專業版的價格從 $12/月改為 $15/月。專業版的其他部分(例如功能或描述)需要更新嗎,還是只改價格?」

PM:「只改價格」

代理:「太好了。在進行變更之前,讓我確認一下:將專業版方案的價格從每位使用者每月 $12 改為 $15。其他維持不變。可以開始嗎?」

階段 2:準備工作區

目標:建立一個乾淨的分支,準備進行編輯。

靜默地執行此步驟,但如果遇到問題,停下來與使用者溝通:

  1. 執行 git status — 如果工作區不乾淨,請詢問:

    「程式碼中有一些待處理的變更。我需要暫時擱置它們,才能乾淨地進行您的更新。可以嗎?」

  2. 識別基礎分支(來自設定的 pr.base_branch,或偵測 main/master)
  3. 建立新分支:git checkout -b <前綴>/<描述>(前綴來自設定,預設為 content/)
  4. 檢查 gh auth status — 如果未通過驗證,用簡單的話解釋:

    「我需要 GitHub 的存取權限才能為您的變更建立審查請求。可以請開發者在這台機器上執行 gh auth login 嗎?然後我們就可以再試一次。」

如果一切乾淨,不要向使用者提及任何這些——直接繼續。

階段 3:顯示計畫並取得批准

目標:使用者在編輯任何檔案之前,明確批准確切的變更。

讀取目標檔案。然後以日常語言描述每個變更並請求批准:

「這是我要改的內容:

  1. 專業版方案價格:'$12' 變成 '$15'

這樣可以嗎?要繼續嗎?」

對於文字變更,務必顯示確切的修改前後文字。 對於樣式變更,描述視覺效果(「按鈕會從紫色變成綠色」)。對於結構變更,描述會發生什麼改變(「列表底部會出現一個新的常見問題項目」)。

使用 AskQuestion 讓他們批准或請求調整:

  • 「是的,進行變更」
  • 「不對,我想先調整一下」

在使用者說「是」之前,不要編輯任何檔案。

階段 4:進行變更並驗證

目標:套用編輯並確保沒有問題。

  1. 僅編輯必要的檔案,只更改已批准的內容
  2. 遵守框架的檔案模式(請參閱下方的探索參考)
  3. 檢查設定中的受保護路徑——如果需要修改受保護的檔案,請告訴使用者:

    「該區塊位於受保護的檔案中,只有開發者才能更改。要我幫您為開發團隊撰寫請求單嗎?」

  4. 執行驗證指令(從 package.json 腳本或設定中偵測):
    • Lint(如果可用)
    • 型別檢查(如果是 TypeScript)
    • 建置
  5. 如果驗證失敗,用日常語言解釋:

    「這個變更導致了一個小的技術問題——[簡單說明]。我可以自動修正 / 這需要開發者來查看。您偏好哪一種?」

階段 5:預覽並確認

目標:使用者看到(或理解)結果並給予最終批准。

  1. 如果開發伺服器尚未執行則啟動
  2. 告訴使用者去哪裡查看:

    「您的變更已準備好可以預覽!開啟 http://localhost:5173 並捲動到定價區塊。專業版現在應該顯示 $15/月。」

  3. 請求最終確認:

    「一切看起來都對嗎?要提交給開發者審查嗎?」

提供選項:

  • 「看起來很棒,建立審查請求」
  • 「我想再調整一下」(回到階段 3)
  • 「算了,全部復原」(重設分支)

階段 6:建立 PR

目標:建立一個乾淨的 PR,並為使用者提供連結。

  1. 暫存並提交,附帶描述性的提交訊息
  2. 推送:git push -u origin HEAD
  3. 使用 gh pr create 建立 PR:
Title: [Content] 變更的簡短描述

Body:
## 變更內容
| 區塊 | 修改前 | 修改後 |
|---------|--------|-------|
| 專業版方案價格 | $12/user/month | $15/user/month |

## 請求者
[使用者的姓名/角色(如果有)]

## 審查備註
- 僅限內容/樣式變更——無邏輯或相依套件變更
- 請在桌上型電腦和行動裝置上驗證
- 受影響的區塊:[列出區塊]
  1. 從設定中新增審查者:gh pr edit --add-reviewer
  2. 從設定中新增標籤:gh pr edit --add-label

階段 7:結尾

目標:使用者知道接下來會發生什麼。

以友善的方式告訴使用者:

「全部完成!這是您的變更請求:[PR 連結]

我改了什麼: 將專業版方案價格從 $12 更新為 $15。 接下來會發生什麼: [審查者姓名] 將會審查。審查通過後,變更就會上線。 需要復原嗎? 只要對我說『復原我上次的變更』,我就會處理。」


處理復原

如果使用者說「復原我上次的變更」或「回復先前的更新」:

  1. 詢問他們指的是哪個變更(或者找到最近的 content/ PR)
  2. 確認他們想復原的內容:

    「我找到了您最近的變更:'將專業版方案價格更新為 $15'(PR #42)。您想復原這個嗎?」

  3. 如果 PR 仍在開啟狀態:關閉它並刪除分支
  4. 如果 PR 已經被合併:建立一個回復(revert)PR 並解釋:

    「由於這個變更已經上線,我會建立一個新的請求來復原它。開發者也需要批准這個復原請求。」


探索參考

此部分供代理在階段 1 內部使用——請勿向使用者透露這些細節。

框架偵測

專案根目錄中的檔案框架
next.config.*Next.js
nuxt.config.*Nuxt
astro.config.*Astro
svelte.config.*SvelteKit
angular.jsonAngular
vite.config.*Vite(檢查 package.json 判斷 react/vue/svelte)
gatsby-config.*Gatsby
無 + index.html靜態 HTML

套件管理器偵測

鎖定檔執行器
bun.lock / bun.lockbbun
pnpm-lock.yamlpnpm
yarn.lockyarn
package-lock.jsonnpm

樣式偵測

  1. tailwind.config.* 或 CSS 中的 @tailwindcss → Tailwind
  2. .module.css / .module.scss 檔案 → CSS Modules
  3. 相依套件中的 styled-components 或 @emotion → CSS-in-JS
  4. .scss / .sass 檔案 → SCSS
  5. 純 .css → Plain CSS

內容模式偵測

在編輯元件之前,檢查是否有獨立的內容/i18n 檔案:

  • i18n/、locales/、messages/、translations/ 目錄
  • .mdx / .md 內容檔案
  • CMS 設定(contentful、sanity、strapi)
  • JSON/YAML 資料檔案

如果內容在獨立檔案中,請編輯那些檔案——而不是元件的原始碼。

頁面探索

框架頁面位置
Next.js App Routerapp/**/page.{tsx,jsx,js}
Next.js Pages Routerpages/**/*.{tsx,jsx,js}
Nuxtpages/**/*.vue
Astrosrc/pages/**/*.astro
SvelteKitsrc/routes/**/+page.svelte
Gatsbysrc/pages/**/*.{tsx,jsx}
Angular路由模組
Vite SPARouter 設定或 App.*
靜態 HTML根目錄或 public/ 中的 *.html

設定檔

團隊可以在專案根目錄中加入一個可選的 .pm-editor.yml 檔案,以自訂行為(審查者、標籤、受保護的檔案、建置指令)。完整參考請參閱 config-reference.md。

範例

如需不同框架的對話範例,請參閱 examples.md。

相關技能