Communitygithub.com

ZekerTop/build-story

從 Git 歷史與 AI 程式編寫會話中重建專案故事,發現重工、回滾和時間黑洞,生成專案回顧、作品集與真實履歷證據。

build-story 是什麼?

BuildStory 是一款 AI 輔助工具,旨在從 Git 歷史記錄和 AI 程式設計會話記錄中,重建一個專案的「故事」,而不僅僅是最終成果。它會從完整的提交歷史中,自動挑選出最多七個關鍵轉折點,並識別出重複的工作模式(如阻塞循環、必要探索或方向變更),幫助開發者了解專案的真實建構過程。該技能支援多平台(如 Claude Code、Cursor、Codex),並且可以獨立於 Git 數據,或在用戶授權下整合 AI 會話記錄進行分析。其核心原則是不對使用者進行評分,而是根據證據提供客觀的洞察,並支援生成多種輸出,包括專案回顧、作品集案例研究、履歷亮點和面試故事,最終產出包含中英文切換的 HTML 報告。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add ZekerTop/build-story

在你喜歡的 AI 中提問

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

說明文件

BuildStory

BuildStory 幫助人們了解一個專案是如何被建構的,而不僅僅是最終交付了什麼。它會重建一小組關鍵轉折點,揭露重複性返工和可能的時間黑洞,在獲得授權的對話記錄中檢視有證據支撐的人機協作一致性,並將這些證據轉化為經驗教訓和職涯素材。

不可妥協的原則

  • 將 Git 和會話記錄視為證據,而非讀心術。需標註推論及其信心水準。
  • 以專案的故事為主軸。保留原始提交數量、完整歷史和數值計算作為支援證據。
  • 將專案節奏呈現為可觀察的活動,絕不將其視為勤奮或生產力的衡量標準。使用「最活躍的一天」,而非「最努力的一天」。
  • 預設最多選擇七個轉折點。完整的 Git 日誌是證據,不是敘事本身。
  • 絕不將專案簡化為一個總分。應在多個維度上呈現一個不平坦的輪廓。
  • 不要將迭代等同於浪費。在證據或用戶確認之前,將可疑模式稱為「循環候選」。
  • 偏好主題層級的旅程洞察,而非檔案層級的統計數據。路徑和變更率是證據,並非結論。
  • 僅將重複性工作暫時分類為 blocked-loop、necessary-exploration 或 direction-change,然後請用戶確認原因。
  • 不得虛構商業影響、所有權、團隊規模、效能提升或履歷指標。
  • 審查互動過程,絕不評分或診斷用戶的溝通能力。不得計算提示品質的總分。
  • 重複的提示並非表達不清的證據。在形成溝通洞察前,需要同一會話中 用戶 → 助手 → 用戶修正 的鏈條。
  • 區分 AI 執行遺漏、術語意義不符、需求演變和證據不足的情況。切勿預設歸因於用戶。
  • 將澄清附近的 Git 提交視為相鄰證據,而非澄清導致提交的證明。
  • 預設僅讀取當前專案。在讀取授權工作區外的會話檔案前,需先詢問。
  • 除非用戶明確要求外部服務,否則保持分析在本地進行。
  • 絕不上傳或複製完整的對話記錄。僅保留解釋結論所需的簡短摘錄。
  • 不得修改專案原始碼檔案。將結果寫入專用的輸出目錄。

預設工作流程

1. 確定範圍

識別儲存庫根目錄和用戶的目標。預設使用當前分支以及從 HEAD 可達的完整 Git 歷史。

僅在會話記錄已提供或用戶授權其路徑時才使用它們。僅基於 Git 的報告很有用,但必須標註時間估計和意圖層級的結論為較低信心。

2. 收集確定性證據

執行內建的分析器:

python3 <skill-dir>/scripts/build_story.py <repo-path> \
  --output <repo-path>/build-story-report \
  --language <zh|en>

在獲得授權時,加入一個或多個對話記錄來源:

python3 <skill-dir>/scripts/build_story.py <repo-path> \
  --session <authorized-session-file-or-directory> \
  --output <repo-path>/build-story-report \
  --language <zh|en>

當有用戶確認過的上下文時,將其儲存在報告輸出目錄中,並使用 --context 重新執行:

{
  "zh": {
    "role": "你在項目中的真實職責",
    "outcome": "最終帶來的真實結果",
    "key_decision": "最能代表能力的關鍵決定",
    "summary": "一句話項目故事",
    "resume_bullets": ["經過確認的簡歷要點"],
    "insight_confirmations": {
      "path:src/sync.py": {
        "classification": "direction-change",
        "reason": "自動同步違背了面向小白的簡單性。",
        "lesson": "當一個功能持續引入恢復機制時,先重新判斷它是否值得存在。"
      }
    },
    "communication_confirmations": {
      "communication:example-id": {
        "attribution": "ai-ignored-explicit-requirement",
        "reason": "原始要求已經明確說明必須保留語言切換。",
        "analysis": "這次更像 AI 執行遺漏,而不是用戶需要把話說得更長。",
        "lesson": "明確邊界仍被遺漏時,先檢查 AI 執行。"
      }
    },
    "translations": {
      "Initialize project": "初始化項目",
      "Add the requested feature": "加入用戶要求的功能"
    }
  },
  "en": {
    "role": "your real responsibility",
    "outcome": "the verified result",
    "key_decision": "the decision that best demonstrates your ability",
    "summary": "the one-line project story",
    "resume_bullets": ["a confirmed resume bullet"]
  }
}
python3 <skill-dir>/scripts/build_story.py <repo-path> \
  --context <repo-path>/build-story-report/context.json \
  --output <repo-path>/build-story-report \
  --language <zh|en>

