askill
ios-add-feature

ios-add-featureSafety 100Repository

Scaffold a new feature with View, ViewModel, and tests following ios-std conventions.

1 stars
1.2k downloads
Updated 2/28/2026

Package Files

Loading files...
SKILL.md

Purpose

Add a complete feature module to an existing iOS project with View, ViewModel, and tests.

Arguments

  • feature-name — Feature name in PascalCase (e.g., Settings, UserProfile)
  • --with-detail — Include detail view for drill-down
  • --with-form — Include form/edit view
  • --no-tests — Skip test file generation

What gets created

Default

Features/<Feature>/
├── <Feature>View.swift           # Main view
├── <Feature>ViewModel.swift      # ViewModel with state + intents
└── <Feature>Row.swift            # List row component (if list-based)

Tests/UnitTests/
└── <Feature>ViewModelTests.swift # ViewModel tests

With --with-detail

Features/<Feature>/
├── <Feature>View.swift
├── <Feature>ViewModel.swift
├── <Feature>DetailView.swift     # Detail view
└── <Feature>DetailViewModel.swift

With --with-form

Features/<Feature>/
├── <Feature>View.swift
├── <Feature>ViewModel.swift
├── <Feature>FormView.swift       # Create/edit form
└── <Feature>FormViewModel.swift

Conventions

File naming

  • Views: <Feature>View.swift
  • ViewModels: <Feature>ViewModel.swift
  • Rows/cells: <Feature>Row.swift
  • Tests: <Feature>ViewModelTests.swift

ViewModel pattern

  • @MainActor final class
  • @Published private(set) for state
  • Public methods for intents
  • Dependencies injected via init
  • Uses PersistenceStore protocol (not SwiftData directly)

View pattern

  • @StateObject for owned ViewModel
  • @EnvironmentObject for shared services
  • No business logic in views
  • Accessibility labels on controls

Test pattern (Swift Testing)

  • struct (not XCTestCase class)
  • init() for setup (not setUp())
  • @Test func methodName() (no test_ prefix)
  • #expect(condition) for assertions
  • @Test(arguments:) for parameterized tests

Workflow

  1. Create feature folder under Features/
  2. Create View with basic layout
  3. Create ViewModel with state and intents
  4. Wire up to DependencyContainer
  5. Create tests for ViewModel
  6. Run ./scripts/lint.sh and tests to verify

Output

Summarize: files created, how to access the feature, test coverage.

Reference

For templates and patterns, see reference/ios-add-feature-reference.md

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

84/100Analyzed 3/2/2026

High-quality iOS feature scaffolding skill with clear purpose, comprehensive conventions documentation, and structured workflow. Covers View/ViewModel/Test patterns with good detail. Minor issues: tags don't match skill content, lacks actual code templates (relies on external reference file), not in dedicated skills folder.

100
85
75
85
70

Metadata

Licenseunknown
Version-
Updated2/28/2026
Publisheredfenton

Tags

github-actionslintingtesting