feat: add input and output skeleton