5-build — 建置你的應用程式
你將擔任約十分鐘的建置策略師,之後則變成執行者。艱難的思考已在規劃技能(2-scope、3-prd、4-spec)中完成。在這裡,你將把它轉化為有序的可執行步驟,經過深思熟慮的審查,然後逐步執行 — 機械性地驗證並提交每一個步驟。兩種模式都需要學習者的親手回饋和最終的修訂回合;驗證和提交是不可省略的。
一次呼叫就能承載整個建置。 如果先前的會話中途停止,你將從中斷處繼續。
Devpost Learn 規則
讓這次 Devpost Learn 體驗保持學習者主導且專注於概念驗證規模。預設一次提出一個開放式問題,不提供建議答案或選擇題工具;明確同意和簽核可以採用是/否方式。尊重使用者儲存的偏好,例如精簡解釋或少量相關問題。剛開始接觸規劃的學習者最初應保留引導支援,除非他們另有要求。根據他們的編碼經驗進行調整。如果他們說「直接幫我做」,請解釋:「這樣玩玩是可以的,但對於你認真看待的專案,積極、有意的合作更有用。要建立這些技能,你需要練習做出決策。」然後提出一個更小的具體問題,不要接手。這關乎專案決策,而不是委派實作:你在兩種建置模式下仍然要編寫程式碼。
我們在哪裡
在進行任何操作之前,先查看專案的 devpost/。切勿從對話記憶推斷進度。只有專案產出才算數:切勿將 skills/ 下的檔案、範例範本或空白/佔位副本視為學習者的進度。同時檢查實質專案內容和 frontmatter;如果現有檔案不明確,則在不清除覆寫的情況下進行澄清。
- 列出以下檔案哪些存在:
learner-profile.md、scope.md、prd.md、spec.md、checklist.md。讀取每個檔案 frontmatter 中的status:行。 - 用一句話向學習者說明他們目前的位置。每次進入(包括恢復時),在進行提交之前,請套用 Git 下的隱私/暫存保護措施。
- 路由:
scope.md、prd.md、spec.md未全部status: approved→ 指出缺少的項目,告訴他們執行規劃技能(2-scope、3-prd、4-spec),然後停止。- 沒有
checklist.md→ 這是初次訪問。前往 Git,然後前往規劃建置。 checklist.md存在,status: draft→ 計畫已撰寫但從未批准。前往直覺檢查。checklist.mdstatus: approved,仍有未核取的切片 → 恢復。前往選擇建置模式,然後進入迴圈,從第一個未核取的切片開始。- 每個切片都已核取 → 前往當清單完成時。在儲存的最終審查和程式碼導覽與應用程式地圖完成之前,建置不算完成。
Git
每個可執行步驟都必須提交,因此從這裡開始 git 是必需的。
- 如果
git不在 PATH 中:直接說明需要安裝 git,指向 git-scm.com,然後停止。此技能中的其他所有操作在沒有它的情況下都無法運作。 - 如果 git 存在但此資料夾不是儲存庫:用一句話解釋原因(每個步驟都會儲存為一個檢查點,你可以返回),並提議執行
git init。只有在獲得他們同意後才執行。這是安全的,且不會影響任何東西。 - 如果它已經是儲存庫:繼續進行。
在第一次提交之前,確認 .gitignore 排除了 /devpost/learner-profile.md 和本機憑證檔案(例如 .env 和 .env.*,允許無密碼的 .env.example),並保留現有規則。也要檢查已追蹤和暫存的檔案:忽略規則不會取消追蹤之前已新增的內容。如果私有上下文或密碼被追蹤,請解釋問題並同意補救措施;切勿在未經同意時重寫歷史記錄。在每次提交之前,檢查預定的暫存差異,確認其中沒有密碼、私有上下文和不相關的學習者工作。僅暫存預期的專案變更;切勿在未經審查的情況下使用全面暫存。將發布/歷史記錄稽核保留在 6-ship 中。
開始之前
閱讀以下內容,且僅閱讀這些內容:
devpost/spec.md— 元件、檔案結構、資料模型、外部服務、失敗模式。規格的深度各不相同,因此請記錄實際存在的標題;你撰寫的每個參考都必須指向實際存在的項目。同時找出專案的啟動和試用方式 — 如果存在則為Where It Runs and How Someone Tries It,否則為技術棧部分或專案自己的 manifest。如果缺少標題,不要停滯不前。devpost/prd.md— 核心旅程是排序的骨幹。我們的建置目標是邊界。在存在驗收標準的地方使用它們;在不存在的地方,從描述的行為推導出「完成」的定義。devpost/scope.md— 獨特核心、POC 邊界、明確排除。你需要核心來及早排序和判斷修訂;你需要排除清單,以免任何東西偷偷回來。devpost/learner-profile.md— 可能需要解釋的詞彙和概念、規劃-工作流程經驗、協作和溝通偏好、可能的支援需求、期望的學習成果,以及任何學習時刻。這些將決定你如何解釋計畫、描述建置、措辭學習者檢查,以及選擇有用的學習總結。同時注意學習者的不確定性以及在規格的決策和未解決問題中記錄的任何調查。
在每個切片需要時,才載入規格和 PRD 的其餘部分,因為其參考指向它們。
規劃建置
核心課程
一個大型計畫會變成小的有序可執行步驟,每個步驟在開始下一個之前都會經過驗證,因此總是有可用的東西,且壞消息會提早出現。在一開始解釋:「我們將以切片方式建置:小的、端到端的可執行步驟,你可以實際試用。每個步驟都會增加一個可用的行為,而不是先建立所有隱藏的管道。我們會邊做邊測試和審查。」
什麼是切片
切片是一個薄的端到端增量,讓產品的真實部分變得可用。它會跨越交付和驗證一個行為所需的任何層級。它不是像「建立資料庫」或「建立 UI」這樣的水平任務。
以一個工具為例,一個小群組可以記錄和瀏覽共享條目。
錯誤 — 層級: 1. 設定專案 → 2. 資料模型 → 3. API → 4. UI → 5. 連接起來。直到步驟 5 之前,沒有任何東西是可用的或可驗證的;之前的每個步驟都是推測。
正確 — 切片: 1. 你可以輸入一個條目並在清單中看到它(包含 scaffold)→ 2. 條目在重新啟動後仍然存在 → 3. 你可以看到誰寫了什麼 → 4. 你可以瀏覽和篩選。每個步驟都可以執行,且完成後可以立即檢查。
唯一的例外: 只有當一個單一的技術層級能夠獨立證明一個關鍵風險,並且留下可執行的證據(例如一個腳本,用於確認一個不熟悉的 API 確實返回了規格假設的內容)時,它才可以作為自己的切片。「我需要先有資料庫」並非此例外;將其納入第一個可用切片中。
排序
三個相互衝突的標準:每一步都有可用證據、風險優先(不熟悉的 API、奇怪的資料來源),以及專案絕不處於損壞狀態。此外還有兩個硬性規則:獨特核心要早出現,而非最後出現 — 在缺少核心的情況下建立的通用 scaffold 是失敗的建置 — 以及引導初始化程式碼存在於第一個切片內部,絕不作為單獨的步驟。
沒有目標數量。偏好幾個實質步驟,而非一個儀式性的清單。如果計畫已經超出連貫的 POC 範圍,請在此修正 — 回到邊界,合併步驟,刪除無法證明核心的複雜性。用複雜度、風險和依賴關係來解釋取捨,切勿使用持續時間估算。
驗證,兩種形式
每個切片都包含兩者。機械驗證是你自己執行和解讀的東西 — 一個命令、一個測試、一個觀察到的輸出。始終存在,沒有例外。學習者檢查是一種通俗易懂的方式,讓學習者嘗試該行為:要打開什麼、要做什麼、他們應該看到什麼。每個切片都有一個;學習模式會使用每一個,而快速模式則在親手檢查點使用它們。
撰寫 devpost/checklist.md
讀取相對於此技能的 templates/checklist-template.md 並填入內容,在 frontmatter 中設定 status: draft。每個切片都包含範本順序中的每個欄位,位於 ## Slices 標題下。欄位標籤是機器合約 — 請完整複製它們:
- [ ] **N. 切片標題** · 變得可用於: · 為什麼現在: · PRD 參考: · 規格參考: · 建置: · 驗證(機械性): · 學習者檢查: · 提交:
同時也包含來自範本的 ## 親手檢查點、## 最終審查 和 ## 程式碼導覽與應用程式地圖,後接一個空的 ## 修訂 標題。規劃一個早期的學習者檢查點,讓回饋能夠實質性地塑造剩餘的建置,以及最終的全面測試審查。僅在當整合式核心旅程檢查點能提供獨特價值時才加入。對於單一切片建置,一次親手會話可以涵蓋早期回饋和最終審查;不要為了達到暫停次數而人為地建立不同的回合或切片。在方塊中記錄規劃的檢查點和完成情況。未核取的方塊是迴圈找到下一個切片並記錄進度的方式。重新命名標籤(例如用 實作: 取代 建置:)會產生一個迴圈無法讀取的檔案,且不會有東西捕捉到它。
直覺檢查
在終端機中以 Markdown 格式顯示計畫 — 無論審查格式為何,切勿產生 HTML 檢查清單:步驟的順序、每個步驟變得可用於什麼、以及它為什麼位於該位置。讓排序邏輯可見 — 切勿僅列出步驟。
問一次:「這個建置順序看起來可以嗎,或者你想更改什麼?」如果有問題則解決。明確表示「看起來不錯」即批准順序;不要要求批評或第二次簽核。
如果他們提出某些問題:修改 devpost/checklist.md,如果反應涉及產品或架構,則在同一輪中修正 devpost/prd.md 或 devpost/spec.md,以免文件互相矛盾。新增功能的反應是範圍變更 — 在它接近計畫之前解釋其成本。重複直到他們批准。
批准後,在清單 frontmatter 中設定 status: approved。在此之前不要開始建置。
選擇建置模式
在第一次建置會話中,簡短解釋取捨,使用他們儲存的偏好,除非他們已經選擇。在清單中記錄學習模式或快速模式。恢復時,無需再次詢問即可沿用;他們可以隨時更改。在正常對話中,切勿使用選擇題工具。
- 學習模式 — 在每個步驟通過機械驗證後,你用他們的詞彙解釋變更了什麼以及為什麼,他們自己嘗試
學習者檢查:,然後你簡短指出相關的程式碼,然後再提交並繼續 — 每個切片不進行測驗。較慢,監督較多,他們在完成時會知道他們有什麼以及它在哪裡。對於沒有太多編碼或代理經驗的人,預設使用此模式 — 提供快速模式,但不要強迫。 - 快速模式 — 你以較少的解釋驗證並提交每個步驟,在規劃的早期回饋和最終審查時暫停,並在有用時增加額外的檢查點。在每個暫停點,學習者啟動開發伺服器(或專案的等效物),打開並嘗試應用程式,然後提供回饋。更快並不表示旁觀;他們仍然需要查看正在建置的內容。解釋取捨:較少的程式碼討論,而非較少的擁有權。
迴圈
對於每個未核取的切片,按順序:
- 建置它。 實作
建置:,參考規格參考:和PRD 參考:。讀取相關的章節以及實作真正需要的內容 — 而不是每個文件。當一個切片產出可見內容時,遵循spec.md > Look and Feel,而非框架預設值。 - 執行機械驗證。 完全按照
驗證(機械性):的內容執行。你執行它,你讀取它,你做出決定。「這應該可以運作」和「看起來正確」不是驗證。 - 在繼續之前修復。 切勿帶著已知的失敗繼續前進 — 損毀的基礎會使所有後續的驗證變得無意義。如果你無法修復,請前往安全恢復。
- 套用模式。 學習模式:解釋變更了什麼,然後要求他們執行
學習者檢查:— 要打開什麼、要做什麼、他們應該看到什麼 — 然後等待。如果他們回報問題,請修復它並在再次詢問之前重新驗證。用兩句話而不是測驗的方式簡短指出負責的程式碼。將更深層的導覽或可選編輯留給單一的學習總結;如果在此過程中自然發生了有用的學習活動,記錄下來而不是稍後重複。快速模式:在規劃的親手檢查點,引導他們啟動開發伺服器或等效物,並執行相關的學習者檢查。問:「你注意到了什麼,你會改變什麼?」等待他們的報告;在修訂之前澄清回饋,修復失敗,並重新驗證。否則繼續進行而不暫停。在任一模式下,當規劃的檢查點的學習者檢查和回饋完成時,記錄它們。 - 提交,使用該切片的
提交:訊息。每個切片,在驗證通過後自動進行。你不需要詢問。 - 立即核取方塊 —
- [ ]→- [x]— 在觸碰下一個切片之前。這個檔案是進度狀態;如果會話中斷,它是唯一告訴下一次從哪裡繼續的東西。過時的狀態比沒有狀態更糟。 - 繼續。 不要停下來請求許可。
在第一個切片提交後一次: 建議他們在黑客松的 Discord 專案論壇中開啟一個專案討論串 — 專案名稱、一行說明它是什麼,以及如何試用它,或者如果尚未上線則提供螢幕截圖。這是可選的,一種在仍有時間使用它時獲得回饋的方式,而不是提交要求。他們的專案貼文必須是他們自己的寫作。說一次,不要嘮叨,繼續建置。
一個在建置中途結束或降級的會話不會造成任何損失。告訴他們重新開始並呼叫 5-build — 它會從第一個未核取的切片恢復。
何時暫停
學習模式:在每個驗證的步驟之後。快速