根據已配置的訊號,生成指定時間窗口的產品脈動報告。
Product Pulse
ce-product-pulse 會查詢產品在指定時間窗口內的資料源,並生成一份涵蓋使用量、效能、錯誤與後續跟進事項的精簡單頁報告。報告會儲存至 <root>/pulse-reports/,主要重點則會直接呈現在對話中。
本 Skill 不會修改產品本身、資料庫或任何外部系統。它唯一會寫入的內容僅有:追加至 .compound-engineering/config.local.yaml 的脈動設定(此檔案為統一的 CE 本地設定檔,已被 gitignore 忽略,僅存在於本機),以及報告檔案本身(<root>/pulse-reports/...)。MCP 及其他資料源工具皆以唯讀模式呼叫;若工具提供寫入模式,請勿使用。
互動方式
預設優先使用平台的阻斷式提問工具(blocking question tool):例如 Claude Code 中的 AskUserQuestion(若尚未載入其 schema,請先呼叫 ToolSearch 並指定 select:AskUserQuestion)、Codex 中的 request_user_input、Antigravity CLI (agy) 中的 ask_question,以及 Pi 中的 ask_user(需安裝 pi-ask-user 擴充套件)。僅當執行環境(harness)中沒有阻斷式工具或工具呼叫報錯(例如 Codex 的編輯模式)時,才降級退回到在對話中使用編號選項——絕不能僅因為需要載入 schema 就改用編號選項。切勿直接忽略提問。
每次僅提出一個問題。複選(multi-select)僅限用於首次執行的設定階段。
回溯窗口 (Lookback Window)
回溯窗口是指呼叫此 Skill 時指定的時間範圍(例如 24h、7d)——無論是由使用者直接輸入,還是由其他 Skill 傳遞過來,均存在於當前的 Prompt 或對話上下文中。
請將參數解析為時間窗口,常見形式包括:
24h、48h、72h- 過去 X 小時7d、30d- 過去 X 天1h- 短窗口(適用於產品剛上線發布時)
若參數為空,預設使用設定檔中的 pulse_lookback_default(在階段 0 中解析);若該設定也未指定,則退回到硬編碼的預設值 24h。若參數無法解析,請要求使用者進一步澄清。
請為窗口的時間上限加上 15 分鐘的緩衝時間(trailing buffer)。許多分析與追蹤工具均存在資料同步延遲(ingestion lag);若直接查詢到 now(當前時間),會導致最新事件的資料偏低。例如對於 24h 的窗口,實際查詢範圍應為 [now - 24h - 15m, now - 15m]。
產物根目錄 (Artifact Root)
此 Skill 會將脈動報告寫入 <root>/pulse-reports/ 目錄下。請僅在首次需要建構 <root>/ 路徑時才解析 <root>(依照下文邏輯),切勿過早解析。無論是寫入 <root>/... 還是讀取 <root>/solutions/,都算作建構 <root>/ 路徑,因此均會觸發解析;只有完全不觸及任何 <root>/ 路徑的執行(如純草稿或無 Repo 流程)才會跳過此步驟。
<!-- ce-docs-root:start -->
在建構任何產物路徑前,請先解析 CE 產物根目錄 <root>。
- 讀取
<repo-root>/.compound-engineering/config.local.yaml中的docs_root,若為空則再讀取config.yaml;以第一個非空值作為結果(<repo-root>透過git rev-parse --show-toplevel取得)。若均未設定 -><root>預設為docs,與此前保持一致。 - 驗證已設定的值:必須是相對於儲存庫的目錄路徑,且其經過符號連結解析(symlink-resolved)後的真實路徑必須在儲存庫內部,不能是儲存庫根目錄,也不能位於
.git/下。否則終止執行並報錯,說明docs_root及其設定值——切勿退回預設的docs。 - 使用
<root>作為唯一的產物儲存位置:若不存在則建立之,每個路徑均建構為<root>/<subdir>(使用此 Skill 自身的子目錄),且絕不可同時讀取docs。
<!-- ce-docs-root:end -->
核心原則
- 以創辦人視角閱讀。 切勿硬編碼門檻值。預設不要將指標直接標記為「好」或「壞」——直接呈現數據,讓讀者自行判斷。
- 控制在單頁內。 終端機輸出目標控制在 30-40 行。如果報告過長,請進行精簡。
- 儲存的報告中不得包含 PII(個人身份識別資訊)。 寫入磁碟的報告中請勿包含使用者 Email、帳號 ID 或訊息內容。
- 安全處並行,關鍵處串行。 分析與追蹤查詢採取並行執行;資料庫查詢則採取串行執行,以避免造成系統負載。
- 透過儲存的報告形成記憶。 每次執行都會寫入
<root>/pulse-reports/,使歷史脈動記錄可以作為時間線隨時查閱。 - 僅限唯讀資料庫存取。 若使用資料庫作為資料源,連線必須為唯讀。訪談/設定流程中拒絕接受讀寫權限的金鑰憑證。資料庫存取是可選的——許多產品僅靠分析與追蹤工具即可完成脈動報告。
- 優先使用策略檔案作為初始種子(策略預置)。 若存在
STRATEGY.md,訪談流程會在提問前先讀取該檔案,並擷取產品名稱及關鍵指標作為初始種子。資料源設定的目標是連接所需的分析管道,以實際測量這些指標。
執行流程
階段 0:依據設定狀態進行路由 (Route by Config State)
讀取設定。 執行期使用 Shell 工具執行 git rev-parse --show-toplevel 來解析 <repo-root>。然後使用原生檔案讀取工具(例如 Claude Code 中的 Read、Codex 中的 read_file)讀取 <repo-root>/.compound-engineering/config.local.yaml。若無法解析根目錄或檔案不存在,則視為首次執行。否則擷取下方「設定鍵名」中列出的 pulse_* 鍵值。
設定鍵名:
pulse_product_name-- 字串,用於報告標題。路由必需項:若未設定,則視為 Skill 未設定。pulse_lookback_default--1h、24h、7d、30d之一(預設值:24h)pulse_primary_event-- 字串,主要互動事件(engagement event)名稱pulse_value_event-- 字串,價值實現事件(value-realization event)名稱pulse_completion_events-- 逗號分隔的字串,包含 0-3 個事件名稱pulse_quality_scoring--true或預設false(僅限 AI 產品)pulse_quality_dimension-- 字串,當pulse_quality_scoring為 true 時評分 1-5 分;否則忽略pulse_analytics_source-- 字串,標識分析服務提供者(例如posthog、mixpanel、custom)pulse_tracing_source-- 字串,標識追蹤服務提供者(例如sentry、datadog、custom)pulse_payments_source-- 字串,標識金流服務提供者(例如stripe、custom);若未使用可省略pulse_db_enabled--true或預設false;為true時,唯讀資料庫存取將作為脈動報告的一部分pulse_metric_sources-- 逗號分隔的metric=source鍵值對,用於覆蓋特定策略指標的資料源(例如retention_d7=posthog,nps=delighted)。未列出的策略指標將退回使用pulse_analytics_source,並帶有(default source)標記,以便呈現隱式路由。pulse_pending_metrics-- 逗號分隔的字串,包含等待埋點整合的策略文件指標名稱;在埋點落地前,在每份脈動報告中顯示為no datapulse_excluded_metrics-- 逗號分隔的字串,包含刻意從脈動報告中排除的策略文件指標名稱;該指標仍保留在STRATEGY.md中,但不會呈現在脈動報告內
路由邏輯:
pulse_product_name未設定(或設定檔缺失) -> 首次執行。進入階段 1(訪談),然後再進入階段 2。pulse_product_name已設定 -> 直接跳至階段 2。
若傳入的參數為 setup、reconfigure 或 edit config,無論當前設定狀態為何,一律進入階段 1。
階段 1:首次執行訪談 (First-Run Interview)
1.0 從策略檔案擷取初始種子(若存在)
在提出任何問題之前,先使用原生檔案讀取工具讀取 STRATEGY.md。若檔案存在,請擷取:
- 從 YAML frontmatter 的
name鍵擷取產品名稱;若無 frontmatter,則退回使用 H1 標題(去除末尾的Strategy字尾,例如# Spiral Strategy->Spiral) - 從
## Key metrics章節擷取關鍵指標清單(每行一個)
透過展示已擷取的內容開啟訪談:告知已找到策略文件,顯示擷取的產品名稱以及將帶入事件/資料設定的關鍵指標清單,並邀請使用者在繼續之前進行更正。
若 STRATEGY.md 不存在,請在對話中明確說明:未找到策略文件,將從頭開始執行設定,並提醒使用者若後續執行 ce-strategy,可以為脈動報告提供初始種子。
1.1 訪談流程
讀取 references/interview.md。此讀取步驟為必選項——推回規則(pushback rules)、反模式範例以及指標到資料源的對映邏輯均定義在該檔案中。
請按以下順序執行訪談:
- 產品名稱(確認或編輯初始種子值)
- 主要互動事件(Primary engagement event)
- 價值實現事件(Value-realization event)
- 完成或轉換事件(0-3 個)
- 品質評分(自由選擇開啟,僅限 AI 產品)
- 資料源——為每個確定的指標和事件建立連線。引導優先使用 MCP。拒絕讀寫權限的資料庫存取。資料庫完全可選。
- 系統效能——針對高頻錯誤與延遲的簡短推薦設定。使用者對此通常沒有強烈的偏好;呈現預設值並確認即可。
- 預設回溯窗口
對每個章節均應用 references/interview.md 中的推回規則。根據 references/interview.md 中「通用規則」所列出的 SMART 原則(具體、可衡量、可行動、相關、有時效)評估使用者提出的每個指標、事件和訊號——推回任何模糊、虛榮或不可行動的建議。
若使用者提供具有讀寫權限的資料庫存取金鑰,請予以拒絕,並提供 references/interview.md 第 6 節中記錄的替代方案。
將獲取到的設定作為平鋪的 pulse_* 鍵名寫入 <repo-root>/.compound-engineering/config.local.yaml,並遵循 references/interview.md 中「設定檔結構」對應的 Schema。使用 git rev-parse --show-toplevel 解析儲存庫根目錄。寫入邏輯:(1) 若檔案或目錄不存在,建立 .compound-engineering/ 並寫入 YAML 檔案;(2) 若檔案已存在,將新鍵名合併至現有的 YAML 中,保持非 pulse 鍵名(例如 plan_*)不受影響。若 .compound-engineering/config.local.yaml 尚未被儲存庫的 .gitignore 覆蓋,請在寫入前提示使用者新增該條目。在對話中向使用者展示生成的 pulse 設定區塊,並提供一輪修改機會。
設定寫入完成後,執行 references/interview.md 第 9 節的排程建議 (scheduling recommendation):詢問是否設定定期自動執行,以便使用者定期接收脈動報告,而無需手動記憶執行。接受 Yes / No / Later 選項。若使用者同意(Yes),則交由當前執行環境(harness)所提供的排程原語處理——若已安裝外掛內的 schedule Skill,則直接呼叫;否則提示排程機制取決於平台(如 cron、GitHub Actions、宿主環境自身的自動化機制),並給出所需執行命令的簡短說明。切勿在行內直接排程。隨後進入階段 2。
階段 2:執行脈動報告 (Run the Pulse)
若此前執行了階段 1(首次執行,或參數為 setup/reconfigure),請使用原生檔案讀取工具重新讀取儲存庫根目錄下的 .compound-engineering/config.local.yaml,以取得在階段 1 審核步驟中接受的任何修改。否則,直接使用在階段 0 中已擷取的 pulse_* 值。對任何未設定的項目套用硬編碼預設值(參見階段 0 「設定鍵名」)。
2.1 分派查詢
並行執行以下查詢(不同的工具,無共享負載):
- 產品分析查詢(窗口內主要事件數、價值實現數、完成數、轉換率)
- 應用追蹤查詢(窗口內按類別劃分的錯誤數、延遲分布、高頻錯誤特徵)
- 金流查詢(若已設定:窗口內的新客戶數、流失率、營收增量)
在並行查詢完成後,串行執行以下查詢:
- 唯讀資料庫查詢。每次執行一條。僅限精細且限定範圍的查詢。切勿對大表進行全表掃描。若某個資料庫查詢成本較高,請跳過並標註「已跳過資料庫查詢(預估成本過高)」。
2.2 可選:抽樣品質評分
若 pulse_quality_scoring 為 true(僅限 AI 產品),從窗口內抽樣最多 10 個 Session 或對話,並針對 pulse_quality_dimension 中記錄的維度對每個進行 1-5 分的評分。
評分準則: 預設為 4 o






