Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Assign, validate, normalize, and explain Luhmann/Zettelkasten-style project-note codes for Chinese book manuscripts, Obsidian Markdown folders, Mandala-Grid section files, HyperCard Markdown stacks, and project-note JSON to EPUB workflows. Use when Codex needs to scan folders for 部/章/節/項/目 numbering, generate stable card ids, insert branch codes without renumbering existing notes, map letter-coded branches to Obsidian Mandala sections, preserve K### keyword index cards, sanitize private catalogs
.claude/skills/twhsi-auto-luhmann-numberer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 382% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 61% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -21% | 0% |
Use this skill to manage stable writing-system addresses for book manuscripts and card boxes. Prefer the active book outline as the topic-number seed, then let Luhmann-style branches grow inside the outline without renumbering existing notes. When publishing the skill or sharing outputs, reduce real catalogs to a small public example.
Use four separate namespaces:
book_topic_code: pure numeric book addresses, at most five levels: 部、章、節、項、目. Examples: 1, 1.1, 1.1.3, 1.1.3.2.1.luhmann_branch_code: letter or mixed suffixes that grow from a book address. Examples: 1.1.a, 1.1.E, 1.1.c3b, 1.1.d.1.mandala_section_code: local Obsidian Mandala-Grid section comments inside one Markdown file. Examples: <!--section: 1-->, <!--section: 1.7-->, <!--section: 1.8.8-->.keyword_index_code: index-card ids such as K001, kept separate from topic codes.Never merge these namespaces. A K001 card is not a chapter. A local section: 1.7 is not the book's 1.7 chapter unless the source explicitly says so.
Read references/public-numbering-rules.json when you need the numbering taste, output schema, public-case policy, or Mandala section shape. The bundled example is intentionally minimal and safe to publish.
Important defaults:
1.1.a to 1.1.g for lateral inserts under a chapter.1.1.c1, 1.1.c3a, and 1.1.c3b when they already exist.mandala: true or <!--section: ...--> markers as Mandala containers.scripts/extract_book_codes.mjs <folder> to scan Markdown/TXT/JSON files and write a relative-path catalog.code, title, kind, source_path, depth, and any off_prefix_codes.部/章/節/項/目 by dot depth.luhmann_branch.K###: keyword_index.<!--section: ...-->: local Mandala section.1.1.E|1.7.K###.For a folder scan, produce both human and machine output when useful:
json{ "summary": { "chapters": ["1.1"], "missing": [], "warnings": [] }, "catalog": [ { "code": "1.1.3", "title": "努力:先吃青蛙", "kind": "節", "source_path": "examples/1.1-fast-day-plan.md" } ] }
For a single new card, return:
json{ "assigned_code": "1.1.E|1.7", "code_kind": "mandala_section", "parent_code": "1.1.E", "section_code": "1.7", "reason": "The note belongs inside the existing Mandala branch file for non-linear numbering.", "warnings": [] }
Before making a repository public, remove or replace:
Keep only references/book-chapter-card-catalog.* as a public FAST day-plan example unless the user asks for a private build.
references/public-numbering-rules.json: namespace rules, public-case policy, and example output contract.references/book-chapter-card-catalog.json: public example catalog for 1.1 FAST 日計劃.references/book-chapter-card-catalog.md: human-readable public example catalog.scripts/extract_book_codes.mjs: scan a supplied folder and regenerate a relative-path catalog.scripts/validate_luhmann_catalog.py: validate catalog JSON for duplicates, depth, malformed Mandala sections, and off-prefix codes.scripts/build_skill_guide_epub.py: build the teaching EPUB in assets/.assets/自動魯曼編號機_使用手冊_公開版_2026-06-17_03.epub: public teaching ebook.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-07 | fail→fail | 17,692 | 8,680 | -51% | 1 | 1 | 0% | 2,624 | 2,914 | +11% | 0 | 0 | — |
case-01 | fail→fail | 15,865 | 11,936 | -25% | 1 | 1 | 0% | 3,383 | 3,257 | -4% | 0 | 0 | — |
case-02 | fail→pass | 3,545 | 8,107 | +129% | 1 | 1 | 0% | 637 | 3,072 | +382% | 0 | 0 | — |
case-03 | fail→pass | 11,338 | 6,914 | -39% | 1 | 1 | 0% | 1,792 | 2,881 | +61% | 0 | 0 | — |
case-04 | pass→pass | 14,459 | 9,704 | -33% | 1 | 1 | 0% | 2,298 | 3,173 | +38% | 0 | 0 | — |
case-05 | fail→pass | 11,395 | 3,443 | -70% | 1 | 1 | 0% | 2,074 | 2,196 | +6% | 0 | 0 | — |
case-06 | pass→pass | 6,653 | 9,156 | +38% | 1 | 1 | 0% | 1,142 | 2,980 | +161% | 0 | 0 | — |
case-08 | fail→pass | 9,120 | 3,188 | -65% | 1 | 1 | 0% | 1,573 | 2,059 | +31% | 0 | 0 | — |
case-09 | fail→pass | 13,801 | 2,927 | -79% | 1 | 1 | 0% | 2,525 | 1,992 | -21% | 0 | 0 | — |
case-10 | fail→pass | 13,287 | 3,731 | -72% | 1 | 1 | 0% | 2,535 | 2,318 | -9% | 0 | 0 | — |
case-11 | fail→pass | 11,687 | 6,837 | -41% | 1 | 1 | 0% | 1,838 | 2,702 | +47% | 0 | 0 | — |
case-12 | fail→pass | 5,416 | 3,695 | -32% | 1 | 1 | 0% | 777 | 2,246 | +189% | 0 | 0 | — |
case-13 | fail→pass | 7,536 | 2,691 | -64% | 1 | 1 | 0% | 1,326 | 1,943 | +47% | 0 | 0 | — |
case-14 | fail→pass | 21,660 | 3,890 | -82% | 1 | 1 | 0% | 3,603 | 2,207 | -39% | 0 | 0 | — |
case-15 | fail→pass | 17,975 | 3,224 | -82% | 1 | 1 | 0% | 2,739 | 2,154 | -21% | 0 | 0 | — |
case-16 | fail→pass | 11,642 | 3,214 | -72% | 1 | 1 | 0% | 1,799 | 2,078 | +16% | 0 | 0 | — |
case-17 | fail→pass | 16,659 | 8,552 | -49% | 1 | 1 | 0% | 2,490 | 2,958 | +19% | 0 | 0 | — |
case-18 | fail→pass | 9,292 | 1,746 | -81% | 1 | 1 | 0% | 1,315 | 1,767 | +34% | 0 | 0 | — |
case-19 | fail→pass | 11,267 | 3,690 | -67% | 1 | 1 | 0% | 1,743 | 2,186 | +25% | 0 | 0 | — |
case-20 | fail→pass | 11,244 | 2,764 | -75% | 1 | 1 | 0% | 1,989 | 2,059 | +4% | 0 | 0 | — |
case-21 | pass→pass | 3,299 | 2,557 | -22% | 1 | 1 | 0% | 550 | 1,945 | +254% | 0 | 0 | — |
case-22 | pass→pass | 7,533 | 6,364 | -16% | 1 | 1 | 0% | 1,277 | 2,627 | +106% | 0 | 0 | — |
case-23 | pass→pass | 7,714 | 5,910 | -23% | 1 | 1 | 0% | 1,238 | 2,491 | +101% | 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. 23 cases were attempted. The headline lift of +70 percentage points is the difference between those two pass rates over the 23 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.