Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions data/tool-guides/local-asset-guide.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Local Asset Library Guide"
category: "assets"
tags: ["asset library", "catalog", "local assets", "curated assets", "import", "commodity props", "search_local_assets", "import_local_asset"]
triggered_by: ["get_local_asset_library_status", "search_local_assets", "import_local_asset"]
tags: ["asset library", "catalog", "local assets", "curated assets", "import", "commodity props", "search_local_assets", "import_local_asset", "polyhaven", "sketchfab", "external assets"]
triggered_by: ["get_local_asset_library_status", "search_local_assets", "import_local_asset", "get_polyhaven_status", "get_polyhaven_categories", "search_polyhaven_assets", "download_polyhaven_asset", "get_sketchfab_status", "search_sketchfab_models", "download_sketchfab_model"]
description: "Guidance for using the curated local ViperMesh asset library before procedural modeling or external downloads."
blender_version: "5.0+"
---
Expand Down
2 changes: 1 addition & 1 deletion data/tool-guides/materials-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Materials & PBR Configuration Guide"
category: "materials"
tags: ["material", "PBR", "Principled BSDF", "metallic", "roughness", "color", "glass", "metal", "wood", "plastic", "create_material", "assign_material", "create_material_preset", "inspect_material_node_graph"]
triggered_by: ["create_material", "assign_material", "create_material_preset", "inspect_material_node_graph"]
triggered_by: ["list_materials", "create_material", "assign_material", "create_material_preset", "inspect_material_node_graph", "set_texture"]
description: "Domain knowledge for Principled BSDF material setup, PBR parameter ranges, common surface presets, and Blender 5.x material API changes."
blender_version: "4.0+"
---
Expand Down
2 changes: 1 addition & 1 deletion data/tool-guides/modifiers-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Modifier Usage & Configuration Guide"
category: "modifiers"
tags: ["modifier", "subdivision", "SubSurf", "bevel", "mirror", "boolean", "array", "smooth", "shade_smooth", "auto-smooth", "constraint", "stack", "mesh", "vertices", "faces", "create_mesh_from_data", "validate_mesh_geometry", "inspect_modifier_constraint_stack", "add_modifier", "apply_modifier", "apply_transforms", "shade_smooth"]
triggered_by: ["create_mesh_from_data", "validate_mesh_geometry", "inspect_modifier_constraint_stack", "add_modifier", "apply_modifier", "apply_transforms", "shade_smooth"]
triggered_by: ["create_mesh_from_data", "validate_mesh_geometry", "inspect_retopology_readiness", "inspect_modifier_constraint_stack", "add_modifier", "configure_modifier", "configure_constraint", "add_object_constraint", "remove_object_constraint", "apply_modifier", "apply_transforms", "shade_smooth"]
description: "Domain knowledge for mesh modifier selection, configuration, stack ordering, and shading setup in Blender. Covers SubSurf, bevel, boolean, mirror, array, and auto-smooth."
blender_version: "4.0+"
---
Expand Down
2 changes: 1 addition & 1 deletion data/tool-guides/render-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Render Settings & Output Guide"
category: "render"
tags: ["render", "EEVEE", "Cycles", "resolution", "samples", "denoising", "output", "PNG", "JPEG", "transparent", "setup_studio_scene", "validate_studio_scene", "set_render_settings", "render_image"]
triggered_by: ["setup_studio_scene", "validate_studio_scene", "set_render_settings", "render_image"]
triggered_by: ["setup_studio_scene", "validate_studio_scene", "set_render_settings", "render_image", "render_thumbnail_to_path"]
description: "Domain knowledge for render engine selection, sample counts, resolution presets, output formats, and Blender 5.x EEVEE-Next changes."
blender_version: "4.0+"
---
Expand Down
1 change: 1 addition & 0 deletions data/tool-guides/rigging-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: "Rigging & Rigify Workflow Guide"
category: "rigging"
tags: ["rigging", "rigify", "armature", "skeleton", "metarig", "IK", "bone", "rig", "auto-rig", "mesh preparation", "edge loops", "joint", "weight cleanup"]
triggered_by: ["inspect_rigging_data", "inspect_weight_paint_readiness", "normalize_vertex_group_weights"]
description: "Research-backed guide for Rigify rigging workflows including mesh preparation, per-bone metarig alignment, IK bend requirements, rig generation, and post-rigging weight cleanup. Based on NotebookLM research with 9 cited sources."
blender_version: "4.0+ / 5.x"
---
Expand Down
1 change: 1 addition & 0 deletions data/tool-guides/scene-composition-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: "Scene Composition & Interior Design Principles"
category: "scene-design"
tags: ["composition", "interior", "camera", "framing", "layout", "furniture", "placement", "spatial", "depth", "lamp", "lighting", "pendant", "shade", "light fixture"]
triggered_by: ["inspect_viewport_areas", "set_viewport_shading", "focus_viewport_on_objects", "get_viewport_screenshot", "render_viewport_to_path"]
description: "General 3D engineering principles for composing visually balanced interior and exterior scenes. Covers furniture placement, camera framing, visual hierarchy, and spatial organization."
blender_version: "5.0+"
---
Expand Down
4 changes: 2 additions & 2 deletions data/tool-guides/scene-management-guide.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Scene Management & Organization Guide"
category: "scene-management"
tags: ["scene", "transform", "collection", "parent", "origin", "visibility", "duplicate", "join", "rename", "delete", "hierarchy", "organization", "set_object_transform", "rename_object", "duplicate_object", "join_objects", "parent_set", "parent_clear", "set_origin", "move_to_collection", "set_visibility", "delete_object"]
triggered_by: ["set_object_transform", "rename_object", "duplicate_object", "join_objects", "parent_set", "parent_clear", "set_origin", "move_to_collection", "set_visibility", "delete_object"]
tags: ["scene", "transform", "collection", "parent", "origin", "visibility", "duplicate", "join", "rename", "delete", "hierarchy", "organization", "set_object_transform", "rename_object", "duplicate_object", "join_objects", "parent_set", "parent_clear", "set_origin", "move_to_collection", "set_visibility", "delete_object", "select_scene_objects", "set_active_collection", "inspect_collection_hierarchy", "organize_collection_hierarchy"]
triggered_by: ["get_scene_info", "get_all_object_info", "select_scene_objects", "set_active_collection", "set_object_transform", "rename_object", "duplicate_object", "join_objects", "parent_set", "parent_clear", "set_origin", "move_to_collection", "set_visibility", "delete_object", "inspect_collection_hierarchy", "organize_collection_hierarchy"]
description: "Domain knowledge for object transforms, hierarchy management, collection organization, origin placement, and scene cleanup in Blender."
blender_version: "4.0+"
---
Expand Down
4 changes: 2 additions & 2 deletions data/tool-guides/weight-painting-guide.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Weight Painting & Vertex Group Guide"
category: "weight-painting"
tags: ["weight painting", "vertex groups", "deformation", "auto-weights", "bone heat", "normalize", "smooth weights", "limit total", "game engine", "export", "bmesh", "vertex group elements"]
triggered_by: []
tags: ["weight painting", "vertex groups", "deformation", "auto-weights", "bone heat", "normalize", "smooth weights", "limit total", "game engine", "export", "bmesh", "vertex group elements", "inspect_weight_paint_readiness", "normalize_vertex_group_weights"]
triggered_by: ["inspect_weight_paint_readiness", "normalize_vertex_group_weights"]
description: "Research-backed weight painting guide covering Python vertex group architecture, bmesh high-performance assignment, post-binding cleanup pipeline, game engine bone limits (4 max), smoothing techniques, and bone heat weighting troubleshooting. Based on NotebookLM research with 10 cited sources."
blender_version: "4.0+ / 5.x"
---
Expand Down
75 changes: 75 additions & 0 deletions scripts/test/test-tool-guide-trigger-coverage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import assert from "node:assert/strict"
import { readFileSync, readdirSync } from "node:fs"
import path from "node:path"

