← ClaudeAtlas

msproject-wbslisted

產生 MS Project 可直接匯入的 WBS 專案時程 XML(MSPDI 格式),第一層功能模組、第二層工項, 含工期、負責資源、前置依賴、資源指派,日期照依賴鏈自動展開成甘特圖。 當使用者要「WBS」「��作分解」「專案時程」「開發排程」「甘特圖」「MS Project 檔」「.mpp/.xml 時程」 「排一份 N 天 / N 人的開發計畫」「by 功能 / by 工項排���程」時觸發。 **只要使用者要的是「能匯入 MS Project 的時程表」就用這個 skill**——手刻 MSPDI XML 極易踩雷 (打不開 / 日期全塌 / 工期顯示 0),本 skill 把這些坑全部編碼進生成腳本,一次到位。
abs1294/fulin-claude-plugins · ★ 2 · Testing & QA · score 65
Install: claude install-skill abs1294/fulin-claude-plugins
# MS Project WBS 產生器 產生 **MSPDI XML**(MS Project 的匯入格式)。手刻這種 XML 有幾個非踩不可的雷,本 skill 的價值就是把雷全部封在生成腳本裡,讓你只需描述「有哪些工項」,其餘由腳本保證正確。 ## 為什麼需要這個 skill(實戰踩過的雷,每個都會讓成果報廢) 親手寫過 MSPDI XML 的都知道,「XML 看起來對」跟「MS Project 打得開且排程正確」是兩回事。 1. **【頭號雷】Task 子元素順序違反 XSD 序列 → 欄位被靜默丟棄**。MSPDI 匯入器嚴格照 schema 序列讀 Task 子元素,**順序不對的欄位不報錯、直接忽略**。經典病徵:`Start`/`Finish` 被放在 `Duration`/`Summary` 之後 → 被丟棄 → **所有任務日期塌到專案起始日,但工期正常顯示**(因為 Duration 剛好在對的位置被讀到)。這個雷極難排查:XML well-formed、PowerShell parser 全過、內容看起來完全正確——只有 MS Project 實際匯入才會露餡。腳本用 `TASK_ORDER` 白名單固定順序(`UID→ID→Name→Type→IsNull→OutlineLevel→Start→Finish→Duration→DurationFormat→Work→Estimated→Milestone→Summary→ConstraintType→ConstraintDate→PredecessorLink→Active→Manual`)並內建順序自檢,違序在生成期就 throw。 2. **缺 Project 層全域欄位 → 直接打不開**。MS Project 期待 `SaveVersion` / `MinutesPerDay` / `DefaultStartTime` / `DurationFormat` / `HonorConstraints` 等一整組全域設定,缺了會判定檔案不完整而拒開。Project 層欄位同樣要照 XSD 序列。腳本已補齊。 3. **日曆 `WorkingTimes` / `WorkingTime` 標籤配對 → XML 非 well-formed**。只差一個 `s`,手拼巢狀極易配對錯,整份解析失敗。腳本用固定正確結構產生。 4. **缺 `ConstraintType` / `ConstraintDate`(或 `HonorConstraints` 沒開)→ 自動排程重算把任務推到「越早越好」**。給每個**葉子任務**加 `ConstraintType=4`(Start No Earlier Than)+ `ConstraintDate=該任務開始日`,Project 層設 `HonorConstraints=1`。**摘要任務不加約束**(日期由子任務彙總,鎖死會打架)。注意:約束欄位放錯位置一樣會被雷 1 吃掉——順序對了約束才存在。 5. **UTF-8 無 BOM → 中文亂碼 / 解析失敗**。Windows 上無 BOM 的 UTF-8 中文 XML 會被用系統 ANSI 誤判。輸出加 UTF-8 BOM。 6. **工期顯示 0 天**:`Duration` 要配對應的 `Work` 欄,MS Project 才算得出天數。 7. **負責人別塞 `Notes`**:用 **Resource + Assignment**(資源指派),甘特圖「資