[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EC07V7DXMCFQJ58BAX5Q6T":3,"skill-same:01M6EC07V7DXMCFQJ58BAX5Q6T":96},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6EC07V7DXMCFQJ58BAX5Q6T","minecraft-world-generation",null,"Create custom world generation content for Minecraft 1.21.x including custom biomes, dimensions, noise settings, surface rules, placed\u002Fconfigured features, carvers, structure sets, and biome modifiers. Covers both the datapack-only approach (JSON worldgen files) and the mod-code approach (NeoForge BiomeModifiers, Fabric BiomeModification API, code-driven worldgen registration with DeferredRegister). Includes the full JSON schema for biome files, noise_settings overrides, placed_feature, configured_feature, structure, structure_set, and processor_list files. Targets Minecraft 1.21.x with official Mojang mappings.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FJahrome907\u002Fminecraft-codex-skills\u002Fminecraft-world-generation\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"minecraft world generation","generation","minecraft","world","files","biome","feature","full","structure","dimensions","registration","official","only","list","api","SET","processor","code","create","json schema","2026-11-10 10:12:30",false,"---\nname: minecraft-world-generation\ndescription: >\n  Create custom world generation content for Minecraft 1.21.x including custom biomes,\n  dimensions, noise settings, surface rules, placed\u002Fconfigured features, carvers,\n  structure sets, and biome modifiers. Covers both the datapack-only approach (JSON\n  worldgen files) and the mod-code approach (NeoForge BiomeModifiers, Fabric BiomeModification\n  API, code-driven worldgen registration with DeferredRegister). Includes the full JSON\n  schema for biome files, noise_settings overrides, placed_feature, configured_feature,\n  structure, structure_set, and processor_list files. Targets Minecraft 1.21.x with\n  official Mojang mappings.\n---\n\n# Minecraft World Generation Skill\n\n## Two Approaches to Custom Worldgen\n\n| Approach | Best When | Platform |\n|----------|-----------|----------|\n| **Datapack JSON** | Overriding\u002Fextending vanilla worldgen | Vanilla, any server |\n| **Mod + Datagen** | Registering new biomes\u002Fdimensions, code-driven | NeoForge \u002F Fabric |\n| **Biome Modifier (NeoForge)** | Adding features\u002Fspawns to existing biomes | NeoForge |\n| **BiomeModification API (Fabric)** | Adding features\u002Fspawns to existing biomes | Fabric |\n\n### Routing Boundaries\n- `Use when`: the task is biome\u002Fdimension\u002Ffeature\u002Fstructure worldgen design or registration.\n- `Do not use when`: the task is general non-worldgen datapack work (recipes, advancements, predicates, function orchestration) (`minecraft-datapack`).\n- `Do not use when`: the task is non-worldgen mod systems (items, entities, GUI, gameplay logic) (`minecraft-modding`).\n\n---\n\n## Directory Layout (Datapack \u002F Mod Resources)\n\n```\ndata\u002F\u003Cnamespace>\u002F\n├── worldgen\u002F\n│   ├── biome\u002F\n│   │   └── my_biome.json\n│   ├── configured_feature\u002F\n│   │   └── my_ore.json\n│   ├── placed_feature\u002F\n│   │   └── my_ore_placed.json\n│   ├── noise_settings\u002F\n│   │   └── my_dimension_noise.json\n│   ├── density_function\u002F\n│   │   └── my_density.json    (advanced)\n│   ├── structure\u002F\n│   │   └── my_structure.json\n│   ├── structure_set\u002F\n│   │   └── my_structures.json\n│   ├── processor_list\u002F\n│   │   └── my_processors.json\n│   ├── template_pool\u002F\n│   │   └── my_pool.json\n│   └── carver\u002F\n│       └── my_carver.json\n├── dimension\u002F\n│   └── my_dimension.json\n├── dimension_type\u002F\n│   └── my_type.json\n├── tags\u002F\n│   └── worldgen\u002F\n│       └── biome\u002F\n│           └── is_forest.json\n└── neoforge\u002F\n    └── biome_modifier\u002F      (NeoForge mod only)\n        └── add_ores.json\n```\n\n---\n\n## Custom Biome JSON\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fbiome\u002Fmy_biome.json`\n```json\n{\n  \"has_precipitation\": true,\n  \"temperature\": 0.7,\n  \"temperature_modifier\": \"none\",\n  \"downfall\": 0.8,\n  \"effects\": {\n    \"sky_color\": 7907327,\n    \"fog_color\": 12638463,\n    \"water_color\": 4159204,\n    \"water_fog_color\": 329011,\n    \"grass_color_modifier\": \"none\",\n    \"ambient_sound\": \"minecraft:ambient.cave\",\n    \"mood_sound\": {\n      \"sound\": \"minecraft:ambient.cave\",\n      \"tick_delay\": 6000,\n      \"block_search_extent\": 8,\n      \"offset\": 2.0\n    }\n  },\n  \"spawners\": {\n    \"monster\": [\n      { \"type\": \"minecraft:zombie\", \"weight\": 95, \"minCount\": 4, \"maxCount\": 4 },\n      { \"type\": \"minecraft:skeleton\", \"weight\": 100, \"minCount\": 4, \"maxCount\": 4 }\n    ],\n    \"creature\": [\n      { \"type\": \"minecraft:sheep\", \"weight\": 12, \"minCount\": 4, \"maxCount\": 4 }\n    ],\n    \"ambient\": [],\n    \"axolotls\": [],\n    \"underground_water_creature\": [],\n    \"water_creature\": [],\n    \"water_ambient\": [],\n    \"misc\": []\n  },\n  \"spawn_costs\": {},\n  \"carvers\": {\n    \"air\": [\"minecraft:cave\", \"minecraft:cave_extra_underground\", \"minecraft:canyon\"]\n  },\n  \"features\": [\n    [],\n    [],\n    [\"minecraft:lake_lava_underground\", \"minecraft:lake_lava_surface\"],\n    [\"minecraft:amethyst_geode\", \"minecraft:monster_room\"],\n    [],\n    [],\n    [\n      \"minecraft:ore_dirt\", \"minecraft:ore_gravel\", \"minecraft:ore_granite_upper\",\n      \"minecraft:ore_coal_upper\", \"minecraft:ore_coal_lower\",\n      \"\u003Cnamespace>:my_ore_placed\"\n    ],\n    [],\n    [\"minecraft:spring_lava\"],\n    [],\n    [\"minecraft:freeze_top_layer\"]\n  ]\n}\n```\n\n> The `features` array has exactly 11 slots (indices 0–10), one per `GenerationStep.Decoration`:\n>\n> | Index | Step | Put here |\n> |-------|------|---------|\n> | 0 | `RAW_GENERATION` | (rarely used) |\n> | 1 | `LAKES` | Surface water\u002Flava lakes |\n> | 2 | `LOCAL_MODIFICATIONS` | Underground lava lakes, geodes |\n> | 3 | `UNDERGROUND_STRUCTURES` | Amethyst geodes, dungeons |\n> | 4 | `SURFACE_STRUCTURES` | Glaciers, blue ice patches |\n> | 5 | `STRONGHOLDS` | (unused in biome JSON) |\n> | 6 | `UNDERGROUND_ORES` | **All ores go here** |\n> | 7 | `UNDERGROUND_DECORATION` | Fossils, infested stone |\n> | 8 | `FLUID_SPRINGS` | `spring_water`, `spring_lava` |\n> | 9 | `VEGETAL_DECORATION` | Trees, grass, flowers |\n> | 10 | `TOP_LAYER_MODIFICATION` | `freeze_top_layer` |\n>\n> Custom ores added via placed features must be placed at index **6**.\n\n---\n\n## Configured Feature\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fconfigured_feature\u002Fmy_ore.json`\n```json\n{\n  \"type\": \"minecraft:ore\",\n  \"config\": {\n    \"targets\": [\n      {\n        \"target\": {\n          \"predicate_type\": \"minecraft:tag_match\",\n          \"tag\": \"minecraft:stone_ore_replaceables\"\n        },\n        \"state\": {\n          \"Name\": \"minecraft:emerald_ore\"\n        }\n      }\n    ],\n    \"size\": 4,\n    \"discard_chance_on_air_exposure\": 0.0\n  }\n}\n```\n\n### Other feature types\n| Type | Use |\n|------|-----|\n| `minecraft:ore` | Ore veins |\n| `minecraft:tree` | Tree placement |\n| `minecraft:random_patch` | Grass, flowers, mushrooms |\n| `minecraft:block_pile` | Hay bales, pumpkins |\n| `minecraft:lake` | Water\u002Flava lakes |\n| `minecraft:disk` | Sand\u002Fgravel\u002Fclay disks |\n| `minecraft:no_bonemeal_flower` | Wither roses, etc. |\n| `minecraft:simple_block` | Single block placement |\n| `minecraft:fill_layer` | Fill an entire layer |\n| `minecraft:geode` | Amethyst geodes |\n| `minecraft:decorated` | Wraps another feature with placement |\n\n---\n\n## Placed Feature\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fplaced_feature\u002Fmy_ore_placed.json`\n```json\n{\n  \"feature\": \"\u003Cnamespace>:my_ore\",\n  \"placement\": [\n    {\n      \"type\": \"minecraft:count\",\n      \"count\": 8\n    },\n    {\n      \"type\": \"minecraft:in_square\"\n    },\n    {\n      \"type\": \"minecraft:height_range\",\n      \"height\": {\n        \"type\": \"minecraft:trapezoid\",\n        \"min_inclusive\": { \"above_bottom\": 0 },\n        \"max_inclusive\": { \"absolute\": 64 }\n      }\n    },\n    {\n      \"type\": \"minecraft:biome\"\n    }\n  ]\n}\n```\n\n### Common placement modifiers\n| Type | Effect |\n|------|--------|\n| `minecraft:count` | Number of attempts |\n| `minecraft:count_on_every_layer` | Per layer |\n| `minecraft:in_square` | Randomize X\u002FZ within chunk |\n| `minecraft:biome` | Only place if biome has this feature |\n| `minecraft:height_range` | Y-level range |\n| `minecraft:surface_relative_threshold_filter` | Filter by surface depth |\n| `minecraft:noise_based_count` | Count varies with noise |\n| `minecraft:rarity_filter` | 1-in-N chance |\n| `minecraft:environment_scan` | Scans up\u002Fdown for a condition |\n\n---\n\n## Dimension Type\n\n### `data\u002F\u003Cnamespace>\u002Fdimension_type\u002Fmy_type.json`\n```json\n{\n  \"ultrawarm\": false,\n  \"natural\": true,\n  \"coordinate_scale\": 1.0,\n  \"has_skylight\": true,\n  \"has_ceiling\": false,\n  \"ambient_light\": 0.0,\n  \"fixed_time\": false,\n  \"monster_spawn_light_level\": {\n    \"type\": \"minecraft:uniform\",\n    \"min_inclusive\": 0,\n    \"max_inclusive\": 7\n  },\n  \"monster_spawn_block_light_limit\": 0,\n  \"piglin_safe\": false,\n  \"bed_works\": true,\n  \"respawn_anchor_works\": false,\n  \"has_raids\": true,\n  \"logical_height\": 384,\n  \"height\": 384,\n  \"min_y\": -64,\n  \"infiniburn\": \"#minecraft:infiniburn_overworld\",\n  \"effects\": \"minecraft:overworld\"\n}\n```\n\n---\n\n## Custom Dimension\n\n### `data\u002F\u003Cnamespace>\u002Fdimension\u002Fmy_dimension.json`\n```json\n{\n  \"type\": \"\u003Cnamespace>:my_type\",\n  \"generator\": {\n    \"type\": \"minecraft:noise\",\n    \"biome_source\": {\n      \"type\": \"minecraft:fixed\",\n      \"biome\": \"\u003Cnamespace>:my_biome\"\n    },\n    \"settings\": \"minecraft:overworld\"\n  }\n}\n```\n\n### Multi-biome dimension with `minecraft:multi_noise` source\n```json\n{\n  \"type\": \"\u003Cnamespace>:my_type\",\n  \"generator\": {\n    \"type\": \"minecraft:noise\",\n    \"biome_source\": {\n      \"type\": \"minecraft:multi_noise\",\n      \"biomes\": [\n        {\n          \"parameters\": {\n            \"temperature\": [ -1.0, -0.45 ],\n            \"humidity\":    [ -1.0, -0.35 ],\n            \"continentalness\": [ -1.2, -1.05 ],\n            \"erosion\":     [ -0.78, 0.0 ],\n            \"weirdness\":   [ 0.0, 0.0 ],\n            \"depth\":       [ 0.0, 0.0 ],\n            \"offset\":      0.0\n          },\n          \"biome\": \"\u003Cnamespace>:my_biome\"\n        }\n      ]\n    },\n    \"settings\": \"minecraft:overworld\"\n  }\n}\n```\n\n---\n\n## NeoForge: Biome Modifier\n\nBiome Modifiers let you add features, spawns, or carvers to existing biomes without\nreplacing the biome JSON.\n\n### JSON biome modifier (`data\u002F\u003Cnamespace>\u002Fneoforge\u002Fbiome_modifier\u002Fadd_ores.json`)\n```json\n{\n  \"type\": \"neoforge:add_features\",\n  \"biomes\": \"#minecraft:is_overworld\",\n  \"features\": \"\u003Cnamespace>:my_ore_placed\",\n  \"step\": \"underground_ores\"\n}\n```\n\n### Other NeoForge biome modifier types\n```json\n{ \"type\": \"neoforge:add_spawns\", \"biomes\": \"#minecraft:is_forest\",\n  \"spawners\": [{ \"type\": \"minecraft:wolf\", \"weight\": 5, \"minCount\": 2, \"maxCount\": 4 }] }\n\n{ \"type\": \"neoforge:remove_features\", \"biomes\": \"#minecraft:is_plains\",\n  \"features\": \"minecraft:ore_coal_upper\", \"steps\": [\"underground_ores\"] }\n\n{ \"type\": \"neoforge:remove_spawns\", \"biomes\": \"#minecraft:is_ocean\",\n  \"entity_types\": \"#minecraft:skeletons\" }\n```\n\n---\n\n## Fabric: BiomeModification API (Code)\n\n```java\nimport net.fabricmc.fabric.api.biome.v1.BiomeModifications;\nimport net.fabricmc.fabric.api.biome.v1.BiomeSelectors;\nimport net.minecraft.world.level.levelgen.GenerationStep;\n\npublic class MyModWorldgen {\n    public static void init() {\n        \u002F\u002F Add a placed feature to all overworld biomes\n        BiomeModifications.addFeature(\n            BiomeSelectors.foundInOverworld(),\n            GenerationStep.Decoration.UNDERGROUND_ORES,\n            ResourceKey.create(\n                Registries.PLACED_FEATURE,\n                ResourceLocation.fromNamespaceAndPath(MyMod.MOD_ID, \"my_ore_placed\")\n            )\n        );\n\n        \u002F\u002F Add mob spawns\n        BiomeModifications.addSpawn(\n            BiomeSelectors.tag(BiomeTags.IS_FOREST),\n            MobCategory.CREATURE,\n            EntityType.WOLF,\n            5, 2, 4\n        );\n    }\n}\n```\n\n---\n\n## Mod-Registered Worldgen (NeoForge + Fabric via Datagen)\n\n### Register worldgen keys in code\n```java\n\u002F\u002F In a dedicated worldgen registry class\npublic class ModWorldgen {\n    public static final ResourceKey\u003CBiome> MY_BIOME = ResourceKey.create(\n        Registries.BIOME,\n        ResourceLocation.fromNamespaceAndPath(MyMod.MOD_ID, \"my_biome\")\n    );\n\n    public static final ResourceKey\u003CPlacedFeature> MY_ORE_PLACED = ResourceKey.create(\n        Registries.PLACED_FEATURE,\n        ResourceLocation.fromNamespaceAndPath(MyMod.MOD_ID, \"my_ore_placed\")\n    );\n}\n```\n\n### Datagen: NeoForge (`DatapackBuiltinEntriesProvider`)\n\n```java\npublic class ModWorldgenProvider extends DatapackBuiltinEntriesProvider {\n\n    private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder()\n        .add(Registries.CONFIGURED_FEATURE, ModWorldgenProvider::bootstrapConfigured)\n        .add(Registries.PLACED_FEATURE, ModWorldgenProvider::bootstrapPlaced);\n\n    public ModWorldgenProvider(PackOutput output, CompletableFuture\u003CHolderLookup.Provider> registries) {\n        super(output, registries, BUILDER, Set.of(MyMod.MOD_ID));\n    }\n\n    private static void bootstrapConfigured(BootstrapContext\u003CConfiguredFeature\u003C?, ?>> ctx) {\n        ctx.register(\n            ModWorldgen.MY_ORE_CONFIGURED,\n            new ConfiguredFeature\u003C>(Feature.ORE, new OreConfiguration(\n                OreConfiguration.target(\n                    new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES),\n                    ModBlocks.MY_ORE.get().defaultBlockState()\n                ),\n                9  \u002F\u002F vein size\n            ))\n        );\n    }\n\n    private static void bootstrapPlaced(BootstrapContext\u003CPlacedFeature> ctx) {\n        HolderGetter\u003CConfiguredFeature\u003C?, ?>> configured =\n            ctx.lookup(Registries.CONFIGURED_FEATURE);\n        ctx.register(\n            ModWorldgen.MY_ORE_PLACED,\n            new PlacedFeature(\n                configured.getOrThrow(ModWorldgen.MY_ORE_CONFIGURED),\n                List.of(\n                    HeightRangePlacement.triangle(\n                        VerticalAnchor.absolute(-64),\n                        VerticalAnchor.absolute(32)\n                    ),\n                    CountPlacement.of(8),\n                    InSquarePlacement.spread(),\n                    BiomeFilter.biome()\n                )\n            )\n        );\n    }\n}\n```\n\nRegister in your `GatherDataEvent` handler:\n```java\n@SubscribeEvent\npublic static void onGatherData(GatherDataEvent event) {\n    DataGenerator gen = event.getGenerator();\n    PackOutput output = gen.getPackOutput();\n    gen.addProvider(event.includeServer(),\n        new ModWorldgenProvider(output, event.getLookupProvider()));\n}\n```\n\n### Datagen: Fabric (`FabricDynamicRegistryProvider`)\n\n```java\npublic class ModWorldgenProvider extends FabricDynamicRegistryProvider {\n\n    public ModWorldgenProvider(FabricDataOutput output, CompletableFuture\u003CHolderLookup.Provider> registries) {\n        super(output, registries);\n    }\n\n    @Override\n    protected void configure(HolderLookup.Provider registries, Entries entries) {\n        entries.addAll(registries.lookupOrThrow(Registries.CONFIGURED_FEATURE));\n        entries.addAll(registries.lookupOrThrow(Registries.PLACED_FEATURE));\n    }\n\n    @Override\n    public String getName() {\n        return \"Worldgen\";\n    }\n}\n```\n\n---\n\n## Custom Structure\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fstructure\u002Fmy_structure.json`\n```json\n{\n  \"type\": \"minecraft:jigsaw\",\n  \"biomes\": \"#\u003Cnamespace>:my_biome_tag\",\n  \"step\": \"surface_structures\",\n  \"terrain_adaptation\": \"beard_thin\",\n  \"start_pool\": \"\u003Cnamespace>:my_pool\u002Fstart\",\n  \"size\": 6,\n  \"max_distance_from_center\": 80,\n  \"use_expansion_hack\": false,\n  \"spawn_overrides\": {}\n}\n```\n\n### Template pool for jigsaw structures\n```json\n{\n  \"fallback\": \"minecraft:empty\",\n  \"elements\": [\n    {\n      \"weight\": 1,\n      \"element\": {\n        \"element_type\": \"minecraft:single_pool_element\",\n        \"location\": \"\u003Cnamespace>:my_structure\u002Fstart\",\n        \"projection\": \"rigid\",\n        \"processors\": \"minecraft:empty\"\n      }\n    }\n  ]\n}\n```\n\n---\n\n## Structure Set\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fstructure_set\u002Fmy_structures.json`\n```json\n{\n  \"structures\": [\n    {\n      \"structure\": \"\u003Cnamespace>:my_structure\",\n      \"weight\": 1\n    }\n  ],\n  \"placement\": {\n    \"type\": \"minecraft:random_spread\",\n    \"spacing\": 32,\n    \"separation\": 8,\n    \"salt\": 12345678\n  }\n}\n```\n\n---\n\n## Testing Worldgen\n\n```bash\n# Create a new world with datapack loaded\n# In-game with a mod:\n\u002Flocate structure \u003Cnamespace>:my_structure\n\u002Flocate biome \u003Cnamespace>:my_biome\n\u002Fplacefeature \u003Cnamespace>:my_ore_placed\n\n# Reload worldgen data (does not affect already-generated chunks)\n\u002Freload\n\n# For dimension testing — must use \u002Fexecute in \u003Cnamespace>:my_dimension\nexecute in \u003Cnamespace>:my_dimension run tp @s 0 100 0\n```\n\n## Validator Script\n\nUse the bundled validator before shipping worldgen JSON changes:\n\n```bash\n# Run from the installed skill directory (for example `.agents\u002Fskills\u002Fminecraft-world-generation`):\n.\u002Fscripts\u002Fvalidate-worldgen-json.sh --root \u002Fpath\u002Fto\u002Fdatapack-or-mod-resources\n\n# Strict mode treats warnings as failures:\n.\u002Fscripts\u002Fvalidate-worldgen-json.sh --root \u002Fpath\u002Fto\u002Fdatapack-or-mod-resources --strict\n```\n\nWhat it checks:\n- JSON validity for `worldgen\u002F**` and `neoforge\u002Fbiome_modifier\u002F**`\n- Cross-reference integrity for `placed_feature -> configured_feature`\n- Cross-reference integrity for `structure_set -> structure` and biome\u002Fbiome_modifier feature targets\n\n---\n\n## References\n\n- Minecraft Wiki — World generation: https:\u002F\u002Fminecraft.wiki\u002Fw\u002FCustom_world_generation\n- Minecraft Wiki — Biome: https:\u002F\u002Fminecraft.wiki\u002Fw\u002FBiome\u002FJSON_format\n- Minecraft Wiki — Features: https:\u002F\u002Fminecraft.wiki\u002Fw\u002FWorld_generation\u002FConfigured_feature\n- NeoForge Biome Modifiers: https:\u002F\u002Fdocs.neoforged.net\u002Fdocs\u002Fworldgen\u002Fbiomemodifier\u002F\n- Fabric BiomeModifications: https:\u002F\u002Fwiki.fabricmc.net\u002Ftutorial:biomemodification\n- misode's data pack generator (worldgen UI): https:\u002F\u002Fmisode.github.io\u002Fworldgen\u002F\n\n","# Minecraft World Generation Skill\n\n## Two Approaches to Custom Worldgen\n\n| Approach | Best When | Platform |\n|----------|-----------|----------|\n| **Datapack JSON** | Overriding\u002Fextending vanilla worldgen | Vanilla, any server |\n| **Mod + Datagen** | Registering new biomes\u002Fdimensions, code-driven | NeoForge \u002F Fabric |\n| **Biome Modifier (NeoForge)** | Adding features\u002Fspawns to existing biomes | NeoForge |\n| **BiomeModification API (Fabric)** | Adding features\u002Fspawns to existing biomes | Fabric |\n\n### Routing Boundaries\n- `Use when`: the task is biome\u002Fdimension\u002Ffeature\u002Fstructure worldgen design or registration.\n- `Do not use when`: the task is general non-worldgen datapack work (recipes, advancements, predicates, function orchestration) (`minecraft-datapack`).\n- `Do not use when`: the task is non-worldgen mod systems (items, entities, GUI, gameplay logic) (`minecraft-modding`).\n\n---\n\n## Directory Layout (Datapack \u002F Mod Resources)\n\n```\ndata\u002F\u003Cnamespace>\u002F\n├── worldgen\u002F\n│   ├── biome\u002F\n│   │   └── my_biome.json\n│   ├── configured_feature\u002F\n│   │   └── my_ore.json\n│   ├── placed_feature\u002F\n│   │   └── my_ore_placed.json\n│   ├── noise_settings\u002F\n│   │   └── my_dimension_noise.json\n│   ├── density_function\u002F\n│   │   └── my_density.json    (advanced)\n│   ├── structure\u002F\n│   │   └── my_structure.json\n│   ├── structure_set\u002F\n│   │   └── my_structures.json\n│   ├── processor_list\u002F\n│   │   └── my_processors.json\n│   ├── template_pool\u002F\n│   │   └── my_pool.json\n│   └── carver\u002F\n│       └── my_carver.json\n├── dimension\u002F\n│   └── my_dimension.json\n├── dimension_type\u002F\n│   └── my_type.json\n├── tags\u002F\n│   └── worldgen\u002F\n│       └── biome\u002F\n│           └── is_forest.json\n└── neoforge\u002F\n    └── biome_modifier\u002F      (NeoForge mod only)\n        └── add_ores.json\n```\n\n---\n\n## Custom Biome JSON\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fbiome\u002Fmy_biome.json`\n```json\n{\n  \"has_precipitation\": true,\n  \"temperature\": 0.7,\n  \"temperature_modifier\": \"none\",\n  \"downfall\": 0.8,\n  \"effects\": {\n    \"sky_color\": 7907327,\n    \"fog_color\": 12638463,\n    \"water_color\": 4159204,\n    \"water_fog_color\": 329011,\n    \"grass_color_modifier\": \"none\",\n    \"ambient_sound\": \"minecraft:ambient.cave\",\n    \"mood_sound\": {\n      \"sound\": \"minecraft:ambient.cave\",\n      \"tick_delay\": 6000,\n      \"block_search_extent\": 8,\n      \"offset\": 2.0\n    }\n  },\n  \"spawners\": {\n    \"monster\": [\n      { \"type\": \"minecraft:zombie\", \"weight\": 95, \"minCount\": 4, \"maxCount\": 4 },\n      { \"type\": \"minecraft:skeleton\", \"weight\": 100, \"minCount\": 4, \"maxCount\": 4 }\n    ],\n    \"creature\": [\n      { \"type\": \"minecraft:sheep\", \"weight\": 12, \"minCount\": 4, \"maxCount\": 4 }\n    ],\n    \"ambient\": [],\n    \"axolotls\": [],\n    \"underground_water_creature\": [],\n    \"water_creature\": [],\n    \"water_ambient\": [],\n    \"misc\": []\n  },\n  \"spawn_costs\": {},\n  \"carvers\": {\n    \"air\": [\"minecraft:cave\", \"minecraft:cave_extra_underground\", \"minecraft:canyon\"]\n  },\n  \"features\": [\n    [],\n    [],\n    [\"minecraft:lake_lava_underground\", \"minecraft:lake_lava_surface\"],\n    [\"minecraft:amethyst_geode\", \"minecraft:monster_room\"],\n    [],\n    [],\n    [\n      \"minecraft:ore_dirt\", \"minecraft:ore_gravel\", \"minecraft:ore_granite_upper\",\n      \"minecraft:ore_coal_upper\", \"minecraft:ore_coal_lower\",\n      \"\u003Cnamespace>:my_ore_placed\"\n    ],\n    [],\n    [\"minecraft:spring_lava\"],\n    [],\n    [\"minecraft:freeze_top_layer\"]\n  ]\n}\n```\n\n> The `features` array has exactly 11 slots (indices 0–10), one per `GenerationStep.Decoration`:\n>\n> | Index | Step | Put here |\n> |-------|------|---------|\n> | 0 | `RAW_GENERATION` | (rarely used) |\n> | 1 | `LAKES` | Surface water\u002Flava lakes |\n> | 2 | `LOCAL_MODIFICATIONS` | Underground lava lakes, geodes |\n> | 3 | `UNDERGROUND_STRUCTURES` | Amethyst geodes, dungeons |\n> | 4 | `SURFACE_STRUCTURES` | Glaciers, blue ice patches |\n> | 5 | `STRONGHOLDS` | (unused in biome JSON) |\n> | 6 | `UNDERGROUND_ORES` | **All ores go here** |\n> | 7 | `UNDERGROUND_DECORATION` | Fossils, infested stone |\n> | 8 | `FLUID_SPRINGS` | `spring_water`, `spring_lava` |\n> | 9 | `VEGETAL_DECORATION` | Trees, grass, flowers |\n> | 10 | `TOP_LAYER_MODIFICATION` | `freeze_top_layer` |\n>\n> Custom ores added via placed features must be placed at index **6**.\n\n---\n\n## Configured Feature\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fconfigured_feature\u002Fmy_ore.json`\n```json\n{\n  \"type\": \"minecraft:ore\",\n  \"config\": {\n    \"targets\": [\n      {\n        \"target\": {\n          \"predicate_type\": \"minecraft:tag_match\",\n          \"tag\": \"minecraft:stone_ore_replaceables\"\n        },\n        \"state\": {\n          \"Name\": \"minecraft:emerald_ore\"\n        }\n      }\n    ],\n    \"size\": 4,\n    \"discard_chance_on_air_exposure\": 0.0\n  }\n}\n```\n\n### Other feature types\n| Type | Use |\n|------|-----|\n| `minecraft:ore` | Ore veins |\n| `minecraft:tree` | Tree placement |\n| `minecraft:random_patch` | Grass, flowers, mushrooms |\n| `minecraft:block_pile` | Hay bales, pumpkins |\n| `minecraft:lake` | Water\u002Flava lakes |\n| `minecraft:disk` | Sand\u002Fgravel\u002Fclay disks |\n| `minecraft:no_bonemeal_flower` | Wither roses, etc. |\n| `minecraft:simple_block` | Single block placement |\n| `minecraft:fill_layer` | Fill an entire layer |\n| `minecraft:geode` | Amethyst geodes |\n| `minecraft:decorated` | Wraps another feature with placement |\n\n---\n\n## Placed Feature\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fplaced_feature\u002Fmy_ore_placed.json`\n```json\n{\n  \"feature\": \"\u003Cnamespace>:my_ore\",\n  \"placement\": [\n    {\n      \"type\": \"minecraft:count\",\n      \"count\": 8\n    },\n    {\n      \"type\": \"minecraft:in_square\"\n    },\n    {\n      \"type\": \"minecraft:height_range\",\n      \"height\": {\n        \"type\": \"minecraft:trapezoid\",\n        \"min_inclusive\": { \"above_bottom\": 0 },\n        \"max_inclusive\": { \"absolute\": 64 }\n      }\n    },\n    {\n      \"type\": \"minecraft:biome\"\n    }\n  ]\n}\n```\n\n### Common placement modifiers\n| Type | Effect |\n|------|--------|\n| `minecraft:count` | Number of attempts |\n| `minecraft:count_on_every_layer` | Per layer |\n| `minecraft:in_square` | Randomize X\u002FZ within chunk |\n| `minecraft:biome` | Only place if biome has this feature |\n| `minecraft:height_range` | Y-level range |\n| `minecraft:surface_relative_threshold_filter` | Filter by surface depth |\n| `minecraft:noise_based_count` | Count varies with noise |\n| `minecraft:rarity_filter` | 1-in-N chance |\n| `minecraft:environment_scan` | Scans up\u002Fdown for a condition |\n\n---\n\n## Dimension Type\n\n### `data\u002F\u003Cnamespace>\u002Fdimension_type\u002Fmy_type.json`\n```json\n{\n  \"ultrawarm\": false,\n  \"natural\": true,\n  \"coordinate_scale\": 1.0,\n  \"has_skylight\": true,\n  \"has_ceiling\": false,\n  \"ambient_light\": 0.0,\n  \"fixed_time\": false,\n  \"monster_spawn_light_level\": {\n    \"type\": \"minecraft:uniform\",\n    \"min_inclusive\": 0,\n    \"max_inclusive\": 7\n  },\n  \"monster_spawn_block_light_limit\": 0,\n  \"piglin_safe\": false,\n  \"bed_works\": true,\n  \"respawn_anchor_works\": false,\n  \"has_raids\": true,\n  \"logical_height\": 384,\n  \"height\": 384,\n  \"min_y\": -64,\n  \"infiniburn\": \"#minecraft:infiniburn_overworld\",\n  \"effects\": \"minecraft:overworld\"\n}\n```\n\n---\n\n## Custom Dimension\n\n### `data\u002F\u003Cnamespace>\u002Fdimension\u002Fmy_dimension.json`\n```json\n{\n  \"type\": \"\u003Cnamespace>:my_type\",\n  \"generator\": {\n    \"type\": \"minecraft:noise\",\n    \"biome_source\": {\n      \"type\": \"minecraft:fixed\",\n      \"biome\": \"\u003Cnamespace>:my_biome\"\n    },\n    \"settings\": \"minecraft:overworld\"\n  }\n}\n```\n\n### Multi-biome dimension with `minecraft:multi_noise` source\n```json\n{\n  \"type\": \"\u003Cnamespace>:my_type\",\n  \"generator\": {\n    \"type\": \"minecraft:noise\",\n    \"biome_source\": {\n      \"type\": \"minecraft:multi_noise\",\n      \"biomes\": [\n        {\n          \"parameters\": {\n            \"temperature\": [ -1.0, -0.45 ],\n            \"humidity\":    [ -1.0, -0.35 ],\n            \"continentalness\": [ -1.2, -1.05 ],\n            \"erosion\":     [ -0.78, 0.0 ],\n            \"weirdness\":   [ 0.0, 0.0 ],\n            \"depth\":       [ 0.0, 0.0 ],\n            \"offset\":      0.0\n          },\n          \"biome\": \"\u003Cnamespace>:my_biome\"\n        }\n      ]\n    },\n    \"settings\": \"minecraft:overworld\"\n  }\n}\n```\n\n---\n\n## NeoForge: Biome Modifier\n\nBiome Modifiers let you add features, spawns, or carvers to existing biomes without\nreplacing the biome JSON.\n\n### JSON biome modifier (`data\u002F\u003Cnamespace>\u002Fneoforge\u002Fbiome_modifier\u002Fadd_ores.json`)\n```json\n{\n  \"type\": \"neoforge:add_features\",\n  \"biomes\": \"#minecraft:is_overworld\",\n  \"features\": \"\u003Cnamespace>:my_ore_placed\",\n  \"step\": \"underground_ores\"\n}\n```\n\n### Other NeoForge biome modifier types\n```json\n{ \"type\": \"neoforge:add_spawns\", \"biomes\": \"#minecraft:is_forest\",\n  \"spawners\": [{ \"type\": \"minecraft:wolf\", \"weight\": 5, \"minCount\": 2, \"maxCount\": 4 }] }\n\n{ \"type\": \"neoforge:remove_features\", \"biomes\": \"#minecraft:is_plains\",\n  \"features\": \"minecraft:ore_coal_upper\", \"steps\": [\"underground_ores\"] }\n\n{ \"type\": \"neoforge:remove_spawns\", \"biomes\": \"#minecraft:is_ocean\",\n  \"entity_types\": \"#minecraft:skeletons\" }\n```\n\n---\n\n## Fabric: BiomeModification API (Code)\n\n```java\nimport net.fabricmc.fabric.api.biome.v1.BiomeModifications;\nimport net.fabricmc.fabric.api.biome.v1.BiomeSelectors;\nimport net.minecraft.world.level.levelgen.GenerationStep;\n\npublic class MyModWorldgen {\n    public static void init() {\n        \u002F\u002F Add a placed feature to all overworld biomes\n        BiomeModifications.addFeature(\n            BiomeSelectors.foundInOverworld(),\n            GenerationStep.Decoration.UNDERGROUND_ORES,\n            ResourceKey.create(\n                Registries.PLACED_FEATURE,\n                ResourceLocation.fromNamespaceAndPath(MyMod.MOD_ID, \"my_ore_placed\")\n            )\n        );\n\n        \u002F\u002F Add mob spawns\n        BiomeModifications.addSpawn(\n            BiomeSelectors.tag(BiomeTags.IS_FOREST),\n            MobCategory.CREATURE,\n            EntityType.WOLF,\n            5, 2, 4\n        );\n    }\n}\n```\n\n---\n\n## Mod-Registered Worldgen (NeoForge + Fabric via Datagen)\n\n### Register worldgen keys in code\n```java\n\u002F\u002F In a dedicated worldgen registry class\npublic class ModWorldgen {\n    public static final ResourceKey\u003CBiome> MY_BIOME = ResourceKey.create(\n        Registries.BIOME,\n        ResourceLocation.fromNamespaceAndPath(MyMod.MOD_ID, \"my_biome\")\n    );\n\n    public static final ResourceKey\u003CPlacedFeature> MY_ORE_PLACED = ResourceKey.create(\n        Registries.PLACED_FEATURE,\n        ResourceLocation.fromNamespaceAndPath(MyMod.MOD_ID, \"my_ore_placed\")\n    );\n}\n```\n\n### Datagen: NeoForge (`DatapackBuiltinEntriesProvider`)\n\n```java\npublic class ModWorldgenProvider extends DatapackBuiltinEntriesProvider {\n\n    private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder()\n        .add(Registries.CONFIGURED_FEATURE, ModWorldgenProvider::bootstrapConfigured)\n        .add(Registries.PLACED_FEATURE, ModWorldgenProvider::bootstrapPlaced);\n\n    public ModWorldgenProvider(PackOutput output, CompletableFuture\u003CHolderLookup.Provider> registries) {\n        super(output, registries, BUILDER, Set.of(MyMod.MOD_ID));\n    }\n\n    private static void bootstrapConfigured(BootstrapContext\u003CConfiguredFeature\u003C?, ?>> ctx) {\n        ctx.register(\n            ModWorldgen.MY_ORE_CONFIGURED,\n            new ConfiguredFeature\u003C>(Feature.ORE, new OreConfiguration(\n                OreConfiguration.target(\n                    new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES),\n                    ModBlocks.MY_ORE.get().defaultBlockState()\n                ),\n                9  \u002F\u002F vein size\n            ))\n        );\n    }\n\n    private static void bootstrapPlaced(BootstrapContext\u003CPlacedFeature> ctx) {\n        HolderGetter\u003CConfiguredFeature\u003C?, ?>> configured =\n            ctx.lookup(Registries.CONFIGURED_FEATURE);\n        ctx.register(\n            ModWorldgen.MY_ORE_PLACED,\n            new PlacedFeature(\n                configured.getOrThrow(ModWorldgen.MY_ORE_CONFIGURED),\n                List.of(\n                    HeightRangePlacement.triangle(\n                        VerticalAnchor.absolute(-64),\n                        VerticalAnchor.absolute(32)\n                    ),\n                    CountPlacement.of(8),\n                    InSquarePlacement.spread(),\n                    BiomeFilter.biome()\n                )\n            )\n        );\n    }\n}\n```\n\nRegister in your `GatherDataEvent` handler:\n```java\n@SubscribeEvent\npublic static void onGatherData(GatherDataEvent event) {\n    DataGenerator gen = event.getGenerator();\n    PackOutput output = gen.getPackOutput();\n    gen.addProvider(event.includeServer(),\n        new ModWorldgenProvider(output, event.getLookupProvider()));\n}\n```\n\n### Datagen: Fabric (`FabricDynamicRegistryProvider`)\n\n```java\npublic class ModWorldgenProvider extends FabricDynamicRegistryProvider {\n\n    public ModWorldgenProvider(FabricDataOutput output, CompletableFuture\u003CHolderLookup.Provider> registries) {\n        super(output, registries);\n    }\n\n    @Override\n    protected void configure(HolderLookup.Provider registries, Entries entries) {\n        entries.addAll(registries.lookupOrThrow(Registries.CONFIGURED_FEATURE));\n        entries.addAll(registries.lookupOrThrow(Registries.PLACED_FEATURE));\n    }\n\n    @Override\n    public String getName() {\n        return \"Worldgen\";\n    }\n}\n```\n\n---\n\n## Custom Structure\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fstructure\u002Fmy_structure.json`\n```json\n{\n  \"type\": \"minecraft:jigsaw\",\n  \"biomes\": \"#\u003Cnamespace>:my_biome_tag\",\n  \"step\": \"surface_structures\",\n  \"terrain_adaptation\": \"beard_thin\",\n  \"start_pool\": \"\u003Cnamespace>:my_pool\u002Fstart\",\n  \"size\": 6,\n  \"max_distance_from_center\": 80,\n  \"use_expansion_hack\": false,\n  \"spawn_overrides\": {}\n}\n```\n\n### Template pool for jigsaw structures\n```json\n{\n  \"fallback\": \"minecraft:empty\",\n  \"elements\": [\n    {\n      \"weight\": 1,\n      \"element\": {\n        \"element_type\": \"minecraft:single_pool_element\",\n        \"location\": \"\u003Cnamespace>:my_structure\u002Fstart\",\n        \"projection\": \"rigid\",\n        \"processors\": \"minecraft:empty\"\n      }\n    }\n  ]\n}\n```\n\n---\n\n## Structure Set\n\n### `data\u002F\u003Cnamespace>\u002Fworldgen\u002Fstructure_set\u002Fmy_structures.json`\n```json\n{\n  \"structures\": [\n    {\n      \"structure\": \"\u003Cnamespace>:my_structure\",\n      \"weight\": 1\n    }\n  ],\n  \"placement\": {\n    \"type\": \"minecraft:random_spread\",\n    \"spacing\": 32,\n    \"separation\": 8,\n    \"salt\": 12345678\n  }\n}\n```\n\n---\n\n## Testing Worldgen\n\n```bash\n# Create a new world with datapack loaded\n# In-game with a mod:\n\u002Flocate structure \u003Cnamespace>:my_structure\n\u002Flocate biome \u003Cnamespace>:my_biome\n\u002Fplacefeature \u003Cnamespace>:my_ore_placed\n\n# Reload worldgen data (does not affect already-generated chunks)\n\u002Freload\n\n# For dimension testing — must use \u002Fexecute in \u003Cnamespace>:my_dimension\nexecute in \u003Cnamespace>:my_dimension run tp @s 0 100 0\n```\n\n## Validator Script\n\nUse the bundled validator before shipping worldgen JSON changes:\n\n```bash\n# Run from the installed skill directory (for example `.agents\u002Fskills\u002Fminecraft-world-generation`):\n.\u002Fscripts\u002Fvalidate-worldgen-json.sh --root \u002Fpath\u002Fto\u002Fdatapack-or-mod-resources\n\n# Strict mode treats warnings as failures:\n.\u002Fscripts\u002Fvalidate-worldgen-json.sh --root \u002Fpath\u002Fto\u002Fdatapack-or-mod-resources --strict\n```\n\nWhat it checks:\n- JSON validity for `worldgen\u002F**` and `neoforge\u002Fbiome_modifier\u002F**`\n- Cross-reference integrity for `placed_feature -> configured_feature`\n- Cross-reference integrity for `structure_set -> structure` and biome\u002Fbiome_modifier feature targets\n\n---\n\n## References\n\n- Minecraft Wiki — World generation: https:\u002F\u002Fminecraft.wiki\u002Fw\u002FCustom_world_generation\n- Minecraft Wiki — Biome: https:\u002F\u002Fminecraft.wiki\u002Fw\u002FBiome\u002FJSON_format\n- Minecraft Wiki — Features: https:\u002F\u002Fminecraft.wiki\u002Fw\u002FWorld_generation\u002FConfigured_feature\n- NeoForge Biome Modifiers: https:\u002F\u002Fdocs.neoforged.net\u002Fdocs\u002Fworldgen\u002Fbiomemodifier\u002F\n- Fabric BiomeModifications: https:\u002F\u002Fwiki.fabricmc.net\u002Ftutorial:biomemodification\n- misode's data pack generator (worldgen UI): https:\u002F\u002Fmisode.github.io\u002Fworldgen\u002F\n\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FJahrome907\u002Fminecraft-codex-skills\u002Fminecraft-world-generation",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill minecraft-world-generation",{"tool":64,"command":65},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill minecraft-world-generation",{"tool":67,"command":68},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill minecraft-world-generation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FJahrome907\u002Fminecraft-codex-skills\u002Fminecraft-world-generation\u002FSKILL.md",true,[72,78,82,88,92],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"assets\u002Fmodule-help.csv","ASSET","资产文件",112,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fassets\u002Fmodule-help.csv",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"assets\u002Fmodule.yaml",96,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fassets\u002Fmodule.yaml",{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fcleanup-legacy.py","SCRIPT","脚本",7743,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fscripts\u002Fcleanup-legacy.py",{"path":89,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":90,"sourceHtmlUrl":91},"scripts\u002Fmerge-config.py",14139,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fscripts\u002Fmerge-config.py",{"path":93,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":94,"sourceHtmlUrl":95},"scripts\u002Fmerge-help-csv.py",6607,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-module-builder\u002Fassets\u002Fsetup-skill-template\u002Fscripts\u002Fmerge-help-csv.py",[97,111,121,130,136,143],{"skillNo":98,"name":99,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":107,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[102],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[108,109,110],"model","model hierarchy","model hierarchy skill",{"skillNo":112,"name":113,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":117,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[116],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},[118,119,120],"MCP","zoom","zoom mcp",{"skillNo":122,"name":123,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[127,128,129,119],"sdk","zoom apps sdk","apps",{"skillNo":131,"name":132,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[132],{"skillNo":137,"name":138,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[141],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},[138],{"skillNo":144,"name":145,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[145]]