一键导入
project-structure
Load when locating files, adding files, or checking package ownership. Compact map plus discovery commands; use rg for live file lists.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Load when locating files, adding files, or checking package ownership. Compact map plus discovery commands; use rg for live file lists.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Build, launch, and capture debug logs from the iOS simulator. Use when you need to verify runtime behavior, measure timing, or diagnose issues without asking the user to manually capture logs.
Use when the user asks to visually test, touch, automate, or walk every Ensemble app surface across iOS/iPadOS and macOS, including agent-run UI sweeps, issue detection, reproduction, log inspection, fix-plan reports, platform parity checks, and repeatable screenshot/accessibility evidence runs.
Canonical Ensemble behavior policy router. Load before changing app behavior, playback, queue, offline/connectivity, downloads, sync/refresh, mutations, platform UI behavior, or verification expectations; update the relevant policy reference when implementation changes or clarifies behavior.
Plex Media Server API reference. Load when implementing or debugging Plex API integration.
Load before designing features, adding services, or touching multiple packages. Compact ownership, dependency, and subsystem rules for Ensemble.
Load before building or modifying any SwiftUI view. Ensemble UI/UX conventions: navigation behavior, tab management, visual design specs, loading/error states, performance optimization, iOS 15 compatibility, DetailLoader pattern.
| name | project-structure |
| description | Load when locating files, adding files, or checking package ownership. Compact map plus discovery commands; use rg for live file lists. |
This skill is a map, not a full file tree. Use live discovery for exact paths:
rg --files
rg --files Packages/EnsembleCore
rg --files Packages/EnsembleUI | rg 'NowPlaying|Screens|Components'
| Path | Purpose |
|---|---|
Ensemble.xcworkspace | Main workspace. Use this for Xcode builds. |
Ensemble.xcodeproj | Project file, not the primary entry point. |
CLAUDE.md | Canonical agent operating contract. |
AGENTS.md | Symlink to CLAUDE.md for agents that discover AGENTS.md by convention. |
.claude/skills/ | Project-specific agent skills, including app-policies for canonical app behavior policy. |
.claude/hooks/ | Claude hook scripts. |
docs/investigations/ | Historical audits, resolved incidents, and closeout notes. |
docs/reference/ | Long-form reference material that should not be loaded by default. |
scripts/ | Build, test, diagnostics, performance, and Plex probe helpers. |
README.md | User-facing project overview. |
VOCABULARY.md | Canonical UI terminology. |
| Path | Purpose |
|---|---|
Ensemble/App/ | App entry point, app delegates, launch pipeline, scene and integration glue. |
Ensemble/Resources/ | Assets, app intent vocabulary, SiriKit intent definitions, and app resources. |
EnsembleUITests/ | App UI smoke and regression tests launched by the Ensemble scheme. |
EnsembleSiriIntentsExtension/ | SiriKit Media Intents extension. Keep extension logic thin. |
EnsembleWatch/ | Independent watchOS app target and watch SwiftUI. |
EnsembleWatch/Shared/ | Codable iOS/watch payload contracts compiled into both targets. |
| Package | Owns | Do not do |
|---|---|---|
Packages/EnsembleSupport | Low-level shared Foundation utilities used across packages and app targets, including privacy-safe log redaction and audio payload validation. | Do not put app behavior, UI, persistence, network clients, or platform service orchestration here. |
Packages/EnsembleAPI | Plex HTTP/auth clients, request builders, API models, connection policy, WebSocket transport. | Do not import UI, CoreData, or app target code. |
Packages/EnsemblePersistence | CoreData stack, managed objects, repositories, downloads/artwork persistence. | Do not put UI or network orchestration here. |
Packages/EnsembleSiriShared | Pure Siri/system-media identity, index models, payload codecs, resolver/ranking logic, phrase normalization/scoring, and App Group constants. | Do not import CoreData, Intents UI, SwiftUI, Spotlight, or playback services. |
Packages/EnsembleDomain | Watch-portable account/media/playback models. | Do not pull in full EnsembleCore. |
Packages/EnsemblePlex | Watch-portable Plex facade built on EnsembleAPI and EnsembleDomain. | Do not duplicate low-level Plex request logic. |
Packages/EnsembleWatchCore | Watch bootstrap, credentials, catalog cache, local playback, local/remote Now Playing state. | Do not link EnsembleUI or full iOS playback graph. |
Packages/EnsembleCore | ViewModels, services, domain models, DI, sync/playback/offline/profile logic. | Do not introduce SwiftUI views. |
Packages/EnsembleUI | SwiftUI views, platform UI adapters, reusable components. | Do not place business logic or persistence here. |
Packages/EnsembleCore/Sources/ViewModels/Packages/EnsembleCore/Sources/Services/Packages/EnsembleCore/Sources/Services/Packages/EnsembleCore/Sources/Services/Packages/EnsembleCore/Sources/Services/ArtworkBlurRenderer.swiftPackages/EnsembleSupport/Sources/Packages/EnsembleSiriShared/Sources/Ensemble/Resources/*.intentdefinition, then add it to the app and relevant extension target resources in Ensemble.xcodeproj.Packages/EnsembleUI/Sources/Screens/, .../Components/, .../NowPlaying/, or an existing feature folder.Packages/EnsembleUI/Sources/Screens/Root/.Packages/EnsembleUI/Sources/Screens/Library/; its request model lives in Packages/EnsembleCore/Sources/Models/ and its ViewModel in Packages/EnsembleCore/Sources/ViewModels/.Packages/EnsemblePersistence/Sources/CoreData/PlexAPIClient+*.swift file in Packages/EnsembleAPI/Sources/Client/.Tests/ directory.EnsembleUITests/.docs/investigations/.docs/reference/.| Script | Use |
|---|---|
scripts/compile_coredata_model.sh | Rebuild SwiftPM CoreData model bundle after .xcdatamodeld changes. |
scripts/verify_package_baseline.sh | Rebuild model bundle and run package baseline tests. |
scripts/check_core_warning_budget.sh | Keep EnsembleCore warnings at or below the current baseline. |
scripts/capture_runtime_baseline.sh | Capture repeatable simulator/runtime log baseline. |
scripts/capture_performance_gate.sh | Capture Instruments performance gates for performance-sensitive changes. |
scripts/design_token_audit.sh | Inventory design-token/raw literal hotspots. |
scripts/plex_hls_spike.sh | Bounded PMS music-HLS viability probe. |
scripts/update_build_number.sh | Deterministic build-number update for app and Siri extension. |
Verified May 13, 2026:
Ensemble.xcworkspace exists.Ensemble, all package schemes, EnsembleSiriIntentsExtension, and EnsembleWatch.iPhone 17 Pro is an available simulator destination.