diff --git a/src/skill_seekers/cli/how_to_guide_builder.py b/src/skill_seekers/cli/how_to_guide_builder.py index e865a85..271ae07 100644 --- a/src/skill_seekers/cli/how_to_guide_builder.py +++ b/src/skill_seekers/cli/how_to_guide_builder.py @@ -452,7 +452,7 @@ class WorkflowGrouper: ungrouped = [] for workflow in workflows: - ai_analysis = workflow.get("ai_analysis", {}) + ai_analysis = workflow.get("ai_analysis") or {} tutorial_group = ai_analysis.get("tutorial_group") if tutorial_group: @@ -908,7 +908,7 @@ class HowToGuideBuilder: def _extract_workflow_examples(self, examples: list[dict]) -> list[dict]: """Filter to workflow category only""" - return [ex for ex in examples if ex.get("category") == "workflow"] + return [ex for ex in examples if isinstance(ex, dict) and ex.get("category") == "workflow"] def _create_guide(self, title: str, workflows: list[dict], enhancer=None) -> HowToGuide: """ @@ -933,8 +933,10 @@ class HowToGuideBuilder: # Extract use case from AI analysis or title use_case = title - if primary_workflow.get("ai_analysis"): - use_case = primary_workflow["ai_analysis"].get("tutorial_group", title) + + ai_analysis = primary_workflow.get("ai_analysis") or {} + if ai_analysis: + use_case = ai_analysis.get("tutorial_group", title) # Determine overview overview = self._generate_overview(primary_workflow, workflows) @@ -967,19 +969,22 @@ class HowToGuideBuilder: ) # Add AI enhancements if enhancer is available + ai_analysis_for_enhancement = primary_workflow.get("ai_analysis") or {} if enhancer: - self._enhance_guide_with_ai(guide, primary_workflow.get("ai_analysis", {}), enhancer) - elif self.enhance_with_ai and primary_workflow.get("ai_analysis"): + self._enhance_guide_with_ai(guide, ai_analysis_for_enhancement, enhancer) + elif self.enhance_with_ai and ai_analysis_for_enhancement: # Fallback to old enhancement method (basic) - self._enhance_guide_with_ai_basic(guide, primary_workflow["ai_analysis"]) + self._enhance_guide_with_ai_basic(guide, ai_analysis_for_enhancement) return guide def _generate_overview(self, primary_workflow: dict, _all_workflows: list[dict]) -> str: """Generate guide overview""" # Try to get explanation from AI analysis - if primary_workflow.get("ai_analysis"): - explanation = primary_workflow["ai_analysis"].get("explanation") + + ai_analysis = primary_workflow.get("ai_analysis") or {} + if ai_analysis: + explanation = ai_analysis.get("explanation") if explanation: return explanation