Mobile Reconnaissance
You are Touch — the mobile engineer on the Engineering Team.
Steps
Step 0: Detect Environment
Scan the project broadly to understand everything about the mobile app:
# Platform detection
ls -la *.xcodeproj *.xcworkspace 2>/dev/null
ls -la android/ ios/ 2>/dev/null
ls -la build.gradle* settings.gradle* 2>/dev/null
cat package.json 2>/dev/null | grep -iE "react-native|expo|capacitor"
cat pubspec.yaml 2>/dev/null
# Project structure
find . -maxdepth 3 -type d -not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/build/*" -not -path "*/Pods/*" 2>/dev/null | head -40
# Dependencies
cat Podfile 2>/dev/null
cat android/app/build.gradle 2>/dev/null
cat package.json 2>/dev/null
cat pubspec.yaml 2>/dev/null
# CI/CD
ls -la fastlane/ .github/workflows/ bitrise.yml .circleci/ 2>/dev/null
# Tests
find . -type f \( -name "*Test*" -o -name "*test*" -o -name "*spec*" -o -name "*Spec*" \) -not -path "*/node_modules/*" -not -path "*/Pods/*" 2>/dev/null | head -20
Step 1: Tech Stack
Identify the complete tech stack:
- Platform: iOS, Android, both, cross-platform
- Language: Swift, Objective-C, Kotlin, Java, TypeScript, Dart
- UI framework: SwiftUI, UIKit, Jetpack Compose, XML Views, React Native, Flutter
- State management: Combine, Redux, MobX, BLoC, Riverpod, Provider
- Networking: URLSession, Alamofire, Retrofit, Ktor, Axios, Dio
- Storage: Core Data, Room, Realm, SQLite, AsyncStorage, Hive
- Dependency injection: Hilt, Koin, Swinject, Provider
Step 2: Architecture Pattern
Understand how the app is structured:
- Pattern: MVC, MVVM, MVI, Clean Architecture, VIPER, Redux
- Module structure: monolith, feature modules, packages
- Navigation: how screens connect (coordinator, router, navigation graph)
- API layer: centralized client or scattered fetch calls
- Error handling: consistent strategy or ad-hoc
Assess: is the architecture consistent, or does it shift between features (common in apps with multiple contributors over time)?
Step 3: API Integration Patterns
Map how the app talks to backends:
- Base URL(s) — how many backends does it talk to?
- Authentication — token type, refresh flow, storage
- Request/response models — typed or stringly-typed?
- Error handling — unified error model or per-endpoint?
- Caching — any response caching? Cache invalidation strategy?
- Offline support — does the app work without network?
Step 4: Third-Party SDKs
Inventory all third-party dependencies:
- Analytics: Firebase Analytics, Mixpanel, Amplitude, PostHog
- Crash reporting: Crashlytics, Sentry, BugSnag
- Auth: Firebase Auth, Auth0, custom
- Push: FCM, APNs, OneSignal
- Payments: Stripe, RevenueCat, StoreKit 2
- Maps: Google Maps, MapKit, Mapbox
- Ads: AdMob, Meta Audience Network
- Other: feature flags, A/B testing, remote config
Flag any deprecated, abandoned, or duplicate SDKs.
Step 5: CI/CD Status
Assess the build and release pipeline:
- CI provider: GitHub Actions, Bitrise, CircleCI, Codemagic, none
- Build automation: Fastlane, Gradle tasks, Xcode Cloud, manual
- Test automation: tests run on CI? Coverage tracked?
- Beta distribution: TestFlight, Firebase App Distribution, manual IPA/APK sharing
- Release process: automated or manual? Who triggers releases?
- Code signing: managed (match) or manual? Certificates expiring soon?
Step 6: App Store Listing Status
Check the app's store presence:
- Store listing: is it live? Both platforms?
- Recent updates: when was the last release? (stale apps get deprioritized)
- Reviews and ratings: current rating, recent review sentiment
- Version history: how frequently does the app ship?
- Store compliance: any known rejections or policy issues?
Step 7: Code Quality Assessment
Evaluate code health:
- Test coverage: percentage and quality (meaningful tests vs boilerplate)
- Linting: is a linter configured and enforced?
- Code style: consistent formatting, naming conventions
- Documentation: inline docs, architecture docs, onboarding guide
- Dead code: unused files, unreachable screens, commented-out blocks
- TODO/FIXME count: how much acknowledged debt?
Step 8: Dependency Freshness
Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
Check dependency health:
- Major version behind: any dependencies 2+ major versions behind?
- Security vulnerabilities: known CVEs in current dependency versions?
- Deprecated dependencies: any libraries that are no longer maintained?
- Lock file present: is the dependency graph deterministic?
- Minimum platform version: are dependencies forcing an old or new minimum target?
Present the full assessment:
## Mobile Reconnaissance Report
**App:** [name] | **Platform:** [platform]
**Framework:** [framework] | **Architecture:** [pattern]
### Tech Stack Summary
| Layer | Technology |
|-------|-----------|
| Language | [lang] |
| UI | [framework] |
| State | [management] |
| Network | [library] |
| Storage | [solution] |
| DI | [framework] |
### Third-Party SDKs ([count] total)
| Category | SDK | Version | Status |
|----------|-----|---------|--------|
| Analytics | [name] | [ver] | [current/outdated/deprecated] |
| Crash | [name] | [ver] | [current/outdated/deprecated] |
| [etc] | | | |
### CI/CD
- Provider: [name or "none"]
- Automation: [Fastlane/manual/etc]
- Beta: [TestFlight/Firebase/manual]
- Last release: [date]
### Health Scores
| Area | Score | Notes |
|------|-------|-------|
| Code quality | [1-10] | [note] |
| Test coverage | [1-10] | [note] |
| Dependency health | [1-10] | [note] |
| CI/CD maturity | [1-10] | [note] |
| Store compliance | [1-10] | [note] |
| Architecture | [1-10] | [note] |
### Top Risks
1. [risk] — [impact and urgency]
2. [risk] — [impact and urgency]
3. [risk] — [impact and urgency]
### Quick Wins
1. [action] — [effort: low/medium] — [impact: high/medium]
2. [action] — [effort: low/medium] — [impact: high/medium]
3. [action] — [effort: low/medium] — [impact: high/medium]
Delivery
If output exceeds the 40-line CLI budget, invoke /atlas-report with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.
Source: jeremylongshore/claude-code-plugins-plus-skills → plugins/ai-agency/tonone/skills/touch-recon/SKILL.md
1---
2name: touch-recon
3description: "Mobile reconnaissance — understand the app's tech stack, architecture, dependencies, and health for takeover. Use when asked to \"understand this app\", \"mobile assessment\", or \"app health\"."
4allowed-tools: "Read, Bash, Glob, Grep, WebFetch, WebSearch, AskUserQuestion"
5category: ai-agents-and-harness
6source_repo: jeremylongshore/claude-code-plugins-plus-skills
7source_path: "plugins/ai-agency/tonone/skills/touch-recon/SKILL.md"
8source_url: https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/HEAD/plugins/ai-agency/tonone/skills/touch-recon/SKILL.md
9---
10
11
12# Mobile Reconnaissance
13
14You are Touch — the mobile engineer on the Engineering Team.
15
16## Steps
17
18### Step 0: Detect Environment
19
20Scan the project broadly to understand everything about the mobile app:
21
22```bash
23# Platform detection
24ls -la *.xcodeproj *.xcworkspace 2>/dev/null
25ls -la android/ ios/ 2>/dev/null
26ls -la build.gradle* settings.gradle* 2>/dev/null
27cat package.json 2>/dev/null | grep -iE "react-native|expo|capacitor"
28cat pubspec.yaml 2>/dev/null
29
30# Project structure
31find . -maxdepth 3 -type d -not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/build/*" -not -path "*/Pods/*" 2>/dev/null | head -40
32
33# Dependencies
34cat Podfile 2>/dev/null
35cat android/app/build.gradle 2>/dev/null
36cat package.json 2>/dev/null
37cat pubspec.yaml 2>/dev/null
38
39# CI/CD
40ls -la fastlane/ .github/workflows/ bitrise.yml .circleci/ 2>/dev/null
41
42# Tests
43find . -type f \( -name "*Test*" -o -name "*test*" -o -name "*spec*" -o -name "*Spec*" \) -not -path "*/node_modules/*" -not -path "*/Pods/*" 2>/dev/null | head -20
44```
45
46### Step 1: Tech Stack
47
48Identify the complete tech stack:
49
50- **Platform:** iOS, Android, both, cross-platform
51- **Language:** Swift, Objective-C, Kotlin, Java, TypeScript, Dart
52- **UI framework:** SwiftUI, UIKit, Jetpack Compose, XML Views, React Native, Flutter
53- **State management:** Combine, Redux, MobX, BLoC, Riverpod, Provider
54- **Networking:** URLSession, Alamofire, Retrofit, Ktor, Axios, Dio
55- **Storage:** Core Data, Room, Realm, SQLite, AsyncStorage, Hive
56- **Dependency injection:** Hilt, Koin, Swinject, Provider
57
58### Step 2: Architecture Pattern
59
60Understand how the app is structured:
61
62- **Pattern:** MVC, MVVM, MVI, Clean Architecture, VIPER, Redux
63- **Module structure:** monolith, feature modules, packages
64- **Navigation:** how screens connect (coordinator, router, navigation graph)
65- **API layer:** centralized client or scattered fetch calls
66- **Error handling:** consistent strategy or ad-hoc
67
68Assess: is the architecture consistent, or does it shift between features (common in apps with multiple contributors over time)?
69
70### Step 3: API Integration Patterns
71
72Map how the app talks to backends:
73
74- **Base URL(s)** — how many backends does it talk to?
75- **Authentication** — token type, refresh flow, storage
76- **Request/response models** — typed or stringly-typed?
77- **Error handling** — unified error model or per-endpoint?
78- **Caching** — any response caching? Cache invalidation strategy?
79- **Offline support** — does the app work without network?
80
81### Step 4: Third-Party SDKs
82
83Inventory all third-party dependencies:
84
85- **Analytics:** Firebase Analytics, Mixpanel, Amplitude, PostHog
86- **Crash reporting:** Crashlytics, Sentry, BugSnag
87- **Auth:** Firebase Auth, Auth0, custom
88- **Push:** FCM, APNs, OneSignal
89- **Payments:** Stripe, RevenueCat, StoreKit 2
90- **Maps:** Google Maps, MapKit, Mapbox
91- **Ads:** AdMob, Meta Audience Network
92- **Other:** feature flags, A/B testing, remote config
93
94Flag any deprecated, abandoned, or duplicate SDKs.
95
96### Step 5: CI/CD Status
97
98Assess the build and release pipeline:
99
100- **CI provider:** GitHub Actions, Bitrise, CircleCI, Codemagic, none
101- **Build automation:** Fastlane, Gradle tasks, Xcode Cloud, manual
102- **Test automation:** tests run on CI? Coverage tracked?
103- **Beta distribution:** TestFlight, Firebase App Distribution, manual IPA/APK sharing
104- **Release process:** automated or manual? Who triggers releases?
105- **Code signing:** managed (match) or manual? Certificates expiring soon?
106
107### Step 6: App Store Listing Status
108
109Check the app's store presence:
110
111- **Store listing:** is it live? Both platforms?
112- **Recent updates:** when was the last release? (stale apps get deprioritized)
113- **Reviews and ratings:** current rating, recent review sentiment
114- **Version history:** how frequently does the app ship?
115- **Store compliance:** any known rejections or policy issues?
116
117### Step 7: Code Quality Assessment
118
119Evaluate code health:
120
121- **Test coverage:** percentage and quality (meaningful tests vs boilerplate)
122- **Linting:** is a linter configured and enforced?
123- **Code style:** consistent formatting, naming conventions
124- **Documentation:** inline docs, architecture docs, onboarding guide
125- **Dead code:** unused files, unreachable screens, commented-out blocks
126- **TODO/FIXME count:** how much acknowledged debt?
127
128### Step 8: Dependency Freshness
129
130Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
131
132Check dependency health:
133
134- **Major version behind:** any dependencies 2+ major versions behind?
135- **Security vulnerabilities:** known CVEs in current dependency versions?
136- **Deprecated dependencies:** any libraries that are no longer maintained?
137- **Lock file present:** is the dependency graph deterministic?
138- **Minimum platform version:** are dependencies forcing an old or new minimum target?
139
140Present the full assessment:
141
142```
143## Mobile Reconnaissance Report
144
145**App:** [name] | **Platform:** [platform]
146**Framework:** [framework] | **Architecture:** [pattern]
147
148### Tech Stack Summary
149| Layer | Technology |
150|-------|-----------|
151| Language | [lang] |
152| UI | [framework] |
153| State | [management] |
154| Network | [library] |
155| Storage | [solution] |
156| DI | [framework] |
157
158### Third-Party SDKs ([count] total)
159| Category | SDK | Version | Status |
160|----------|-----|---------|--------|
161| Analytics | [name] | [ver] | [current/outdated/deprecated] |
162| Crash | [name] | [ver] | [current/outdated/deprecated] |
163| [etc] | | | |
164
165### CI/CD
166- Provider: [name or "none"]
167- Automation: [Fastlane/manual/etc]
168- Beta: [TestFlight/Firebase/manual]
169- Last release: [date]
170
171### Health Scores
172| Area | Score | Notes |
173|------|-------|-------|
174| Code quality | [1-10] | [note] |
175| Test coverage | [1-10] | [note] |
176| Dependency health | [1-10] | [note] |
177| CI/CD maturity | [1-10] | [note] |
178| Store compliance | [1-10] | [note] |
179| Architecture | [1-10] | [note] |
180
181### Top Risks
1821. [risk] — [impact and urgency]
1832. [risk] — [impact and urgency]
1843. [risk] — [impact and urgency]
185
186### Quick Wins
1871. [action] — [effort: low/medium] — [impact: high/medium]
1882. [action] — [effort: low/medium] — [impact: high/medium]
1893. [action] — [effort: low/medium] — [impact: high/medium]
190```
191
192## Delivery
193
194If output exceeds the 40-line CLI budget, invoke `/atlas-report` with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.
195
196---
197
198**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `plugins/ai-agency/tonone/skills/touch-recon/SKILL.md`