feat(template): add dynamic template