← Back to list

ios-dev
by shabaraba
Claude Code plugins monorepo - AI-driven development workflow tools
⭐ 0🍴 0📅 Jan 8, 2026
SKILL.md
name: ios-dev description: iOS development skill for Swift, SwiftUI, Live Activities, WidgetKit, and XCTest. Use when implementing iOS features.
iOS Development Skill
Platform-specific knowledge for iOS development.
Tech Stack
| Component | Technology |
|---|---|
| Language | Swift 5.9+ |
| UI Framework | SwiftUI |
| Architecture | MVVM or TCA (follow project) |
| Testing | XCTest, XCUITest |
| Live Activities | ActivityKit |
| Widgets | WidgetKit |
Coding Standards
Naming
- Variables/Functions:
lowerCamelCase - Types/Protocols:
UpperCamelCase - Constants:
lowerCamelCase(not SCREAMING_CASE) - Language: English
File Organization
// 1. Imports
import SwiftUI
import ActivityKit
// 2. Types (protocol, struct, class, enum)
struct ContentView: View {
// 3. Properties (static, @State, let, var)
// 4. Initializer
// 5. Body / Methods
}
// 6. Extensions
extension ContentView {
// ...
}
// 7. Previews
#Preview {
ContentView()
}
SwiftUI Patterns
// Prefer small, composable views
struct FeatureView: View {
@StateObject private var viewModel = FeatureViewModel()
var body: some View {
VStack {
HeaderSection(title: viewModel.title)
ContentSection(items: viewModel.items)
}
.task {
await viewModel.load()
}
}
}
Comments
- Japanese OK for complex logic
- Avoid obvious comments
- Use
// MARK: -for sections
Build Commands
# Build
xcodebuild -scheme <Scheme> -destination 'generic/platform=iOS' build
# Test
xcodebuild test \
-scheme <Scheme> \
-destination 'platform=iOS Simulator,name=iPhone 15'
# Clean
xcodebuild clean -scheme <Scheme>
Live Activities
Setup Checklist
- Add
NSSupportsLiveActivitiesto Info.plist - Create ActivityAttributes struct
- Create ActivityContent struct
- Implement start/update/end logic
Basic Pattern
struct MyActivityAttributes: ActivityAttributes {
public struct ContentState: Codable, Hashable {
var value: String
}
var name: String
}
// Start
let attributes = MyActivityAttributes(name: "Example")
let state = MyActivityAttributes.ContentState(value: "Initial")
let activity = try Activity.request(
attributes: attributes,
content: .init(state: state, staleDate: nil)
)
// Update
await activity.update(
ActivityContent(state: newState, staleDate: nil)
)
// End
await activity.end(nil, dismissalPolicy: .immediate)
WidgetKit
Setup Checklist
- Add Widget Extension target
- Configure App Groups for data sharing
- Implement TimelineProvider
- Create Widget views
Data Sharing
// Write (main app)
let defaults = UserDefaults(suiteName: "group.com.example.app")
defaults?.set(value, forKey: "sharedKey")
WidgetCenter.shared.reloadAllTimelines()
// Read (widget)
let defaults = UserDefaults(suiteName: "group.com.example.app")
let value = defaults?.string(forKey: "sharedKey")
Testing
Unit Test Pattern
final class FeatureTests: XCTestCase {
var sut: FeatureViewModel!
override func setUp() {
super.setUp()
sut = FeatureViewModel()
}
override func tearDown() {
sut = nil
super.tearDown()
}
func test_initialState_isEmpty() {
XCTAssertTrue(sut.items.isEmpty)
}
func test_load_populatesItems() async {
await sut.load()
XCTAssertFalse(sut.items.isEmpty)
}
}
Common Issues
"Signing requires a development team"
- Open Xcode, select target, set Team in Signing & Capabilities
"No such module"
- Clean build folder:
xcodebuild clean - Check Swift Package dependencies
Widget not updating
- Call
WidgetCenter.shared.reloadAllTimelines() - Check App Groups configuration
Score
Total Score
50/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon