feat: add recipe component schema