Automates the creation of SwiftUI data structures following MVVM patterns.
Install
mkdir -p .claude/skills/model-andrelucassvt && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14273" && unzip -o skill.zip -d .claude/skills/model-andrelucassvt && rm skill.zipInstalls to .claude/skills/model-andrelucassvt
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Cria uma nova Model (struct) seguindo os padroes MVVM do projeto SwiftUI. Use quando o usuario pedir para criar um novo modelo, entidade ou struct de dados.Key capabilities
- →Create Swift structs for data models
- →Ensure models conform to `Codable`, `Identifiable`, and `Equatable`
- →Implement `CodingKeys` for API data mapping
- →Generate mock data for SwiftUI Previews
- →Define properties as `let` for immutability
How it works
It creates a new SwiftUI Model (struct) following MVVM patterns, ensuring it conforms to `Codable`, `Identifiable`, and `Equatable`. It uses `CodingKeys` for API mapping and can generate mock data for previews.
Inputs & outputs
When to use model
- →Define a new data entity for a SwiftUI screen
- →Generate a model with CodingKeys for API response mapping
- →Create mock data for SwiftUI Previews
- →Implement Identifiable and Hashable models for navigation
About this skill
Crie uma nova Model SwiftUI seguindo os padroes MVVM do projeto.
Argumentos
Nome da Model em PascalCase: $ARGUMENTS
Se $ARGUMENTS estiver vazio, pergunte: "Qual o nome da Model? (ex: Product, Order, Address)"
Pergunte ao usuario:
- Quais propriedades a Model deve ter? (nome e tipo de cada uma)
- A API retorna nomes diferentes das propriedades Swift? (snake_case, etc.) — padrao: sim, usar
CodingKeys - Precisa de dados mockados para Preview? (padrao: sim)
O que criar
Crie os arquivos no diretorio Models/:
1. Models/<PascalCase>.swift
import Foundation
struct <PascalCase>: Codable, Identifiable, Equatable {
let id: String
// Propriedades informadas pelo usuario
enum CodingKeys: String, CodingKey {
case id
// Mapeamentos snake_case -> camelCase conforme necessario
}
}
Regras da Model:
- Sempre
struct, nuncaclass - Propriedades sempre
let(imutavel) — usevarapenas se houver necessidade explicita de mutacao - Conformar com
Codable,IdentifiableeEquatableno minimo - Adicionar
Hashablese a Model for usada emForEachsem keypath,Set, ou como valor deNavigationLink - Sem logica de negocio — apenas dados
- Sem
import SwiftUI— apenasimport Foundation - Usar
CodingKeysquando qualquer propriedade da API usar nomenclatura diferente (ex:snake_case) - Propriedades opcionais (
?) para campos que podem virnullda API - Usar tipos adequados:
URLpara URLs,Datepara datas,Decimalpara valores monetarios id: UUIDpara objetos criados localmente;id: Stringouid: Intpara objetos vindos de API
2. Preview Content/PreviewData+<PascalCase>.swift (se solicitado)
Extension com dados mockados para uso em Previews:
import Foundation
extension <PascalCase> {
static let mock = <PascalCase>(
id: "1",
// Dados mockados realistas
)
static let mockList: [<PascalCase>] = [
.mock,
<PascalCase>(
id: "2",
// Segundo item mockado
),
<PascalCase>(
id: "3",
// Terceiro item mockado
),
]
}
Apos criar os arquivos
Informe o usuario sobre os proximos passos comuns:
- Criar o Repository correspondente em
Repositories/<PascalCase>Repository.swiftcom protocolo + implementacao - Criar o ViewModel que consome essa Model em
ViewModels/ - Criar a View que exibe essa Model em
Views/ - Se a Model tiver
Date, garantir que oJSONDecoderusa.iso8601comodateDecodingStrategy
Regras
- Sem
import SwiftUI— apenasimport Foundation - Structs imutaveis com
let— nuncaclassouvarsem necessidade - Conformar com
Codable,Identifiable,Equatableno minimo - Usar
CodingKeysquando a API retorna nomes diferentes (snake_case -> camelCase) - Propriedades opcionais para campos que podem ser
null - Dados mockados devem ser realistas e variados
- Nao adicionar metodos de logica de negocio na Model
- Usar tipos Swift adequados (
URL,Date,Decimal) ao inves deStringgenerico id: UUIDpara objetos criados localmente;id: Stringouid: Intpara objetos de API
Checklist de Revisao
-
structimutavel comlet(nuncaclass) - Conforma com
Codable,Identifiable,Equatableno minimo -
Hashableadicionado se usada emSet,ForEachsem keypath, ouNavigationLink(value:) - Sem
import SwiftUI— apenasimport Foundation - Sem logica de negocio — apenas dados
-
CodingKeyspresente quando a API usa nomes diferentes das propriedades Swift - Campos opcionais (
?) para propriedades que podem sernull - Tipos corretos:
URL,Date,Decimalao inves deStringgenerico -
PreviewDatacriado commockemockListcom dados realistas e variados
When not to use it
- →When creating classes instead of structs
- →When the model requires business logic or `import SwiftUI`
- →When the model is not intended for MVVM patterns in SwiftUI
Limitations
- →Models must be `struct`, not `class`.
- →Models should not contain business logic.
- →Models should not `import SwiftUI`.
How it compares
This skill provides a structured approach to creating SwiftUI data models with specific protocol conformances and API mapping using `CodingKeys`, rather than just defining a basic Swift struct.
Compared to similar skills
model side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| model (this skill) | 0 | 4mo | No flags | Beginner |
| liquid-glass-developer | 23 | 3mo | No flags | Intermediate |
| swiftui-liquid-glass | 15 | 4mo | No flags | Intermediate |
| swiftui-expert-skill | 13 | 4mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by andrelucassvt
View all by andrelucassvt →You might also like
liquid-glass-developer
anyproto
Context-aware routing to iOS 26 Liquid Glass implementation patterns. Use when working with glass effects, GlassEffectContainer, morphing transitions, or iOS 26 visual effects.
swiftui-liquid-glass
Dimillian
Implement, review, or improve SwiftUI features using the iOS 26+ Liquid Glass API. Use when asked to adopt Liquid Glass in new SwiftUI UI, refactor an existing feature to Liquid Glass, or review Liquid Glass usage for correctness, performance, and design alignment.
swiftui-expert-skill
sickn33
Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, modern APIs, Swift concurrency, and iOS 26+ Liquid Glass adoption. Use when building new SwiftUI features, refactoring existing views, reviewing code quality, or adopting modern SwiftUI patterns.
ios-dev-guidelines
anyproto
Context-aware routing to Swift/iOS development patterns, architecture, and best practices. Use when working with .swift files, ViewModels, Coordinators, refactoring, or discussing Swift/SwiftUI patterns.
swiftui-ui-patterns
Dimillian
Best practices and example-driven guidance for building SwiftUI views and components. Use when creating or refactoring SwiftUI UI, designing tab architecture with TabView, composing screens, or needing component-specific patterns and examples.
ios-navigation
HoangNguyen0403
SwiftUI navigation and deep linking using NavigationStack and Universal Links.