{"record":{"id":"732660c3811b318a","repo":"affaan-m/ECC","slug":"claude-p-returned-empty-output","errorCode":null,"errorMessage":"claude -p returned empty output","messagePattern":"claude -p returned empty output","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"skills/skill-comply/scripts/scenario_generator.py","lineNumber":54,"sourceCode":"    prompt_template = (PROMPTS_DIR / \"scenario_generator.md\").read_text()\n    prompt = (\n        prompt_template\n        .replace(\"{skill_content}\", skill_content)\n        .replace(\"{spec_yaml}\", spec_yaml)\n    )\n\n    result = subprocess.run(\n        [\"claude\", \"-p\", prompt, \"--model\", model, \"--output-format\", \"text\"],\n        capture_output=True,\n        text=True,\n        timeout=120,\n    )\n\n    if result.returncode != 0:\n        raise RuntimeError(f\"claude -p failed: {result.stderr}\")\n\n    if not result.stdout.strip():\n        raise RuntimeError(\"claude -p returned empty output\")\n\n    raw_yaml = extract_yaml(result.stdout)\n    parsed = yaml.safe_load(raw_yaml)\n\n    scenarios: list[Scenario] = []\n    for s in parsed[\"scenarios\"]:\n        scenarios.append(Scenario(\n            id=s[\"id\"],\n            level=s[\"level\"],\n            level_name=s[\"level_name\"],\n            description=s[\"description\"],\n            prompt=s[\"prompt\"].strip(),\n            setup_commands=tuple(s.get(\"setup_commands\", [])),\n        ))\n\n    return sorted(scenarios, key=lambda s: s.level)\n","sourceCodeStart":36,"sourceCodeEnd":71,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/skills/skill-comply/scripts/scenario_generator.py#L36-L71","documentation":"Empty-output guard in generate_scenarios: claude -p succeeded (rc=0) but produced only whitespace on stdout, so there is no YAML scenario text to parse. Usually a model refusal, truncation, or an output-format mismatch.","triggerScenarios":"Thrown at skills/skill-comply/scripts/scenario_generator.py:54 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-run the generation; empty replies are often transient","Tighten the scenario_generator prompt to require non-empty YAML output","Check that --output-format text is compatible with the claude version in use"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}