원클릭으로
ios-worker
Implements and tests SwiftUI views, navigation flows, and shared iOS design-system work for ADE
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Implements and tests SwiftUI views, navigation flows, and shared iOS design-system work for ADE
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Autonomous PR-to-merge loop. Polls CI and review bots, fixes failures, rebases only on real conflicts, and lands the PR on main. Soft cap of 5 normal iterations plus one force-finalize iteration that bypasses review and fixes only CI. Pure loop — it does NOT run /quality or /test; run those first. Full phase logic lives in docs/playbooks/ship-lane.md.
ADE release conductor: detect whether desktop and/or iOS actually changed, bump desktop patch versions, keep iOS marketing versions fixed while bumping build numbers, ship desktop through the GitHub Actions release workflow, and distribute TestFlight builds to all beta users.
Use this skill when an agent needs to inspect or operate ADE itself through the `ade` CLI, including lanes, chats, actions, proof, runtime/socket state, or help/flag discovery.
Use this skill when creating, inspecting, syncing, committing, pushing, archiving, or rebasing ADE lanes and lane worktrees through `ade lanes` and `ade git`.
Use this skill when using ADE's built-in browser pane, shared browser tabs, screenshots, page inspection, or browser context selection through `ade browser`.
Prove the new code works: enforce the logging/PostHog ground truth, prune dead tests, consolidate fragments, add only tests that prove new contracts, turn each /quality Blocker/High finding into a named regression test, then run CI-mirrored shards. Also keeps docs/mobile/CLI/TUI parity in lockstep.
| name | ios-worker |
| description | Implements and tests SwiftUI views, navigation flows, and shared iOS design-system work for ADE |
NOTE: Startup and cleanup are handled by worker-base. This skill defines the WORK PROCEDURE.
Use for features that are primarily iOS UI work inside apps/ios/ADE/, including:
apps/ios/ADETests/Do not use this skill for desktop sync-host, shared contract, SyncService, RemoteModels, or database features. Those belong to a sync/backend worker.
Read the feature description, preconditions, expectedBehavior, and verificationSteps carefully. Then:
mission.md for overall mission contextAGENTS.md for boundaries and conventions.factory/library/architecture.md for app architecture and patterns.factory/library/tab-parity.md and .factory/library/performance.md when the feature touches parity or lag-sensitive flowsBefore writing any code:
syncService methods the views need to callViews/Components/ instead of duplicated inside a tabSyncService, RemoteModels, Database, or desktop host changes, stop and return to the orchestratorFor any testable logic (filters, computed properties, data transformations, directory grouping):
ADETests.swift (the single test file)@testable import ADE and XCTest patterns matching existing testsWrite the SwiftUI code:
Views/Lanes/, Views/Files/, Views/Work/, Views/PRs/, Views/Settings/). Keep files under 500 lines; if a feature leaves a file bigger than that, split again before handing off.ADEColor.*, ADEMotion.*, .adeGlassCard(), .adeInsetField(), .adeNavigationGlass(), .adeScreenBackground(), ADENoticeCard, ADEStatusPill, ADEEmptyStateView, ADESkeletonView, ADECardSkeleton, and shared glass helpers instead of ad-hoc styling..accessibilityLabel to all interactive elements. Use ADEMotion which respects reduceMotion. Preserve .sensoryFeedback on appropriate interactions.@EnvironmentObject var syncService: SyncService. Call existing SyncService methods — never add new ones.@State for local state. Prefer debounced .task(id: syncService.localStateRevision) patterns matching the Lanes benchmark when reloading cached projections.body, cache expensive derived values in state/view-model helpers, and preserve source-tab context on return navigation.SyncService.swift, RemoteModels.swift, Database.swift, desktop services, or shared sync contracts from this skill.When creating new Swift files, you MUST add them to the Xcode project:
apps/ios/ADE.xcodeproj/project.pbxproj to add file references and build phase entriesRun these commands and fix any issues:
# Mission simulator target
DESTINATION="platform=iOS Simulator,name=iPhone 17 Pro,OS=26.3.1"
# Build / test / analyzer
xcodebuild build -project apps/ios/ADE.xcodeproj -scheme ADE -destination "$DESTINATION" -quiet
xcodebuild test -project apps/ios/ADE.xcodeproj -scheme ADE -destination "$DESTINATION" -quiet
xcodebuild -project apps/ios/ADE.xcodeproj -scheme ADE -destination "$DESTINATION" -derivedDataPath /tmp/ade-build analyze
# Check file sizes (no file should exceed 500 lines)
find apps/ios/ADE -name '*.swift' -exec wc -l {} + | sort -rn | head -20
All must pass for the touched surface. If build or tests fail, fix immediately. If a failure is clearly pre-existing and outside the feature boundary, return to the orchestrator with evidence instead of hand-waving past it.
Do the strongest manual verification the feature allows:
SyncService through the view hierarchysyncService method calls and model property names match the existing API exactlyCommit with a clear message describing what was implemented.
{
"salientSummary": "Split the Work tab into mobile-first subviews, added a reusable glass section/chip stack in Views/Components, and stabilized session list/detail navigation so filters and context survive round-trips. Build, tests, and analyzer passed on the mission simulator target.",
"whatWasImplemented": "Refactored WorkTabView.swift into focused files under Views/Work/, promoted reusable glass chips/section containers into Views/Components/, and updated the Work list/detail flows to preserve lane/search/filter context when opening sessions and returning. The new UI keeps chat/terminal sessions readable on iPhone, uses shared glass styling, and removes several hot-path computations from SwiftUI body evaluation.",
"whatWasLeftUndone": "",
"verification": {
"commandsRun": [
{
"command": "xcodebuild build -project apps/ios/ADE.xcodeproj -scheme ADE -destination 'platform=iOS Simulator,name=iPhone 17 Pro,OS=26.3.1' -quiet",
"exitCode": 0,
"observation": "Build succeeded with no errors or warnings"
},
{
"command": "xcodebuild test -project apps/ios/ADE.xcodeproj -scheme ADE -destination 'platform=iOS Simulator,name=iPhone 17 Pro,OS=26.3.1' -quiet",
"exitCode": 0,
"observation": "The iOS test suite passed on the mission destination"
},
{
"command": "xcodebuild -project apps/ios/ADE.xcodeproj -scheme ADE -destination 'platform=iOS Simulator,name=iPhone 17 Pro,OS=26.3.1' -derivedDataPath /tmp/ade-build analyze",
"exitCode": 0,
"observation": "Static analysis completed without blocking diagnostics"
},
{
"command": "find apps/ios/ADE -name '*.swift' -exec wc -l {} + | sort -rn | head -20",
"exitCode": 0,
"observation": "New and modified Swift files stayed within the file-size limit after extraction"
}
],
"interactiveChecks": [
{
"action": "Traced session list → session detail → back navigation on the refactored Work surface",
"observed": "The source lane/filter/search context remained intact after returning from detail"
},
{
"action": "Reviewed all promoted shared components and the new Work subviews against the existing SyncService API",
"observed": "All property and method accesses remained within the existing iOS/UI boundary and matched current signatures"
}
]
},
"tests": {
"added": []
},
"discoveredIssues": []
}
SyncService, RemoteModels, Database, desktop services, or shared sync contracts