About taxonomy-builder
taxonomy-builder generates a reader-oriented topic structure for surveys or snapshots from a core paper set. It can load curated domain packs when the stated project intent matches, or use a generic builder otherwise.
Key features
- 01Builds a taxonomy from core papers
- 02Supports curated packs for four domains
- 03Falls back to a generic builder
- 04Preserves existing non-placeholder taxonomies
Use cases
- 01Structuring a survey before drafting prose
- 02Organizing a paper corpus into described topics
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ willoscar/ research-units-pipeline-skills --skill taxonomy-builderAfter installing, type/taxonomy-builderin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
assets/taxonomy_schema.jsonassets/domain_packs/embodied_ai.yamlgen_image.yamlllm_agents.yamlrag_evaluation.yamlreferences/archetypes_generic.mddomain_pack_embodied_ai.mddomain_pack_gen_image.mddomain_pack_llm_agents.mdexamples_bad.mdexamples_good.mdoverview.mdtaxonomy_principles.mdscripts/run.pyDetails
From the project READMETaxonomy Builder (router, compatibility mode)
Triggers & routing
- Trigger: taxonomy, taxonomy builder, 分类, 主题树, taxonomy.yml.
- Use when: survey/snapshot 的结构阶段(NO PROSE),已有
papers/core_set.csv,需要生成可映射且读者友好的主题结构。 - Skip if: 已经有批准过且可映射的 taxonomy(不要无意义重构)。
- Network: none.
- Guardrail: 避免泛化占位桶;保持 2+ 层且每节点有具体描述。
Build outline/taxonomy.yml from papers/core_set.csv.
P0 compatibility note:
- The output contract stays the same (
outline/taxonomy.yml, YAML list, >=2 levels, concrete descriptions). - Curated domain taxonomies now live in
assets/domain_packs/*.yamlinstead of Python prose. scripts/run.pystays a deterministic scaffold/helper: detect domain pack -> load pack when available -> otherwise fall back to the generic builder.
Load Order
references/overview.mdreferences/taxonomy_principles.md- If a domain pack applies, read its
references/domain_pack_<domain>.mdandassets/domain_packs/<domain>.yaml - Otherwise read
references/archetypes_generic.md - Calibrate naming/description quality with
references/examples_good.mdandreferences/examples_bad.md
Current compatibility packs:
llm_agentsgen_imageembodied_airag_evaluation
Explicit refinement marker
Create outline/taxonomy.refined.ok only after reviewing a manually refined taxonomy. The marker is honored only while it is newer than the taxonomy, its upstream evidence, and the generator; stale markers are removed and the prior taxonomy is backed up before regeneration.
Inputs
papers/core_set.csv(required)- Optional:
papers/papers_dedup.jsonl - Optional:
DECISIONS.md,GOAL.md,queries.md
Outputs
outline/taxonomy.yml
Asset contract
assets/taxonomy_schema.json: machine-readable shape for domain packs / output expectationsassets/domain_packs/*.yaml: compatibility domain packs for supported domains
Script role
Use scripts/run.py only for deterministic help:
- never overwrite non-placeholder user taxonomy
- preserve current CLI flags / output path
- load a supported domain taxonomy only when
GOAL.md/queries.mdexplicitly match its detection contract - keep the generic fallback builder for non-packed domains
When to refine manually
Refine the generated taxonomy before marking the unit DONE if:
- top-level buckets feel like keyword clusters instead of chapter-level questions
- leaf names are generic (
Overview,Benchmarks,Open Problems,Misc) - descriptions lack scope cues or representative paper anchors
- domain detection chose the wrong pack
Quick start
uv run python .codex/skills/taxonomy-builder/scripts/run.py --helpuv run python .codex/skills/taxonomy-builder/scripts/run.py --workspace <workspace>
Execution notes
When running in compatibility mode, scripts/run.py currently reads:
papers/core_set.csvas the required corpus inputpapers/papers_dedup.jsonlwhen present for generic corpus signalsGOAL.mdandqueries.mdas the authoritative domain-pack selection intent; corpus term co-occurrence cannot override them
Script
Quick Start
uv run python .codex/skills/taxonomy-builder/scripts/run.py --workspace <workspace>
All Options
--workspace <dir>--top-k <int>--min-freq <int>--unit-id <id>--inputs <a;b;...>--outputs <a;b;...>--checkpoint <C*>
Examples
uv run python .codex/skills/taxonomy-builder/scripts/run.py --workspace <workspace>
Troubleshooting
- If the wrong domain pack is chosen, inspect
GOAL.md,queries.md, and the packdetectrules before changing Python. - If
outline/taxonomy.ymlalready contains a real non-placeholder taxonomy, the script intentionally returns without overwriting it. - If no pack matches, the script falls back to the generic builder.