twhsi/auto-luhmann-numberer
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 into public examples, or prepare card IDs for EPUB and HyperCard output.
npx skills add https://github.com/twhsi/skills --skill auto-luhmann-numberer
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:
{
"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:
{
"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.Take twhsi/auto-luhmann-numberer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.