mobile-ai-agents 1.0.23
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/AGENTS.md +228 -0
- package/CLAUDE.md +236 -0
- package/LICENSE +21 -0
- package/README.md +652 -0
- package/agents/android/android-crash-analyzer/README.md +134 -0
- package/agents/android/android-crash-analyzer/agent.md +206 -0
- package/agents/android/android-crash-analyzer/example-input.md +138 -0
- package/agents/android/android-crash-analyzer/example-output.md +225 -0
- package/agents/android/anr-investigation/README.md +78 -0
- package/agents/android/anr-investigation/agent.md +117 -0
- package/agents/android/anr-investigation/example-input.md +62 -0
- package/agents/android/anr-investigation/example-output.md +103 -0
- package/agents/android/axiom/agent.md +197 -0
- package/agents/android/code-reviewer/README.md +108 -0
- package/agents/android/code-reviewer/agent.md +210 -0
- package/agents/android/code-reviewer/example-input.md +116 -0
- package/agents/android/code-reviewer/example-output.md +115 -0
- package/agents/android/compose-navigation/README.md +76 -0
- package/agents/android/compose-navigation/agent.md +121 -0
- package/agents/android/compose-navigation/example-input.md +49 -0
- package/agents/android/compose-navigation/example-output.md +325 -0
- package/agents/android/compose-screen-builder/README.md +95 -0
- package/agents/android/compose-screen-builder/agent.md +170 -0
- package/agents/android/compose-screen-builder/example-input.md +40 -0
- package/agents/android/compose-screen-builder/example-output.md +568 -0
- package/agents/android/compose-ui-reviewer/README.md +73 -0
- package/agents/android/compose-ui-reviewer/agent.md +253 -0
- package/agents/android/compose-ui-reviewer/example-input.md +84 -0
- package/agents/android/compose-ui-reviewer/example-output.md +102 -0
- package/agents/android/crash-analyzer/README.md +53 -0
- package/agents/android/crash-analyzer/agent.md +295 -0
- package/agents/android/memory-leak-analyzer/README.md +79 -0
- package/agents/android/memory-leak-analyzer/agent.md +116 -0
- package/agents/android/memory-leak-analyzer/example-input.md +78 -0
- package/agents/android/memory-leak-analyzer/example-output.md +128 -0
- package/agents/cross-platform/accessibility-auditor/README.md +47 -0
- package/agents/cross-platform/accessibility-auditor/agent.md +268 -0
- package/agents/cross-platform/accessibility-auditor/example-input.md +84 -0
- package/agents/cross-platform/accessibility-auditor/example-output.md +132 -0
- package/agents/cross-platform/appforge/agent.md +303 -0
- package/agents/cross-platform/ci-cd-generator/README.md +65 -0
- package/agents/cross-platform/ci-cd-generator/agent.md +422 -0
- package/agents/cross-platform/ci-cd-generator/example-input.md +69 -0
- package/agents/cross-platform/ci-cd-generator/example-output.md +261 -0
- package/agents/cross-platform/crasher/agent.md +221 -0
- package/agents/cross-platform/figma/agent.md +247 -0
- package/agents/cross-platform/launchpad/agent.md +330 -0
- package/agents/cross-platform/mobile-harness/agent.md +422 -0
- package/agents/cross-platform/mobile-memory/agent.md +429 -0
- package/agents/cross-platform/perf/agent.md +261 -0
- package/agents/cross-platform/pipeline/agent.md +288 -0
- package/agents/cross-platform/release-notes-generator/README.md +63 -0
- package/agents/cross-platform/release-notes-generator/agent.md +218 -0
- package/agents/cross-platform/release-notes-generator/example-input.md +71 -0
- package/agents/cross-platform/release-notes-generator/example-output.md +96 -0
- package/agents/cross-platform/scribe/agent.md +180 -0
- package/agents/cross-platform/security-scanner/README.md +61 -0
- package/agents/cross-platform/security-scanner/agent.md +287 -0
- package/agents/cross-platform/security-scanner/example-input.md +77 -0
- package/agents/cross-platform/security-scanner/example-output.md +141 -0
- package/agents/cross-platform/sentinel/agent.md +217 -0
- package/agents/cross-platform/store-listing-writer/README.md +58 -0
- package/agents/cross-platform/store-listing-writer/agent.md +380 -0
- package/agents/cross-platform/store-listing-writer/example-input.md +67 -0
- package/agents/cross-platform/store-listing-writer/example-output.md +131 -0
- package/agents/flutter/bloc-feature-builder/README.md +101 -0
- package/agents/flutter/bloc-feature-builder/agent.md +225 -0
- package/agents/flutter/bloc-feature-builder/example-input.md +47 -0
- package/agents/flutter/bloc-feature-builder/example-output.md +838 -0
- package/agents/flutter/dart/agent.md +223 -0
- package/agents/flutter/widget-generator/README.md +66 -0
- package/agents/flutter/widget-generator/agent.md +264 -0
- package/agents/flutter/widget-generator/example-input.md +71 -0
- package/agents/flutter/widget-generator/example-output.md +163 -0
- package/agents/gaming/forge/agent.md +197 -0
- package/agents/gaming/unreal/agent.md +200 -0
- package/agents/ios/crash-analyzer/README.md +69 -0
- package/agents/ios/crash-analyzer/agent.md +300 -0
- package/agents/ios/crash-analyzer/example-input.md +83 -0
- package/agents/ios/crash-analyzer/example-output.md +126 -0
- package/agents/ios/swift/agent.md +206 -0
- package/agents/ios/swift-reviewer/README.md +68 -0
- package/agents/ios/swift-reviewer/agent.md +231 -0
- package/agents/ios/swift-reviewer/example-input.md +100 -0
- package/agents/ios/swift-reviewer/example-output.md +127 -0
- package/agents/react-native/bridge/agent.md +212 -0
- package/agents/react-native/performance-optimizer/README.md +81 -0
- package/agents/react-native/performance-optimizer/agent.md +284 -0
- package/agents/react-native/performance-optimizer/example-input.md +104 -0
- package/agents/react-native/performance-optimizer/example-output.md +132 -0
- package/agents/unity/shader-generator/README.md +77 -0
- package/agents/unity/shader-generator/agent.md +270 -0
- package/agents/unity/shader-generator/example-input.md +70 -0
- package/agents/unity/shader-generator/example-output.md +160 -0
- package/agents/unreal/blueprint-advisor/README.md +71 -0
- package/agents/unreal/blueprint-advisor/agent.md +311 -0
- package/agents/unreal/blueprint-advisor/example-input.md +73 -0
- package/agents/unreal/blueprint-advisor/example-output.md +217 -0
- package/cli/index.js +1091 -0
- package/docs/agent-guide.md +138 -0
- package/docs/chatgpt-integration.md +219 -0
- package/docs/core-loops.md +143 -0
- package/docs/cursor-integration.md +143 -0
- package/docs/getting-started.md +132 -0
- package/docs/index.html +711 -0
- package/docs/installation.md +271 -0
- package/docs/mobile-harness.md +160 -0
- package/docs/mobile-mcp.md +172 -0
- package/docs/mobile-memory.md +349 -0
- package/docs/release-process.md +85 -0
- package/docs/releases/release-v1.0.0.md +165 -0
- package/docs/roadmap/github-issues.md +239 -0
- package/docs/skill-categories.md +125 -0
- package/docs/vscode-copilot-integration.md +104 -0
- package/docs/wiki.md +615 -0
- package/install.sh +507 -0
- package/mobile-karpathy.md +79 -0
- package/package.json +57 -0
- package/skills/android/README.md +31 -0
- package/skills/android/android-tdd.md +89 -0
- package/skills/android/anr-investigation.md +251 -0
- package/skills/android/code-review.md +98 -0
- package/skills/android/compose-migration.md +48 -0
- package/skills/android/compose-review.md +78 -0
- package/skills/android/kotlin-modernize.md +51 -0
- package/skills/android/memory-leak-investigation.md +256 -0
- package/skills/android/proguard-rules.md +48 -0
- package/skills/cross-platform/accessibility-audit.md +63 -0
- package/skills/cross-platform/api-versioning.md +59 -0
- package/skills/cross-platform/clean-code-audit.md +239 -0
- package/skills/cross-platform/crash-triage.md +53 -0
- package/skills/cross-platform/deeplink-debug.md +57 -0
- package/skills/cross-platform/feature-slice.md +48 -0
- package/skills/cross-platform/grill-mobile.md +64 -0
- package/skills/cross-platform/mobile-mcp-qa.md +193 -0
- package/skills/cross-platform/mobile-memory-graph.md +179 -0
- package/skills/cross-platform/mobile-memory-save.md +210 -0
- package/skills/cross-platform/mobile-memory-search.md +154 -0
- package/skills/cross-platform/perf-audit.md +61 -0
- package/skills/cross-platform/prd-verification.md +324 -0
- package/skills/cross-platform/release-prep.md +64 -0
- package/skills/cross-platform/security-audit.md +281 -0
- package/skills/cross-platform/store-listing.md +75 -0
- package/skills/flutter/README.md +32 -0
- package/skills/flutter/dart-modernize.md +47 -0
- package/skills/flutter/flutter-review.md +59 -0
- package/skills/flutter/flutter-tdd.md +73 -0
- package/skills/flutter/widget-extract.md +41 -0
- package/skills/flutter/widget-gen.md +131 -0
- package/skills/gaming/blueprint-to-cpp.md +51 -0
- package/skills/gaming/game-perf.md +54 -0
- package/skills/gaming/shader-gen.md +44 -0
- package/skills/gaming/unity-tdd.md +85 -0
- package/skills/ios/README.md +45 -0
- package/skills/ios/data-persistence.md +151 -0
- package/skills/ios/ios-tdd.md +90 -0
- package/skills/ios/networking.md +139 -0
- package/skills/ios/performance.md +122 -0
- package/skills/ios/swift-concurrency.md +57 -0
- package/skills/ios/swift-review.md +124 -0
- package/skills/ios/swiftui-review.md +49 -0
- package/skills/ios/swiftui-state.md +122 -0
- package/skills/ios/unit-testing.md +144 -0
- package/skills/ios/xcode-warnings.md +37 -0
- package/skills/react-native/README.md +42 -0
- package/skills/react-native/bridge-audit.md +104 -0
- package/skills/react-native/expo-optimize.md +55 -0
- package/skills/react-native/new-arch-migrate.md +53 -0
- package/skills/react-native/performance.md +124 -0
- package/skills/react-native/rn-review.md +53 -0
- package/skills/react-native/rn-tdd.md +76 -0
- package/skills/shared/README.md +46 -0
- package/skills/shared/accessibility-audit.md +132 -0
- package/skills/shared/crash-analysis.md +110 -0
- package/skills/shared/security-scan.md +149 -0
- package/skills/unity/README.md +31 -0
- package/skills/unity/shader-review.md +110 -0
- package/templates/agent-template.md +88 -0
- package/templates/prompt-template.md +50 -0
- package/templates/skill-template.md +64 -0
- package/templates/workflow-template.md +48 -0
- package/workflows/app-launch.md +66 -0
- package/workflows/appforge-workflow.md +232 -0
- package/workflows/ci-setup.md +77 -0
- package/workflows/crash-to-fix.md +71 -0
- package/workflows/feature-ship.md +61 -0
- package/workflows/game-level.md +72 -0
- package/workflows/mobile-harness.md +319 -0
- package/workflows/mobile-mcp-qa.md +228 -0
- package/workflows/mobile-memory-workflow.md +243 -0
- package/workflows/new-project-setup.md +93 -0
- package/workflows/new-screen.md +68 -0
- package/workflows/perf-sprint.md +78 -0
- package/workflows/release-cycle.md +71 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
# Skill — /prd-verification
|
|
2
|
+
|
|
3
|
+
**Platform:** Android / iOS / Flutter / React Native / Kotlin Multiplatform / Unity / Unreal
|
|
4
|
+
**Slash Command:** `/prd-verification`
|
|
5
|
+
**Composable With:** MOBILE-HARNESS, APPFORGE, Mobile Memory, `/mobile-mcp-qa`, `/clean-code-audit`, `/security-audit`, `/accessibility-audit`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Verify that an implemented app or feature matches the approved PRD, design plan, task acceptance criteria, tests, screenshots, and project memory.
|
|
12
|
+
|
|
13
|
+
Use this after implementation and before marking a task complete. This skill is evidence-based: it verifies against documents and artifacts, not conversation memory.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Input Format
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
COMMAND: /prd-verification
|
|
21
|
+
PLATFORM: <Android | iOS | Flutter | React Native | KMP | Unity | Unreal>
|
|
22
|
+
FEATURE_OR_SCOPE:
|
|
23
|
+
<feature name, task id, release scope, or app area>
|
|
24
|
+
DOCUMENTS:
|
|
25
|
+
<PRD.md, DESIGN.md, TASKS.md, DEPENDENCIES.md, ROADMAP.md, MOBILE_MEMORY.md excerpts or paths>
|
|
26
|
+
IMPLEMENTATION:
|
|
27
|
+
<changed files, relevant source code, repo tree, or diff>
|
|
28
|
+
EVIDENCE:
|
|
29
|
+
<test output, build output, screenshots, Mobile MCP QA report, logs, accessibility report, security report>
|
|
30
|
+
KNOWN_LIMITATIONS:
|
|
31
|
+
<optional explicit constraints, skipped checks, unavailable device, unavailable backend>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Skill Prompt
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
Run PRD verification for the provided mobile app or feature scope.
|
|
40
|
+
|
|
41
|
+
Your job is to decide whether the implementation matches the approved product documents and available evidence.
|
|
42
|
+
|
|
43
|
+
Read these inputs in order:
|
|
44
|
+
|
|
45
|
+
1. PRD.md or product requirements
|
|
46
|
+
2. TASKS.md acceptance criteria
|
|
47
|
+
3. DESIGN.md or design plan
|
|
48
|
+
4. DEPENDENCIES.md and ROADMAP.md when provided
|
|
49
|
+
5. MOBILE_MEMORY.md or project context when provided
|
|
50
|
+
6. Relevant source code, diff, and file tree
|
|
51
|
+
7. Test/build output
|
|
52
|
+
8. Screenshots, videos, accessibility reports, security reports, or Mobile MCP QA reports
|
|
53
|
+
|
|
54
|
+
Verification rules:
|
|
55
|
+
|
|
56
|
+
- Verify against written artifacts, not memory.
|
|
57
|
+
- Every PASS or FAIL must cite a source and evidence.
|
|
58
|
+
- If a requirement exists in the PRD but no implementation evidence is provided, mark it UNKNOWN, not PASS.
|
|
59
|
+
- If implementation contradicts the PRD, mark FAIL.
|
|
60
|
+
- If behavior is inferred from code but not tested, mark PARTIAL and explain the missing proof.
|
|
61
|
+
- Separate confirmed gaps from assumptions.
|
|
62
|
+
- Do not expand scope beyond the approved PRD unless it creates release risk.
|
|
63
|
+
- Do not mark release-ready if critical requirements, security blockers, crash risks, or required tests are missing.
|
|
64
|
+
|
|
65
|
+
Check these areas:
|
|
66
|
+
|
|
67
|
+
1. FEATURE COVERAGE
|
|
68
|
+
- Core features listed in PRD.
|
|
69
|
+
- MVP vs future feature boundaries.
|
|
70
|
+
- Required user flows and edge cases.
|
|
71
|
+
- Offline, restart, error, loading, and empty states when specified.
|
|
72
|
+
|
|
73
|
+
2. ACCEPTANCE CRITERIA
|
|
74
|
+
- Every task acceptance criterion.
|
|
75
|
+
- QA checklist items.
|
|
76
|
+
- Functional requirements and non-functional requirements.
|
|
77
|
+
- Analytics, permissions, notifications, subscriptions, ads, or API behavior when specified.
|
|
78
|
+
|
|
79
|
+
3. DESIGN AND UI MATCH
|
|
80
|
+
- Screen list and navigation match the design plan.
|
|
81
|
+
- Layout, hierarchy, content, states, responsiveness, and accessibility evidence.
|
|
82
|
+
- Screenshot or Mobile MCP evidence when available.
|
|
83
|
+
|
|
84
|
+
4. TEST AND DEVICE EVIDENCE
|
|
85
|
+
- Unit, integration, UI, golden/snapshot, E2E, and manual QA evidence.
|
|
86
|
+
- Build/install/launch proof.
|
|
87
|
+
- Device, emulator, simulator, or Mobile MCP proof when available.
|
|
88
|
+
|
|
89
|
+
5. SECURITY AND RELEASE BLOCKERS
|
|
90
|
+
- Security audit findings that affect release.
|
|
91
|
+
- Sensitive data, auth, storage, network, permissions, deep links, WebViews, logging, and payment/subscription behavior when relevant.
|
|
92
|
+
- Performance blockers that affect launch readiness.
|
|
93
|
+
|
|
94
|
+
6. CONTEXT CONTINUITY
|
|
95
|
+
- MOBILE_MEMORY.md or project context reflects the current state.
|
|
96
|
+
- Remaining gaps and next action are captured for future sessions.
|
|
97
|
+
|
|
98
|
+
Output exactly:
|
|
99
|
+
|
|
100
|
+
Table formatting rules:
|
|
101
|
+
- Output normal Markdown. Do not wrap the final report in a fenced code block.
|
|
102
|
+
- Keep every table cell short, ideally under 8 words.
|
|
103
|
+
- Do not put full paragraphs, logs, code blocks, screenshots, or multi-sentence explanations inside table cells.
|
|
104
|
+
- Put long evidence and reasoning in `Verification Details`.
|
|
105
|
+
- Use stable IDs (`PRD-001`, `PRD-002`) to connect summary rows to detail sections.
|
|
106
|
+
|
|
107
|
+
PRD MATCH REPORT
|
|
108
|
+
================
|
|
109
|
+
Platform:
|
|
110
|
+
Feature/Scope:
|
|
111
|
+
Result: PASS | FAIL | PARTIAL | BLOCKED
|
|
112
|
+
Documents Read:
|
|
113
|
+
Evidence Reviewed:
|
|
114
|
+
|
|
115
|
+
Executive Summary:
|
|
116
|
+
- <short status summary>
|
|
117
|
+
|
|
118
|
+
Feature Coverage:
|
|
119
|
+
| ID | Requirement | Source | Status | Evidence |
|
|
120
|
+
|---|---|---|---|---|
|
|
121
|
+
|
|
122
|
+
Acceptance Criteria Status:
|
|
123
|
+
| ID | Criteria | Source | Status | Evidence |
|
|
124
|
+
|---|---|---|---|---|
|
|
125
|
+
|
|
126
|
+
UI Match:
|
|
127
|
+
| Screen/State | Source | Status | Evidence |
|
|
128
|
+
|---|---|---|---|
|
|
129
|
+
|
|
130
|
+
Test And Device Evidence:
|
|
131
|
+
| Check | Status | Evidence |
|
|
132
|
+
|---|---|---|
|
|
133
|
+
|
|
134
|
+
Security And Release Blockers:
|
|
135
|
+
| ID | Blocker | Source | Status | Action |
|
|
136
|
+
|---|---|---|---|---|
|
|
137
|
+
|
|
138
|
+
Verification Details:
|
|
139
|
+
### PRD-001 — <short title>
|
|
140
|
+
- Source:
|
|
141
|
+
- Evidence:
|
|
142
|
+
- Status:
|
|
143
|
+
- Confirmed gap:
|
|
144
|
+
- Assumption:
|
|
145
|
+
- Required fix:
|
|
146
|
+
|
|
147
|
+
Missing Requirements:
|
|
148
|
+
- <requirement or "None">
|
|
149
|
+
|
|
150
|
+
Confirmed Gaps:
|
|
151
|
+
- <gap or "None">
|
|
152
|
+
|
|
153
|
+
Assumptions:
|
|
154
|
+
- <assumption or "None">
|
|
155
|
+
|
|
156
|
+
Test Gaps:
|
|
157
|
+
- <gap or "None">
|
|
158
|
+
|
|
159
|
+
Release Readiness:
|
|
160
|
+
PASS only if all required PRD items and acceptance criteria are PASS, no critical UI/security/test gaps remain, and unknowns are documented or risk-accepted.
|
|
161
|
+
|
|
162
|
+
Next Action:
|
|
163
|
+
1. <single highest priority action>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Example
|
|
169
|
+
|
|
170
|
+
### Input
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
COMMAND: /prd-verification
|
|
174
|
+
PLATFORM: Android
|
|
175
|
+
FEATURE_OR_SCOPE: Habit Pulse MVP
|
|
176
|
+
DOCUMENTS:
|
|
177
|
+
PRD.md:
|
|
178
|
+
- Users can view today's habits.
|
|
179
|
+
- Users can add a habit with a name.
|
|
180
|
+
- Users can mark a habit complete.
|
|
181
|
+
- Habits persist after app restart.
|
|
182
|
+
- MVP includes Home, Add Habit, History, and Settings screens.
|
|
183
|
+
|
|
184
|
+
TASKS.md:
|
|
185
|
+
- T1 Home list: default seeded habits visible.
|
|
186
|
+
- T2 Add habit: Save disabled until name is non-empty.
|
|
187
|
+
- T3 Persistence: saved habits survive restart.
|
|
188
|
+
|
|
189
|
+
DESIGN.md:
|
|
190
|
+
- Polished consumer direction.
|
|
191
|
+
- Four screens required: Home, Add Habit, History, Settings.
|
|
192
|
+
- Empty, populated, and validation states required.
|
|
193
|
+
|
|
194
|
+
IMPLEMENTATION:
|
|
195
|
+
- MainActivity.kt renders HomeScreen with two seeded habits.
|
|
196
|
+
- AddHabitDialog validates empty name and appends to in-memory list.
|
|
197
|
+
- No datastore, database, or preferences files.
|
|
198
|
+
- No HistoryScreen or SettingsScreen files.
|
|
199
|
+
|
|
200
|
+
EVIDENCE:
|
|
201
|
+
- Build PASS.
|
|
202
|
+
- Screenshot shows Home with two habits.
|
|
203
|
+
- Screenshot shows Add Habit dialog.
|
|
204
|
+
- No restart test output.
|
|
205
|
+
- No Mobile MCP report.
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Output
|
|
209
|
+
|
|
210
|
+
```text
|
|
211
|
+
PRD MATCH REPORT
|
|
212
|
+
================
|
|
213
|
+
Platform: Android
|
|
214
|
+
Feature/Scope: Habit Pulse MVP
|
|
215
|
+
Result: FAIL
|
|
216
|
+
Documents Read: PRD.md, TASKS.md, DESIGN.md
|
|
217
|
+
Evidence Reviewed: build output, screenshots, source notes
|
|
218
|
+
|
|
219
|
+
Executive Summary:
|
|
220
|
+
- MVP is not PRD-complete because persistence, History, Settings, and device proof are missing.
|
|
221
|
+
|
|
222
|
+
Feature Coverage:
|
|
223
|
+
| ID | Requirement | Source | Status | Evidence |
|
|
224
|
+
|---|---|---|---|---|
|
|
225
|
+
| PRD-001 | View today's habits | PRD.md | PASS | Home screenshot |
|
|
226
|
+
| PRD-002 | Add habit | PRD.md | PARTIAL | Dialog screenshot |
|
|
227
|
+
| PRD-003 | Mark complete | PRD.md | UNKNOWN | No interaction proof |
|
|
228
|
+
| PRD-004 | Persist after restart | PRD.md | FAIL | In-memory state |
|
|
229
|
+
| PRD-005 | Four MVP screens | DESIGN.md | FAIL | Two screens only |
|
|
230
|
+
|
|
231
|
+
Acceptance Criteria Status:
|
|
232
|
+
| ID | Criteria | Source | Status | Evidence |
|
|
233
|
+
|---|---|---|---|---|
|
|
234
|
+
| AC-001 | Seeded habits visible | TASKS.md T1 | PASS | Home screenshot |
|
|
235
|
+
| AC-002 | Save disabled empty | TASKS.md T2 | PARTIAL | Code notes |
|
|
236
|
+
| AC-003 | Survives restart | TASKS.md T3 | FAIL | No storage layer |
|
|
237
|
+
|
|
238
|
+
UI Match:
|
|
239
|
+
| Screen/State | Source | Status | Evidence |
|
|
240
|
+
|---|---|---|---|
|
|
241
|
+
| Home populated | DESIGN.md | PASS | Screenshot |
|
|
242
|
+
| Add validation | DESIGN.md | PARTIAL | Dialog screenshot |
|
|
243
|
+
| History screen | DESIGN.md | FAIL | Missing file |
|
|
244
|
+
| Settings screen | DESIGN.md | FAIL | Missing file |
|
|
245
|
+
|
|
246
|
+
Test And Device Evidence:
|
|
247
|
+
| Check | Status | Evidence |
|
|
248
|
+
|---|---|---|
|
|
249
|
+
| Build | PASS | Build output |
|
|
250
|
+
| Restart test | FAIL | No test |
|
|
251
|
+
| Device QA | UNKNOWN | No Mobile MCP report |
|
|
252
|
+
|
|
253
|
+
Security And Release Blockers:
|
|
254
|
+
| ID | Blocker | Source | Status | Action |
|
|
255
|
+
|---|---|---|---|---|
|
|
256
|
+
| REL-001 | Persistence missing | PRD.md | FAIL | Add storage |
|
|
257
|
+
|
|
258
|
+
Verification Details:
|
|
259
|
+
### PRD-004 — Habits do not persist after restart
|
|
260
|
+
- Source: PRD.md persistence requirement and TASKS.md T3.
|
|
261
|
+
- Evidence: Implementation uses in-memory list and no datastore, database, or preferences files are present.
|
|
262
|
+
- Status: FAIL.
|
|
263
|
+
- Confirmed gap: Saved habits are lost on app restart.
|
|
264
|
+
- Assumption: None.
|
|
265
|
+
- Required fix: Add local persistence and restart verification.
|
|
266
|
+
|
|
267
|
+
### PRD-005 — Required MVP screens are missing
|
|
268
|
+
- Source: DESIGN.md screen list.
|
|
269
|
+
- Evidence: No HistoryScreen or SettingsScreen implementation was provided.
|
|
270
|
+
- Status: FAIL.
|
|
271
|
+
- Confirmed gap: The delivered app has fewer screens than the approved MVP design.
|
|
272
|
+
- Assumption: None.
|
|
273
|
+
- Required fix: Implement History and Settings or update approved scope.
|
|
274
|
+
|
|
275
|
+
Missing Requirements:
|
|
276
|
+
- Habit persistence after restart.
|
|
277
|
+
- History screen.
|
|
278
|
+
- Settings screen.
|
|
279
|
+
- Device QA evidence.
|
|
280
|
+
|
|
281
|
+
Confirmed Gaps:
|
|
282
|
+
- Storage layer is missing.
|
|
283
|
+
- Two approved screens are missing.
|
|
284
|
+
|
|
285
|
+
Assumptions:
|
|
286
|
+
- Mark-complete behavior may exist, but no interaction evidence was provided.
|
|
287
|
+
|
|
288
|
+
Test Gaps:
|
|
289
|
+
- Restart persistence test.
|
|
290
|
+
- UI test for add habit validation.
|
|
291
|
+
- Mobile MCP device flow.
|
|
292
|
+
|
|
293
|
+
Release Readiness:
|
|
294
|
+
PASS only if all required PRD items and acceptance criteria are PASS, no critical UI/security/test gaps remain, and unknowns are documented or risk-accepted.
|
|
295
|
+
|
|
296
|
+
Next Action:
|
|
297
|
+
1. Implement persistence and restart verification before adding new scope.
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Composition Example
|
|
303
|
+
|
|
304
|
+
```text
|
|
305
|
+
Inside MOBILE-HARNESS:
|
|
306
|
+
1. Implement the current task.
|
|
307
|
+
2. Run tests and collect screenshots or Mobile MCP QA.
|
|
308
|
+
3. Run /prd-verification with PRD.md, DESIGN.md, TASKS.md, MOBILE_MEMORY.md, code diff, and evidence.
|
|
309
|
+
4. Mark the task complete only if /prd-verification returns PASS or accepted PARTIAL with documented exceptions.
|
|
310
|
+
5. Save the report summary into MOBILE_MEMORY.md.
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
```text
|
|
314
|
+
Inside APPFORGE:
|
|
315
|
+
Use /prd-verification during Stage 5 and Stage 7 to compare implementation output against the approved PRD, design plan, and task acceptance criteria before Play Store preparation.
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Notes
|
|
321
|
+
|
|
322
|
+
- This skill does not replace tests or device QA. It checks whether the available evidence proves the product requirements.
|
|
323
|
+
- UNKNOWN is safer than PASS when evidence is missing.
|
|
324
|
+
- PARTIAL is allowed only when implementation evidence exists but proof is incomplete.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Skill — /release-prep
|
|
2
|
+
|
|
3
|
+
**Platform:** Cross-Platform
|
|
4
|
+
**Slash Command:** `/release-prep`
|
|
5
|
+
**Composable With:** agents/cross-platform/scribe/agent.md, agents/cross-platform/pipeline/agent.md
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Full release checklist from feature freeze to store submission. Replaces 20 Confluence pages. Adapts to Android, iOS, Flutter, or React Native.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Skill Prompt
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Run the mobile release checklist for the provided platform and version:
|
|
19
|
+
|
|
20
|
+
PRE-RELEASE (Feature Freeze → Branch Cut)
|
|
21
|
+
[ ] Version code / build number incremented
|
|
22
|
+
[ ] Version name updated (semantic versioning: MAJOR.MINOR.PATCH)
|
|
23
|
+
[ ] Release branch cut from main/develop
|
|
24
|
+
[ ] All feature flags for this release enabled/disabled correctly
|
|
25
|
+
[ ] CHANGELOG updated with this version's changes
|
|
26
|
+
[ ] Third-party SDK versions audited for known CVEs
|
|
27
|
+
|
|
28
|
+
BUILD QUALITY
|
|
29
|
+
[ ] All CI checks passing on release branch (lint, tests, build)
|
|
30
|
+
[ ] No CRITICAL or HIGH severity issues from security scan (SENTINEL)
|
|
31
|
+
[ ] Performance baseline measured and no regressions > 5% from previous release
|
|
32
|
+
[ ] Crash-free rate from previous version noted (baseline for this release)
|
|
33
|
+
[ ] ProGuard/R8 mapping file backed up (Android)
|
|
34
|
+
[ ] Debug symbols uploaded (dSYM for iOS, mapping.txt for Android → Firebase/Sentry)
|
|
35
|
+
|
|
36
|
+
STORE PREPARATION
|
|
37
|
+
[ ] Store listing updated if features changed (screenshots, description)
|
|
38
|
+
[ ] Release notes written for both stores (SCRIBE)
|
|
39
|
+
[ ] App Store review notes prepared (if new permissions or flows)
|
|
40
|
+
[ ] Age rating correct for new content (if applicable)
|
|
41
|
+
[ ] Privacy policy updated if new data collection added
|
|
42
|
+
|
|
43
|
+
ANDROID SPECIFIC
|
|
44
|
+
[ ] targetSdkVersion up to date (Google requires current year's target SDK by August)
|
|
45
|
+
[ ] Adaptive icon tested on Android 8+ devices
|
|
46
|
+
[ ] 64-bit APK / AAB includes both ARM64 and x86_64
|
|
47
|
+
[ ] Play App Signing enrolled
|
|
48
|
+
[ ] Internal testing → Closed testing → Open testing → Production rollout plan set
|
|
49
|
+
|
|
50
|
+
iOS SPECIFIC
|
|
51
|
+
[ ] All required privacy usage description strings in Info.plist
|
|
52
|
+
[ ] App Transport Security exceptions justified
|
|
53
|
+
[ ] In-app purchase products reviewed if applicable
|
|
54
|
+
[ ] TestFlight beta distributed to testers, feedback collected
|
|
55
|
+
[ ] Notarization complete (macOS if applicable)
|
|
56
|
+
|
|
57
|
+
ROLLOUT STRATEGY
|
|
58
|
+
[ ] Staged rollout planned: 1% → 5% → 20% → 100%
|
|
59
|
+
[ ] Monitoring dashboard ready (Firebase, Crashlytics, Sentry)
|
|
60
|
+
[ ] Rollback plan documented: which version to roll back to and how
|
|
61
|
+
[ ] On-call engineer assigned for first 48 hours post-launch
|
|
62
|
+
|
|
63
|
+
Flag any unchecked items as blockers before submission.
|
|
64
|
+
```
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Skill — /security-audit
|
|
2
|
+
|
|
3
|
+
**Platform:** Android / iOS / Flutter / React Native
|
|
4
|
+
**Slash Command:** `/security-audit`
|
|
5
|
+
**Composable With:** SENTINEL, agents/cross-platform/security-scanner/agent.md, MOBILE-HARNESS, APPFORGE
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Run a complete mobile app security audit across code, configuration, storage, networking, authentication, permissions, build settings, logging, WebViews, deep links, dependencies, and release readiness.
|
|
12
|
+
|
|
13
|
+
Use this when the user wants more than a quick code scan. This skill is intended for app-wide pre-release review and should be paired with SENTINEL or `security-scanner` for detailed exploit analysis.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Input Format
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
COMMAND: /security-audit
|
|
21
|
+
PLATFORM: <Android | iOS | Flutter | React Native>
|
|
22
|
+
APP_TYPE: <consumer | fintech | health | enterprise | game | other>
|
|
23
|
+
SCOPE:
|
|
24
|
+
<repo tree, changed files, manifests, config files, auth/storage/network files>
|
|
25
|
+
DATA_HANDLED:
|
|
26
|
+
<tokens, PII, payments, health, location, files, messages, analytics>
|
|
27
|
+
CODE_OR_FINDINGS:
|
|
28
|
+
<paste code, config, dependency list, or previous scan output>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Skill Prompt
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
Run a complete app security audit for the provided mobile app scope.
|
|
37
|
+
|
|
38
|
+
Use OWASP Mobile Top 10 as the baseline, but also check platform release risks.
|
|
39
|
+
|
|
40
|
+
Audit these areas:
|
|
41
|
+
|
|
42
|
+
1. DATA CLASSIFICATION AND THREAT MODEL
|
|
43
|
+
- Identify sensitive data: credentials, tokens, PII, payment data, health data, precise location, contacts, messages, photos, files, analytics identifiers.
|
|
44
|
+
- Identify trust boundaries: app, backend, third-party SDKs, WebViews, deep links, push notifications, local storage, clipboard, logs.
|
|
45
|
+
- If data classification is missing, infer it from the code and mark assumptions.
|
|
46
|
+
|
|
47
|
+
2. SECRETS AND CREDENTIALS
|
|
48
|
+
- No API keys, tokens, passwords, client secrets, private keys, signing configs, keystore passwords, or service account JSON in source.
|
|
49
|
+
- Check Android Gradle files, BuildConfig, string resources, google-services files, local.properties misuse, CI files.
|
|
50
|
+
- Check iOS Info.plist, .xcconfig, entitlements, project files, Swift constants.
|
|
51
|
+
- Check Flutter .env assets, Dart constants, Android/iOS folders.
|
|
52
|
+
- Check React Native JS bundles, env files, native config, Metro output risk.
|
|
53
|
+
|
|
54
|
+
3. STORAGE SECURITY
|
|
55
|
+
- Tokens and credentials must use Keychain, EncryptedSharedPreferences, Android Keystore, Secure Enclave where appropriate, expo-secure-store, or react-native-keychain.
|
|
56
|
+
- AsyncStorage, SharedPreferences, UserDefaults, plain SQLite, files, cache, logs, and clipboard must not hold secrets.
|
|
57
|
+
- Sensitive databases need encryption or documented risk acceptance.
|
|
58
|
+
- Backup behavior must be safe: Android allowBackup/dataExtractionRules and iOS backup exclusions for sensitive files.
|
|
59
|
+
|
|
60
|
+
4. NETWORK AND TRANSPORT
|
|
61
|
+
- HTTPS required for production APIs.
|
|
62
|
+
- No cleartext traffic unless explicitly justified for local/dev and blocked in release.
|
|
63
|
+
- TLS validation must not be disabled.
|
|
64
|
+
- Certificate pinning required for high-risk auth, payment, health, or enterprise apps.
|
|
65
|
+
- No permissive TrustManager, HostnameVerifier, URLSession delegate, ATS exception, or debug proxy config in release.
|
|
66
|
+
- API errors must not leak secrets.
|
|
67
|
+
|
|
68
|
+
5. AUTHENTICATION AND SESSION MANAGEMENT
|
|
69
|
+
- Tokens expire and refresh safely.
|
|
70
|
+
- Logout clears local sensitive data.
|
|
71
|
+
- Biometric/PIN gates protect highly sensitive local data when required.
|
|
72
|
+
- No credentials in URLs.
|
|
73
|
+
- No weak password reset, magic link, or OTP handling in app code.
|
|
74
|
+
- Session state is not stored in globally mutable objects without lifecycle handling.
|
|
75
|
+
|
|
76
|
+
6. AUTHORIZATION AND BUSINESS LOGIC
|
|
77
|
+
- Client does not enforce critical authorization alone.
|
|
78
|
+
- Feature flags, premium/subscription checks, admin flags, and role checks must be validated server-side.
|
|
79
|
+
- Local tampering must not unlock paid or privileged behavior.
|
|
80
|
+
|
|
81
|
+
7. INPUT VALIDATION, DEEP LINKS, AND IPC
|
|
82
|
+
- Deep links validate scheme, host, path, parameters, and auth state before navigation.
|
|
83
|
+
- Android exported activities/services/receivers are minimal and protected.
|
|
84
|
+
- iOS URL schemes/universal links validate allowed hosts and paths.
|
|
85
|
+
- Push notification payloads are validated before navigation or data mutation.
|
|
86
|
+
- File imports, intents, document pickers, and share extensions validate size, type, and path.
|
|
87
|
+
|
|
88
|
+
8. WEBVIEW AND JAVASCRIPT BRIDGES
|
|
89
|
+
- WebViews load only trusted origins.
|
|
90
|
+
- JavaScript bridges are disabled unless strictly required and origin-gated.
|
|
91
|
+
- File access, universal file URL access, mixed content, and arbitrary navigation are blocked.
|
|
92
|
+
- User-controlled input is never passed directly into evaluateJavaScript/loadUrl.
|
|
93
|
+
|
|
94
|
+
9. LOGGING, ANALYTICS, AND PRIVACY
|
|
95
|
+
- No tokens, passwords, OTPs, PII, payment data, or health data in logs, crashes, analytics, breadcrumbs, or screenshots.
|
|
96
|
+
- Debug logging disabled in release.
|
|
97
|
+
- Privacy policy and app store data safety declarations match actual SDK/data behavior.
|
|
98
|
+
- Third-party SDKs are reviewed for data collection.
|
|
99
|
+
|
|
100
|
+
10. DEPENDENCIES AND SUPPLY CHAIN
|
|
101
|
+
- Identify outdated, vulnerable, abandoned, or risky dependencies.
|
|
102
|
+
- Check dependency pinning, lockfiles, Gradle plugins, CocoaPods/SPM, npm packages, Flutter packages.
|
|
103
|
+
- Flag dynamic code loading, remote config executing logic, reflection/plugin loading risk.
|
|
104
|
+
|
|
105
|
+
11. PLATFORM HARDENING
|
|
106
|
+
- Android: release debuggable false, minify/shrink where appropriate, signing config protected, exported components explicit, backup rules safe, network security config release-safe.
|
|
107
|
+
- iOS: ATS enabled, Keychain access groups correct, entitlements minimal, jailbreak-sensitive apps document protections, release builds do not enable debug menus.
|
|
108
|
+
- Flutter: native Android/iOS configs audited too, not only Dart.
|
|
109
|
+
- React Native: JS bundle secrets checked, dev menu disabled in release, native configs audited too.
|
|
110
|
+
|
|
111
|
+
12. RELEASE GATE
|
|
112
|
+
- Map findings to OWASP Mobile Top 10 where possible.
|
|
113
|
+
- Assign severity: CRITICAL, HIGH, MEDIUM, LOW, INFO.
|
|
114
|
+
- Include exploit scenario and concrete fix.
|
|
115
|
+
- State what could not be verified from provided files.
|
|
116
|
+
|
|
117
|
+
Output exactly:
|
|
118
|
+
|
|
119
|
+
Table formatting rules:
|
|
120
|
+
- Output normal Markdown. Do not wrap the final report in a fenced code block.
|
|
121
|
+
- Keep every table cell short, ideally under 8 words.
|
|
122
|
+
- Do not put full paragraphs, logs, stack traces, secrets, or multi-sentence fixes inside table cells.
|
|
123
|
+
- Put long evidence, exploit scenarios, and fixes in `Finding Details`.
|
|
124
|
+
- Use stable IDs (`SEC-001`, `SEC-002`) to connect summary rows to detail sections.
|
|
125
|
+
|
|
126
|
+
MOBILE SECURITY AUDIT REPORT
|
|
127
|
+
============================
|
|
128
|
+
Platform:
|
|
129
|
+
App Type:
|
|
130
|
+
Data Handled:
|
|
131
|
+
Result: PASS | FAIL | BLOCKED
|
|
132
|
+
|
|
133
|
+
Executive Summary:
|
|
134
|
+
- <short risk summary>
|
|
135
|
+
|
|
136
|
+
Findings Summary:
|
|
137
|
+
| ID | Severity | OWASP | Area | Evidence | Fix Summary |
|
|
138
|
+
|---|---|---|---|---|---|
|
|
139
|
+
|
|
140
|
+
Finding Details:
|
|
141
|
+
### SEC-001 — <short title>
|
|
142
|
+
- Severity:
|
|
143
|
+
- OWASP:
|
|
144
|
+
- Area:
|
|
145
|
+
- Evidence:
|
|
146
|
+
- Exploit Scenario:
|
|
147
|
+
- Fix:
|
|
148
|
+
- Verification:
|
|
149
|
+
|
|
150
|
+
Security Checklist:
|
|
151
|
+
| Area | Status | Notes |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
| Secrets | PASS/FAIL/UNKNOWN | |
|
|
154
|
+
| Storage | PASS/FAIL/UNKNOWN | |
|
|
155
|
+
| Network/TLS | PASS/FAIL/UNKNOWN | |
|
|
156
|
+
| Auth/Session | PASS/FAIL/UNKNOWN | |
|
|
157
|
+
| Authorization | PASS/FAIL/UNKNOWN | |
|
|
158
|
+
| Deep Links/IPC | PASS/FAIL/UNKNOWN | |
|
|
159
|
+
| WebView | PASS/FAIL/UNKNOWN | |
|
|
160
|
+
| Logging/Analytics | PASS/FAIL/UNKNOWN | |
|
|
161
|
+
| Dependencies | PASS/FAIL/UNKNOWN | |
|
|
162
|
+
| Platform Hardening | PASS/FAIL/UNKNOWN | |
|
|
163
|
+
| Privacy/Store Data Safety | PASS/FAIL/UNKNOWN | |
|
|
164
|
+
|
|
165
|
+
Files Needed For Complete Audit:
|
|
166
|
+
- <file or "None">
|
|
167
|
+
|
|
168
|
+
Release Gate:
|
|
169
|
+
PASS only if no CRITICAL or HIGH findings remain, and UNKNOWN items are either verified or explicitly risk-accepted.
|
|
170
|
+
|
|
171
|
+
Next Actions:
|
|
172
|
+
1. <highest priority fix>
|
|
173
|
+
2. <next fix>
|
|
174
|
+
3. <next fix>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Example
|
|
180
|
+
|
|
181
|
+
### Input
|
|
182
|
+
|
|
183
|
+
```text
|
|
184
|
+
COMMAND: /security-audit
|
|
185
|
+
PLATFORM: Android
|
|
186
|
+
APP_TYPE: consumer finance
|
|
187
|
+
DATA_HANDLED: auth tokens, payment history, email, phone
|
|
188
|
+
CODE_OR_FINDINGS:
|
|
189
|
+
- AndroidManifest has android:debuggable="true"
|
|
190
|
+
- network_security_config permits cleartextTrafficPermitted="true"
|
|
191
|
+
- TokenRepository stores auth_token in SharedPreferences
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Output
|
|
195
|
+
|
|
196
|
+
```text
|
|
197
|
+
MOBILE SECURITY AUDIT REPORT
|
|
198
|
+
============================
|
|
199
|
+
Platform: Android
|
|
200
|
+
App Type: consumer finance
|
|
201
|
+
Data Handled: auth tokens, payment history, email, phone
|
|
202
|
+
Result: FAIL
|
|
203
|
+
|
|
204
|
+
Executive Summary:
|
|
205
|
+
- Release is blocked by plaintext token storage, release debugging, and cleartext network policy.
|
|
206
|
+
|
|
207
|
+
Findings Summary:
|
|
208
|
+
| ID | Severity | OWASP | Area | Evidence | Fix Summary |
|
|
209
|
+
|---|---|---|---|---|---|
|
|
210
|
+
| SEC-001 | CRITICAL | M2 | Storage | Token in SharedPreferences | Use encrypted token storage |
|
|
211
|
+
| SEC-002 | CRITICAL | M8 | Platform Hardening | Release debuggable true | Disable release debugging |
|
|
212
|
+
| SEC-003 | HIGH | M3 | Network/TLS | Cleartext allowed | Disable cleartext in release |
|
|
213
|
+
|
|
214
|
+
Finding Details:
|
|
215
|
+
### SEC-001 — Auth token stored in plaintext preferences
|
|
216
|
+
- Severity: CRITICAL
|
|
217
|
+
- OWASP: M2 Insecure Data Storage
|
|
218
|
+
- Area: Storage
|
|
219
|
+
- Evidence: `auth_token` is stored in `SharedPreferences`.
|
|
220
|
+
- Exploit Scenario: Device compromise, root access, or debug backup can expose session tokens.
|
|
221
|
+
- Fix: Store tokens in `EncryptedSharedPreferences` backed by Android Keystore.
|
|
222
|
+
- Verification: Confirm token writes use encrypted storage and logout clears the encrypted value.
|
|
223
|
+
|
|
224
|
+
### SEC-002 — Release build is debuggable
|
|
225
|
+
- Severity: CRITICAL
|
|
226
|
+
- OWASP: M8 Security Misconfiguration
|
|
227
|
+
- Area: Platform Hardening
|
|
228
|
+
- Evidence: `android:debuggable="true"`.
|
|
229
|
+
- Exploit Scenario: Attackers can attach a debugger to the release app and inspect runtime state.
|
|
230
|
+
- Fix: Ensure release builds set `debuggable false` and remove debug-only menus.
|
|
231
|
+
- Verification: Inspect merged release manifest and release APK flags.
|
|
232
|
+
|
|
233
|
+
### SEC-003 — Cleartext traffic allowed
|
|
234
|
+
- Severity: HIGH
|
|
235
|
+
- OWASP: M3 Insecure Communication
|
|
236
|
+
- Area: Network/TLS
|
|
237
|
+
- Evidence: `cleartextTrafficPermitted="true"`.
|
|
238
|
+
- Exploit Scenario: Traffic can be intercepted or modified on hostile networks.
|
|
239
|
+
- Fix: Disable cleartext in release network security config.
|
|
240
|
+
- Verification: Confirm release config blocks HTTP endpoints and test API calls over HTTPS only.
|
|
241
|
+
|
|
242
|
+
Security Checklist:
|
|
243
|
+
| Area | Status | Notes |
|
|
244
|
+
|---|---|---|
|
|
245
|
+
| Secrets | UNKNOWN | Gradle and CI files not provided |
|
|
246
|
+
| Storage | FAIL | Token stored in plaintext |
|
|
247
|
+
| Network/TLS | FAIL | Cleartext enabled |
|
|
248
|
+
| Auth/Session | UNKNOWN | Refresh/logout code not provided |
|
|
249
|
+
| Authorization | UNKNOWN | Server-side checks not provided |
|
|
250
|
+
| Deep Links/IPC | UNKNOWN | Manifest intent filters not fully provided |
|
|
251
|
+
| WebView | UNKNOWN | No WebView files provided |
|
|
252
|
+
| Logging/Analytics | UNKNOWN | Logging files not provided |
|
|
253
|
+
| Dependencies | UNKNOWN | Dependency lockfiles not provided |
|
|
254
|
+
| Platform Hardening | FAIL | Debuggable release |
|
|
255
|
+
| Privacy/Store Data Safety | UNKNOWN | Store declarations not provided |
|
|
256
|
+
|
|
257
|
+
Files Needed For Complete Audit:
|
|
258
|
+
- app/build.gradle
|
|
259
|
+
- AndroidManifest.xml
|
|
260
|
+
- network_security_config.xml
|
|
261
|
+
- TokenRepository
|
|
262
|
+
- dependency lockfile
|
|
263
|
+
- logging and analytics wrappers
|
|
264
|
+
|
|
265
|
+
Release Gate:
|
|
266
|
+
PASS only if no CRITICAL or HIGH findings remain, and UNKNOWN items are either verified or explicitly risk-accepted.
|
|
267
|
+
|
|
268
|
+
Next Actions:
|
|
269
|
+
1. Move auth token storage to EncryptedSharedPreferences.
|
|
270
|
+
2. Disable release debugging and cleartext traffic.
|
|
271
|
+
3. Provide Gradle, manifest, dependency, auth, and logging files for full verification.
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Usage Notes
|
|
277
|
+
|
|
278
|
+
- Use `/security-scan` for quick inline code review.
|
|
279
|
+
- Use `/security-audit` for app-wide release gates.
|
|
280
|
+
- Pair with SENTINEL or `agents/cross-platform/security-scanner/agent.md` when exploitability analysis and OWASP evidence need to be deeper.
|
|
281
|
+
- Inside MOBILE-HARNESS, run this before launch prep and whenever auth, payments, storage, deep links, or WebViews change.
|