const guidesDir = path.join(process.cwd(), "data", "tool-guides")

const triggeredBy = new Map<string, string[]>()

for (const file of readdirSync(guidesDir).filter((name) => name.endsWith(".md"))) {
const raw = readFileSync(path.join(guidesDir, file), "utf8")
const match = raw.match(/triggered_by:\s*\[([^\]]*)\]/)
if (!match) continue

const toolNames = match[1]
.split(",")
.map((value) => value.trim().replace(/^["']|["']$/g, ""))
.filter(Boolean)

for (const toolName of toolNames) {
const files = triggeredBy.get(toolName) ?? []
files.push(file)
triggeredBy.set(toolName, files)
}
}

const requiredGuidedTools = [
"get_scene_info",
"get_all_object_info",
"inspect_viewport_areas",
"set_viewport_shading",
"focus_viewport_on_objects",
"get_viewport_screenshot",
"render_viewport_to_path",
"select_scene_objects",
"set_active_collection",
"list_materials",
"set_texture",
"inspect_retopology_readiness",
"inspect_rigging_data",
"inspect_weight_paint_readiness",
"normalize_vertex_group_weights",
"configure_modifier",
"configure_constraint",
"add_object_constraint",
"remove_object_constraint",
"inspect_collection_hierarchy",
"organize_collection_hierarchy",
"render_thumbnail_to_path",
"get_polyhaven_status",
"get_polyhaven_categories",
"search_polyhaven_assets",
"download_polyhaven_asset",
"get_sketchfab_status",
"search_sketchfab_models",
"download_sketchfab_model",
]

for (const toolName of requiredGuidedTools) {
assert.ok(triggeredBy.has(toolName), `${toolName} should be bound to at least one tool guide`)
}

assert.ok(
triggeredBy.get("normalize_vertex_group_weights")?.includes("weight-painting-guide.md"),
"normalize_vertex_group_weights should load the weight-painting guide"
)
assert.ok(
triggeredBy.get("search_polyhaven_assets")?.includes("local-asset-guide.md"),
"PolyHaven search should load the asset selection guide"
)
assert.ok(
triggeredBy.get("focus_viewport_on_objects")?.includes("scene-composition-guide.md"),
"Viewport focus should load the scene-composition guide"
)

console.log("Tool guide trigger coverage tests passed")
Loading