VRM avatar creative pipeline — VRoid brute-force, Blender validate, VTube staging.
Single tool 'avatar_pipeline' has a generic name that violates verb_noun convention and conflates multiple distinct operations (status, export, validate, reexport, stage). Description is adequate (89 chars) but parameters lack consistency in documentation quality. Schema is present with types and descriptions, but many parameters have vague or operation-dependent semantics. No error handling guidance, no output schema documentation, and no indication of which operations are idempotent vs destructive. Tool composition violates single-responsibility principle by bundling 8 different workflows into one tool.
Avatar pipeline portmanteau - VRoid, Blender, VTube staging.
Tool name 'avatar_pipeline' is a noun, not a verb_noun action. Should be split into separate tools: 'export_vroid_avatar', 'validate_vrm', 'reexport_vrm', 'stage_for_vts', 'run_full_pipeline'. Current design forces LLM to guess which operation to invoke.
No output schema documented. Tool returns dict[str, Any] with operation-dependent fields (success, work_dir, staging, outputs, error, staged_path, size_kb, etc.). LLM cannot predict response structure or chain downstream calls reliably.
Parameter 'operation' uses free-form string with no enum constraint. Description lists valid values as pipe-separated text, but LLM may hallucinate invalid operations. Should be enum: ['status', 'vroid_quick_avatar', 'hub_stage_file', 'blender_validate', 'blender_reexport', 'stage_for_vts', 'full_pipeline', 'list_staging'].
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
No error handling guidance. Tool returns {'success': False, 'error': '...'} but does not indicate whether errors are retryable, user-fixable, or fatal. No recovery suggestions (e.g., 'Try hub_stage_file() first if VRM not found').
Parameter semantics are operation-dependent and undocumented. E.g., 'vrm_filename' is required for some operations but ignored for others; 'source_path' only applies to 'hub_stage_file'. Dependencies not stated in parameter descriptions, forcing LLM to infer from operation name.