本專案以透過 GitHub Copilot 實現的進階使用指南、最佳實務為目標:
- 以 Tiny URL 系統設計為例,內部自行設計以 Spec Driven為核心搭配實戰框架進行開發
- 延伸主題為目前火熱的 Github Spec Kit (目前內容以整合教學研究為主,後續使用 Spec Kit 會搭配自行設計框架與規範陸續釋出實作細節與應用)
以企業級 GitHub Copilot 進行規格驅動開發(Spec-Driven Development, SDD)。
TinyURL Lab 是一個從零到一的完整實戰專案,旨在展示如何運用 GitHub Copilot 進行企業級後端服務開發。此專案不僅是技術演練,更是一套結合 Copilot Prompts 與開發規範的系統化方法論。
- 專案背景:實作一個功能完整的短網址服務(TinyURL),包含 URL 縮短、重導向、自訂網址與快取機制。
- 學習目標:
- 學習使用 Copilot 進行需求分析與任務拆解。
- 掌握在 Clean Architecture 下的測試驅動開發(TDD)。
- 體驗 Copilot Agent 驅動的自動化開發流程。
- 技術棧:Java 17, Spring Boot 3.x, PostgreSQL, Redis, Docker。
本專案的核心是展示如何透過自訂的 Copilot Prompts 工具集,將開發流程自動化:
- 需求分析 (
/list-requirements):使用此指令分析需求規格文件,自動生成結構化的功能清單。 - 任務拆解 (
/list-tasks):將功能清單拆解為自定義多個標準化的開發任務,涵蓋從環境建置到功能實作的完整過程。 - 選擇性實作 (
##):開發者可透過##語法選擇特定任務,讓 Copilot Agent 專注於單一目標的實作與驗證。
- 環境需求:專案所需的開發工具與版本,包含 Docker, JDK, 與 IDE 設定。
- 初始化指南:提供詳細的步驟,引導使用者完成專案初始化與資料庫設定。
- 實作與驗證:遵循 TDD 原則,依序實作各項任務,並包含完整的單元測試與整合測試。
- 實戰指南:res/tinyurl-lab/README.md
- 需求規格:docs/specs/tinyurl-requirements.md
- Copilot Prompts 工具集:
Spec Kit 是一個由 GitHub 官方推出的創新規格驅動開發(Spec-Driven Development, SDD)框架。它將傳統的靜態規格文件轉化為可執行的開發藍圖,讓規格成為驅動開發流程的核心。
- 設計哲學:規格驅動開發(SDD)的核心理念是讓規格本身變得可執行。透過結構化的方式定義需求、計畫與任務,Copilot Agent 能夠理解並依循規格完成開發,確保最終產出與初始設計高度一致。
- 企業治理:內建的
Constitution(憲法)機制提供了一套專案治理框架,用於定義開發規範、技術選型與品質標準,確保團隊決策的一致性。
Spec Kit 提供標準化的四階段開發流程,引導開發者從需求到實作的每一步:
/specify:定義專案的頂層目標、使用者故事與功能規格。此階段專注於「做什麼」。/plan:根據規格制定技術方案、系統架構與資料模型。此階段專注於「如何做」。/tasks:將技術計畫拆解為具體、可執行的開發任務清單。/implement:Copilot Agent 根據任務清單,依序完成程式碼實作、測試與驗證。
- 安裝與設定:提供完整的環境設定指南與 Copilot Agent 整合教學。
- 專案架構:框架預設採用 Clean Architecture,提供標準化的專案目錄結構,適合企業級應用開發。
- 品質控制:包含 CI/CD 流程範本與程式碼品質檢查工具,確保專案合規性。
- 官方文件:[Github] spec-kit
- 學習參考整理:res/spec-kit/README.md
- 實戰範例(Podcast):res/spec-kit/case_podcase.md
本專案採用嚴謹的開發規範,以確保程式碼品質與專案一致性。所有開發活動都必須導入 .github/instructions/ 下的規範檔案至 Copilot Agent。
- 必選技術棧:Java 17 LTS + Spring Boot 3.x + PostgreSQL + Redis + Docker
- 詳細規範:.github/instructions/tech-stack.instructions.md
- 架構模式:Clean Architecture(分層:domain / application / adapters / infrastructure)
- 詳細規範:.github/instructions/springboot-spec.instructions.md
- 核心理念:重點說明「為什麼」而非「是什麼」,避免冗長敘述,確保邏輯清晰。
- 詳細規範:.github/instructions/document.instructions.md
- 提交格式:Conventional Commits(繁體中文)
- 詳細規範:.github/instructions/git.instructions.md
歡迎提交 Issue 或 Pull Request 來改善本專案。請確保:
- 遵循專案的開發規範與程式碼風格。
- 提交前通過所有測試與程式碼檢查。
- 使用繁體中文撰寫提交訊息與文件。
- 更新相關文件以反映程式碼變更。
本專案採用 MIT 授權條款。