diff --git a/ios-qa/SKILL.md b/ios-qa/SKILL.md
index dd58bd0e1..2d9c29594 100644
--- a/ios-qa/SKILL.md
+++ b/ios-qa/SKILL.md
@@ -886,7 +886,20 @@ fi
## Phase 1: Read source, plan codegen
-1. Walk the app source (passed as `--source
`) and identify all `@Observable`
+1. Before changing the app or replacing an installed build, verify that the
+ bridge is compatible with the project:
+ - The generator currently supports file-scope `@Observable` classes only;
+ `ObservableObject`, `@StateObject`, and other observation models do not
+ produce accessors.
+ - The documented dependency wiring assumes a SwiftPM app manifest. For an
+ `.xcodeproj` or `.xcworkspace`, do not invent package or target wiring.
+ If either requirement is unmet, stop the bridge bootstrap without modifying
+ the app. Preserve any installed production or TestFlight build. Prefer an
+ existing real-device XCUITest harness; when a separate QA build is needed,
+ use an isolated bundle identifier and non-production entitlements so it can
+ coexist with the production app. Report fixture-driven state, provider UI,
+ and actual external-provider success as distinct evidence tiers.
+2. Walk the app source (passed as `--source `) and identify all `@Observable`
classes. Note any property immediately preceded by the generator marker
comment `// @Snapshotable` — those are the snapshot-eligible fields. The
marker is a comment so it composes with the `@Observable` macro. Each
@@ -897,7 +910,7 @@ fi
Optional compositions. Keys must be unique across observable classes.
Codegen stops with a source diagnostic instead of emitting a broken or
lossy harness when any of these constraints is violated.
-2. Show the user the accessor list and ask whether to install the DebugBridge
+3. Show the user the accessor list and ask whether to install the DebugBridge
SPM dependency into their `Package.swift` (one AskUserQuestion).
## Phase 2: Bootstrap the device bridge
diff --git a/ios-qa/SKILL.md.tmpl b/ios-qa/SKILL.md.tmpl
index 78f9454b1..2e147c5ae 100644
--- a/ios-qa/SKILL.md.tmpl
+++ b/ios-qa/SKILL.md.tmpl
@@ -96,7 +96,20 @@ fi
## Phase 1: Read source, plan codegen
-1. Walk the app source (passed as `--source `) and identify all `@Observable`
+1. Before changing the app or replacing an installed build, verify that the
+ bridge is compatible with the project:
+ - The generator currently supports file-scope `@Observable` classes only;
+ `ObservableObject`, `@StateObject`, and other observation models do not
+ produce accessors.
+ - The documented dependency wiring assumes a SwiftPM app manifest. For an
+ `.xcodeproj` or `.xcworkspace`, do not invent package or target wiring.
+ If either requirement is unmet, stop the bridge bootstrap without modifying
+ the app. Preserve any installed production or TestFlight build. Prefer an
+ existing real-device XCUITest harness; when a separate QA build is needed,
+ use an isolated bundle identifier and non-production entitlements so it can
+ coexist with the production app. Report fixture-driven state, provider UI,
+ and actual external-provider success as distinct evidence tiers.
+2. Walk the app source (passed as `--source `) and identify all `@Observable`
classes. Note any property immediately preceded by the generator marker
comment `// @Snapshotable` — those are the snapshot-eligible fields. The
marker is a comment so it composes with the `@Observable` macro. Each
@@ -107,7 +120,7 @@ fi
Optional compositions. Keys must be unique across observable classes.
Codegen stops with a source diagnostic instead of emitting a broken or
lossy harness when any of these constraints is violated.
-2. Show the user the accessor list and ask whether to install the DebugBridge
+3. Show the user the accessor list and ask whether to install the DebugBridge
SPM dependency into their `Package.swift` (one AskUserQuestion).
## Phase 2: Bootstrap the device bridge