agentsclimarketplace

Ios add feature

Skill edfenton/claude-skills/ios/ios-add-feature

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

Install
npx -y skills add edfenton/claude-skills --skill ios-add-feature

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 1 command, including `./scripts/lint.sh`.

SKILL.md

2.5 KB, 579 tokens by cl100k_base, as published. Nobody here has run it

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

What ships with it: 1 file

11.0 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.