{"record":{"id":"7d758aa1ef13f262","repo":"zeroclaw-labs/zeroclaw","slug":"reflected-skill-md-has-an-empty-body","errorCode":null,"errorMessage":"reflected SKILL.md has an empty body","messagePattern":"reflected SKILL\\.md has an empty body","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-runtime/src/skills/creator.rs","lineNumber":279,"sourceCode":"            if out.len() >= budget {\n                let _ = writeln!(out, \"…[{} more tool call(s) omitted]\", tool_calls.len() - i);\n                break;\n            }\n            let name = scrub_secrets(&call.name);\n            let args = truncate_chars(\n                &scrub_secrets(&serde_json::to_string(&call.args).unwrap_or_default()),\n                MAX_TOOL_ARG_CHARS,\n            );\n            let _ = writeln!(out, \"{}. {} {}\", i + 1, name, args);\n        }\n        out\n    }\n\n    fn normalize_reflected_md(slug: &str, raw: &str) -> Result<String> {\n        let content = extract_frontmatter_block(raw);\n        let mut doc = SkillDocument::parse(&content).context(\"reflected SKILL.md is invalid\")?;\n        if doc.body.trim().is_empty() {\n            anyhow::bail!(\"reflected SKILL.md has an empty body\");\n        }\n        // Deterministic identity + auto-generated markers.\n        doc.frontmatter.name = slug.to_string();\n        doc.frontmatter.author = Some(\"zeroclaw-auto\".to_string());\n        if doc.frontmatter.version.is_none() {\n            doc.frontmatter.version = Some(\"0.1.0\".to_string());\n        }\n        Ok(doc.serialize())\n    }\n\n    /// Generate a URL-safe slug from a task description.\n    /// Alphanumeric and hyphens only, max 64 characters.\n    fn generate_slug(description: &str) -> String {\n        let slug: String = description\n            .to_lowercase()\n            .chars()\n            .map(|c| if c.is_alphanumeric() { c } else { '-' })\n            .collect();","sourceCodeStart":261,"sourceCodeEnd":297,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/skills/creator.rs#L261-L297","documentation":"Error \"reflected SKILL.md has an empty body\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-runtime/src/skills/creator.rs:279 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add body content to the reflected SKILL.md below its frontmatter."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}