Generic Constructor-Pattern agent kit for Claude Code. Zero personal data, fully English, MIT-licensed. Contents: - 34 reusable blocks (baseline, rules, stack/deploy/domain/api/scraper) - 14 cross-project agent manifests (code/ml/infra/researcher/critic/...) - 6 portable skills (/new-agent, /research, /test-gen, /debug-deep, /pr-review, /refactor) - Rust assembler (single binary, ~500 KB) - 3 hooks (auto-reassemble, pre-commit validate, no-hand-edit) - install.sh (idempotent, cargo-builds on first run) - MIT LICENSE All 6 sanity greps pass: 0 Russian text, 0 specific project names, 0 incident numbers, 0 user paths, 0 hardcoded IPs, 0 API keys. cargo check + assemble --validate: both pass on 14 manifests. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.5 KiB
1.5 KiB
STACK — Swift iOS (UIKit / SwiftUI hybrid)
Use for platform-native iOS UI — this is the only sane choice for iOS.
UIKit vs SwiftUI:
- SwiftUI for new screens by default (iOS 16+ targets). Wrap UIKit views via
UIViewRepresentableonly when SwiftUI has no equivalent (AVKit camera, ARKit, MapKit gestures). - UIKit required for: deep
UITextInputcustom protocols, scroll-view precise tracking,UIPageViewControllerpaging animations < 60 fps on SwiftUI.
App lifecycle:
@mainstruct App orAppDelegate/SceneDelegatepair. NOT both — pick one.LaunchScreen.storyboardrequired (Info.plist keyUILaunchStoryboardName) — Apple rejects static image launch.
Info.plist mandatory keys:
NSCameraUsageDescription/NSPhotoLibraryUsageDescription/NSLocationWhenInUseUsageDescription— if capability used; missing → runtime crash, not build error.CFBundleURLTypesfor custom URL schemes (deeplinks).NSAppTransportSecurity— never setNSAllowsArbitraryLoads=truein prod (App Store rejection).UIBackgroundModesarray for any background audio / location / BLE.
Threading: @MainActor for UI mutation; actor for shared mutable state; Task { ... } for async. NO DispatchQueue.main.async wrapping UI updates from Swift Concurrency code (defeats actor isolation).
Forbidden: NSAllowsArbitraryLoads=true, force-unwrapping UIImage(named:) (use failable init), hardcoded API keys in .swift sources (use .xcconfig + Bundle.main.infoDictionary).