// Package port defines interfaces (ports) for external dependencies. package port import "context" // TemplateProvider seeds repositories with starter files. type TemplateProvider interface { // SeedRepo populates a repository with template files. // templateName specifies which template to use (e.g., "default", "astro-landing"). // vars contains template variables for interpolation (e.g., PROJECT_NAME, DOMAIN). SeedRepo(ctx context.Context, owner, repo, templateName string, vars map[string]string) error // ListTemplates returns available templates. ListTemplates(ctx context.Context) ([]TemplateInfo, error) // GetTemplate returns info about a specific template. GetTemplate(ctx context.Context, name string) (*TemplateInfo, error) } // TemplateInfo describes an available project template. type TemplateInfo struct { // Name is the template identifier (e.g., "astro-landing") Name string // Description explains what the template provides Description string // Stack indicates the technology stack (e.g., "astro", "go", "generic") Stack string // Files lists the files included in the template Files []string }