internal/ai/harness defines the generic Skill interface (Name, Version, Render, Schema, Validate, PostProcess) and Run, which renders the prompt, calls Provider.Generate with the skill's schema and the household temperature, strictly decodes and validates the reply, and on failure sends exactly one repair turn quoting the problems. A second failure returns a *BadOutputError matching llm.ErrBadOutput with both problem lists. Provider errors other than ErrBadOutput pass through unchanged. Maestro task 38e7bf98-f1d1-4301-b73b-7ec4b51e8b68. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>