Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Convert FIRE analysis cards, Chinese knowledge notes, or project-note JSON into validated EPUB books with directory cards, chapter cards, keyword index cards, backlinks, and GitHub-shareable ebook assets. Use when Codex needs to teach or automate the path from `fire-analysis-card` outputs to `project-note-json-to-epub` style EPUB files, including sample JSON manuscripts and attached `.epub` deliverables.
.claude/skills/twhsi-fire-card-to-epub/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 7% | 0% |
Turn FIRE analysis cards into a small validated EPUB book.
Use this skill when the user asks:
FIRE 卡片變成電子書把分析卡做成 EPUB教我怎麼從 FIRE 到電子書上傳 GitHub 成為技能,附上電子書檔案把 Obsidian 知識卡整理成 EPUBThis skill bridges two workflows:
| Source Skill | Role | |---|---| | fire-analysis-card | Analyze article/note material into Fact, Index, Relation, Encyclopedia | | project-note-json-to-epub | Package structured notes into EPUB with TOC, index, links, and validation |
code, title, body, keywords, and optional fire_card.assets/fire-to-epub-tutorial.json as the starting schema.title, creator, language, chunks.subtitle, index, orthogonal_check.bashpython3 scripts/fire_cards_to_epub.py assets/fire-to-epub-tutorial.json --out assets/fire-to-epub-tutorial.epub --download-copy assets/download.epub
errors: 0.SKILL.md, scripts/fire_cards_to_epub.py, the sample JSON, and the sample EPUB.assets/ so users can download or inspect it from GitHub.Minimal manuscript:
json{ "title": "FIRE 卡片變成電子書", "creator": "Codex", "language": "zh-Hant", "chunks": [ { "code": "1.1", "title": "FIRE 先成卡", "body": "正文內容。", "keywords": ["FIRE", "知識卡"], "fire_card": "可選:固定寬度 FIRE 卡文字" } ] }
Recommended manuscript:
json{ "title": "FIRE 卡片變成電子書", "subtitle": "從分析卡到 EPUB 的最小流程", "creator": "Codex", "language": "zh-Hant", "chunks": [ { "code": "1.1", "title": "FIRE 先成卡", "body": "先把文章壓成穩定知識卡,再進入電子書結構。", "keywords": ["FIRE", "知識卡", "Fact"] } ], "index": [ {"id": "K001", "keyword": "FIRE", "weight": 100} ], "orthogonal_check": { "ok": true, "axes": { "analysis_axis": "Fact、Index、Relation、Encyclopedia", "book_axis": "TOC、正文、索引、驗證" } } }
If index is missing, the script derives it from chunks[].keywords.
The generator writes:
| EPUB File | Purpose | |---|---| | mimetype | EPUB signature, first and uncompressed | | META-INF/container.xml | Rootfile pointer | | OEBPS/content.opf | Metadata, manifest, spine | | OEBPS/nav.xhtml | EPUB navigation | | OEBPS/Text/toc.xhtml | Directory card | | OEBPS/Text/part001.xhtml | Chapter/card pages | | OEBPS/Text/index.xhtml | Keyword index cards | | OEBPS/Styles/style.css | Readable style |
Before delivery, report:
texterrors: 0 title: ... all_href_count: ... index_forward_links_tested: ... body_return_links_tested: ... index_entries: ... true_body_cjk_count: ... file type: EPUB document
If errors is not 0, fix the JSON or generator and rebuild.
Explain the workflow to the user like this:
fire-analysis-card 把文章變成穩定知識卡。chunks[]。keywords 建立 K001、K002 等索引卡。errors: 0。assets/.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 25,650 | 29,851 | +16% | 1 | 1 | 0% | 4,291 | 7,491 | +75% | 0 | 0 | — |
case-02 | fail→pass | 22,009 | 23,342 | +6% | 1 | 1 | 0% | 3,485 | 5,004 | +44% | 0 | 0 | — |
case-03 | fail→pass | 26,250 | 30,235 | +15% | 1 | 1 | 0% | 4,936 | 7,145 | +45% | 0 | 0 | — |
case-04 | pass→pass | 13,701 | 11,046 | -19% | 1 | 1 | 0% | 2,222 | 2,933 | +32% | 0 | 0 | — |
case-05 | pass→pass | 10,706 | 7,583 | -29% | 1 | 1 | 0% | 1,743 | 2,606 | +50% | 0 | 0 | — |
case-06 | pass→pass | 10,427 | 8,315 | -20% | 1 | 1 | 0% | 1,605 | 2,620 | +63% | 0 | 0 | — |
case-07 | fail→pass | 8,246 | 2,177 | -74% | 1 | 1 | 0% | 1,312 | 1,679 | +28% | 0 | 0 | — |
case-08 | fail→pass | 8,860 | 3,804 | -57% | 1 | 1 | 0% | 1,337 | 1,943 | +45% | 0 | 0 | — |
case-09 | fail→pass | 9,741 | 2,469 | -75% | 1 | 1 | 0% | 1,587 | 1,696 | +7% | 0 | 0 | — |
case-10 | fail→pass | 9,638 | 2,871 | -70% | 1 | 1 | 0% | 1,527 | 1,705 | +12% | 0 | 0 | — |
case-15 | fail→pass | 10,776 | 5,638 | -48% | 1 | 1 | 0% | 1,619 | 2,052 | +27% | 0 | 0 | — |
case-11 | pass→pass | 11,245 | 4,608 | -59% | 1 | 1 | 0% | 1,675 | 2,016 | +20% | 0 | 0 | — |
case-12 | pass→pass | 9,438 | 1,777 | -81% | 1 | 1 | 0% | 659 | 1,543 | +134% | 0 | 0 | — |
case-13 | fail→pass | 15,052 | 4,003 | -73% | 1 | 1 | 0% | 2,256 | 1,884 | -16% | 0 | 0 | — |
case-14 | fail→pass | 10,301 | 3,605 | -65% | 1 | 1 | 0% | 1,645 | 1,865 | +13% | 0 | 0 | — |
case-16 | pass→pass | 9,114 | 2,868 | -69% | 1 | 1 | 0% | 1,410 | 1,653 | +17% | 0 | 0 | — |
case-17 | fail→pass | 7,417 | 1,843 | -75% | 1 | 1 | 0% | 1,070 | 1,587 | +48% | 0 | 0 | — |
case-18 | fail→pass | 13,331 | 2,203 | -83% | 1 | 1 | 0% | 1,921 | 1,637 | -15% | 0 | 0 | — |
case-19 | pass→pass | 2,949 | 1,390 | -53% | 1 | 1 | 0% | 418 | 1,449 | +247% | 0 | 0 | — |
case-20 | fail→pass | 9,036 | 3,765 | -58% | 1 | 1 | 0% | 1,342 | 1,890 | +41% | 0 | 0 | — |
case-21 | pass→pass | 16,617 | 9,135 | -45% | 1 | 1 | 0% | 2,463 | 2,724 | +11% | 0 | 0 | — |
case-22 | fail→pass | 13,189 | 4,820 | -63% | 1 | 1 | 0% | 2,170 | 2,144 | -1% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +59 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.