@mmerterden/multi-agent-pipeline 14.1.0 → 14.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +177 -1
- package/README.md +4 -4
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +1 -1
- package/package.json +1 -1
- package/pipeline/commands/deploy.md +4 -1
- package/pipeline/commands/multi-agent/SKILL.md +6 -3
- package/pipeline/commands/multi-agent/dev/SKILL.md +5 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +49 -11
- package/pipeline/commands/multi-agent/setup/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/store-ready/SKILL.md +340 -0
- package/pipeline/commands/multi-agent/sync/SKILL.md +11 -5
- package/pipeline/commands/multi-agent/test/SKILL.md +18 -8
- package/pipeline/commands/multi-agent/test-accessibility/SKILL.md +33 -0
- package/pipeline/commands/multi-agent/test-dark-mode/SKILL.md +33 -0
- package/pipeline/commands/multi-agent/test-dynamic-type/SKILL.md +33 -0
- package/pipeline/commands/multi-agent/test-screenshots/SKILL.md +41 -0
- package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +28 -201
- package/pipeline/commands/sim-test.md +45 -36
- package/pipeline/multi-agent-refs/cross-cli-contract.md +3 -2
- package/pipeline/multi-agent-refs/knowledge.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +7 -4
- package/pipeline/schemas/prefs.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +2 -2
- package/pipeline/scripts/build-stack-plugins.mjs +21 -0
- package/pipeline/scripts/migrate-prefs.mjs +30 -0
- package/pipeline/skills/.skills-index.json +57 -12
- package/pipeline/skills/shared/README.md +11 -6
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +13 -17
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +50 -12
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +18 -3
- package/pipeline/skills/shared/core/multi-agent-store-ready/SKILL.md +50 -0
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +4 -3
- package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +18 -8
- package/pipeline/skills/shared/core/multi-agent-test-accessibility/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-test-dark-mode/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-test-dynamic-type/SKILL.md +37 -0
- package/pipeline/skills/shared/core/multi-agent-test-screenshots/SKILL.md +44 -0
- package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +29 -101
- package/pipeline/skills/shared/external/firebase/SKILL.md +1 -1
- package/pipeline/skills/skills-index.md +9 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"skillCount":
|
|
3
|
+
"skillCount": 201,
|
|
4
4
|
"entries": [
|
|
5
5
|
{
|
|
6
6
|
"name": "accessibility-compliance-accessibility-audit",
|
|
@@ -445,7 +445,7 @@
|
|
|
445
445
|
},
|
|
446
446
|
{
|
|
447
447
|
"name": "firebase",
|
|
448
|
-
"description": "You're a developer who has shipped dozens of Firebase projects. You've seen the
|
|
448
|
+
"description": "You're a developer who has shipped dozens of Firebase projects. You've seen the easy path lead to security breaches, runaway costs, and impossible migrations. You know Firebase is powerful, but you also know its sharp edges. Use when integrating or reviewing Firebase: auth, Firestore, functions, or ",
|
|
449
449
|
"platform": null,
|
|
450
450
|
"group": "external",
|
|
451
451
|
"triggerKeywords": [],
|
|
@@ -857,15 +857,6 @@
|
|
|
857
857
|
"triggerPaths": [],
|
|
858
858
|
"relativePath": "shared/core/multi-agent-diff-explain/SKILL.md"
|
|
859
859
|
},
|
|
860
|
-
{
|
|
861
|
-
"name": "multi-agent-ship",
|
|
862
|
-
"description": "Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenario comment). No dev phase. Use when local work is already done and only review, build, commit and reporting remain.",
|
|
863
|
-
"platform": null,
|
|
864
|
-
"group": "core",
|
|
865
|
-
"triggerKeywords": [],
|
|
866
|
-
"triggerPaths": [],
|
|
867
|
-
"relativePath": "shared/core/multi-agent-ship/SKILL.md"
|
|
868
|
-
},
|
|
869
860
|
{
|
|
870
861
|
"name": "multi-agent-forget",
|
|
871
862
|
"description": "Remove a saved /multi-agent routine (created by /multi-agent:save): deletes its local-only command and its registry entry. Asks which one and confirms. Use when a saved routine is no longer wanted and should be removed.",
|
|
@@ -1082,6 +1073,15 @@
|
|
|
1082
1073
|
"triggerPaths": [],
|
|
1083
1074
|
"relativePath": "shared/core/multi-agent-setup/SKILL.md"
|
|
1084
1075
|
},
|
|
1076
|
+
{
|
|
1077
|
+
"name": "multi-agent-ship",
|
|
1078
|
+
"description": "Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenario comment). No dev phase. Use when local work is already done and only review, build, commit and reporting remain.",
|
|
1079
|
+
"platform": null,
|
|
1080
|
+
"group": "core",
|
|
1081
|
+
"triggerKeywords": [],
|
|
1082
|
+
"triggerPaths": [],
|
|
1083
|
+
"relativePath": "shared/core/multi-agent-ship/SKILL.md"
|
|
1084
|
+
},
|
|
1085
1085
|
{
|
|
1086
1086
|
"name": "multi-agent-stack",
|
|
1087
1087
|
"description": "Select the active stack for this repo by enabling the matching marketplace plugin(s) in .claude/settings.json (ios/android/mobile/backend/frontend/fullstack/all). Use when a repo's stack changed or the wrong plugins are enabled for it.",
|
|
@@ -1100,6 +1100,15 @@
|
|
|
1100
1100
|
"triggerPaths": [],
|
|
1101
1101
|
"relativePath": "shared/core/multi-agent-status/SKILL.md"
|
|
1102
1102
|
},
|
|
1103
|
+
{
|
|
1104
|
+
"name": "multi-agent-store-ready",
|
|
1105
|
+
"description": "Pre-submission store readiness for a built package, iOS and Android, local-only. Three symmetric gates per platform: a static package audit, the store's own authoritative validation, and a policy review against repo source. Separate verdict per gate, a skipped gate never counted as a pass. Validates",
|
|
1106
|
+
"platform": null,
|
|
1107
|
+
"group": "core",
|
|
1108
|
+
"triggerKeywords": [],
|
|
1109
|
+
"triggerPaths": [],
|
|
1110
|
+
"relativePath": "shared/core/multi-agent-store-ready/SKILL.md"
|
|
1111
|
+
},
|
|
1103
1112
|
{
|
|
1104
1113
|
"name": "multi-agent-sync",
|
|
1105
1114
|
"description": "One-shot sync of the entire multi-agent ecosystem: Claude Code, Copilot CLI, pipeline repo, website, and the dev-toolkit MCP server. Use when work is finished and should be propagated across Claude Code, Copilot CLI, the repos, the website and the dev-toolkit server.",
|
|
@@ -1118,9 +1127,45 @@
|
|
|
1118
1127
|
"triggerPaths": [],
|
|
1119
1128
|
"relativePath": "shared/core/multi-agent-test/SKILL.md"
|
|
1120
1129
|
},
|
|
1130
|
+
{
|
|
1131
|
+
"name": "multi-agent-test-accessibility",
|
|
1132
|
+
"description": "Accessibility audit on a booted simulator / emulator: VoiceOver labels, sub-44pt tap targets, contrast, traits. Alias pinning the accessibility scenario. Use when auditing a screen for assistive-technology support.",
|
|
1133
|
+
"platform": null,
|
|
1134
|
+
"group": "core",
|
|
1135
|
+
"triggerKeywords": [],
|
|
1136
|
+
"triggerPaths": [],
|
|
1137
|
+
"relativePath": "shared/core/multi-agent-test-accessibility/SKILL.md"
|
|
1138
|
+
},
|
|
1139
|
+
{
|
|
1140
|
+
"name": "multi-agent-test-dark-mode",
|
|
1141
|
+
"description": "Dark mode UI test on a booted simulator / emulator: walk every screen light then dark, report contrast + colour bugs. Alias pinning the dark-mode scenario. Use when a dark-mode rendering bug is suspected.",
|
|
1142
|
+
"platform": null,
|
|
1143
|
+
"group": "core",
|
|
1144
|
+
"triggerKeywords": [],
|
|
1145
|
+
"triggerPaths": [],
|
|
1146
|
+
"relativePath": "shared/core/multi-agent-test-dark-mode/SKILL.md"
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
"name": "multi-agent-test-dynamic-type",
|
|
1150
|
+
"description": "Dynamic Type layout test on a booted simulator / emulator: re-walk every screen at XL through accessibility-extra-large, report truncation and clipping. Alias pinning the dynamic-type scenario. Use when checking a layout survives large text.",
|
|
1151
|
+
"platform": null,
|
|
1152
|
+
"group": "core",
|
|
1153
|
+
"triggerKeywords": [],
|
|
1154
|
+
"triggerPaths": [],
|
|
1155
|
+
"relativePath": "shared/core/multi-agent-test-dynamic-type/SKILL.md"
|
|
1156
|
+
},
|
|
1157
|
+
{
|
|
1158
|
+
"name": "multi-agent-test-screenshots",
|
|
1159
|
+
"description": "App Store screenshot set from a booted simulator / emulator in a given locale, taken as an argument and defaulting to tr. Alias pinning the screenshot scenario. Use when generating store screenshots or checking a localised build renders.",
|
|
1160
|
+
"platform": null,
|
|
1161
|
+
"group": "core",
|
|
1162
|
+
"triggerKeywords": [],
|
|
1163
|
+
"triggerPaths": [],
|
|
1164
|
+
"relativePath": "shared/core/multi-agent-test-screenshots/SKILL.md"
|
|
1165
|
+
},
|
|
1121
1166
|
{
|
|
1122
1167
|
"name": "multi-agent-testflight-validation",
|
|
1123
|
-
"description": "
|
|
1168
|
+
"description": "iOS-pinned alias of store-ready: same three gates on an iOS build, one implementation. Validates a TestFlight / App Store package, never uploads. Use when an iOS build is about to go to TestFlight, or a submission was rejected and you need why.",
|
|
1124
1169
|
"platform": null,
|
|
1125
1170
|
"group": "core",
|
|
1126
1171
|
"triggerKeywords": [],
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Single source of truth for skills delivered to both Claude Code (`~/.claude/skills/`) and Copilot CLI (`~/.copilot/skills/`) by the installer.
|
|
4
4
|
|
|
5
|
-
**Total:**
|
|
5
|
+
**Total:** 201 skills (52 core + 149 external). Auto-generated by `scripts/gen-skills-index.mjs` - do not edit by hand.
|
|
6
6
|
|
|
7
7
|
## Directory layout
|
|
8
8
|
|
|
9
|
-
- **`core/`** -
|
|
9
|
+
- **`core/`** - 52 `multi-agent*` orchestration skills that are pipeline-critical. Edits here are core-code changes.
|
|
10
10
|
- **`external/`** - 149 iOS / Android / generic skills imported from the upstream skill library. Mirrors of third-party guidance.
|
|
11
11
|
- Install destination stays flat: both trees flatten into `~/.claude/skills/` and `~/.copilot/skills/`. See ADR-0006 for the rationale.
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
|
|
|
14
14
|
|
|
15
15
|
## Categories
|
|
16
16
|
|
|
17
|
-
- [Pipeline Orchestration](#pipeline-orchestration) -
|
|
17
|
+
- [Pipeline Orchestration](#pipeline-orchestration) - 52
|
|
18
18
|
- [iOS / Apple Ecosystem](#ios-apple-ecosystem) - 89
|
|
19
19
|
- [Android / Kotlin](#android-kotlin) - 13
|
|
20
20
|
- [Web / Frontend](#web-frontend) - 10
|
|
@@ -40,7 +40,6 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
|
|
|
40
40
|
| [`multi-agent-dev-local`](./core/multi-agent-dev-local/) | `core` | Fast mode + local - Init → Dev(Opus) → Review → Commit → Report, no worktree. Use when a change should be developed and reviewed on the cu |
|
|
41
41
|
| [`multi-agent-dev-local-autopilot`](./core/multi-agent-dev-local-autopilot/) | `core` | Fastest + local - Dev(Opus) + autopilot, no worktree, zero interaction. Use when a change should be developed on the current branch with n |
|
|
42
42
|
| [`multi-agent-diff-explain`](./core/multi-agent-diff-explain/) | `core` | Map Phase 4 triage findings to branch diff lines. Read-only post-hoc command, used after review to answer 'which finding lines up with which |
|
|
43
|
-
| [`multi-agent-ship`](./core/multi-agent-ship/) | `core` | Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenari |
|
|
44
43
|
| [`multi-agent-forget`](./core/multi-agent-forget/) | `core` | Remove a saved /multi-agent routine (created by /multi-agent:save): deletes its local-only command and its registry entry. Asks which one an |
|
|
45
44
|
| [`multi-agent-garbage-collect`](./core/multi-agent-garbage-collect/) | `core` | Sweep leftover /tmp scratch (picker state, review diffs, channel payloads, analysis drafts) from past runs. Dry-run first; confirms before d |
|
|
46
45
|
| [`multi-agent-help`](./core/multi-agent-help/) | `core` | Multi-agent pipeline usage guide - renders in EN or TR per prefs.global.outputLanguage (falls back to promptLanguage for backward compatib |
|
|
@@ -65,11 +64,17 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
|
|
|
65
64
|
| [`multi-agent-scan`](./core/multi-agent-scan/) | `core` | Skill security scan: walks local skill directories against a tiered pattern catalog. Use when local skill directories need checking for unsa |
|
|
66
65
|
| [`multi-agent-search`](./core/multi-agent-search/) | `core` | Log search across every agent-log.md with smart ranking and filters. Optional --semantic flag queries the per-repo triage corpus. Use when s |
|
|
67
66
|
| [`multi-agent-setup`](./core/multi-agent-setup/) | `core` | First-run setup wizard: keychain token discovery, Git Identity onboarding, and pipeline preparation. Use when the pipeline is being set up f |
|
|
67
|
+
| [`multi-agent-ship`](./core/multi-agent-ship/) | `core` | Continue already-done LOCAL work through the pipeline tail: Review → Build+Test → Commit/PR → Report (technical analysis + Jira test-scenari |
|
|
68
68
|
| [`multi-agent-stack`](./core/multi-agent-stack/) | `core` | Select the active stack for this repo by enabling the matching marketplace plugin(s) in .claude/settings.json (ios/android/mobile/backend/fr |
|
|
69
69
|
| [`multi-agent-status`](./core/multi-agent-status/) | `core` | Show every multi-agent task's ID, phase, branch, and status. Use when asked what is running, or for an overview of every task. |
|
|
70
|
+
| [`multi-agent-store-ready`](./core/multi-agent-store-ready/) | `core` | Pre-submission store readiness for a built package, iOS and Android, local-only. Three symmetric gates per platform: a static package audit, |
|
|
70
71
|
| [`multi-agent-sync`](./core/multi-agent-sync/) | `core` | One-shot sync of the entire multi-agent ecosystem: Claude Code, Copilot CLI, pipeline repo, website, and the dev-toolkit MCP server. Use whe |
|
|
71
72
|
| [`multi-agent-test`](./core/multi-agent-test/) | `core` | UI Bug Hunter - iOS Simulator (simctl) + Android Emulator (adb). Auto-detects platform. Screenshot + tap + analyze on the booted device. T |
|
|
72
|
-
| [`multi-agent-
|
|
73
|
+
| [`multi-agent-test-accessibility`](./core/multi-agent-test-accessibility/) | `core` | Accessibility audit on a booted simulator / emulator: VoiceOver labels, sub-44pt tap targets, contrast, traits. Alias pinning the accessibil |
|
|
74
|
+
| [`multi-agent-test-dark-mode`](./core/multi-agent-test-dark-mode/) | `core` | Dark mode UI test on a booted simulator / emulator: walk every screen light then dark, report contrast + colour bugs. Alias pinning the dark |
|
|
75
|
+
| [`multi-agent-test-dynamic-type`](./core/multi-agent-test-dynamic-type/) | `core` | Dynamic Type layout test on a booted simulator / emulator: re-walk every screen at XL through accessibility-extra-large, report truncation a |
|
|
76
|
+
| [`multi-agent-test-screenshots`](./core/multi-agent-test-screenshots/) | `core` | App Store screenshot set from a booted simulator / emulator in a given locale, taken as an argument and defaulting to tr. Alias pinning the |
|
|
77
|
+
| [`multi-agent-testflight-validation`](./core/multi-agent-testflight-validation/) | `core` | iOS-pinned alias of store-ready: same three gates on an iOS build, one implementation. Validates a TestFlight / App Store package, never upl |
|
|
73
78
|
| [`multi-agent-uninstall`](./core/multi-agent-uninstall/) | `core` | Uninstall the pipeline from Claude Code + Copilot CLI. Keychain access tokens are always left untouched; --all-data also clears pipeline set |
|
|
74
79
|
| [`multi-agent-update`](./core/multi-agent-update/) | `core` | Update the pipeline to the latest version: git pull, install, migrate. Use when the installed pipeline is behind and should be brought to th |
|
|
75
80
|
|
|
@@ -97,7 +102,7 @@ Source layout is logical grouping only - skill discovery at runtime is unchang
|
|
|
97
102
|
| [`device-integrity`](./external/device-integrity/) | `external` | Verify device legitimacy and app integrity using DeviceCheck (DCDevice per-device bits) and App Attest (DCAppAttestService key generation, a |
|
|
98
103
|
| [`energykit`](./external/energykit/) | `external` | Query grid electricity forecasts and submit load events using EnergyKit to help users optimize home electricity usage. Use when building sma |
|
|
99
104
|
| [`eventkit-calendar`](./external/eventkit-calendar/) | `external` | Create, read, and manage calendar events and reminders using EventKit and EventKitUI. Use when adding events to the user's calendar, creatin |
|
|
100
|
-
| [`firebase`](./external/firebase/) | `external` | You're a developer who has shipped dozens of Firebase projects. You've seen the
|
|
105
|
+
| [`firebase`](./external/firebase/) | `external` | You're a developer who has shipped dozens of Firebase projects. You've seen the easy path lead to security breaches, runaway costs, and impo |
|
|
101
106
|
| [`healthkit`](./external/healthkit/) | `external` | Read, write, and query Apple Health data using HealthKit. Covers HKHealthStore authorization, sample queries, statistics queries, statistics |
|
|
102
107
|
| [`hig-components-content`](./external/hig-components-content/) | `external` | Apple Human Interface Guidelines for content display components. Use when designing or reviewing how content is displayed on an Apple platfo |
|
|
103
108
|
| [`hig-components-layout`](./external/hig-components-layout/) | `external` | Apple Human Interface Guidelines for layout and navigation components. Use when designing or reviewing layout and navigation on an Apple pla |
|
|
@@ -133,20 +133,16 @@ When `multi-agent kill [id]` is called:
|
|
|
133
133
|
|
|
134
134
|
---
|
|
135
135
|
|
|
136
|
-
## Clear Logs
|
|
136
|
+
## Clear Logs - superseded, redirect only
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
`multi-agent clear-logs`: **do not run it.** Say it was superseded, then route to
|
|
139
|
+
`multi-agent-prune-logs` (per-task logs, audit trail and metrics kept) or
|
|
140
|
+
`multi-agent-garbage-collect` (`/tmp` scratch + worktree residue).
|
|
139
141
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
5. **Confirm**:
|
|
145
|
-
```
|
|
146
|
-
🧹 Logs cleared
|
|
147
|
-
Deleted: {N} agent-log.md + {N} agent-state.json
|
|
148
|
-
Worktrees & branches: untouched
|
|
149
|
-
```
|
|
142
|
+
It scanned `.worktrees/PROJ-*/`, which holds no logs - they live at
|
|
143
|
+
`$HOME/.claude/logs/multi-agent/{project}/{task-id}/` - so it deleted nothing and
|
|
144
|
+
reported success. The name stays as a redirect so an existing invocation still lands
|
|
145
|
+
somewhere correct.
|
|
150
146
|
|
|
151
147
|
---
|
|
152
148
|
|
|
@@ -185,8 +181,8 @@ When `multi-agent purge` is called:
|
|
|
185
181
|
|
|
186
182
|
When `multi-agent resume [id]` is called:
|
|
187
183
|
|
|
188
|
-
1. **Find state file**:
|
|
189
|
-
- If no `id` given,
|
|
184
|
+
1. **Find state file**: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` - that is where Phase 0 writes it, not inside the worktree. A task finalized by Phase 6 keeps its state at `.../{task-id}/artifacts/agent-state.json`, so look there too before reporting not-found.
|
|
185
|
+
- If no `id` given, take the most recent task dir with `status != "done"`
|
|
190
186
|
2. **Read state**: Parse `agent-state.json` → determine last completed phase
|
|
191
187
|
3. **Restore context**: Read `agent-log.md` for previous findings:
|
|
192
188
|
- Phase 1 analysis findings → reuse in Phase 2+
|
|
@@ -397,8 +393,8 @@ Full contract: `refs/tracker-contract.md` section "TaskCreate ordering (strict)"
|
|
|
397
393
|
git config user.name "{identity.name}"
|
|
398
394
|
git config user.email "{identity.email}"
|
|
399
395
|
```
|
|
400
|
-
4. Create log file:
|
|
401
|
-
5. Create state file:
|
|
396
|
+
4. Create log file: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-log.md` with header
|
|
397
|
+
5. Create state file: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` with:
|
|
402
398
|
```json
|
|
403
399
|
{
|
|
404
400
|
"taskId": "PROJ-12345",
|
|
@@ -589,7 +585,7 @@ Skip this sub-step if the task is NOT a component implementation (e.g., bug fix,
|
|
|
589
585
|
⏱️ Total: 3m 18s | Agents: 12 calls | Files: 4 changed
|
|
590
586
|
📦 Commit: abc1234 | PR: #87
|
|
591
587
|
📖 Wiki: {ComponentName}.md pushed to wiki master
|
|
592
|
-
📋 Full report:
|
|
588
|
+
📋 Full report: ~/.claude/logs/multi-agent/{project}/{task-id}/agent-log.md
|
|
593
589
|
```
|
|
594
590
|
3. Log: `📋 Phase 7: Report complete`
|
|
595
591
|
|
|
@@ -94,7 +94,8 @@ Utility Commands (dash form on Copilot, colon form on Claude Code):
|
|
|
94
94
|
/multi-agent:log [#id] Show task log
|
|
95
95
|
/multi-agent:resume [#id] Resume a paused task
|
|
96
96
|
/multi-agent:kill [#id] Delete worktree (logs preserved)
|
|
97
|
-
/multi-agent:
|
|
97
|
+
/multi-agent:prune-logs Delete per-task logs (audit + metrics kept; dry-run first)
|
|
98
|
+
/multi-agent:garbage-collect Sweep leftover /tmp scratch + worktree residue (dry-run first)
|
|
98
99
|
/multi-agent:purge Worktree + logs - full reset (double confirm)
|
|
99
100
|
/multi-agent:channels Post multi-channel report (Jira/Confluence/Wiki/PR)
|
|
100
101
|
/multi-agent:review Review a PR or branch diff; no URL -> pick open GitHub/Bitbucket PRs
|
|
@@ -104,6 +105,13 @@ Utility Commands (dash form on Copilot, colon form on Claude Code):
|
|
|
104
105
|
/multi-agent:sync Sync ecosystem (Claude + Copilot + website)
|
|
105
106
|
/multi-agent:setup Keychain tokens + Git identity + language onboarding
|
|
106
107
|
/multi-agent:language [en|tr] Show or set prompt language
|
|
108
|
+
/multi-agent:store-ready [repo] [--archive=|--ipa=|--aab=|--apk=] Pre-submission store readiness,
|
|
109
|
+
iOS + Android, local-only. Three symmetric gates per platform: static package
|
|
110
|
+
audit, the store's own validator, policy review vs source. Plus the running-app
|
|
111
|
+
sweep. A skipped gate is never counted as a pass. Never uploads.
|
|
112
|
+
/multi-agent:testflight-validation [repo] [--ipa=|--archive=] iOS-pinned alias of :store-ready.
|
|
113
|
+
/multi-agent:ios-coding-standard [module] Audit an iOS module against the 99-rule coding-standard
|
|
114
|
+
registry -> remediation plan + onboarding summary -> hand off to dev.
|
|
107
115
|
|
|
108
116
|
------------------------------------------------------------
|
|
109
117
|
|
|
@@ -117,11 +125,22 @@ Interactive Launchers:
|
|
|
117
125
|
UI Testing (standalone):
|
|
118
126
|
|
|
119
127
|
/multi-agent:test Full simulator test (screenshot all screens)
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
/multi-agent:test
|
|
124
|
-
/multi-agent:test
|
|
128
|
+
|
|
129
|
+
Fixed-scenario commands - no quoting, and they autocomplete off `test-`:
|
|
130
|
+
|
|
131
|
+
/multi-agent:test-dark-mode Dark mode bug test
|
|
132
|
+
/multi-agent:test-accessibility Accessibility audit
|
|
133
|
+
/multi-agent:test-dynamic-type Large text size test
|
|
134
|
+
/multi-agent:test-screenshots [tr] App Store screenshot set in a locale (default tr)
|
|
135
|
+
|
|
136
|
+
The scenario-tag form still works and is not deprecated - each command above is
|
|
137
|
+
an alias for it.
|
|
138
|
+
|
|
139
|
+
/multi-agent:test "dark mode" | "accessibility" | "dynamic type" | "screenshot <lang>"
|
|
140
|
+
|
|
141
|
+
`store-ready` is NOT a UI test: it validates a built package, on iOS and Android,
|
|
142
|
+
and lives at /multi-agent:store-ready. The old /multi-agent:test "store-ready"
|
|
143
|
+
tag still works and hands off there.
|
|
125
144
|
|
|
126
145
|
Manual Test (Phase 5 standalone - Xcode hint flow):
|
|
127
146
|
|
|
@@ -243,7 +262,8 @@ Utility Komutları:
|
|
|
243
262
|
/multi-agent:log [#id] Task log'unu göster
|
|
244
263
|
/multi-agent:resume [#id] Duraklamış task'ı devam ettir
|
|
245
264
|
/multi-agent:kill [#id] Worktree'yi sil (log'lar korunur)
|
|
246
|
-
/multi-agent:
|
|
265
|
+
/multi-agent:prune-logs Task bazlı log'ları sil (audit + metrics korunur; önce dry-run)
|
|
266
|
+
/multi-agent:garbage-collect /tmp artıkları + worktree residue süpür (önce dry-run)
|
|
247
267
|
/multi-agent:purge Worktree + log'lar - tam reset (çift onay)
|
|
248
268
|
/multi-agent:channels Multi-channel rapor gönder (Jira/Confluence/Wiki/PR)
|
|
249
269
|
/multi-agent:review PR veya branch diff'ini review et; URL yoksa -> açık GitHub/Bitbucket PR seç
|
|
@@ -253,6 +273,13 @@ Utility Komutları:
|
|
|
253
273
|
/multi-agent:sync Ekosistemi senkronize et
|
|
254
274
|
/multi-agent:setup Keychain token + Git kimliği + dil onboarding
|
|
255
275
|
/multi-agent:language [en|tr] Prompt dilini göster veya ayarla
|
|
276
|
+
/multi-agent:store-ready [repo] [--archive=|--ipa=|--aab=|--apk=] Yükleme öncesi store hazırlığı,
|
|
277
|
+
iOS + Android, yalnızca lokal. Platform başına 3 simetrik kapı: statik paket
|
|
278
|
+
denetimi, store'un kendi doğrulayıcısı, kaynağa karşı politika incelemesi.
|
|
279
|
+
Artı çalışan-app sweep'i. Atlanan kapı asla pass sayılmaz. Asla yüklemez.
|
|
280
|
+
/multi-agent:testflight-validation [repo] [--ipa=|--archive=] :store-ready'nin iOS'a sabitlenmiş alias'ı.
|
|
281
|
+
/multi-agent:ios-coding-standard [modül] Bir iOS modülünü 99 kurallık kodlama-standardı registry'sine
|
|
282
|
+
göre denetler -> düzeltme planı + onboarding özeti -> dev'e devreder.
|
|
256
283
|
|
|
257
284
|
------------------------------------------------------------
|
|
258
285
|
|
|
@@ -266,11 +293,22 @@ Utility Komutları:
|
|
|
266
293
|
UI Testing (standalone):
|
|
267
294
|
|
|
268
295
|
/multi-agent:test Tam simulator testi (tüm ekran screenshot'ları)
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
/multi-agent:test
|
|
273
|
-
/multi-agent:test
|
|
296
|
+
|
|
297
|
+
Sabit-senaryo komutları - tırnak gerekmez, `test-` ile autocomplete'e düşer:
|
|
298
|
+
|
|
299
|
+
/multi-agent:test-dark-mode Dark mode bug testi
|
|
300
|
+
/multi-agent:test-accessibility Erişilebilirlik denetimi
|
|
301
|
+
/multi-agent:test-dynamic-type Büyük metin boyutu testi
|
|
302
|
+
/multi-agent:test-screenshots [tr] Belirtilen dilde App Store screenshot seti (default tr)
|
|
303
|
+
|
|
304
|
+
Senaryo etiketli form çalışmaya devam eder, kaldırılmadı - yukarıdaki komutların
|
|
305
|
+
her biri onun alias'ı.
|
|
306
|
+
|
|
307
|
+
/multi-agent:test "dark mode" | "accessibility" | "dynamic type" | "screenshot <dil>"
|
|
308
|
+
|
|
309
|
+
`store-ready` bir UI testi DEĞİL: üretilmiş paketi doğrular, iOS + Android, ve
|
|
310
|
+
/multi-agent:store-ready altında. Eski /multi-agent:test "store-ready" etiketi
|
|
311
|
+
çalışmaya devam eder ve oraya devreder.
|
|
274
312
|
|
|
275
313
|
Manuel Test (Phase 5 standalone - Xcode hint akışı):
|
|
276
314
|
|
|
@@ -9,14 +9,29 @@ user-invocable: true
|
|
|
9
9
|
|
|
10
10
|
Reset every multi-agent state. Nuclear option - requires double confirmation.
|
|
11
11
|
|
|
12
|
+
Backed by `$HOME/.copilot/scripts/purge.sh`, which is safe by default (dry-run,
|
|
13
|
+
deletes nothing until `--yes`), resolves every `rm` target strictly inside
|
|
14
|
+
`<repo>/.worktrees/`, and never touches the main worktree or main/master/develop.
|
|
15
|
+
|
|
16
|
+
Task log dirs are NOT purge territory - use `multi-agent-prune-logs`. The audit
|
|
17
|
+
trail and metrics corpus at the log root are always preserved.
|
|
18
|
+
|
|
12
19
|
## Steps
|
|
13
20
|
|
|
14
|
-
1. **
|
|
21
|
+
1. **Preview (dry-run)** - let the script enumerate; do not hand-roll a scan:
|
|
15
22
|
```bash
|
|
16
|
-
|
|
23
|
+
bash $HOME/.copilot/scripts/purge.sh
|
|
17
24
|
```
|
|
25
|
+
Nothing to remove -> report "nothing to purge" and stop.
|
|
26
|
+
|
|
27
|
+
**Never discover worktrees by looking for `agent-state.json` inside them.** That
|
|
28
|
+
was this skill's scan until v14.2.1 and it finds nothing: state lives at
|
|
29
|
+
`$HOME/.claude/logs/multi-agent/{project}/{task-id}/`, not in the worktree, so
|
|
30
|
+
the marker is absent from every real worktree. The scan returned zero while live
|
|
31
|
+
worktrees sat on disk, and purge reported "nothing to purge" as success. The
|
|
32
|
+
script enumerates `<repo>/.worktrees/*/` directly, which is why it works.
|
|
18
33
|
|
|
19
|
-
2. **Show list
|
|
34
|
+
2. **Show list** (the script prints it; this is the shape):
|
|
20
35
|
```
|
|
21
36
|
⚠️ WARNING: Will be deleted:
|
|
22
37
|
- .worktrees/PROJ-133139/ (branch: feature/PROJ-133139-...)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-store-ready
|
|
3
|
+
language: en
|
|
4
|
+
description: "Pre-submission store readiness for a built package, iOS and Android, local-only. Three symmetric gates per platform: a static package audit, the store's own authoritative validation, and a policy review against repo source. Separate verdict per gate, a skipped gate never counted as a pass. Validates only, never uploads. Use when a build is about to go to TestFlight or a Play track, or when a submission was rejected and the reason is not obvious."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "[repo] - empty = pick; repo name or path; --ipa= | --archive= | --aab= | --apk=; --skip-sweep; --resume"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent-store-ready - pre-submission validation, iOS + Android
|
|
10
|
+
|
|
11
|
+
Catch, before you upload, what App Store Connect or the Play Console would send
|
|
12
|
+
back after you do.
|
|
13
|
+
|
|
14
|
+
**Local-only.** No commits, no push, no PR. **It never uploads**: iOS runs
|
|
15
|
+
`--validate-app`, never `--upload-app`; Android never commits a Play edit.
|
|
16
|
+
|
|
17
|
+
**Input**: $ARGUMENTS
|
|
18
|
+
|
|
19
|
+
## Dispatcher
|
|
20
|
+
|
|
21
|
+
The full flow - input parsing, pickers, pre-flight, the running-app sweep, the
|
|
22
|
+
three gates per platform, the report format and the next-action offer - lives in
|
|
23
|
+
one place. Read and follow:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
$HOME/.copilot/multi-agent/commands/store-ready.md
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
(Equivalent on Claude Code: `$HOME/.claude/commands/multi-agent/store-ready/SKILL.md`.)
|
|
30
|
+
|
|
31
|
+
Do not re-derive the gate structure from this file; it is a summary, and the target
|
|
32
|
+
doc is the contract.
|
|
33
|
+
|
|
34
|
+
## Gate matrix (summary - the target doc is authoritative)
|
|
35
|
+
|
|
36
|
+
| Gate | iOS | Android |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| 1 Static | `ios_app_store_audit` 18 rules, needs an `.xcarchive` | `android_apk_audit` + `google-play-compliance` 21 rules, needs an `.aab` |
|
|
39
|
+
| 2 Authoritative | `ios_testflight_validate` → `altool --validate-app`, needs credentials | `SKIPPED` - Play's authoritative check is server-side only and no client ships here |
|
|
40
|
+
| 3 Policy | `app-store-review` skill vs repo source | `play-store-review` skill vs repo source |
|
|
41
|
+
|
|
42
|
+
Gate 2's asymmetry is reported as an asymmetry. An Android run clears at most 2 of 3
|
|
43
|
+
gates and must never print `passed`. A skipped gate is never folded into the pass
|
|
44
|
+
count on either platform.
|
|
45
|
+
|
|
46
|
+
## Related surfaces
|
|
47
|
+
|
|
48
|
+
`multi-agent-testflight-validation` is a thin alias onto this skill, kept so the
|
|
49
|
+
iOS-only name keeps working; it resolves here with the platform pinned to iOS.
|
|
50
|
+
`multi-agent-test "store-ready"` also resolves here. There is one implementation.
|
|
@@ -31,7 +31,7 @@ Run all steps automatically:
|
|
|
31
31
|
|
|
32
32
|
```
|
|
33
33
|
Step 1: DETECT Compare timestamps, find stale targets
|
|
34
|
-
Step 2: COPILOT Claude Code -> Copilot CLI (instructions +
|
|
34
|
+
Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 49 sub-command skills)
|
|
35
35
|
Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + 44 specs as refs + 8 agent TOML)
|
|
36
36
|
Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub)
|
|
37
37
|
Step 3d: DEV-TOOLKIT Companion MCP server -> detect movement, ship gates, commit + publish
|
|
@@ -223,14 +223,15 @@ When invoked with the `release` argument:
|
|
|
223
223
|
|-------------|-------------|
|
|
224
224
|
| `~/.claude/commands/multi-agent/{cmd}.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
|
|
225
225
|
|
|
226
|
-
**
|
|
226
|
+
**49 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
|
|
227
227
|
|
|
228
228
|
```
|
|
229
229
|
analysis, analysis-resolve, autopilot, build-optimize, channels, create-jira, design-check, dev,
|
|
230
230
|
dev-autopilot, dev-local, dev-local-autopilot, diff-explain, forget, garbage-collect,
|
|
231
231
|
help, ios-coding-standard, issue, jira, kill, language, local,
|
|
232
232
|
local-autopilot, log, manual-test, prune-logs, purge, refactor, resume, review, review-issue, review-jira,
|
|
233
|
-
routines, save, scan, search, setup, ship, stack, status, sync, test,
|
|
233
|
+
routines, save, scan, search, setup, ship, stack, status, store-ready, sync, test, test-accessibility,
|
|
234
|
+
test-dark-mode, test-dynamic-type, test-screenshots, testflight-validation, uninstall, update
|
|
234
235
|
```
|
|
235
236
|
|
|
236
237
|
**NOT synced**: `refs/*` - Lazy-load references, Claude Code specific
|
|
@@ -26,14 +26,24 @@ Pass `$ARGUMENTS` through verbatim - the target doc picks the right test matri
|
|
|
26
26
|
|
|
27
27
|
## Quick reference
|
|
28
28
|
|
|
29
|
-
| Invocation | What it does |
|
|
30
|
-
|
|
31
|
-
| `multi-agent-test` | Walk all screens, collect screenshot + UI tree, general report |
|
|
32
|
-
| `multi-agent-test "dark mode"` | Light/dark comparison, contrast + color bugs |
|
|
33
|
-
| `multi-agent-test "accessibility"` | VoiceOver label + tap target + contrast audit |
|
|
34
|
-
| `multi-agent-test "dynamic type"` | XL-XXXL text-size layout check |
|
|
35
|
-
| `multi-agent-test "screenshot
|
|
36
|
-
| `multi-agent-test "store-ready"` |
|
|
29
|
+
| Invocation | Fixed-scenario alias | What it does |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `multi-agent-test` | - | Walk all screens, collect screenshot + UI tree, general report |
|
|
32
|
+
| `multi-agent-test "dark mode"` | `multi-agent-test-dark-mode` | Light/dark comparison, contrast + color bugs |
|
|
33
|
+
| `multi-agent-test "accessibility"` | `multi-agent-test-accessibility` | VoiceOver label + tap target + contrast audit |
|
|
34
|
+
| `multi-agent-test "dynamic type"` | `multi-agent-test-dynamic-type` | XL-XXXL text-size layout check |
|
|
35
|
+
| `multi-agent-test "screenshot <lang>"` | `multi-agent-test-screenshots [locale]` | App Store screenshot set in a locale (alias defaults to tr) |
|
|
36
|
+
| `multi-agent-test "store-ready" [path]` | hands off to `multi-agent-store-ready` | package validation, not a UI test |
|
|
37
|
+
|
|
38
|
+
Both columns are supported and neither is deprecated; the aliases exist so the
|
|
39
|
+
scenario list autocompletes off `test-` instead of having to be remembered.
|
|
40
|
+
|
|
41
|
+
`store-ready` is the odd one out: it validates a built **package** rather than a
|
|
42
|
+
running app, so it is not implemented here at all. `multi-agent-store-ready` owns
|
|
43
|
+
it on both platforms - three gates per platform, plus this file's sweep as its
|
|
44
|
+
Step A. `multi-agent-testflight-validation` is the iOS-pinned alias of that skill.
|
|
45
|
+
The quoted tag is kept as a hand-off so an existing invocation still lands
|
|
46
|
+
somewhere correct.
|
|
37
47
|
|
|
38
48
|
## Requirements
|
|
39
49
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-test-accessibility
|
|
3
|
+
language: en
|
|
4
|
+
description: "Accessibility audit on a booted simulator / emulator: VoiceOver labels, sub-44pt tap targets, contrast, traits. Alias pinning the accessibility scenario. Use when auditing a screen for assistive-technology support."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "(no arguments - the scenario is fixed)"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent-test-accessibility - Accessibility audit
|
|
10
|
+
|
|
11
|
+
Fixed-scenario alias. The implementation is the UI Bug Hunter flow; this skill only
|
|
12
|
+
pins the scenario so the tag does not have to be typed or quoted.
|
|
13
|
+
|
|
14
|
+
## Dispatcher
|
|
15
|
+
|
|
16
|
+
Read and follow:
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
$HOME/.copilot/multi-agent/sim-test.md
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
(Equivalent on Claude Code: `$HOME/.claude/commands/sim-test.md`.)
|
|
23
|
+
|
|
24
|
+
Run it with **scenario = `accessibility`**. Ignore `$ARGUMENTS`; the scenario is fixed
|
|
25
|
+
by the skill name. Anything the user adds is context for the report, never a scenario
|
|
26
|
+
override - to run a different matrix they invoke that skill.
|
|
27
|
+
|
|
28
|
+
## Equivalent
|
|
29
|
+
|
|
30
|
+
`multi-agent-test "accessibility"` - identical behaviour. Both forms are supported;
|
|
31
|
+
neither is deprecated.
|
|
32
|
+
|
|
33
|
+
## Requirements
|
|
34
|
+
|
|
35
|
+
- **iOS**: Xcode + booted Simulator (`xcrun simctl list | grep Booted`)
|
|
36
|
+
- **Android**: Android SDK + running emulator or USB device (`adb devices`)
|
|
37
|
+
- **MCP**: `dev-toolkit` MCP server registered (tool names start with `mcp__dev-toolkit__*`)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-test-dark-mode
|
|
3
|
+
language: en
|
|
4
|
+
description: "Dark mode UI test on a booted simulator / emulator: walk every screen light then dark, report contrast + colour bugs. Alias pinning the dark-mode scenario. Use when a dark-mode rendering bug is suspected."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "(no arguments - the scenario is fixed)"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent-test-dark-mode - Dark mode UI test
|
|
10
|
+
|
|
11
|
+
Fixed-scenario alias. The implementation is the UI Bug Hunter flow; this skill only
|
|
12
|
+
pins the scenario so the tag does not have to be typed or quoted.
|
|
13
|
+
|
|
14
|
+
## Dispatcher
|
|
15
|
+
|
|
16
|
+
Read and follow:
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
$HOME/.copilot/multi-agent/sim-test.md
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
(Equivalent on Claude Code: `$HOME/.claude/commands/sim-test.md`.)
|
|
23
|
+
|
|
24
|
+
Run it with **scenario = `dark mode`**. Ignore `$ARGUMENTS`; the scenario is fixed by
|
|
25
|
+
the skill name. Anything the user adds is context for the report, never a scenario
|
|
26
|
+
override - to run a different matrix they invoke that skill.
|
|
27
|
+
|
|
28
|
+
## Equivalent
|
|
29
|
+
|
|
30
|
+
`multi-agent-test "dark mode"` - identical behaviour. Both forms are supported;
|
|
31
|
+
neither is deprecated.
|
|
32
|
+
|
|
33
|
+
## Requirements
|
|
34
|
+
|
|
35
|
+
- **iOS**: Xcode + booted Simulator (`xcrun simctl list | grep Booted`)
|
|
36
|
+
- **Android**: Android SDK + running emulator or USB device (`adb devices`)
|
|
37
|
+
- **MCP**: `dev-toolkit` MCP server registered (tool names start with `mcp__dev-toolkit__*`)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: multi-agent-test-dynamic-type
|
|
3
|
+
language: en
|
|
4
|
+
description: "Dynamic Type layout test on a booted simulator / emulator: re-walk every screen at XL through accessibility-extra-large, report truncation and clipping. Alias pinning the dynamic-type scenario. Use when checking a layout survives large text."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "(no arguments - the scenario is fixed)"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# multi-agent-test-dynamic-type - Dynamic Type layout test
|
|
10
|
+
|
|
11
|
+
Fixed-scenario alias. The implementation is the UI Bug Hunter flow; this skill only
|
|
12
|
+
pins the scenario so the tag does not have to be typed or quoted.
|
|
13
|
+
|
|
14
|
+
## Dispatcher
|
|
15
|
+
|
|
16
|
+
Read and follow:
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
$HOME/.copilot/multi-agent/sim-test.md
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
(Equivalent on Claude Code: `$HOME/.claude/commands/sim-test.md`.)
|
|
23
|
+
|
|
24
|
+
Run it with **scenario = `dynamic type`**. Ignore `$ARGUMENTS`; the scenario is fixed
|
|
25
|
+
by the skill name. Anything the user adds is context for the report, never a scenario
|
|
26
|
+
override - to run a different matrix they invoke that skill.
|
|
27
|
+
|
|
28
|
+
## Equivalent
|
|
29
|
+
|
|
30
|
+
`multi-agent-test "dynamic type"` - identical behaviour. Both forms are supported;
|
|
31
|
+
neither is deprecated.
|
|
32
|
+
|
|
33
|
+
## Requirements
|
|
34
|
+
|
|
35
|
+
- **iOS**: Xcode + booted Simulator (`xcrun simctl list | grep Booted`)
|
|
36
|
+
- **Android**: Android SDK + running emulator or USB device (`adb devices`)
|
|
37
|
+
- **MCP**: `dev-toolkit` MCP server registered (tool names start with `mcp__dev-toolkit__*`)
|