解析 AS/400 COBOL 程式並產出標準化中文規格書。 支援線上互動、批次、副程式、報表等所有程式類型。 觸發:使用者提到 /cobol-spec、分析 COBOL、產生規格書、翻譯 COBOL 等。
一個指令產出完整的中文規格書。
/cobol-spec <spool_file> [program_name]
範例:
/cobol-spec <spool>.txt <program>
/cobol-spec <spool>.txt ← 自動選擇最大的 COBOL 程式
本 skill 採互動式流程,在以下時機必須暫停並詢問使用者:
若使用者未提供 spool file 路徑,用 AskUserQuestion 請使用者指定:
執行 spool_splitter 後,,請使用者確認要分析哪一支:
向使用者報告骨架摘要後,檢查所有需要的 DDS 原始檔是否存在:
若有缺少的檔案,用 AskUserQuestion 請使用者補充:
不要在檔案不存在時靜默跳過或自行推斷,一定要先問使用者。
分析 CALL 目標時,若副程式不在 spool file 中也不在工作目錄下:
執行 spool_splitter.py 產出元件清單:
python3 ~/.claude/skills/cobol-spec/scripts/spool_splitter.py <spool_file>
產出:JSON inventory(DDS/COBOL/CL 區塊 + 行號範圍)
驗證:確認目標程式存在於 inventory 中。若使用者未指定 program_name,列出所有 COBOL 程式請使用者選擇。
將 inventory 存為 output/{program_id}/{spool}_inventory.json。
執行 cobol_skeleton.py 產出程式結構:
python3 ~/.claude/skills/cobol-spec/scripts/cobol_skeleton.py <spool_file> --program <program_name>
產出:JSON skeleton(files, paragraphs, calls, linkage, type)
驗證:
將 skeleton 存為 output/{program_id}/{program}_skeleton.json。
向使用者報告摘要:
{program_name} 是 {type} 類型,{N} 個 paragraphs,{M} 個 CALL,{K} 個檔案。
根據程式類型,分派以下工作。盡量使用 Agent tool 平行執行。
讀取 references/logic-translator.md 取得翻譯 prompt。
將 PROCEDURE DIVISION 按功能群組分批(每批 ~1,000 行):
每批處理流程:
讀取 references/callsite-analyzer.md 取得分析 prompt。
對每個 CALL 目標:
前提:Step 2 後已確認所有 DDS 檔案存在(缺少的已請使用者補充)。
對每個 skeleton.files:
dds_parser.py 解析工作目錄下的獨立 .txt 檔python3 ~/.claude/skills/cobol-spec/scripts/dds_parser.py <dds_file.txt>
讀取 references/screen-analyzer.md 取得解析 prompt。
dds_parser.py --dspf 解析 Display File從 skeleton.linkage 直接提取,加上 LDA 分析(若有)。
讀取 assets/spec-template.md 取得格式模板。
組裝順序:
存為 output/{program_id}/{program_id}_spec.md。
產生 HTML:
python3 ~/.claude/skills/cobol-spec/scripts/md2html.py output/{program_id}/{program_id}_spec.md
執行 spec_validator.py:
python3 ~/.claude/skills/cobol-spec/scripts/spec_validator.py \
output/{program_id}/{program_id}_spec.md \
output/{program_id}/{program}_skeleton.json
交叉驗證:
向使用者報告驗證結果。
~/.claude/skills/cobol-spec/
├── SKILL.md ← 本檔案
├── scripts/
│ ├── spool_splitter.py # Spool → inventory.json
│ ├── cobol_skeleton.py # COBOL → skeleton.json
│ ├── dds_parser.py # DDS → field list JSON
│ ├── spec_validator.py # 驗證 spec 完整性
│ └── md2html.py # Markdown → HTML
├── references/
│ ├── logic-translator.md # 邏輯翻譯 prompt
│ ├── screen-analyzer.md # 畫面解析 prompt
│ └── callsite-analyzer.md # 副程式分析 prompt
└── assets/
├── cobol-dictionary.json # 術語對照表
└── spec-template.md # 產出格式模板
| 步驟 | INTERACTIVE | BATCH | SUBPROGRAM | REPORT |
|---|---|---|---|---|
| spool_splitter | V | V | V | V |
| cobol_skeleton | V | V | V | V |
| logic-translator | V | V | V | V |
| screen-analyzer | V | - | - | - |
| callsite-analyzer | V | V | 視情況 | V |
| dds_parser | V | V | 視情況 | V |
| 參數介面 | V | 視情況 | V(重點) | 視情況 |
對標 docs/specifications/SRCDATE_spec.md 的品質:
成功執行後,使用者會得到:
output/{spool_id}/
├── {spool_id}_inventory.json # Spool 元件清單
├── {program}_skeleton.json # 程式骨架
├── {spool_id}_spec.md # 規格書 (Markdown)
└── {spool_id}_spec.html # 規格書 (HTML,可直接開啟)
Edit PDFs with natural-language instructions using the nano-pdf CLI.