Spaces:
Sleeping
Sleeping
Commit
·
81b83d1
1
Parent(s):
9ad9330
docs: update Copilot instructions for clarity and specification alignment
Browse files
.github/copilot-instructions.md
CHANGED
|
@@ -1,81 +1,80 @@
|
|
| 1 |
# GitHub Copilot 指南(專案層級)
|
| 2 |
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
關鍵文件
|
| 6 |
-
|
| 7 |
-
-
|
| 8 |
-
-
|
| 9 |
-
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
-
|
| 15 |
-
-
|
| 16 |
-
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
-
|
| 20 |
-
-
|
| 21 |
-
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
-
|
| 25 |
-
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
-
|
| 31 |
-
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
-
|
| 44 |
-
-
|
| 45 |
-
-
|
| 46 |
-
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
-
|
| 54 |
-
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
- 調整:退回上一步、只套用 <檔名>、暫停工具呼叫、僅 Dry-run
|
|
|
|
| 1 |
# GitHub Copilot 指南(專案層級)
|
| 2 |
|
| 3 |
+
本文件為單人專案的 Copilot 開發指南。撰寫或修改程式碼時,務必遵循 `spec/spec.md` 的規格與不變條件。
|
| 4 |
+
|
| 5 |
+
## 關鍵文件
|
| 6 |
+
|
| 7 |
+
- **`spec/spec.md`**(長期):軟體規格、資料契約、不變條件、限制與降級策略。宏觀設計藍圖,所有決策的參考點。累積性維護。
|
| 8 |
+
- **`spec/plan.md`**(短期):本次迭代的範圍、目標、驗收標準。臨時討論檔,每個 sprint 更新後可拋棄。
|
| 9 |
+
- **`change-log.md`**:記錄完成的變更摘要(高層描述,非逐行對應)。用於交付追蹤。
|
| 10 |
+
|
| 11 |
+
## 核心守則(3 點)
|
| 12 |
+
|
| 13 |
+
### 1. **規格優先** — 合約 + 不變條件
|
| 14 |
+
- 新增或變更功能時,先檢查 `spec/spec.md` 中相關的不變條件與限制。
|
| 15 |
+
- 若需變更 CSV 結構、模型契約、或 API 形狀,**必須先更新 spec**,並說明相容性影響。
|
| 16 |
+
- 當 Copilot 指南與 spec 有衝突時,以 spec 為準。
|
| 17 |
+
|
| 18 |
+
### 2. **失敗不中斷** — 降級 + 日誌
|
| 19 |
+
- 單點錯誤(缺站欄位、Vs30 查詢失敗、檔案遺失等)**不應中止全流程**。
|
| 20 |
+
- 改用預設值、跳過該點、或降級處理,並記錄 WARNING/ERROR log(使用 loguru)。
|
| 21 |
+
- 參考 `spec/spec.md` 第 6 節「錯誤處理與 Log 原則」的具體策略。
|
| 22 |
+
|
| 23 |
+
### 3. **資料清晰** — I/O 契約
|
| 24 |
+
- 模型輸入/輸出形狀、CSV 必備欄位、檔案格式必須與 spec 保持一致。
|
| 25 |
+
- 若要改動資料結構(如新增 CSV 欄位),先同步更新 spec 的對應小節。
|
| 26 |
+
|
| 27 |
+
## 程式碼實踐
|
| 28 |
+
|
| 29 |
+
- 在涉及 spec 約定的邏輯處加入註解,簡述與 spec 的對齊(如 "spec #4:25 站上限"),無需編號標籤。
|
| 30 |
+
- 優先保持向後相容;新增資料來源(事件、目標測站、輸入站點)時參考 spec 第 8 節的擴充說明。
|
| 31 |
+
- 避免將關鍵邏輯(如批次策略、資源查詢)分散於多處;若需重構,提供明確的入口函式或工廠。
|
| 32 |
+
|
| 33 |
+
## 提交前檢查
|
| 34 |
+
|
| 35 |
+
commit 前確認以下兩點:
|
| 36 |
+
|
| 37 |
+
1. 是否符合 `spec/spec.md` 的輸入/輸出 shape 與不變條件?
|
| 38 |
+
2. 若變更了 CSV 結構或模型契約,spec 已同步更新?
|
| 39 |
+
|
| 40 |
+
## 迭代與任務追蹤
|
| 41 |
+
|
| 42 |
+
- 每次開始新迭代時,在 `spec/plan.md` 討論本次目標、範圍、驗收標準。
|
| 43 |
+
- 根據 plan.md 的內容,可在 `spec/task.md` 維護任務拆解(子任務應小而可驗收)。
|
| 44 |
+
- 迭代完成後,更新 `change-log.md` 記錄變更摘要。
|
| 45 |
+
- 舊的 `plan.md` 和 `task.md` 可拋棄,下次迭代時重新建立。
|
| 46 |
+
- 長期的規格變更和決策應同步回 `spec/spec.md`,形成累積的設計參考。
|
| 47 |
+
|
| 48 |
+
## Copilot Slash Commands(審核檢查點)
|
| 49 |
+
|
| 50 |
+
本專案提供以下指令協助「規格審核」與「迭代開發」的清晰分工:
|
| 51 |
+
|
| 52 |
+
### `/project.spec`(需求改變時用)
|
| 53 |
+
- **目的**:調整 `spec/spec.md` 的大方向、契約或不變條件。與現有程式碼做比較,列出後續工作清單。
|
| 54 |
+
- **流程**:
|
| 55 |
+
1. 討論新增或調整的規格項(需求、契約、不變條件)。
|
| 56 |
+
2. LLM 掃描現有程式碼,列出符合、缺漏、或違反的地方。
|
| 57 |
+
3. 產出「需要做的工作清單」。
|
| 58 |
+
4. 確認後更新 `spec/spec.md`,根據清單建立 `spec/plan.md` 作為後續執行的輸入。
|
| 59 |
+
|
| 60 |
+
### `/project.plan`(迭代開發時用)
|
| 61 |
+
- **目的**:根據 `spec/plan.md` 拆解本次迭代的任務,指導程式碼實作。
|
| 62 |
+
- **流程**:
|
| 63 |
+
1. 基於 plan.md 的目標,產出編號任務清單與驗收標準。
|
| 64 |
+
2. 逐個實作任務,完成後更新 `change-log.md`。
|
| 65 |
+
3. 下次迭代時,舊 plan.md 可拋棄,根據新需求重新開始。
|
| 66 |
+
|
| 67 |
+
### 標準工作流
|
| 68 |
+
|
| 69 |
+
**當需求改變時:**
|
| 70 |
+
1. 執行 `/project.spec` 討論規格調整 + 程式碼比較。
|
| 71 |
+
2. 確認工作清單後更新 `spec/spec.md`。
|
| 72 |
+
3. 根據清單建立 `spec/plan.md`(定義本次迭代範圍)。
|
| 73 |
+
|
| 74 |
+
**執行迭代時:**
|
| 75 |
+
4. 執行 `/project.plan` 根據 plan.md 拆解任務。
|
| 76 |
+
5. 根據任務清單實作,完成後更新 `change-log.md`。
|
| 77 |
+
6. 迭代結束,舊的 plan.md 與 task.md 可拋棄。
|
| 78 |
+
|
| 79 |
+
**下次需求改變時:** 回到步驟 1。
|
| 80 |
+
|
|
|
.github/prompts/project.spec.prompt.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# /project.spec — 規格審核與更新
|
| 2 |
+
|
| 3 |
+
目的
|
| 4 |
+
- 調整 `spec/spec.md` 的大方向:新增、修改或移除規格項(需求、契約、不變條件、限制)。
|
| 5 |
+
- 與現有程式碼做差異比較,檢查哪些地方符合、缺漏、或違反規格。
|
| 6 |
+
- 產出「需要做的工作清單」,作為 `/project.plan` 的輸入。
|
| 7 |
+
|
| 8 |
+
應用場景
|
| 9 |
+
- 需求改變、使用者故事新增
|
| 10 |
+
- 發現程式碼與規格不對齊
|
| 11 |
+
- 業務邊界或資料模型調整
|
| 12 |
+
- 性能、相容性或安全性要求變更
|
| 13 |
+
|
| 14 |
+
角色區分
|
| 15 |
+
- **`spec/spec.md`**:軟體生命週期全局規格(長期、累積性維護)
|
| 16 |
+
- **`spec/plan.md`**:本 sprint 的執行計畫(臨時、可拋棄)
|
| 17 |
+
- **現有程式碼**:當前實作狀態(檢查對齊度)
|
| 18 |
+
|
| 19 |
+
輸入(由提問者提供)
|
| 20 |
+
- 規格調整的內容描述(新增、修改或移除什麼規格項)
|
| 21 |
+
- 背景與動機
|
| 22 |
+
- 相關的邊界情況或假設(若有)
|
| 23 |
+
|
| 24 |
+
請輸出
|
| 25 |
+
|
| 26 |
+
### 第一部分:規格建議
|
| 27 |
+
- 新增或修改的規格項清單,包含:
|
| 28 |
+
- 項目名稱與章節位置(對應 `spec/spec.md` 現有章節)
|
| 29 |
+
- 具體描述(契約、限制、不變條件)
|
| 30 |
+
- 影響範圍(涉及哪些模組/功能)
|
| 31 |
+
- 相容性說明(是否破壞現有行為)
|
| 32 |
+
|
| 33 |
+
### 第二部分:程式碼比較分析
|
| 34 |
+
- 掃描 spec 內所提到的關鍵檔案,針對調整項分析:
|
| 35 |
+
- ✅ **符合規格**:現有程式已正確實作的部分
|
| 36 |
+
- ❌ **缺漏**:規格定義但程式未實作的部分
|
| 37 |
+
- ⚠️ **違反**:程式行為與規格不一致的部分
|
| 38 |
+
- ❓ **不確定**:需要手動驗證的部分
|
| 39 |
+
- 列出具體的程式碼位置(檔案名、函式名、行號範圍)
|
| 40 |
+
|
| 41 |
+
### 第三部分:工作清單
|
| 42 |
+
- 「需要做的工作項」:根據差異分析產出,包含:
|
| 43 |
+
- 優先序(High/Medium/Low)
|
| 44 |
+
- 工作描述與預期結果
|
| 45 |
+
- 受影響的檔案
|
| 46 |
+
- 估計工作量(Small/Medium/Large)
|
| 47 |
+
- 與 spec 各章節的對應關係
|
| 48 |
+
- 格式化為可直接貼入 `spec/plan.md` Checklist 的形式
|
| 49 |
+
|
| 50 |
+
### 第四部分:驗收與風險
|
| 51 |
+
- 現有不變條件檢查清單(有無違反的?)
|
| 52 |
+
- 主要風險與回滾建議
|
| 53 |
+
- 冒煙測試建議(2–3 個步驟驗證調整是否生效)
|
| 54 |
+
|
| 55 |
+
完成後
|
| 56 |
+
- 產生上述四部分內容,展示給使用者
|
| 57 |
+
- 使用者確認後的後續流程:
|
| 58 |
+
1. 根據確認結果更新 `spec/spec.md`(新增/修改規格項)
|
| 59 |
+
2. 根據「工作清單」建立 `spec/plan.md`(定義本次 sprint 範圍)
|
| 60 |
+
3. 執行 `/project.plan` 進行任務拆解與驗收標準
|
| 61 |
+
4. 開始迭代開發
|
| 62 |
+
|
| 63 |
+
守則
|
| 64 |
+
- 規格建議基於使用者輸入與現有 `spec/spec.md`;未經確認不做檔案修改。
|
| 65 |
+
- 程式碼分析需精準定位(檔案、函式、行號),便於快速定位與修改。
|
| 66 |
+
- 工作清單應與現有的 `spec/spec.md` 章節結構對應,避免遺漏或重複。
|
| 67 |
+
- 若發現規格與程式碼有深層衝突,需明確標註為「需要討論」的項目。
|
| 68 |
+
- 優先保持向後相容;若必須破壞相容性,需在規格變更中明確說明與遷移策略。
|
| 69 |
+
|