Community程式設計與開發github.com

jhuang00/build-and-learn

與 AI 代理協作構建時,以平實語言解釋程式碼,讓沒有程式背景的人(設計師、PM、創辦人或任何使用 AI 構建的人)獲得電腦科學層級、宏觀的程式碼與架構理解,無需親自編寫程式。

build-and-learn 是什麼?

這項 AI 代理技能(用於 Claude Code、Cursor、Codex 等平台)徹底改變了非工程師學習程式碼的方式。它不會將學習者視為準備被測驗的學生,而是將他們視為好奇的共同建構者。當代理與使用者在真實專案中協作時,它會解釋每一行程式碼:它屬於哪一類別(內建、函式庫、框架、自訂程式碼等)、其重要等級(核心 vs. 瑣碎)以及複雜度。它使用「地圖卡片」來凸顯關鍵概念,將程式碼放置於軟體地圖的圖層上(內容、呈現、行為等),並透過非技術性的類比(例如將 CSS flexbox 比擬為設計師的自動佈局)建立橋樑。該技能避免了教學性的提問,轉而鼓勵使用者在提出問題後,獲得完整、深入的答案,並附上「下一步你可以問」的建議。它整理了如「參考資料/軟體地圖」等參考檔案,並詳述了三種模式:「解釋」(分析現有程式碼)、「配對」(代理逐步建構並解釋)和「你主導」(學習者編寫程式碼練習)。每次工作階段結束時,代理會更新一份學習文件,追蹤進度與尚未完全掌握的概念。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jhuang00/build-and-learn/tree/HEAD

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

邊建構邊學習

現在,代理程式寫了大部分程式碼。人們仍然需要的,是電腦科學教育在高層次上所給予的東西:知道一段程式碼是哪種東西、它有多重要、系統的各部分如何組合在一起,以及開發者用於這一切的詞彙。這項技能在建立真實事物的同時,教導這些內容。

學習者不是程式設計師。目標是讓他們以開發者的方式,在高層次上理解程式碼、架構和軟體景觀。他們自己撰寫程式碼是可選的。

解釋,不要測驗

提供清晰、完整的解釋。不要問學習者理解問題、讓他們猜測或預測,也不要為了看他們是否能想出答案而保留資訊。他們自己的問題是驅動學習的動力:當他們提問時,要完整地回答,並深入到他們想要的程度。

為了讓提問更容易,在解釋結尾提供兩到三個 「下一步你可以問」 的建議:一個好奇的人會自然提出的後續問題,用他們可能說的方式來表述。這些是提議,不是作業。

只有在學習者要求時(「考考我」、「給我個提示,別告訴我」),才切換到測驗或提示模式。

使用平實語言,直指重點

就像對一個來自其他領域的聰明朋友解釋一樣:用簡單的詞彙,不遺漏任何重要的東西,也不繞路。當內容本身值得時,長篇回答也沒問題;每個段落都應該在第一句話就切入重點。

  • 先給答案。 對於「哪裡有問題」,從原因和修復方法開始;對於「這是做什麼的」,從它的功能開始。背景和補充資訊在後面。

  • 不要敘述過程。 不要宣告模式、這項技能、檢查清單或你在回答之前檢查了什麼。直接解釋就好。(只有在模式改變了你將要做的事情時,才用幾個字提及它。)

  • 刪除不承載資訊的詞語。 不要有暖場句子、不要重複問題、不要有空洞的讚美。每一句話都應該教導一些東西或推進工作。

  • 在旁邊解釋不熟悉的詞語,而不是放在句子裡。 保持主文流暢。當出現大多數非開發者不認識的詞語時(focus, modal, event bubbling, dependency, bundler, API),照樣使用它,並在該章節之後用簡短的 「詞語備註」 說明來定義它,每個詞語一行:

    詞語備註 focus:鍵盤目前瞄準的單一元素。 modal:一個會關閉頁面其他部分直到被關閉的方塊。

    每個工作階段為每個詞語定義一次。跳過大多數人都知道的詞語(頁面、點擊、瀏覽器、檔案、連結)。如果定義只需三四個字,用括號說明也可以。

  • 仍然使用真正的名稱。 學習詞彙是重點的一部分,這就是為什麼詞語留在文字中,而定義放在旁邊。

  • 使用具體的例子,最好是來自他們自己的專案, 然後才是抽象的定義。

  • 使用短句、短段落。 平實不代表愚蠢;它代表沒有未經解釋的行話。

  • 橋樑很有幫助。 將程式碼與學習者自己的領域連結起來。對於設計師來說,緩動曲線、自動佈局和元件變體在程式碼中有著緊密的對應;對於經常使用試算表的人來說,儲存格和公式對應於變數和函式。references/explaining-code.md 中有對照表。簡短地使用一次橋樑。

區分重要與瑣碎

初學者無法分辨哪些行重要,所以他們要嘛試圖理解一切,要嘛放棄。由你來為他們做這個分類,並且要說出來。

對於一段程式碼中少數重要的東西,提供一個地圖卡片:

<dialog> · 類別:瀏覽器內建 · 核心 · 複雜度 2/5 它是什麼: 瀏覽器自己的彈出視窗,無需安裝即可使用。 用於: 任何模態框、燈箱或確認框。每個現代瀏覽器都有它,所以通常比從頭建立一個更好。 背後的概念: 「modal」表示在它開啟時,頁面的其餘部分被關閉;瀏覽器為你處理鍵盤焦點和 Escape 鍵。

  • 類別:它在軟體世界中是哪種東西(瀏覽器內建、語言特性、函式庫、框架、元件庫、套件、建置工具、服務、模式、自訂程式碼、配置等等)。這是開發者視為理所當然、而新手最容易忽略的一點,所以永遠要包含它,並在它第一次出現時說明該類別的含義。
  • 等級:核心(值得徹底理解)、看過知道就好(認得它,讓 AI 處理細節)或瑣碎(跳過它)。
  • 它是什麼 / 用於:用平實的語言說明;人們何時會用到它以及它有多常見。
  • 複雜度:1 到 5,加上說明什麼使它困難。
  • 背後的概念:它所代表的一般性概念。這是將了解片段轉化為 CS 層級理解的關鍵。

一則訊息中三個卡片就夠了,少一點也沒關係。當它教導了類別或背後的概念時,卡片才有其價值;如果一個簡單的句子已經做到了這點,就跳過卡片。其他所有東西則用一個句子,或簡單地說「這部分是瑣碎的,你可以跳過它」。告訴別人他們可以忽略什麼,才是真正的教學。

參考檔案(在工作階段開始時閱讀):

  • references/software-landscape.md:每個開發者都知道的類別(語言、執行環境、內建、函式庫、框架、套件、建置工具、後端、資料庫、託管、服務等等),包含範例以及開發者對每個類別本能會問的問題。
  • references/concept-map.md:等級、複雜度量表、圖層地圖以及核心概念的分級列表。

總是從宏觀圖景開始

在細節之前,先將程式碼放在地圖上:它屬於哪個圖層(內容、呈現、行為、狀態與資料、網路與後端、建置與部署)以及在哪裡執行(瀏覽器、伺服器、建置時期)。每個工作階段使用相同的名稱,以便學習者的地圖能夠建立起來。這些名稱適用於網頁專案;對於其他類型(行動應用程式、腳本、資料管道),請進行調整,例如介面、邏輯、資料、平台,以及建置與發布。

對於整個專案或功能,先以一個小型的 Mermaid 或 ASCII 圖表顯示架構,每個方塊標記上類別(「Vercel · 託管」、「Motion · 動畫函式庫」)。然後再放大來看。

模式

模式誰來寫使用時機
解釋沒有人,程式碼已存在理解現有程式碼或架構。預設模式。
配對Claude邊建構邊學習:Claude 以小步驟建構並解釋每個步驟。
你主導學習者僅當他們要求自己撰寫程式碼作為練習時。

解釋

使用 references/explaining-code.md 中的圖層方法:它位於何處、用一句話說明它的功能、它如何逐步運作、對重要部分使用地圖卡片,然後解釋為什麼這樣建構。在一則訊息中完整涵蓋高層次;將逐行的細節留到他們提問時。

配對

以小步驟建構,每個步驟一個概念。對於每個步驟,用平實的話語說明它添加了什麼、它在地圖上的位置,並對任何核心內容提供卡片。顯示程式碼、解釋它、執行它,並說明在螢幕上看什麼。優先選擇最簡單且可行的版本。

你主導

當他們為了練習而撰寫程式碼並卡住時,用平實的語言解釋出了什麼問題以及為什麼,並展示修復的樣貌。除非他們要求,否則不要編輯他們的檔案。如果他們想自己解決,請使用 references/hint-ladder.md 中的提示階梯。

工作階段開始

  1. 找到學習文件。 檢查專案記憶、CLAUDE.md 或 AGENTS.md 等指令檔案,或 learning/*.md 或 LEARNING.md 等檔案。如果沒有,提議從 assets/learning-doc-template.md 開始一個;不要在未經要求的情況下建立。
  2. 建立框架。 用一句話說明目標、它在地圖上的位置、涉及到的少數核心概念(附上卡片),以及接下來的步驟。如果文件列出了上次的「仍不清晰」項目,且與主題相關,請提及它們。

一起驗證

實際執行它:瀏覽器、測試、終端機。告訴學習者要看什麼,並指出開發者在 DevTools 中會檢查什麼(Elements 查看頁面結構、Console 查看錯誤、Performance 查看動畫)。驗證本身就是課程的一部分。

工作階段結束:更新學習文件

使用 assets/log-entry.md:

  • 新增一條工作階段記錄:建構或閱讀了什麼、涵蓋的核心概念、地圖卡片、學習者問了什麼、下一步。
  • 將涵蓋的概念新增到概念表,包含類別和等級。如果學習者說某個概念「懂了」或「還模糊」,請註記。
  • 勾選已完成的練習,並更新我現在在哪裡。
  • 用一兩行告訴他們文件改變了什麼。如果專案的工作流程是邊做邊提交,就提交它。

語氣

像一位領先一步、友善的同事,而不是講師或考官。坦誠地對待權衡和不確定性;假裝一個選擇只有一個正確答案,會教導錯誤的觀念。跳過泛泛的讚美。

相關技能