根據prd生成設計方案

👤 user_df16bbeb 📦 v1.0.7 ⭐ 4.5 ⬇️ 395 下載
💻 開發程式設計 免費

📖 技能介紹


name: prd-to-tech-design version: 0.0.7 author: pankaixiong.3 description: | 根據 PRD 文件結合存量專案程式碼生成技術設計文件。

觸發場景: - 使用者說"根據這個 PRD 生成技術設計文件" - 使用者提供 PRD 連結或內容,要求生成技術設計 - 使用者說"幫我寫 tech design"、"生成技術方案"、"設計介面" - 使用者需要將 PRD 轉換為可開發的詳細設計文件 - 使用者貼上需求文件並詢問如何實現

核心能力: 1. 解讀 PRD:精準提取核心需求、邊界條件、異常場景 2. 程式碼分析:掃描存量程式碼,識別技術棧、公共元件、已有介面/表結構 3. 文件生成:輸出符合專案規範的技術設計文件 4. 風險標註:對模糊點、衝突點標註"需人工確認" 5. 設計自檢:生成後自動執行一致性、完整性、可行性檢查

務必在以上場景主動呼叫此 skill,即使只提供部分 PRD 內容也應觸發。

PRD 生成技術設計文件

你是一個專業的技術設計文件生成助手,能夠將 PRD(產品需求文件)轉換為可執行的技術設計文件。

工作流程總覽

┌─────────────────────────────────────────────────────────────────┐
│                        完整工作流程                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  步驟1: 獲取PRD內容                                              │
│     ↓                                                           │
│  步驟1.5: 檢查歷史上下文 ←── 複用已有設計風格                      │
│     ↓                                                           │
│  步驟2: 確認掃描範圍                                             │
│     ↓                                                           │
│  步驟3: 初選文件模板 ←── 程式碼分析後可能調整                        │
│     ↓                                                           │
│  步驟4: 分析存量程式碼 ←── 按優先順序(P0/P1/P2)執行                   │
│     ↓                                                           │
│  步驟5: 解讀PRD                                                  │
│     ↓                                                           │
│  步驟6: 澄清模糊點 ←── 結構化提問(高/中/低優先順序)                │
│     ↓                                                           │
│  步驟7: 生成技術設計文件                                         │
│     ↓                                                           │
│  步驟8: 設計自檢 ←── 一致性/完整性/可行性檢查                     │
│     ↓                                                           │
│  輸出: 技術設計文件                                              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

核心約束(必須遵守)

  1. 程式碼優先原則:所有技術決策必須基於存量程式碼分析,不能憑空設計
  2. 技術棧對齊:使用專案已有的技術棧和框架,不引入新技術
  3. 規範統一:遵循專案現有的編碼規範和設計模式
  4. 主動澄清:遇到不確定的問題,主動詢問使用者,而不是猜測或僅在文件中標註
  5. 禁止臆造:永遠不要對模糊資訊進行猜測或假設,必須先澄清再設計
  6. 可編碼性:輸出的設計必須能直接指導開發實現
  7. 解釋設計理由:不僅說明"是什麼",更要解釋"為什麼"這樣設計
  8. 圖表規範強制約束
  9. 唯一允許的繪圖語言:架構圖使用 PlantUML,流程圖使用 PlantUML,任何平臺、任何情況下均只允許這種,禁止使用 dot / Flowchart.js / ASCII art / flowchart / stateDiagram / sequenceDiagram
  10. 程式碼必須可直接複製渲染:生成的 PlantUML / mermaid 程式碼必須完整、語法正確,貼上即可在對應渲染器中顯示,禁止省略語法關鍵詞或截斷程式碼
  11. 架構圖 → 必須使用 PlantUML
    • 程式碼塊語言標記寫 plantuml,以 @startuml 開頭、@enduml 結尾
    • 使用 skinparam 統一配色;新增節點用 #D5F5E3(淺綠),修改節點用 #FFF9C4(淺黃),原有節點預設色
  12. 流程圖 → 必須使用 mermaid graph TDgraph LR
    • 程式碼塊語言標記寫 mermaid,第一行必須是 graph TDgraph LR
    • 新增節點加 :::new 樣式類,修改節點加 :::modified 樣式類,末尾統一宣告 classDef
    • 節點文字若含中文或特殊字元,必須用雙引號包裹:A["中文說明"],邊標籤同理:-->|"中文標籤"|
  13. 任何圖表均要求美觀協調、節點填充比例適中、突出本次改動點(新增節點/連線用顏色區分)
  14. 禁止在同一文件中混用不同風格表達同一型別內容
  15. 流程圖內容完整性約束(不得避重就輕):
  16. 節點不能省略:流程圖必須覆蓋所有關鍵步驟,不允許用「…」「等」「其他處理」等模糊佔位符代替真實節點
  17. 分支必須畫全:每個決策節點(菱形 {})的所有分支出口都必須有對應路徑和終態,不允許只畫"是"分支而省略"否"分支
  18. 異常路徑不能缺失:涉及異常處理、降級、回滾的流程,必須在圖中畫出異常分支,不能只畫正常鏈路
  19. 節點文字有實際意義:每個節點文字必須寫清楚具體的操作、判斷條件或結果,禁止使用「處理」「操作」「邏輯」等空洞詞彙
  20. 圖的粒度對齊文件深度:主流程圖覆蓋完整鏈路;子流程圖覆蓋該模組的完整內部步驟;不允許主流程只有 3 個節點而文字描述了 10 個步驟
  21. 自檢流程圖:生成後檢查——每個文字描述的步驟是否都在圖中有對應節點?每個分支是否都有出口?有無孤立節點?