該腳本會生成一份預設報告以及英文和中文版本:

  • evidence.json: 機器可讀的證據和透明的指標
  • report.md: 可攜帶的文字報告
  • report.html: 包含英文 / 中文切換的獨立視覺化報告
  • evidence.en.json、report.en.md、report.en.html: 英文輸出
  • evidence.zh.json、report.zh.md、report.zh.html: 中文輸出

3. 在敘述前先檢查證據

讀取 evidence.json 並驗證:

  • 首先是 journey_insights:其主題、暫定分類、證據鏈、信心水準和確認問題;
  • 當對話記錄被授權時,檢查 communication_insights:不超過三張卡片,每張都基於有序的用戶請求、助手回應和後續的用戶修正;
  • 每個溝通歸因保持獨立:後來澄清的資訊、AI 忽略了明確要求、術語含義不同、需求演變或證據不足;
  • 資料來源和其限制說明;
  • 專案日期、提交次數、作者和檔案數量;
  • 首頁故事是否得到所選轉折點的支持;
  • 專案時間跨度、活躍天數、最長連續工作天數和最活躍的一天是否與底層的日期證據相符;
  • 明確的回退與推斷出的高變更率循環;
  • 時間估計是來自 Git 還是帶時間戳的會話;
  • 每個維度評分背後的證據和信心水準。

不要用 src/foo.py、提交數量或變更率百分比來開始對話。應先用簡單的語言說明最有力的洞察:

  1. 用戶似乎嘗試了什麼;
  2. 目前看起來像是阻塞循環、必要探索還是方向變更;
  3. 哪些提交支持這個解釋;
  4. 缺少哪一個人類事實可能會改變這個結論。

如果數據與用戶的描述矛盾,請顯示差異並提問,而不是默默地選擇一個版本。

對於中文報告,請檢查可見的轉折點標題和對話摘錄。如果來源材料是另一種語言,請在 zh.translations 下添加精確的來源到中文的對應項,然後重新執行。保留證據資料中的原始文本,但不要讓用戶在中文介面中閱讀英文的開發故事。

當有授權的對話記錄時,請使用附加到每個轉折點的簡短用戶請求和 AI 回應。優先使用這種人類可讀的對話,而不是僅將提交主題作為整個故事呈現。

4. 在撰寫成果前先確認旅程

總共最多問三個確認問題。從最高信心但未確認的 journey_insights 中選擇,並且僅當用戶要求溝通審查時,再選擇一或兩個 communication_insights。不要要求用戶手動編輯這兩個確認物件。用戶回答後,將旅程確認寫入 insight_confirmations 或將溝通確認寫入 communication_confirmations,重新執行分析器,並驗證報告顯示了已確認的解釋。

只有在旅程確認後,才詢問任何其餘的職涯背景。不要將工作流程變成訪談。通常缺少的事實是:

  1. 用戶的真實職責是什麼?
  2. 這個專案為用戶或為他們自己創造了什麼成果?
  3. 哪個決定最能體現用戶的能力?

跳過那些答案已在儲存庫中有記載的問題。

對於職涯、作品集、成就或面試輸出,不要將這些答案作為僅限於聊天的上下文。將它們儲存到 context.json,重新執行分析器,並驗證產生的可重複使用素材。HTML 報告是持久化的成果,而不是確認對話的替代品。

5. 產生所需的故事

使用證據來產生以下一個或多個輸出:

  • 專案回顧: 時間線、轉折點、摩擦點、經驗教訓、下次執行時的變更。
  • 溝通審查: 原始措辭、助手解讀、後續修正、中立歸因,並且僅在證據支持時,提供一份可直接複製的改寫版本和可重複使用的模式。最多顯示三張卡片,絕不提供提示評分。
  • 作品集案例研究: 問題、限制條件、決策、實作、驗證、成果。
  • 履歷重點: 行動 + 範圍 + 方法 + 已驗證的結果。當影響未知時,留下明確的佔位符。
  • 面試故事: 基於提交、差異、測試、發布和用戶確認上下文的 STAR 結構。
  • 成就記錄: 解釋用戶實際做了什麼的持久化證據卡。

在撰寫職涯或作品集時,請參考 references/narrative-guide.md。在解釋評分、時間估計或循環檢測時,請參考 references/methodology.md。

輸出品質標準

一份完成的 BuildStory 報告應能讓用戶回答以下問題:

  1. 這個專案一句話的故事是什麼?
  2. 可觀察到的工作發生在什麼日曆時間範圍內?總共多少天?最活躍的一天發生了什麼?
  3. 哪五到七個轉折改變了它的方向、風險、理解或交付狀態?
  4. 哪些地方的工作反覆循環或倒退?
  5. 每個重複的區域是阻塞循環、必要探索還是方向變更?還有哪些需要確認?
  6. 哪些區域吸收了最多的注意力?這個估計的信心水準如何?
  7. 用戶確實學到了或改進了什麼?
  8. 有哪些可信的成就可以在履歷、作品集、面試或個人記錄中重複使用?
  9. 哪些細節是在 AI 已經行動後才變得清晰的?應該如何歸因原因?下次可以更早說什麼?

如果現有證據無法回答其中一個問題,請說明缺少了什麼。一個較小但誠實的故事,勝過一個令人印象深刻但虛構的故事。

相關技能