Skip to content

generate feature

Create a feature folder, optionally with screens and a service.

Creates a feature folder under Features/ and, if requested, scaffolds screens and a service inside it.

Terminal window
swiftspawn generate feature <Name> [--screens <names>] [--service <name>] [--with-tests] [--dry-run] [--force] [--quiet] [--verbose]

A feature is a folder grouping related screens and feature-local models. Plain generate feature Movies just creates the folder structure. With --screens or --service, the same call also scaffolds those pieces and wires them up.

This is a convenience wrapper around generate screen and generate service; you can always run them separately.

Terminal window
swiftspawn generate feature Movies
swiftspawn generate feature Movies --screens MovieList,MovieDetail
swiftspawn generate feature Movies --service Movie --screens MovieList --with-tests

Plain feature:

Features/<Name>/
Features/<Name>/Models/

With --screens MovieList,MovieDetail:

Features/Movies/MovieList/MovieListView.swift
Features/Movies/MovieList/MovieListViewModel.swift
Features/Movies/MovieDetail/MovieDetailView.swift
Features/Movies/MovieDetail/MovieDetailViewModel.swift

With --service Movie:

Services/MovieService.swift
Services/MovieServiceImpl.swift
Services/MockMovieService.swift

--with-tests adds matching *Tests.swift files under Tests/<App>Tests/.

  • Adds one route case per screen to Route.swift (between markers).
  • Wires each screen into RootView.swift’s navigation switch (between markers).
  • Registers the service in DIContainer.swift (between markers) if --service is passed.

See Markers for how marker-region edits work.

FlagDescription
--screens <names>Comma-separated screen names (e.g. MovieList,MovieDetail).
--service <name>Service name to create alongside the feature.
--with-testsAlso generate matching test files.
--dry-runPreview without writing.
--forceOverwrite existing files.
CodeMeaning
2Invalid name.
5Not in a swiftspawn project.
7Route.swift is missing the markers.