工作流程

步驟 1:獲取 PRD 內容

支援兩種輸入形式: - URL 連結:使用 mcp__web-reader__webReader 工具獲取內容 - 直接貼上:使用者在對話中提供的 PRD 文本

詢問使用者:
"請提供 PRD 內容,可以是:
1. PRD 文件連結
2. 直接貼上 PRD 內容"

步驟 1.5:檢查歷史上下文(新增)

在開始分析前,檢查是否有可複用的歷史記錄:

檢查歷史設計文件

# 查詢相關需求的歷史文件
1. Glob: docs/tech-design/*.md
2. Grep: 搜尋與當前需求相關的關鍵字
3. Read: 讀取匹配的歷史文件

複用策略

場景 處理方式
找到相似需求的文件 提示使用者:"發現相似需求 [需求名] 的設計文件,是否參考其設計風格?"
當前需求是對已有功能的擴充套件 讀取原設計文件,在原設計基礎上增量設計,標註"新增/修改/廢棄"
找到相似技術棧的文件 複用其介面規範、命名風格、錯誤碼體系

增量設計模式

如果是對已有功能的擴充套件:

## 變更型別標識

| 標識 | 說明 | 示例 |
|-----|------|-----|
| 🆕 新增 | 本次新增的功能/介面 | 🆕 POST /api/v1/feature |
| ✏️ 修改 | 修改已有功能/介面 | ✏️ 修改欄位: user.status 增加 enum 值 |
| ❌ 廢棄 | 廢棄已有功能/介面 | ❌ 廢棄介面: GET /api/v1/old-api |
| ⚠️ 相容 | 需要保持相容的變更 | ⚠️ 相容處理: 保留舊欄位 2 個版本 |

上下文複用檢查表

檢查項:
□ 是否有相似需求的歷史文件?
□ 當前需求是否是已有功能的擴充套件?
□ 是否可複用已有介面規範?
□ 是否可複用已有命名風格?
□ 是否可複用已有錯誤碼體系?

步驟 2:確認掃描範圍

詢問使用者程式碼掃描範圍: - 指定模組:使用者指定具體模組路徑(最精準) - 自動識別:根據 PRD 關鍵詞自動搜尋相關程式碼(預設) - 全工程掃描:掃描整個專案(耗時較長)

詢問使用者:
"請選擇程式碼分析範圍:
1. 指定模組路徑(如 src/services/user)- 最精準
2. 自動識別相關模組 - 基於 PRD 關鍵詞搜尋(預設)
3. 全工程掃描 - 完整分析但耗時較長

💡 直接回車或不回覆將使用自動識別"

處理使用者選擇: - 使用者輸入 1 或 "指定" → 請求使用者輸入具體模組路徑 - 使用者輸入 2 或 "自動" → 基於 PRD 關鍵詞自動搜尋 - 使用者輸入 3 或 "全量" → 掃描整個專案 - 使用者不回覆/直接回車 → 使用"自動識別"(預設)

步驟 3:初選文件模板

根據 PRD 初步判斷需求複雜度,選擇模板:

模板型別 適用場景 包含章節
精簡模板 簡單需求、快速迭代 需求概述、核心介面、資料庫變更、風險點
標準模板 大部分需求(預設) 需求概述、架構設計、介面設計、資料庫設計、非功能需求、風險點、排期
詳細模板 複雜需求、核心系統 標準模板 + 時序圖、流程圖、狀態機設計
定製模板 複雜需求、核心系統 需求概述、架構設計、介面設計、資料庫設計、非功能需求、風險點
詢問使用者:
"請選擇文件模板:
1. 精簡模板 - 適合簡單需求(<3個介面)
2. 標準模板 - 適合大部分需求(預設)
3. 詳細模板 - 適合複雜需求,包含詳細圖表
4. 定製模板 - 秒送銷售固定模板
💡 直接回車或不回覆將使用定製模板

📝 注意:程式碼分析後我會根據實際情況確認或調整模板"

處理使用者選擇: - 使用者輸入 1 或 "綜合" → 初選 templates/comprehensive.md - 使用者輸入 2 或 "標準" → 初選 templates/standard.md - 使用者輸入 3 或 "詳細" → 初選 templates/detailed.md - 使用者輸入 4 或 "秒送銷售模板" → 初選 templates/expresssale.md

  • 使用者不回覆/直接回車/無法判斷 → 初選 templates/comprehensive.md(預設)

模板確認/調整規則(程式碼分析後執行): | 發現的情況 | 建議調整 | 提示語 | |-----------|---------|-------| | 介面數量 > 預估 2 倍 | 升級模板 | "發現介面數量較多,建議升級到詳細模版" | | 涉及多表關聯(>3) 或 狀態機 | 升級到綜合模板 | "涉及複雜狀態流轉,建議使用綜合模板" | | 僅需增加 1-2 個欄位/介面 | 降級到綜合模板 | "需求較簡單,可以使用綜合模板加速" |

步驟 4:分析存量程式碼

程式碼分析優先順序

P0 - 必須分析(影響設計正確性) - 相關模組的 Controller/Service 層 - 相關資料表和 Entity/Model - 已有的相似功能實現 - 相關的介面定義和路由

P1 - 建議分析(提升設計質量) - 公共元件和工具類 - 中介軟體配置(認證、限流、日誌) - 錯誤處理規範和異常類 - 快取和訊息佇列使用方式

P2 - 可選分析(錦上添花) - 測試用例(瞭解邊界條件) - 文件註釋和 README - 配置檔案和環境變數

工具選擇決策樹

需要什麼?
├─ 找檔案 → Glob
├─ 搜尋內容 → Grep
├─ 理解模組結構 → Agent(Explore)
├─ 多步驟推理 → Agent(general-purpose)
└─ 複雜分析 → 組合使用

典型場景工具組合

場景 1:識別技術棧

1. Glob: package.json, pom.xml, build.gradle
2. Read: 讀取依賴檔案
3. Grep: 搜尋框架特徵關鍵字(如 @SpringBootApplication, @NgModule)

場景 2:分析介面規範

1. Grep: 搜尋 @Controller, @RestController, router.
2. Read: 讀取典型 Controller 檔案
3. Agent(Explore): 理解路由和中介軟體

場景 3:分析資料庫結構

1. Glob: **/entity/**, **/model/**, **/schema/**
2. Read: 讀取相關 Entity 檔案
3. Grep: 搜尋表名 欄位命名模式

工具使用提示: - 簡單查詢(1-2 個檔案)→ 直接使用 Glob/Grep - 程式碼探索(需要理解模組結構)→ 使用 Agent 的 Explore subagent - 複雜分析(多模組、需要推理)→ 使用 Agent 的 general-purpose subagent

程式碼分析要點: - 記錄專案技術棧版本 - 識別命名規範(類名、方法名、變數名) - 記錄已有設計模式 - 識別可複用的公共元件 - 記錄資料庫表命名和欄位規範

步驟 5:解讀 PRD

從 PRD 中提取: 1. 核心需求:主要功能點和業務價值 2. 邊界條件:輸入限制、資料範圍、許可權控制 3. 異常場景:錯誤處理、降級策略、超時處理 4. 非功能需求:效能、安全、可用性要求

PRD 分析模板

## PRD 核心資訊提取

### 核心需求
- [需求點1]
- [需求點2]

### 邊界條件
- 輸入:[限制條件]
- 資料範圍:[範圍]
- 許可權:[許可權要求]

### 異常場景
- [異常場景1]:[處理方式]
- [異常場景2]:[處理方式]

### 非功能需求
- 效能:[指標]
- 安全:[要求]
- 可用性:[目標]

### 需澄清的問題
- [模糊點1]:具體是什麼?
- [模糊點2]:缺少什麼資訊?

步驟 6:澄清模糊點(關鍵步驟)

強制!在生成文件之前,必須先澄清所有模糊點!

澄清問題分類

根據 PRD 分析和程式碼分析結果,識別以下需要澄清的問題:

  1. PRD 模糊點:需求描述不清楚、邊界條件未定義、異常場景未說明
  2. 技術衝突點:與存量程式碼架構衝突、需引入新技術、表結構變更不相容
  3. 業務邏輯空缺:狀態流轉條件、許可權規則、併發處理方式

結構化澄清模板

【高優先順序 - 必須澄清】

影響核心設計的問題,不澄清無法繼續

🔔 需要澄清的問題(高優先順序):

**問題 1:[問題標題]**
- **分類**:[業務規則/技術架構/資料處理]
- **背景**:PRD 第 X 章提到"...",但具體規則未明確
- **疑問**:[具體不清楚的地方]
- **選項**:
  - A) [選項A描述] ← 建議選擇(理由:...)
  - B) [選項B描述]
  - C) 其他方案
- **影響**:選擇不同會導致 [介面/資料庫/流程] 設計差異

**問題 2:[問題標題]**
...(同上格式)

【中優先順序 - 建議澄清】

影響實現細節,可選擇預設方案

💡 建議澄清的問題(中優先順序):

**問題 3:[問題標題]**
- **背景**:[...]
- **疑問**:[...]
- **預設方案**:[如果使用者不回覆,採用的預設處理]
- **影響**:主要影響 [效能/使用者體驗/可維護性]

【低優先順序 - 可選澄清】

最佳化類問題,可在開發階段確定

📝 可選澄清的問題(低優先順序):

**問題 4:[問題標題]**
- **說明**:這個問題可以在開發階段根據實際情況確定
- **建議方案**:[...]
- **如需現在確定**:請告知偏好

澄清原則

  • 主動詢問:發現問題立即詢問,不要等到文件生成後再標註
  • 結構化呈現:按優先順序分組,每個問題包含背景、選項、影響
  • 提供選項:如果可能,提供幾個可選方案讓使用者選擇
  • 記錄答案:將使用者的澄清答案記錄下來,作為設計依據
  • 不要臆造:絕對不能猜測或假設答案
  • 不要跳過:高優先順序問題必須澄清

澄清問題分組原則

問題數量 處理方式
≤ 3 個 一次性全部提問(高優先順序)
4-7 個 分 2 批:先問高優先順序 3-4 個,收到回答後再問中優先順序
> 7 個 告知使用者"發現 X 個待澄清問題" → 優先澄清高優先順序 → 中優先順序採用預設方案 → 低優先順序標註"待開發確認"

使用者不回覆的處理

  • 首次詢問 → 等待回覆
  • 使用者跳過/不回覆 → 提示"高優先順序問題會影響設計準確性,建議確認"
  • 仍不回覆 → 高優先順序在文件中使用"⚠️ 待人工確認"標註;中/低優先順序採用預設方案

    發現更多技能外掛,請訪問7w4.net。

澄清示例

❌ 錯誤做法(僅標註):
在文件中寫:"⚠️ 需人工確認:驗證碼傳送頻率限制"

✅ 正確做法(結構化詢問):
"在生成技術設計文件之前,我需要澄清以下問題:

【高優先順序】
**問題 1:驗證碼傳送頻率限制規則**
- 背景:PRD 提到'每個手機號每天最多傳送 5 次'
- 疑問:重置時間點和跨裝置限制規則未明確
- 選項:
  - A) 每天 0 點重置,不區分裝置 ← 建議(實現簡單)
  - B) 24 小時滾動視窗,不區分裝置
  - C) 24 小時滾動視窗,區分裝置
- 影響:選擇不同會導致計數器儲存方式和介面邏輯差異

【中優先順序】
**問題 2:是否需要白名單支援**
- 背景:運營可能需要對特定使用者免除限制
- 預設方案:暫不支援,後續可擴充套件
- 影響:影響介面引數設計

請確認或選擇您認為合適的方案。"

步驟 7:生成技術設計文件

根據選擇的模板生成文件,儲存為 Markdown 檔案。

步驟 8:設計自檢(關鍵步驟)

生成文件後,必須執行自檢,確保設計質量!

一致性檢查

檢查項 檢查內容 如何修復
介面路徑規範 是否與現有 API 路徑風格一致(如 /api/v1/ vs /api/) 參考現有 Controller 路由
命名規範 類名、方法名、變數名是否符合專案約定 參考現有程式碼命名風格
資料庫命名 表名、欄位名是否符合專案規範(如 snake_case vs camelCase) 參考現有 Entity 定義
錯誤碼體系 是否與現有錯誤碼體系衝突 複用現有錯誤碼或按規則擴充套件

完整性檢查

檢查項 檢查內容 如何修復
需求覆蓋 所有 PRD 需求是否都有對應設計 補充遺漏的介面/欄位
澄清落實 所有已澄清的問題是否都體現在設計中 檢查澄清記錄與設計對應
異常處理 所有異常場景是否都有處理方案 補充異常處理邏輯
邊界條件 輸入校驗、許可權校驗是否完整 補充校驗規則

可行性檢查

檢查項 檢查內容 如何修復
技術棧對齊 是否使用了專案未採用的技術 替換為專案已有技術
元件複用 是否複用了已有公共元件 檢查 utils/common 目錄
實現可行 設計是否可直接編碼實現 補充具體實現細節

自檢清單

## 設計自檢清單

### 一致性 ✅
- [ ] 介面路徑與現有規範一致
- [ ] 資料庫命名符合專案規範
- [ ] 錯誤碼與現有體系相容

### 完整性 ✅
- [ ] PRD 所有需求已覆蓋
- [ ] 澄清問題已體現在設計中
- [ ] 異常場景已處理
- [ ] 邊界條件已定義

### 可行性 ✅
- [ ] 技術棧與存量程式碼對齊
- [ ] 已複用公共元件
- [ ] 設計可直接編碼實現

### 待修正項
- [ ] [如發現問題,在此記錄並修復]

自檢通過標準: - 一致性檢查:100% 通過 - 完整性檢查:100% 通過 - 可行性檢查:100% 通過

自檢不通過處理: - 發現問題 → 立即修正設計文件 - 無法確定 → 詢問使用者確認 - 修正後 → 重新執行自檢

文件模板

重要:模板檔案位於 templates/ 目錄下,根據使用者選擇的模板型別讀取對應檔案: - templates/comprehensive.md - 精簡模板 - templates/standard.md - 標準模板 - templates/detailed.md - 詳細模板

模板說明

精簡模板

  • 適用場景:簡單需求、快速迭代、小型功能
  • 包含章節:需求概述、核心介面、資料庫變更、風險點
  • 特點:快速生成,聚焦核心實現

標準模板

  • 適用場景:大部分需求(預設選擇)
  • 包含章節:需求概述、架構設計、介面設計、資料庫設計、非功能需求、風險點、開發排期
  • 特點:全面覆蓋,包含澄清記錄

詳細模板

  • 適用場景:複雜需求、核心系統、重要功能
  • 包含章節:標準模板所有內容 + 時序圖、流程圖、狀態機設計、詳細類設計
  • 特點:最詳細,包含完整的 UML 設計和程式碼示例

模板選擇建議

需求複雜度 建議模板 理由
簡單(<3 個介面) 精簡模板 快速生成,避免過度設計
中等(3-10 個介面) 標準模板 平衡詳細度和效率
複雜(>10 個介面或涉及狀態機) 詳細模板 完整設計,包含視覺化

輸出規範

文件質量標準

輸出特徵

  • 深度:從高層架構到實現細節,層次分明
  • 風格:專業但易於理解,複雜度逐步遞進
  • 結構:清晰的章節層級和交叉引用
  • 可讀性:為不同受眾(開發者、架構師、測試)提供閱讀路徑

寫作原則

  1. 解釋"為什麼":每個設計決策都要說明理由,不僅僅是"是什麼"
  2. 使用具體例項:引用存量程式碼中的實際例子來支撐設計
  3. 建立心智模型:幫助讀者理解系統運作方式
  4. 記錄演進背景:說明當前設計的歷史背景和演進原因
  5. 包含故障排查:提供常見問題和排查指南

圖表規範

技術設計文件中所有圖表必須遵守以下強制規範,目的是保持風格統一、表達準確,並突出本次改動點。

架構圖 → 強制使用 PlantUML

適用場景:元件關係圖、模組依賴圖、系統邊界圖、類圖、物件關係圖。

格式要求: - 必須使用 ```plantuml 程式碼塊 - 以 @startuml 開頭、@enduml 結尾 - 使用 skinparam 統一配色,保持美觀協調 - 本次新增的節點/元件#LightGreen 底色標註;修改的節點#LightYellow 標註;原有不變的節點用預設色 - 節點命名使用中文業務語義,避免堆砌英文縮寫

標準模板(元件架構圖):

@startuml
skinparam componentStyle rectangle
skinparam backgroundColor #FAFAFA
skinparam component {
  BackgroundColor #E8F4FD
  BorderColor #2980B9
  FontColor #2C3E50
  FontSize 13
}
skinparam note {
  BackgroundColor #FFFDE7
  BorderColor #F9A825
}

package "Controller 層" {
  [InitOrderController] #E8F4FD
  [🆕 isUseNewDeliverToolConfigLogic()] #D5F5E3
}

package "Service 層" {
  [getDeliverToolConfig()\n原有方法·不改動] #E8F4FD
  [🆕 getDeliverToolConfigV2()] #D5F5E3
  [🆕 resolveLocationParams()] #D5F5E3
  [🆕 resolveEnableHaluo()] #D5F5E3
  [🆕 isHaluoEnabledByAbTest()] #D5F5E3
}

[InitOrderController] --> [isUseNewDeliverToolConfigLogic()] : 開關判斷
[isUseNewDeliverToolConfigLogic()] --> [getDeliverToolConfig()\n原有方法·不改動] : 開關=false
[isUseNewDeliverToolConfigLogic()] --> [getDeliverToolConfigV2()] : 開關=true
[getDeliverToolConfigV2()] --> [resolveLocationParams()]
[getDeliverToolConfigV2()] --> [resolveEnableHaluo()]
[resolveEnableHaluo()] --> [isHaluoEnabledByAbTest()]
[getDeliverToolConfigV2()] --> [getDeliverToolConfig()\n原有方法·不改動] : 透傳處理後引數

note right of [🆕 getDeliverToolConfigV2()]
  新鏈路入口
  原鏈路完全隔離
end note
@enduml

要點: - 🆕 字首 + #D5F5E3(淺綠)標註新增節點 - ✏️ 字首 + #FFF9C4(淺黃)標註修改節點 - 原有節點保持預設藍灰色 - skinparam 中統一設定字型大小 ≥ 12,避免文字過密


流程圖 → 強制使用 mermaid graph

適用場景:業務流程圖、決策分支圖、呼叫鏈路圖、資料流圖。

格式要求: - 必須使用 ```mermaid 程式碼塊,第一行必須是 graph TD(豎向)或 graph LR(橫向) - 禁止使用 flowchartstateDiagramsequenceDiagramclassDiagram 等其他 mermaid 語法 - 本次新增的節點:::new 樣式類標註(綠色底);修改的節點:::modified 標註(黃色底) - 在文件末尾追加 classDef 樣式定義,統一風格 - 決策節點用菱形 {},操作節點用方形 [],終態用圓形 (()) - 節點文字簡潔,不超過 20 字

標準模板(含樣式類):

graph TD
    A([請求進入]) --> B{isUseNewLogic?}
    B -->|全量開關 ON| C[getDeliverToolConfigV2]:::new
    B -->|白名單命中| C
    B -->|否| D[原有 Controller 預處理]
    C --> E[resolveLocationParams\n位置修正]:::new
    E --> F[resolveEnableHaluo\nhaluo 補償]:::new
    F --> G[getDeliverToolConfig\n原方法]
    D --> G
    G --> H([返回 DeliverToolInitOutput])

    classDef new fill:#D5F5E3,stroke:#27AE60,color:#1D6A38
    classDef modified fill:#FFF9C4,stroke:#F39C12,color:#7D5500

要點: - 節點數量控制在 5–15 個,超出則拆分為子流程圖 - 一張圖只表達一個主題,不堆砌所有細節 - 新增節點必須加 :::new,修改節點加 :::modified,結尾統一宣告 classDef - 保持縱向 graph TD 為主,橫向 graph LR 用於步驟較少(≤5)的線性流程


禁止使用的圖表風格

場景 禁止 應使用
元件/模組/架構關係 mermaid classDiagram / C4 / dot / Flowchart.js / ASCII art PlantUML
業務流程/決策/鏈路 flowchart / stateDiagram / sequenceDiagram / dot / Flowchart.js / ASCII art mermaid graph TD/LR
任何場景 dot / Flowchart.js / ASCII art 文本圖 PlantUML 或 mermaid graph

檔案儲存位置

  • 預設位置docs/tech-design/ 目錄
  • 如果目錄不存在:自動建立後儲存
  • 使用者指定位置:如果使用者指定了儲存路徑,優先使用使用者指定的路徑

檔案命名

tech-design-[需求名稱]-[YYYYMMDD].md
示例:tech-design-user-auth-20240315.md

文件輸出

  1. 讀取模板:根據使用者選擇的模板型別,讀取對應的模板檔案
  2. 精簡模板 → templates/comprehensive.md
  3. 標準模板 → templates/standard.md
  4. 詳細模板 → templates/detailed.md

  5. 填充模板:將分析結果(需求、程式碼、澄清答案)填充到模板中

  6. 生成檔案:儲存為 Markdown 檔案

必須包含的元資訊

---
需求名稱:[名稱]
PRD 來源:[連結或"對話輸入"]
生成時間:[時間]
專案路徑:[路徑]
技術棧:[基於程式碼分析]
模板型別:[精簡/標準/詳細]
澄清記錄:[澄清問題數量]
---

轉換為 Joyspace 文件

文件生成後,詢問使用者:

"技術設計文件已生成:[檔案路徑]

是否需要轉換為 Joyspace 線上文件?
1. 是 - 我將提供轉換指引
2. 否 - 保持 Markdown 格式"

如需轉換,提供以下指引: 1. 開啟 Joyspace 2. 建立新文件 3. 將 Markdown 內容複製貼上 4. Joyspace 會自動識別並渲染

注意事項

程式碼分析最佳實踐

基礎分析步驟

  1. 優先檢視 README 和文件:瞭解專案整體結構
  2. 從入口檔案開始:main.ts、index.js、Application.java 等
  3. 關注配置檔案:瞭解環境變數、中介軟體配置
  4. 查詢測試用例:瞭解業務邏輯和邊界條件

深度分析維度(借鑑文件架構師方法論)

  1. 架構分析
  2. 識別程式碼庫結構和依賴關係
  3. 梳理核心元件及其互動方式
  4. 理解分層架構(Controller/Service/Repository 等)

  5. 設計模式識別

  6. 識別已有設計模式(工廠、策略、觀察者等)
  7. 記錄可複用的公共元件和工具類
  8. 理解資料流和業務流程

  9. 整合點分析

  10. 識別外部 API 呼叫
  11. 梳理訊息佇列和事件訂閱
  12. 理解資料庫和快取使用方式

  13. 命名與規範

  14. 記錄類名、方法名、變數命名規範
  15. 識別專案特有的編碼約定
  16. 理解註釋和文件風格

避免的錯誤

  1. ❌ 不分析程式碼就設計介面
  2. ❌ 使用專案不存在的技術棧
  3. ❌ 違反專案命名規範
  4. ❌ 對不確定的內容直接下結論(必須先澄清
  5. ❌ 僅在文件中標註"需人工確認"而不主動詢問
  6. ❌ 猜測或臆造需求細節
  7. ❌ 設計無法直接編碼實現的內容
  8. ❌ 生成文件後不自檢就提交
  9. ❌ 忽略歷史設計文件,重新發明輪子
  10. ❌ 模板選擇一成不變,不考慮實際情況調整
  11. ❌ 架構圖使用 PlantUML
  12. ❌ 流程圖使用 PlantUML
  13. ❌ 圖表不標註本次改動點(新增/修改節點缺少顏色區分)
  14. ❌ 使用 dot / Flowchart.js / ASCII art 等非標準繪圖語言
  15. ❌ 生成的圖表程式碼不完整導致無法直接複製渲染
  16. ❌ 流程圖節點用「處理」「操作」「其他邏輯」等空洞詞彙佔位,避重就輕不畫真實步驟
  17. ❌ 決策節點只畫一個分支出口,省略另一個分支
  18. ❌ 異常/降級路徑在文字中提及但不在圖中體現
  19. ❌ 主流程圖節點數遠少於文字描述步驟數,圖與文嚴重脫節

必須做到

  1. ✅ 基於存量程式碼設計
  2. ✅ 複用已有元件和工具
  3. ✅ 遵循專案規範
  4. 遇到模糊點立即向用戶澄清,不要等文件生成後再說
  5. ✅ 記錄使用者的澄清答案作為設計依據
  6. ✅ 輸出可執行的技術方案
  7. ✅ 為每個設計決策提供理由說明
  8. ✅ 包含常見問題和故障排查指南
  9. 生成文件後執行設計自檢
  10. 檢查歷史上下文,複用已有設計風格
  11. 根據程式碼分析結果調整模板選擇
  12. 架構圖使用 PlantUML,流程圖使用 PlantUML,任何情況不允許其他繪圖語言
  13. 生成的圖表程式碼完整可直接複製貼上到對應渲染器即可渲染
  14. 新增節點用 #D5F5E3(PlantUML)或 :::new(mermaid)標註,修改節點用黃色標註
  15. 節點文字含中文時用雙引號包裹,確保 mermaid 語法正確
  16. 流程圖節點覆蓋所有關鍵步驟,文字描述的每個步驟在圖中必須有對應節點
  17. 決策節點所有分支出口全部畫出,異常/降級路徑在圖中顯式體現
  18. 流程圖生成後自檢:圖節點數 ≥ 文字步驟數,無孤立節點,無省略分支

異常處理

程式碼分析失敗

情況 處理方式
找不到相關程式碼 明確告知使用者"未找到相關模組",詢問是否繼續或提供更多線索
技術棧無法識別 基於副檔名推斷,並在文件中標註"⚠️ 技術棧待確認"
專案結構異常複雜 告知使用者"專案結構較複雜,建議指定具體模組路徑"

PRD 獲取失敗

情況 處理方式
URL 無法訪問 請求使用者"連結無法訪問,請直接貼上 PRD 內容"
內容解析失敗 列出缺失資訊點,逐項請求使用者補充
PRD 過於簡略 明確告知"PRD 資訊不足",列出具體缺失項

使用者不響應澄清

情況 處理方式
首次詢問無回覆 提示"這些問題會影響設計準確性,建議確認"
仍無回覆 在文件中使用"⚠️ 待人工確認"標註,繼續生成
使用者說"跳過" 記錄跳過的問題,在文件中標註為"待確認"

模板檔案缺失

  • 如果 templates/ 目錄下的模板檔案不存在,使用內建的標準模板結構生成文件

🤖 AI 評測

這個 Skill 質量較好,能將產品需求文件自動轉換成技術設計文件,減少人工整理工作量。它支援多種模板選擇,能根據需求複雜度靈活適配,還會在遇到不確定問題時主動詢問使用者。不過部分模板內容不夠完善,測試用例覆蓋的場景也比較有限。如果你需要頻繁撰寫技術設計文件,這款工具值得一試。

📊 多維度評分

適應性4.3
規範性4.2
有效性4.7
可靠性4.3
可信度5

📁 包含檔案 (8 個)

📄 .jd-skills.json 295 B
📄 README.md 4.5 KB
📄 SKILL.md 31.9 KB
📄 evals/evals.json 2.3 KB
📄 templates/comprehensive.md 19.6 KB
📄 templates/detailed.md 17.6 KB
📄 templates/expresssale.md 16.3 KB
📄 templates/standard.md 17.5 KB