[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80037":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":10,"openIssues":12,"contributorsCount":12,"subscribersCount":12,"size":12,"stars1d":12,"stars7d":12,"stars30d":12,"stars90d":12,"forks30d":12,"starsTrendScore":12,"compositeScore":13,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":14,"fork":14,"defaultBranch":15,"hasWiki":16,"hasPages":14,"topics":17,"createdAt":8,"pushedAt":8,"updatedAt":18,"readmeContent":19,"aiSummary":20,"trendingCount":12,"starSnapshotCount":12,"syncStatus":21,"lastSyncTime":22,"discoverSource":23},80037,"rag-to-skill","Jia-Hong-Peng\u002Frag-to-skill","Jia-Hong-Peng",null,"Python",64,8,0,2.86,false,"main",true,[],"2026-06-12 02:03:57","# rag-to-skill\n\n> 把任何 JSONL 格式的 RAG 源文件，轉換為結構完整、可驗證、可分享的 [Claude Code Skill](https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fskills)。\n\n## 核心承諾\n\n**100% 完成度** — 每個 JSONL entity 都有對應 reference，每個斷言都有 RAG 錨點，無 AI 編造。\n\n## 安裝\n\n```bash\ncp -r rag-to-skill ~\u002F.claude\u002Fskills\u002Frag-to-skill\n```\n\n安裝後，在 Claude Code 中輸入 `\u002Frag-to-skill` 即可觸發。\n\n## 七階段工作流程\n\n```\n┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐\n│ 1.SCAN   │ → │ 2.PLAN   │ → │ 3.SCAFFOLD│ → │ 4.BUILD  │\n│ JSONL分析 │   │ 架構規劃  │   │ 骨架生成  │   │ 內容填充  │\n└──────────┘   └──────────┘   └──────────┘   └──────────┘\n                                                    │\n┌──────────┐   ┌──────────┐   ┌──────────┐         │\n│ 7.SHIP   │ ← │ 6.AUDIT  │ ← │ 5.ANCHOR │ ←───────┘\n│ 交付\u002F提交 │   │ 驗證稽核  │   │ 錨點標注  │\n└──────────┘   └──────────┘   └──────────┘\n```\n\n| 階段 | 產出 | 完成條件 |\n|---|---|---|\n| 1. SCAN | schema 報告、entity 清單 | 知道有幾個 item、主要章節 |\n| 2. PLAN | ref 檔分組方案 | 每個 entity 都有歸屬 ref 檔 |\n| 3. SCAFFOLD | 空的 skill.md + references\u002F | 目錄結構存在，frontmatter 完整 |\n| 4. BUILD | 每個 ref 檔填滿 RAG 原文 | 所有 entity 都有完整內容 |\n| 5. ANCHOR | 每個斷言都有 `> 來源:...` 標注 | 錨點密度 ≥ 15\u002F1000 行 |\n| 6. AUDIT | validate.py 全綠 | 無 SEVERE 問題 |\n| 7. SHIP | 安裝到 `~\u002F.claude\u002Fskills\u002F` | skill 可被觸發使用 |\n\n## 典型觸發語句\n\n- 「把 paidRag\u002F大耕老師\u002F紫微攻略.jsonl 做成 skill」\n- 「幫我從這本書建立一個 skill，100% 完成度」\n- 「這個 skill 還沒完整，幫我對齊 RAG」\n- 「這個 skill 要給同事用，準備提交」\n\n## Reference 目錄\n\n| 檔案 | 何時讀 |\n|---|---|\n| `references\u002F01-quickstart.md` | 已熟悉流程，想快速開始 |\n| `references\u002F02-jsonl-scan.md` | 拿到 JSONL 的第一件事 |\n| `references\u002F03-skill-scaffold.md` | 建立 skill 目錄結構時 |\n| `references\u002F04-content-build.md` | 填充 reference 內容時 |\n| `references\u002F05-anchor-protocol.md` | 在 ref 檔中加入來源標注時 |\n| `references\u002F06-validation-scripts.md` | 執行品質驗證前（含 validate.py v1.2） |\n| `references\u002F07-completion-checklist.md` | 準備提交或分享 skill 前 |\n| `references\u002F08-case-example.md` | 第一次用本 skill、想看完整案例 |\n\n## 內建驗證工具（validate.py v1.2）\n\n從 `references\u002F06-validation-scripts.md` 一鍵提取：\n\n```bash\npython3 \u003C\u003C 'EXTRACT'\nimport re, os, sys\npath = os.path.expanduser('~\u002F.claude\u002Fskills\u002Frag-to-skill\u002Freferences\u002F06-validation-scripts.md')\ncontent = open(path, encoding='utf-8').read()\nm = re.search(r'```python\\n(.*?)```', content, re.DOTALL)\nif not m:\n    sys.exit('ERROR: 無法找到 python code block')\nopen('validate.py', 'w', encoding='utf-8').write(m.group(1))\nprint(f'validate.py 已提取（{len(m.group(1).splitlines())} 行）')\nEXTRACT\n\npython3 validate.py \u003Cskill-dir>\npython3 validate.py \u003Cskill-dir> \u003Cpath\u002Fto\u002Fsource.jsonl>   # 含 JSONL 覆蓋率\n```\n\nvalidate.py 執行 5 項自動檢查：frontmatter 完整性、空骨架、內部連結、RAG 錨點密度、佔位符殘留。\n\n## 前置需求\n\n- `python3`（標準函式庫即可，無需額外安裝）\n- JSONL 格式的 RAG 源文件（每行一個 JSON 物件）\n- Claude Code CLI\n\n## 電子書 → JSONL 轉換工具\n\n### 萬用（推薦）：any_to_jsonl.py\n\n透過 [markitdown](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fmarkitdown) 支援幾乎所有格式：\n\n```bash\npip install markitdown\n\npython3 any_to_jsonl.py 你的書.pdf          # PDF\npython3 any_to_jsonl.py 你的書.epub         # EPUB\npython3 any_to_jsonl.py 你的書.docx         # Word\npython3 any_to_jsonl.py 你的書.pptx         # PowerPoint\npython3 any_to_jsonl.py 你的書.html         # HTML\npython3 any_to_jsonl.py 你的書.pdf --chunk-size 800\npython3 any_to_jsonl.py 你的書.pdf --heading-level 2   # 手動指定 H2 分章\n```\n\n| 功能 | 說明 |\n|---|---|\n| 自動偵測章節 | 從 H1 往下找，第一個出現 ≥ 2 次的標題層級即為章節邊界 |\n| Markdown 清理 | 移除語法符號、程式碼區塊、圖片語法，保留純文字 |\n| 無標題 fallback | 整份文件作為單一 item 切塊 |\n\n### PDF 專用（有文字層）：pdf_to_jsonl.py\n\n```bash\npip install pymupdf\n\npython3 pdf_to_jsonl.py 紫微攻略.pdf\npython3 pdf_to_jsonl.py 紫微攻略.pdf ~\u002FpaidRag\u002F紫微攻略.jsonl\npython3 pdf_to_jsonl.py 紫微攻略.pdf --chunk-size 800\npython3 pdf_to_jsonl.py 紫微攻略.pdf --no-toc   # TOC 不完整時，每頁一個 item\n```\n\n| 功能 | 說明 |\n|---|---|\n| TOC 書籤 | 自動用 PDF 書籤分章，書籤第一章前的頁面歸入「前言 \u002F 版權頁」 |\n| Header\u002FFooter 偵測 | 分析前 30 頁，過濾重複出現的頁首\u002F頁尾（書名行、頁碼）|\n| 無書籤 fallback | 自動改為每頁一個 item |\n\n### 掃描版 PDF（無文字層）：pdf_ocr_to_jsonl.py\n\n對純圖像 PDF（如手機拍攝、掃描書籍）使用 Claude 視覺模型逐頁 OCR：\n\n```bash\npip install pymupdf anthropic\nexport ANTHROPIC_API_KEY=sk-ant-...\n\n# 先估算費用（不執行）\npython3 pdf_ocr_to_jsonl.py 你的書.pdf --dry-run\n\n# 正式執行\npython3 pdf_ocr_to_jsonl.py 你的書.pdf\npython3 pdf_ocr_to_jsonl.py 你的書.pdf 輸出路徑.jsonl\npython3 pdf_ocr_to_jsonl.py 你的書.pdf --dpi 100        # 提高解析度（更準確但較貴）\npython3 pdf_ocr_to_jsonl.py 你的書.pdf --pages 1-10     # 先測試前 10 頁\npython3 pdf_ocr_to_jsonl.py 你的書.pdf --resume         # 從中斷點繼續\npython3 pdf_ocr_to_jsonl.py 你的書.pdf --model claude-sonnet-4-6  # 更高品質\n```\n\n| 功能 | 說明 |\n|---|---|\n| 費用估算 | `--dry-run` 預先估算 API 費用，再決定是否執行 |\n| 斷點續跑 | `--resume` 從中斷點繼續，進度自動存入 `.progress.json` |\n| 空白頁跳過 | 自動偵測並跳過封面\u002F空白頁，節省 API 費用 |\n| 章節偵測 | 模型辨識章節標題頁，自動分 item |\n| 費用追蹤 | 每頁顯示累計費用（使用 API 回傳的實際 token 數） |\n\n**費用參考**（419 頁掃描書，claude-haiku-4-5，72 DPI）：\n\n| DPI | 圖片尺寸 | 估算總費用 |\n|---|---|---|\n| 72 DPI | 612×792px | ≈ USD $3–5 |\n| 100 DPI | 850×1100px | ≈ USD $6–10 |\n\n> 實際費用視頁面複雜度與文字量而定；`--dry-run` 可先估算。\n\n### EPUB\n\nEPUB 電子書可用 `epub_to_jsonl.py` 直接轉成相容格式：\n\n```bash\n# 安裝依賴\npip install ebooklib beautifulsoup4\n\n# 轉換\npython3 epub_to_jsonl.py 紫微攻略.epub\n# → 輸出 紫微攻略.jsonl\n\n# 指定輸出路徑\npython3 epub_to_jsonl.py 紫微攻略.epub ~\u002FpaidRag\u002F紫微攻略.jsonl\n\n# 調整 chunk 大小（預設 500 字元）\npython3 epub_to_jsonl.py 紫微攻略.epub --chunk-size 800\n```\n\n輸出格式：\n\n```json\n{\"loc\": {\"item_index\": 0, \"chunk_index\": 0}, \"chapter\": \"第一章：命宮\", \"text\": \"...\"}\n{\"loc\": {\"item_index\": 0, \"chunk_index\": 1}, \"chapter\": \"第一章：命宮\", \"text\": \"...\"}\n{\"loc\": {\"item_index\": 1, \"chunk_index\": 0}, \"chapter\": \"第二章：財帛宮\", \"text\": \"...\"}\n```\n\n轉換完成後，直接用 `rag-to-skill` 建立 skill：在 Claude Code 輸入「把 xxx.jsonl 做成 skill」即可。\n\n## 進階：掃描版 PDF 的 Claude Code Skill（\u002Fpdf-ocr）\n\n`pdf_ocr_to_jsonl.py` 需要另外呼叫 Anthropic API（有費用）。若想用 **Claude Code CLI 本身的視覺能力** 做 OCR（消耗 session token，無額外費用），可安裝 `\u002Fpdf-ocr` skill：\n\n```bash\ncp -r pdf-ocr-skill ~\u002F.claude\u002Fskills\u002Fpdf-ocr\n```\n\n安裝後在 Claude Code 輸入：\n\n```\n\u002Fpdf-ocr \u002Fpath\u002Fto\u002F掃描書.pdf\n```\n\n| 功能 | 說明 |\n|---|---|\n| 無額外費用 | 使用 Claude Code session token，非獨立 API 呼叫 |\n| 分批處理 | 每次 30 頁，避免 context 超限 |\n| 斷點續跑 | `\u002Fpdf-ocr \u003Cpdf> --resume` 從中斷點繼續 |\n| 章節偵測 | Claude 自動辨識章節標題頁，分 item |\n\n兩種方案比較：\n\n| | `pdf_ocr_to_jsonl.py` | `\u002Fpdf-ocr` skill |\n|---|---|---|\n| 費用 | 額外 API 費（≈ $3–10 \u002F 書） | 無額外費用 |\n| 速度 | 快（平行可跑） | 較慢（逐頁讀取） |\n| 適合 | 批次處理、自動化 | 單書 OCR、省錢 |\n\n## 授權\n\nMIT\n","该项目用于将JSONL格式的RAG源文件转换为结构完整、可验证和可分享的Claude Code Skill。其核心功能包括通过七个阶段的工作流程（扫描、规划、骨架生成、内容填充、锚点标注、验证稽核和交付）确保每个JSONL实体都有对应的参考，每个断言都有RAG锚点，保证100%完成度且无AI编造。项目内置了validate.py工具，能够执行五项自动检查以确保Skill的质量。适用于需要从电子书或其他文档快速创建高质量Claude Code Skills的场景，支持多种输入格式如PDF、EPUB等，并要求用户具备Python3环境及Claude Code CLI。",2,"2026-06-11 03:59:00","CREATED_QUERY"]