# Swift Style

> Swift style guidelines covering naming conventions, code organization, and best practices for writing idiomatic Swift code.

- Skill: `swiftzilla/swift-style` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add swiftzilla/swift-style`
- Raw SKILL.md: https://api.skillmd.com/api/skills/swiftzilla/swift-style/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Proprietary
- Author: swiftzilla (https://skillmd.com/u/swiftzilla)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/swiftzilla/swift-style

---


# Swift Style

This skill provides comprehensive style guidelines for writing clean, idiomatic, and maintainable Swift code.

## Overview

Swift style guidelines cover naming conventions, access control, type selection, and code organization patterns that make your code more readable and professional.

## Available References

### Naming & Conventions
- [Variables and Constants](./references/variables.md) - `var` vs `let`, naming conventions, immutability
- [Functions](./references/functions.md) - Function naming, parameter labels, return types

### Types & Protocols
- [Types](./references/types.md) - Struct vs Class vs Enum, value vs reference semantics
- [Protocols](./references/protocols.md) - Protocol-Oriented Programming (POP), composition, extensions

### Code Organization
- [Access Control](./references/access_control.md) - `public`, `private`, `internal`, `fileprivate`, `open`

## Quick Reference

### Naming Conventions

| Category | Case | Example |
|----------|------|---------|
| Types & Protocols | UpperCamelCase | `String`, `UIViewController` |
| Variables, Functions | lowerCamelCase | `userID`, `fetchData()` |
| Boolean Properties | `is`, `has`, `should` | `isEmpty`, `hasPermission` |
| Constants | lowerCamelCase | `maxConnections` |

### Type Selection Guide

```
Need identity or reference semantics?
├── YES → Use Class
└── NO → Need inheritance?
    ├── YES → Use Class
    └── NO → Modeling finite states?
        ├── YES → Use Enum
        └── NO → Use Struct (default)
```

### Access Levels

| Modifier | Visibility | Use When |
|----------|------------|----------|
| `private` | Enclosing declaration | Strict encapsulation |
| `fileprivate` | Same file | File-local helpers |
| `internal` (default) | Same module | Implementation details |
| `public` | Everywhere | Public API |
| `open` | Everywhere + subclassable | Extensible frameworks |

## Best Practices

1. **Default to structs** - Use simplest type that expresses intent
2. **Use `let` by default** - Only use `var` when mutation needed
3. **Prefer protocols over inheritance** - More flexible composition
4. **Keep functions focused** - Single responsibility
5. **Use access control** - Expose only what's necessary
6. **Follow naming conventions** - Descriptive, Swifty names

## For More Information

Each reference file contains detailed information, code examples, and best practices for specific topics. Visit https://swiftzilla.dev for comprehensive Swift documentation.

