@leejungkiin/awkit 1.7.1 → 1.7.4
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/bin/awk.js +576 -84
- package/core/CLAUDE.md +1 -1
- package/core/GEMINI.md +148 -167
- package/core/GEMINI.md.bak +149 -116
- package/core/skill-runtime-manifest.json +3 -0
- package/docs/Claude Fable 5.md +3826 -0
- package/docs/android_kotlin_system_instruction.md +210 -0
- package/docs/brainstorm_ponytail_integration.md +146 -0
- package/docs/brainstorm_smart_setup.md +113 -0
- package/docs/deep-research-report (1).md +293 -0
- package/docs/history/GEMINI.v1.md +135 -0
- package/docs/history/brainstorm_antigravity_unified_architecture.v1.md +105 -0
- package/docs/history/implementation_plan.v1.md +58 -0
- package/package.json +4 -1
- package/scripts/artifact-storage.js +130 -0
- package/scripts/automation-gate.js +35 -2
- package/scripts/claude-plan.js +76 -0
- package/scripts/dependency-manager.js +210 -0
- package/scripts/exec-rtk.js +11 -5
- package/scripts/i18n-helper.js +381 -0
- package/scripts/multi-model-pipeline.js +144 -0
- package/skill-packs/mobile-ios/pack.json +4 -2
- package/skill-packs/reverse-engineering/pack.json +1 -0
- package/skills/CATALOG.md +20 -0
- package/skills/GEMINI.md +9 -1
- package/skills/TRIGGER_INDEX.md +10 -0
- package/skills/ai-music/SKILL.md +275 -0
- package/skills/android-re-analyzer/SKILL.md +238 -0
- package/skills/android-re-analyzer/references/api-extraction-patterns.md +119 -0
- package/skills/android-re-analyzer/references/call-flow-analysis.md +176 -0
- package/skills/android-re-analyzer/references/fernflower-usage.md +115 -0
- package/skills/android-re-analyzer/references/jadx-usage.md +116 -0
- package/skills/android-re-analyzer/references/setup-guide.md +221 -0
- package/skills/android-re-analyzer/scripts/check-deps.sh +129 -0
- package/skills/android-re-analyzer/scripts/decompile.sh +375 -0
- package/skills/android-re-analyzer/scripts/find-api-calls.sh +118 -0
- package/skills/android-re-analyzer/scripts/install-dep.sh +448 -0
- package/skills/animal-island-ui-style/SKILL.md +1450 -0
- package/skills/app-store-review-agent/SKILL.md +164 -0
- package/skills/app-store-review-agent/references/guidelines/README.md +154 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/ai_apps.md +37 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/all_apps.md +50 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/crypto_finance.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/games.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/health_fitness.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/kids.md +27 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/macos.md +38 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/social_ugc.md +32 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/subscription_iap.md +34 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/vpn.md +18 -0
- package/skills/app-store-review-agent/references/rules/design/minimum_functionality.md +96 -0
- package/skills/app-store-review-agent/references/rules/design/sign_in_with_apple.md +54 -0
- package/skills/app-store-review-agent/references/rules/entitlements/unused_entitlements.md +83 -0
- package/skills/app-store-review-agent/references/rules/metadata/accurate_metadata.md +54 -0
- package/skills/app-store-review-agent/references/rules/metadata/apple_trademark.md +99 -0
- package/skills/app-store-review-agent/references/rules/metadata/china_storefront.md +72 -0
- package/skills/app-store-review-agent/references/rules/metadata/competitor_terms.md +56 -0
- package/skills/app-store-review-agent/references/rules/metadata/subscription_metadata.md +81 -0
- package/skills/app-store-review-agent/references/rules/privacy/privacy_manifest.md +84 -0
- package/skills/app-store-review-agent/references/rules/privacy/unnecessary_data.md +60 -0
- package/skills/app-store-review-agent/references/rules/subscription/misleading_pricing.md +63 -0
- package/skills/app-store-review-agent/references/rules/subscription/missing_tos_pp.md +54 -0
- package/skills/awf-ponytail/SKILL.md +91 -0
- package/skills/awf-ponytail-review/SKILL.md +67 -0
- package/skills/awf-session-restore/SKILL.md +3 -3
- package/skills/brainstorm-agent/SKILL.md +11 -2
- package/skills/brainstorm-agent/templates/brief-template.md +8 -0
- package/skills/claude-planner/SKILL.md +47 -0
- package/skills/code-review/SKILL.md +87 -0
- package/skills/expo-game-development/SKILL.md +163 -0
- package/skills/flutter/LICENSE.txt +202 -0
- package/skills/flutter/SKILL.md +127 -0
- package/skills/flutter-project-creater/LICENSE.txt +202 -0
- package/skills/flutter-project-creater/SKILL.md +106 -0
- package/skills/game-developer/SKILL.md +163 -0
- package/skills/game-developer/references/ecs-patterns.md +501 -0
- package/skills/game-developer/references/multiplayer-networking.md +475 -0
- package/skills/game-developer/references/performance-optimization.md +422 -0
- package/skills/game-developer/references/unity-patterns.md +271 -0
- package/skills/game-developer/references/unreal-cpp.md +352 -0
- package/skills/generate-gui-assets/SKILL.md +305 -0
- package/skills/generate-gui-assets/agents/openai.yaml +4 -0
- package/skills/generate-gui-assets/references/catalog-schema.md +58 -0
- package/skills/generate-gui-assets/references/extraction-techniques.md +21 -0
- package/skills/generate-gui-assets/references/prompt-patterns.md +58 -0
- package/skills/generate-gui-assets/scripts/__pycache__/clean_chroma_edges.cpython-311.pyc +0 -0
- package/skills/generate-gui-assets/scripts/build_gui_contact_sheet.py +51 -0
- package/skills/generate-gui-assets/scripts/clean_chroma_edges.py +262 -0
- package/skills/generate-gui-assets/scripts/copy_approved_icons.py +64 -0
- package/skills/generate-gui-assets/scripts/prepare_gui_asset_run.py +91 -0
- package/skills/generate-gui-assets/scripts/suggest_grid_options.py +63 -0
- package/skills/generate-gui-assets/scripts/validate_gui_catalog.py +50 -0
- package/skills/godot-game-development/SKILL.md +142 -0
- package/skills/hatch-pet/LICENSE.txt +201 -0
- package/skills/hatch-pet/SKILL.md +420 -0
- package/skills/hatch-pet/agents/openai.yaml +4 -0
- package/skills/hatch-pet/references/animation-rows.md +29 -0
- package/skills/hatch-pet/references/codex-pet-contract.md +35 -0
- package/skills/hatch-pet/references/qa-rubric.md +60 -0
- package/skills/hatch-pet/scripts/__pycache__/clean_chroma_edges.cpython-311.pyc +0 -0
- package/skills/hatch-pet/scripts/clean_chroma_edges.py +262 -0
- package/skills/hatch-pet/scripts/compose_atlas.py +150 -0
- package/skills/hatch-pet/scripts/derive_running_left_from_running_right.py +143 -0
- package/skills/hatch-pet/scripts/extract_strip_frames.py +323 -0
- package/skills/hatch-pet/scripts/finalize_pet_run.py +382 -0
- package/skills/hatch-pet/scripts/generate_pet_images.py +287 -0
- package/skills/hatch-pet/scripts/inspect_frames.py +246 -0
- package/skills/hatch-pet/scripts/make_contact_sheet.py +96 -0
- package/skills/hatch-pet/scripts/package_custom_pet.py +108 -0
- package/skills/hatch-pet/scripts/pet_job_status.py +117 -0
- package/skills/hatch-pet/scripts/prepare_pet_run.py +673 -0
- package/skills/hatch-pet/scripts/queue_pet_repairs.py +172 -0
- package/skills/hatch-pet/scripts/record_imagegen_result.py +250 -0
- package/skills/hatch-pet/scripts/render_animation_videos.py +134 -0
- package/skills/hatch-pet/scripts/render_animation_videos.sh +5 -0
- package/skills/hatch-pet/scripts/validate_atlas.py +139 -0
- package/skills/i18n-orchestrator/SKILL.md +37 -0
- package/skills/ios-simulator-skill/SKILL.md +390 -0
- package/skills/ios-simulator-skill/scripts/accessibility_audit.py +300 -0
- package/skills/ios-simulator-skill/scripts/app_launcher.py +326 -0
- package/skills/ios-simulator-skill/scripts/app_state_capture.py +400 -0
- package/skills/ios-simulator-skill/scripts/appearance.py +385 -0
- package/skills/ios-simulator-skill/scripts/build_and_test.py +348 -0
- package/skills/ios-simulator-skill/scripts/clipboard.py +103 -0
- package/skills/ios-simulator-skill/scripts/common/__init__.py +61 -0
- package/skills/ios-simulator-skill/scripts/common/cache_utils.py +289 -0
- package/skills/ios-simulator-skill/scripts/common/device_utils.py +462 -0
- package/skills/ios-simulator-skill/scripts/common/env_config.py +35 -0
- package/skills/ios-simulator-skill/scripts/common/hang_pipeline.py +862 -0
- package/skills/ios-simulator-skill/scripts/common/hang_sessions.py +490 -0
- package/skills/ios-simulator-skill/scripts/common/idb_utils.py +180 -0
- package/skills/ios-simulator-skill/scripts/common/screenshot_utils.py +338 -0
- package/skills/ios-simulator-skill/scripts/container.py +668 -0
- package/skills/ios-simulator-skill/scripts/gesture.py +394 -0
- package/skills/ios-simulator-skill/scripts/hang_watcher.py +1533 -0
- package/skills/ios-simulator-skill/scripts/keyboard.py +391 -0
- package/skills/ios-simulator-skill/scripts/localization_audit.py +483 -0
- package/skills/ios-simulator-skill/scripts/location.py +467 -0
- package/skills/ios-simulator-skill/scripts/log_monitor.py +493 -0
- package/skills/ios-simulator-skill/scripts/model_inspector.py +645 -0
- package/skills/ios-simulator-skill/scripts/navigator.py +461 -0
- package/skills/ios-simulator-skill/scripts/privacy_manager.py +310 -0
- package/skills/ios-simulator-skill/scripts/push_notification.py +240 -0
- package/skills/ios-simulator-skill/scripts/screen_mapper.py +296 -0
- package/skills/ios-simulator-skill/scripts/sim_health_check.sh +245 -0
- package/skills/ios-simulator-skill/scripts/sim_list.py +299 -0
- package/skills/ios-simulator-skill/scripts/simctl_boot.py +312 -0
- package/skills/ios-simulator-skill/scripts/simctl_create.py +316 -0
- package/skills/ios-simulator-skill/scripts/simctl_delete.py +357 -0
- package/skills/ios-simulator-skill/scripts/simctl_erase.py +351 -0
- package/skills/ios-simulator-skill/scripts/simctl_shutdown.py +290 -0
- package/skills/ios-simulator-skill/scripts/simulator_selector.py +375 -0
- package/skills/ios-simulator-skill/scripts/status_bar.py +250 -0
- package/skills/ios-simulator-skill/scripts/test_recorder.py +323 -0
- package/skills/ios-simulator-skill/scripts/visual_diff.py +235 -0
- package/skills/ios-simulator-skill/scripts/xcode/__init__.py +13 -0
- package/skills/ios-simulator-skill/scripts/xcode/builder.py +397 -0
- package/skills/ios-simulator-skill/scripts/xcode/cache.py +204 -0
- package/skills/ios-simulator-skill/scripts/xcode/config.py +178 -0
- package/skills/ios-simulator-skill/scripts/xcode/reporter.py +343 -0
- package/skills/ios-simulator-skill/scripts/xcode/xcresult.py +451 -0
- package/skills/ios-visual-qa-strategist/SKILL.md +111 -0
- package/skills/ios-visual-qa-strategist/agents/openai.yaml +4 -0
- package/skills/ios-visual-qa-strategist/references/ios-tool-selection.md +61 -0
- package/skills/ios-visual-qa-strategist/references/minimal-capture-policy.md +56 -0
- package/skills/ios-visual-qa-strategist/references/visual-reasoning-heuristics.md +53 -0
- package/skills/orchestrator/SKILL.md +0 -20
- package/skills/persistent-storage/SKILL.md +55 -0
- package/skills/short-maker/SKILL.md +23 -0
- package/skills/short-maker/scripts/effects.js +56 -0
- package/skills/short-maker/scripts/shortmaker-bridge.js +332 -0
- package/skills/short-maker/scripts/videomix.js +601 -0
- package/skills/short-maker/templates/hyperframes/cinematic-character.template.html +172 -0
- package/skills/short-maker/templates/hyperframes/index.template.html +194 -0
- package/skills/smali-to-kotlin/SKILL.md +128 -0
- package/skills/smali-to-kotlin/examples/getting-started/tech-stack.md +58 -0
- package/skills/smali-to-kotlin/examples/pipeline/data-ui-parity.md +118 -0
- package/skills/smali-to-kotlin/examples/pipeline/scanner-and-bootstrap.md +106 -0
- package/skills/smali-to-kotlin/library-patterns.md +189 -0
- package/skills/smali-to-kotlin/phase-0-discovery.md +128 -0
- package/skills/smali-to-kotlin/phase-1-architecture.md +166 -0
- package/skills/smali-to-kotlin/phase-2-blueprint-ui.md +347 -0
- package/skills/smali-to-kotlin/phase-2-blueprint.md +228 -0
- package/skills/smali-to-kotlin/phase-3-build.md +248 -0
- package/skills/smali-to-kotlin/phase-3-logic-build.md +268 -0
- package/skills/smali-to-kotlin/smali-reading-guide.md +310 -0
- package/skills/smali-to-kotlin/templates/app-map.md +101 -0
- package/skills/smali-to-kotlin/templates/architecture.md +142 -0
- package/skills/smali-to-kotlin/templates/blueprint.md +145 -0
- package/skills/spec-gate/SKILL.md +6 -2
- package/skills/symphony-enforcer/SKILL.md +8 -0
- package/skills/symphony-enforcer/examples/mindful-stop.md +2 -0
- package/skills/symphony-enforcer/examples/three-phase.md +16 -0
- package/skills/symphony-enforcer/examples/trigger-points.md +7 -1
- package/skills/unity-game-development/SKILL.md +231 -0
- package/skills/video-edit/SKILL.md +36 -0
- package/skills/video-edit/scripts/video_edit.py +324 -0
- package/templates/project-identity/android.json +2 -2
- package/templates/project-identity/backend-nestjs.json +2 -2
- package/templates/project-identity/expo.json +2 -2
- package/templates/project-identity/ios.json +2 -2
- package/templates/project-identity/web-nextjs.json +2 -2
- package/templates/setup-mapping.json +48 -0
- package/templates/specs/design-template.md +161 -71
- package/templates/specs/requirements-template.md +65 -133
- package/templates/specs/task-spec-template.xml +3 -0
- package/workflows/_uncategorized/critic.md +40 -0
- package/workflows/_uncategorized/git-rebase-flow.md +81 -0
- package/workflows/_uncategorized/image-gen.md +118 -0
- package/workflows/_uncategorized/multi-model-pipeline.md +60 -0
- package/workflows/_uncategorized/pixel-gen.md +86 -0
- package/workflows/_uncategorized/pixel-setup.md +90 -0
- package/workflows/_uncategorized/ponytail-review.md +59 -0
- package/workflows/_uncategorized/reverse-android-build.md +222 -0
- package/workflows/_uncategorized/reverse-android-design.md +139 -0
- package/workflows/_uncategorized/reverse-android-discover.md +150 -0
- package/workflows/_uncategorized/reverse-android-scan.md +158 -0
- package/workflows/_uncategorized/reverse-android.md +143 -0
- package/workflows/_uncategorized/reverse-ios-build.md +240 -0
- package/workflows/_uncategorized/reverse-ios-design.md +112 -0
- package/workflows/_uncategorized/reverse-ios-discover.md +120 -0
- package/workflows/_uncategorized/reverse-ios-scan.md +155 -0
- package/workflows/_uncategorized/reverse-ios.md +152 -0
- package/workflows/_uncategorized/safety-router.md +34 -0
- package/workflows/_uncategorized/teach.md +89 -0
- package/workflows/_uncategorized/verify-ui.md +53 -0
- package/workflows/_uncategorized/visualize-screenshots.md +34 -0
- package/workflows/ads/ads-analyst.md +201 -0
- package/workflows/ads/ads-audit.md +106 -0
- package/workflows/ads/ads-optimize.md +97 -0
- package/workflows/ads/ads-targeting.md +241 -0
- package/workflows/ads/adsExpert.md +160 -0
- package/workflows/ads/smali-ads-config.md +400 -0
- package/workflows/ads/smali-ads-flow.md +331 -0
- package/workflows/ads/smali-ads-interstitial.md +377 -0
- package/workflows/ads/smali-ads-native.md +382 -0
- package/workflows/context/teach.md +89 -0
- package/workflows/gitnexus.md +8 -8
- package/workflows/lifecycle/brainstorm.md +43 -0
- package/workflows/lifecycle/code.md +5 -0
- package/workflows/lifecycle/init.md +23 -5
- package/workflows/lifecycle/multi-model-pipeline.md +60 -0
- package/workflows/quality/ponytail-review.md +59 -0
- package/workflows/roles/critic.md +40 -0
- package/workflows/roles/safety-router.md +34 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Step 0: Library Scanner (PRE-STEP — Always First) 🔍
|
|
2
|
+
|
|
3
|
+
**Purpose:** Scan the APK structure to identify all third-party libraries before any coding.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. **Scan `smali/` directories** for package patterns:
|
|
8
|
+
```
|
|
9
|
+
smali/com/google/ → Google SDKs
|
|
10
|
+
smali/com/facebook/ → Facebook SDK
|
|
11
|
+
smali/com/squareup/ → OkHttp, Retrofit, Picasso
|
|
12
|
+
smali/io/reactivex/ → RxJava
|
|
13
|
+
smali/org/greenrobot/ → EventBus
|
|
14
|
+
smali/com/bumptech/ → Glide
|
|
15
|
+
smali/com/airbnb/ → Lottie
|
|
16
|
+
smali/androidx/ → AndroidX (baseline)
|
|
17
|
+
smali/com/jakewharton/ → Butterknife, Timber
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. **Check `lib/` for native libraries (.so)**:
|
|
21
|
+
```
|
|
22
|
+
lib/arm64-v8a/*.so → 64-bit native libs
|
|
23
|
+
lib/armeabi-v7a/*.so → 32-bit native libs
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
3. **Check `assets/` for embedded resources:**
|
|
27
|
+
- ML models (.tflite, .onnx)
|
|
28
|
+
- WebView HTML/JS bundles
|
|
29
|
+
- Config files (JSON, XML)
|
|
30
|
+
|
|
31
|
+
4. **Output: Library Report**
|
|
32
|
+
```markdown
|
|
33
|
+
## 📦 Library Detection Report
|
|
34
|
+
|
|
35
|
+
### ✅ Can Reuse (add to build.gradle)
|
|
36
|
+
| Library | Detected Package | Latest Version | Action |
|
|
37
|
+
|---------|-----------------|----------------|--------|
|
|
38
|
+
| Retrofit | com.squareup.retrofit2 | 2.9.0 | Add dependency |
|
|
39
|
+
| OkHttp | com.squareup.okhttp3 | 4.12.0 | Add dependency |
|
|
40
|
+
| Glide | com.bumptech.glide | 4.16.0 | Evaluate → Coil? |
|
|
41
|
+
|
|
42
|
+
### 🔄 Must Replace (legacy)
|
|
43
|
+
| Old Library | Detected Package | Replacement |
|
|
44
|
+
|-------------|-----------------|-------------|
|
|
45
|
+
| Volley | com.android.volley | Retrofit |
|
|
46
|
+
| AsyncTask | android.os.AsyncTask | Coroutines |
|
|
47
|
+
|
|
48
|
+
### 📱 Native (.so) — Keep As-Is
|
|
49
|
+
| File | Architecture | Notes |
|
|
50
|
+
|------|-------------|-------|
|
|
51
|
+
| libfoo.so | arm64-v8a | Need JNI bridge |
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
# Step 1: AndroidManifest Analysis & Project Bootstrap 📄
|
|
57
|
+
|
|
58
|
+
**Input:** User provides `AndroidManifest.xml` from Apktool output.
|
|
59
|
+
|
|
60
|
+
## Tasks
|
|
61
|
+
|
|
62
|
+
1. Extract Application ID and original package name
|
|
63
|
+
2. List all required permissions (group by category)
|
|
64
|
+
3. Identify entry points: Application class, SplashActivity, MainActivity
|
|
65
|
+
4. Map all components:
|
|
66
|
+
- Activities → future Compose screens
|
|
67
|
+
- Services → WorkManager candidates?
|
|
68
|
+
- BroadcastReceivers → keep or replace with Flow?
|
|
69
|
+
- ContentProviders → keep or replace with Room?
|
|
70
|
+
5. Detect intent-filters for deep links
|
|
71
|
+
6. **Output:** Propose Clean Architecture project structure
|
|
72
|
+
|
|
73
|
+
## Project Structure Template
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
app/src/main/java/com/package/app/
|
|
77
|
+
├── App.kt # Application class
|
|
78
|
+
├── di/ # Hilt modules
|
|
79
|
+
│ ├── AppModule.kt
|
|
80
|
+
│ ├── NetworkModule.kt
|
|
81
|
+
│ └── DatabaseModule.kt
|
|
82
|
+
├── data/ # Data Layer
|
|
83
|
+
│ ├── remote/
|
|
84
|
+
│ │ ├── api/ # Retrofit interfaces
|
|
85
|
+
│ │ ├── dto/ # Data Transfer Objects
|
|
86
|
+
│ │ └── interceptor/ # OkHttp interceptors
|
|
87
|
+
│ ├── local/
|
|
88
|
+
│ │ ├── db/ # Room database
|
|
89
|
+
│ │ ├── dao/ # Room DAOs
|
|
90
|
+
│ │ ├── entity/ # Room entities
|
|
91
|
+
│ │ └── datastore/ # DataStore preferences
|
|
92
|
+
│ └── repository/ # Repository implementations
|
|
93
|
+
├── domain/ # Domain Layer
|
|
94
|
+
│ ├── model/ # Business models
|
|
95
|
+
│ ├── repository/ # Repository interfaces
|
|
96
|
+
│ └── usecase/ # Use cases
|
|
97
|
+
├── presentation/ # Presentation Layer
|
|
98
|
+
│ ├── navigation/ # NavGraph + Routes
|
|
99
|
+
│ ├── theme/ # Material 3 Theme
|
|
100
|
+
│ ├── components/ # Reusable Compose components
|
|
101
|
+
│ └── screens/ # Feature screens
|
|
102
|
+
│ ├── splash/
|
|
103
|
+
│ ├── home/
|
|
104
|
+
│ └── ...
|
|
105
|
+
└── util/ # Extensions, helpers
|
|
106
|
+
```
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# 📦 Library Detection Patterns
|
|
2
|
+
|
|
3
|
+
> Reference database for Step 0 (Library Scanner).
|
|
4
|
+
> Agent uses these patterns to identify third-party libraries from Smali package structure.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 🟢 Network & API
|
|
9
|
+
|
|
10
|
+
| Package Pattern | Library | Latest Replacement | Action |
|
|
11
|
+
|----------------|---------|-------------------|--------|
|
|
12
|
+
| `com/squareup/retrofit2` | Retrofit 2 | Keep (current) | Add to build.gradle |
|
|
13
|
+
| `com/squareup/okhttp3` | OkHttp 3 | Keep (current) | Add to build.gradle |
|
|
14
|
+
| `com/android/volley` | Volley | Retrofit + OkHttp | Replace |
|
|
15
|
+
| `com/squareup/okhttp` | OkHttp 2 | OkHttp 4 | Upgrade |
|
|
16
|
+
| `com/loopj/android` | AsyncHttpClient | Retrofit | Replace |
|
|
17
|
+
| `org/apache/http` | Apache HTTP | OkHttp | Replace |
|
|
18
|
+
| `com/squareup/moshi` | Moshi | Keep (current) | Add to build.gradle |
|
|
19
|
+
| `com/google/gson` | Gson | kotlinx.serialization | Evaluate |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 🟡 Image Loading
|
|
24
|
+
|
|
25
|
+
| Package Pattern | Library | Latest Replacement | Action |
|
|
26
|
+
|----------------|---------|-------------------|--------|
|
|
27
|
+
| `com/bumptech/glide` | Glide | Coil (Compose-native) | Evaluate |
|
|
28
|
+
| `com/squareup/picasso` | Picasso | Coil | Replace |
|
|
29
|
+
| `com/facebook/fresco` | Fresco | Coil | Replace |
|
|
30
|
+
| `com/nostra13/universalimageloader` | UIL | Coil | Replace |
|
|
31
|
+
| `io/coil` | Coil | Keep (current) | Add to build.gradle |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 🔵 Reactive Programming
|
|
36
|
+
|
|
37
|
+
| Package Pattern | Library | Latest Replacement | Action |
|
|
38
|
+
|----------------|---------|-------------------|--------|
|
|
39
|
+
| `io/reactivex/rxjava3` | RxJava 3 | Coroutines + Flow | Gradual migrate |
|
|
40
|
+
| `io/reactivex/rxjava2` | RxJava 2 | Coroutines + Flow | Replace |
|
|
41
|
+
| `io/reactivex` | RxJava 1 | Coroutines + Flow | Replace |
|
|
42
|
+
| `io/reactivex/rxandroid` | RxAndroid | Dispatchers.Main | Replace |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 🟠 Dependency Injection
|
|
47
|
+
|
|
48
|
+
| Package Pattern | Library | Latest Replacement | Action |
|
|
49
|
+
|----------------|---------|-------------------|--------|
|
|
50
|
+
| `dagger/hilt` | Hilt | Keep (current) | Add to build.gradle |
|
|
51
|
+
| `com/google/dagger` | Dagger 2 | Hilt | Upgrade |
|
|
52
|
+
| `org/koin` | Koin | Keep or Hilt | Evaluate |
|
|
53
|
+
| `toothpick` | Toothpick | Hilt | Replace |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🟣 Firebase & Google
|
|
58
|
+
|
|
59
|
+
| Package Pattern | Library | Action |
|
|
60
|
+
|----------------|---------|--------|
|
|
61
|
+
| `com/google/firebase/analytics` | Firebase Analytics | Add latest |
|
|
62
|
+
| `com/google/firebase/crashlytics` | Crashlytics | Add latest |
|
|
63
|
+
| `com/google/firebase/messaging` | FCM | Add latest |
|
|
64
|
+
| `com/google/firebase/auth` | Firebase Auth | Add latest |
|
|
65
|
+
| `com/google/firebase/firestore` | Firestore | Add latest |
|
|
66
|
+
| `com/google/firebase/database` | Realtime DB | Add latest |
|
|
67
|
+
| `com/google/firebase/storage` | Cloud Storage | Add latest |
|
|
68
|
+
| `com/google/firebase/config` | Remote Config | Add latest |
|
|
69
|
+
| `com/google/android/gms/ads` | AdMob | Add latest |
|
|
70
|
+
| `com/google/android/gms/auth` | Google Sign-In | Add latest |
|
|
71
|
+
| `com/google/android/gms/maps` | Google Maps | Add latest |
|
|
72
|
+
| `com/google/android/gms/location` | Location Services | Add latest |
|
|
73
|
+
| `com/google/android/play` | Play Core | Add latest |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 🔴 Social SDKs
|
|
78
|
+
|
|
79
|
+
| Package Pattern | Library | Action |
|
|
80
|
+
|----------------|---------|--------|
|
|
81
|
+
| `com/facebook/login` | Facebook Login | Add latest |
|
|
82
|
+
| `com/facebook/share` | Facebook Share | Add latest |
|
|
83
|
+
| `com/facebook/appevents` | Facebook Analytics | Add latest |
|
|
84
|
+
| `com/twitter` | Twitter SDK | Evaluate (deprecated?) |
|
|
85
|
+
| `com/kakao` | Kakao SDK | Add latest |
|
|
86
|
+
| `com/linecorp` | LINE SDK | Add latest |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 🟤 UI & Animation
|
|
91
|
+
|
|
92
|
+
| Package Pattern | Library | Latest Replacement | Action |
|
|
93
|
+
|----------------|---------|-------------------|--------|
|
|
94
|
+
| `com/airbnb/lottie` | Lottie | Keep (has Compose support) | Add to build.gradle |
|
|
95
|
+
| `com/github/bumptech/glide` | Glide Transformations | Compose modifiers | Evaluate |
|
|
96
|
+
| `com/makeramen/roundedimageview` | RoundedImageView | Compose `clip(CircleShape)` | Replace |
|
|
97
|
+
| `de/hdodenhof/circleimageview` | CircleImageView | Compose `clip(CircleShape)` | Replace |
|
|
98
|
+
| `com/github/chrisbanes` | PhotoView | Compose zoomable | Replace |
|
|
99
|
+
| `com/google/android/material` | Material Components | Material 3 (Compose) | Upgrade |
|
|
100
|
+
| `com/jakewharton/butterknife` | Butterknife | Not needed (Compose) | Remove |
|
|
101
|
+
| `androidx/viewpager2` | ViewPager2 | HorizontalPager (Compose) | Replace |
|
|
102
|
+
| `androidx/cardview` | CardView | Card (Material 3 Compose) | Replace |
|
|
103
|
+
| `androidx/recyclerview` | RecyclerView | LazyColumn/LazyGrid | Replace |
|
|
104
|
+
| `androidx/swiperefreshlayout` | SwipeRefresh | pullRefresh modifier | Replace |
|
|
105
|
+
| `com/github/PhilJay/MPAndroidChart` | MPAndroidChart | Vico / Compose Charts | Evaluate |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## ⚪ Database & Storage
|
|
110
|
+
|
|
111
|
+
| Package Pattern | Library | Latest Replacement | Action |
|
|
112
|
+
|----------------|---------|-------------------|--------|
|
|
113
|
+
| `androidx/room` | Room | Keep (current) | Add to build.gradle |
|
|
114
|
+
| `io/realm` | Realm | Room | Evaluate |
|
|
115
|
+
| `net/sqlcipher` | SQLCipher | Room + encrypted | Keep |
|
|
116
|
+
| `com/google/protobuf` | Protocol Buffers | Keep | Add to build.gradle |
|
|
117
|
+
| `com/tencent/mmkv` | MMKV | DataStore | Evaluate |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## ⚫ Utility
|
|
122
|
+
|
|
123
|
+
| Package Pattern | Library | Latest Replacement | Action |
|
|
124
|
+
|----------------|---------|-------------------|--------|
|
|
125
|
+
| `com/jakewharton/timber` | Timber | Keep (current) | Add to build.gradle |
|
|
126
|
+
| `org/greenrobot/eventbus` | EventBus | SharedFlow | Replace |
|
|
127
|
+
| `com/google/zxing` | ZXing (QR/Barcode) | ML Kit Barcode | Evaluate |
|
|
128
|
+
| `com/journeyapps/barcodescanner` | ZXing Android | ML Kit Barcode | Evaluate |
|
|
129
|
+
| `com/github/permissions` | Various permission libs | Accompanist Permissions | Replace |
|
|
130
|
+
| `pub/devrel/easypermissions` | EasyPermissions | Accompanist Permissions | Replace |
|
|
131
|
+
| `org/jsoup` | Jsoup | Keep (HTML parsing) | Add to build.gradle |
|
|
132
|
+
| `com/google/android/exoplayer2` | ExoPlayer | Media3 ExoPlayer | Upgrade |
|
|
133
|
+
| `androidx/media3` | Media3 | Keep (current) | Add to build.gradle |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 🔐 Security & Encryption
|
|
138
|
+
|
|
139
|
+
| Package Pattern | Library | Action |
|
|
140
|
+
|----------------|---------|--------|
|
|
141
|
+
| `com/scottyab/rootbeer` | RootBeer | Evaluate |
|
|
142
|
+
| `io/jsonwebtoken` | JJWT | Keep |
|
|
143
|
+
| `org/bouncycastle` | BouncyCastle | Keep |
|
|
144
|
+
| `net/sqlcipher` | SQLCipher | Keep |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 🔍 Detection Strategy
|
|
149
|
+
|
|
150
|
+
### Step 1: Directory Scan
|
|
151
|
+
```bash
|
|
152
|
+
# List all top-level smali packages
|
|
153
|
+
ls -d smali/*/
|
|
154
|
+
ls -d smali_classes*/*/ # multi-dex apps
|
|
155
|
+
|
|
156
|
+
# Find specific library patterns
|
|
157
|
+
find smali/ -maxdepth 3 -type d | sort
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Step 2: Classify Each Package
|
|
161
|
+
```
|
|
162
|
+
For each detected package:
|
|
163
|
+
1. Match against patterns above
|
|
164
|
+
2. If MATCH → categorize (Keep / Replace / Upgrade / Evaluate)
|
|
165
|
+
3. If NO MATCH → mark as "Unknown — investigate"
|
|
166
|
+
4. If app's own package → mark as "App Code — rebuild in Kotlin"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Step 3: Check Native Libraries
|
|
170
|
+
```bash
|
|
171
|
+
# List native libraries
|
|
172
|
+
ls lib/*/
|
|
173
|
+
file lib/arm64-v8a/*.so # identify library type
|
|
174
|
+
|
|
175
|
+
# Common native libs:
|
|
176
|
+
libfb*.so → Facebook SDK
|
|
177
|
+
libreact*.so → React Native
|
|
178
|
+
libflutter*.so → Flutter engine
|
|
179
|
+
libhermes*.so → Hermes JS engine (React Native)
|
|
180
|
+
libsqlcipher*.so → SQLCipher encrypted DB
|
|
181
|
+
libmmkv*.so → MMKV storage
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Step 4: Generate Report
|
|
185
|
+
Use the template from SKILL.md Step 0 output format.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
*library-patterns v1.0.0 — Reference database for APK library detection*
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# 🗺️ Phase 0: Discovery (Satellite View)
|
|
2
|
+
|
|
3
|
+
> **Zoom Level:** 0 — Bird's Eye
|
|
4
|
+
> **Goal:** Create an "App Map" — understand WHAT the app is and WHAT it contains.
|
|
5
|
+
> **Output:** Diagrams, tables, maps. **NO CODE.**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ⛔ OUTPUT RULE
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
✅ ALLOWED: ASCII diagrams, Mermaid, tables, bullet lists, bash scan commands
|
|
13
|
+
❌ BLOCKED: Kotlin/Java code, function signatures, class definitions
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 📋 Sub-steps
|
|
19
|
+
|
|
20
|
+
### 0.1: Confirm Input
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
🔧 Android Reverse Engineering bắt đầu!
|
|
24
|
+
|
|
25
|
+
Em cần biết:
|
|
26
|
+
1. Thư mục Apktool output ở đâu?
|
|
27
|
+
2. Tên app gốc? Package name?
|
|
28
|
+
|
|
29
|
+
Chưa chạy Apktool? → apktool d your-app.apk -o ./decompiled/
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 0.2: Structure Scan
|
|
33
|
+
|
|
34
|
+
Quét folder structure để hiểu quy mô app:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Top-level packages (app code vs libraries)
|
|
38
|
+
find [apktool_dir]/smali -maxdepth 3 -type d | sed 's|.*/smali/||' | sort
|
|
39
|
+
|
|
40
|
+
# Multi-dex check
|
|
41
|
+
find [apktool_dir] -name "smali*" -maxdepth 1 -type d
|
|
42
|
+
|
|
43
|
+
# Resource overview
|
|
44
|
+
ls [apktool_dir]/res/layout/ | wc -l # Number of layouts
|
|
45
|
+
ls [apktool_dir]/res/drawable*/ | wc -l # Number of drawables
|
|
46
|
+
cat [apktool_dir]/res/values/strings.xml | grep '<string' | wc -l # Strings count
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 0.3: Library Detection
|
|
50
|
+
|
|
51
|
+
Quét smali directories để nhận diện thư viện. Ref: `library-patterns.md`
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Known library packages
|
|
55
|
+
find [apktool_dir]/smali -maxdepth 3 -type d | grep -E "(google|facebook|squareup|airbnb|bumptech|jakewharton|reactivex|greenrobot)" | sort
|
|
56
|
+
|
|
57
|
+
# Native libraries
|
|
58
|
+
find [apktool_dir]/lib -name "*.so" 2>/dev/null
|
|
59
|
+
|
|
60
|
+
# Assets (ML models, WebView, configs)
|
|
61
|
+
ls [apktool_dir]/assets/ 2>/dev/null
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Phân loại thành 5 nhóm:**
|
|
65
|
+
|
|
66
|
+
| Category | Meaning | Action |
|
|
67
|
+
|----------|---------|--------|
|
|
68
|
+
| ✅ Reuse | Modern, still maintained | Add to build.gradle |
|
|
69
|
+
| 🔄 Replace | Legacy/deprecated | Map to modern replacement |
|
|
70
|
+
| 🔵 Firebase/Google | Platform SDKs | Use latest version |
|
|
71
|
+
| 📱 Native (.so) | JNI libraries | Keep, create bridge |
|
|
72
|
+
| 🏷️ App Code | Original app logic | Rebuild in Kotlin |
|
|
73
|
+
|
|
74
|
+
### 0.4: Manifest Analysis
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
cat [apktool_dir]/AndroidManifest.xml
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Extract:
|
|
81
|
+
- Application ID + Package name
|
|
82
|
+
- Min/Target SDK
|
|
83
|
+
- Permissions (grouped by category)
|
|
84
|
+
- Entry points: Application class, Launcher Activity
|
|
85
|
+
- All components: Activities, Services, Receivers, Providers
|
|
86
|
+
- Deep links / Intent filters
|
|
87
|
+
|
|
88
|
+
### 0.5: Screen Map
|
|
89
|
+
|
|
90
|
+
Map Activities → future Compose screens. Draw navigation flow:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Activities found → Group by feature → Draw screen graph
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 0.6: Complexity Estimate
|
|
97
|
+
|
|
98
|
+
Rate each area 1-5 dots:
|
|
99
|
+
- Data Layer: ●●●○○ (APIs, DB, preferences)
|
|
100
|
+
- Core Logic: ●●○○○ (crypto, formatters, utils)
|
|
101
|
+
- UI Screens: ●●●●○ (screen count, complex layouts)
|
|
102
|
+
- SDK Integration: ●●○○○ (third-party, native libs)
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 📊 Output: App Map
|
|
107
|
+
|
|
108
|
+
Use template from `templates/app-map.md`. Must include:
|
|
109
|
+
|
|
110
|
+
1. **Identity** — package, SDK levels, screen count
|
|
111
|
+
2. **Screen Flow** — navigation graph (ASCII or Mermaid)
|
|
112
|
+
3. **Library Landscape** — categorized dependency list
|
|
113
|
+
4. **Complexity Estimate** — visual dots rating
|
|
114
|
+
5. **Key Observations** — anything notable (obfuscation, unusual patterns)
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## ✅ Gate
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
"🗺️ Đây là App Map. Anh review xem có gì cần diều chỉnh không?"
|
|
122
|
+
→ User approves → Proceed to Phase 1 (Architecture)
|
|
123
|
+
→ User has questions → Investigate and update map
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
*Phase 0: Discovery — No code, just understanding*
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# 🏗️ Phase 1: Architecture (District View)
|
|
2
|
+
|
|
3
|
+
> **Zoom Level:** 1 — Architecture Design
|
|
4
|
+
> **Goal:** Design the overall architecture BEFORE writing any code.
|
|
5
|
+
> **Input:** Completed App Map from Phase 0.
|
|
6
|
+
> **Output:** Architecture Blueprint (layer maps, feature tables, API list). **NO CODE BODIES.**
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## ⛔ OUTPUT RULE
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
✅ ALLOWED: Architecture diagrams, layer maps, feature-to-file mapping tables, API endpoint tables
|
|
14
|
+
✅ ALLOWED: File paths, package names, dependency lists
|
|
15
|
+
❌ BLOCKED: Function bodies, implementation details, actual Kotlin code
|
|
16
|
+
⚠️ EXCEPTION: build.gradle.kts skeleton (plugin + dependency declarations only)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 📋 Sub-steps
|
|
22
|
+
|
|
23
|
+
### 1.1: Layer Design
|
|
24
|
+
|
|
25
|
+
Design Clean Architecture layers based on App Map:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌─────────────────────────────────────┐
|
|
29
|
+
│ Presentation │
|
|
30
|
+
│ ├── screens/ ([N] screens) │
|
|
31
|
+
│ ├── navigation/ (NavGraph) │
|
|
32
|
+
│ └── theme/ (Material3) │
|
|
33
|
+
├─────────────────────────────────────┤
|
|
34
|
+
│ Domain │
|
|
35
|
+
│ ├── model/ ([N] business models) │
|
|
36
|
+
│ ├── repository/ ([N] interfaces) │
|
|
37
|
+
│ └── usecase/ ([N] use cases) │
|
|
38
|
+
├─────────────────────────────────────┤
|
|
39
|
+
│ Data │
|
|
40
|
+
│ ├── remote/ ([N] API services) │
|
|
41
|
+
│ ├── local/ (Room, DataStore) │
|
|
42
|
+
│ └── repository/ (implementations) │
|
|
43
|
+
├─────────────────────────────────────┤
|
|
44
|
+
│ DI │
|
|
45
|
+
│ └── modules/ (Network, DB, Repo) │
|
|
46
|
+
└─────────────────────────────────────┘
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 1.2: Feature → File Mapping
|
|
50
|
+
|
|
51
|
+
Map each feature to its Clean Architecture components:
|
|
52
|
+
|
|
53
|
+
| Feature | Domain Model | Repository | UseCase | Screen | ViewModel |
|
|
54
|
+
|---------|-------------|-----------|---------|--------|-----------|
|
|
55
|
+
| Auth | User, Token | AuthRepo | LoginUC | Login | AuthVM |
|
|
56
|
+
| Home | Data | HomeRepo | GetDataUC | Home | HomeVM |
|
|
57
|
+
| ... | ... | ... | ... | ... | ... |
|
|
58
|
+
|
|
59
|
+
### 1.3: API Endpoint Inventory
|
|
60
|
+
|
|
61
|
+
Extract ALL API endpoints from Smali analysis:
|
|
62
|
+
|
|
63
|
+
| # | Method | Endpoint | Auth | Request | Response | Notes |
|
|
64
|
+
|---|--------|----------|------|---------|----------|-------|
|
|
65
|
+
| 1 | POST | /auth/login | No | email, pwd | JWT token | - |
|
|
66
|
+
| 2 | GET | /users/me | Bearer | - | User object | - |
|
|
67
|
+
|
|
68
|
+
**How to find in Smali:**
|
|
69
|
+
```
|
|
70
|
+
Look for: const-string → "https://" or "http://"
|
|
71
|
+
Look for: .field → BASE_URL, API_URL
|
|
72
|
+
Look for: StringBuilder + append patterns (endpoint construction)
|
|
73
|
+
Look for: annotation patterns (@GET, @POST in okhttp/retrofit)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 1.4: Data Schema Inventory
|
|
77
|
+
|
|
78
|
+
List ALL data structures found:
|
|
79
|
+
|
|
80
|
+
| Model | Fields (key ones) | Source | Storage |
|
|
81
|
+
|-------|-------------------|--------|---------|
|
|
82
|
+
| User | id, name, email, avatar | API | Room + Memory |
|
|
83
|
+
| Settings | theme, language, notifications | Local | DataStore |
|
|
84
|
+
|
|
85
|
+
### 1.5: Project Structure
|
|
86
|
+
|
|
87
|
+
Propose directory structure based on features:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
app/src/main/java/com/package/
|
|
91
|
+
├── App.kt
|
|
92
|
+
├── di/ (AppModule, NetworkModule, DatabaseModule)
|
|
93
|
+
├── data/
|
|
94
|
+
│ ├── remote/api/ ([N] Retrofit interfaces)
|
|
95
|
+
│ ├── remote/dto/ (DTOs)
|
|
96
|
+
│ ├── local/db/ (Room)
|
|
97
|
+
│ ├── local/datastore/ (DataStore)
|
|
98
|
+
│ └── repository/ (Implementations)
|
|
99
|
+
├── domain/
|
|
100
|
+
│ ├── model/ (Business models)
|
|
101
|
+
│ ├── repository/ (Interfaces)
|
|
102
|
+
│ └── usecase/ (Use cases)
|
|
103
|
+
├── presentation/
|
|
104
|
+
│ ├── navigation/ (NavGraph, Routes)
|
|
105
|
+
│ ├── theme/ (Colors, Typography, Theme)
|
|
106
|
+
│ ├── components/ (Shared composables)
|
|
107
|
+
│ └── screens/
|
|
108
|
+
│ ├── splash/
|
|
109
|
+
│ ├── auth/
|
|
110
|
+
│ ├── home/
|
|
111
|
+
│ └── [feature]/
|
|
112
|
+
└── util/ (Extensions, helpers)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 1.6: Build Order Suggestion
|
|
116
|
+
|
|
117
|
+
Recommend order based on dependency graph:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
1. 🟢 Project setup + DI skeleton + Theme
|
|
121
|
+
2. 🟢 Domain models (data classes — no logic)
|
|
122
|
+
3. 🟡 Data layer (API interfaces + Room entities)
|
|
123
|
+
4. 🟡 Core utils (crypto, formatters — need parity testing)
|
|
124
|
+
5. 🔴 UI screens (per-feature, starting from auth)
|
|
125
|
+
6. 🔴 SDK integration + Parity check
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 1.7: Tech Stack Decisions
|
|
129
|
+
|
|
130
|
+
Confirm decisions from Phase 0 Library Report:
|
|
131
|
+
|
|
132
|
+
| Decision | Choice | Rationale |
|
|
133
|
+
|----------|--------|-----------|
|
|
134
|
+
| Image Loading | Coil (replace Glide) | Modern, Compose-native |
|
|
135
|
+
| JSON | Kotlin Serialization | Type-safe, no reflection |
|
|
136
|
+
| ... | ... | ... |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 📊 Output: Architecture Blueprint
|
|
141
|
+
|
|
142
|
+
Use template from `templates/architecture.md`. Must include:
|
|
143
|
+
|
|
144
|
+
1. **Layer Map** — ASCII architecture diagram with counts
|
|
145
|
+
2. **Feature Table** — feature → file mapping
|
|
146
|
+
3. **API Inventory** — all endpoints found
|
|
147
|
+
4. **Data Schema** — all models with key fields
|
|
148
|
+
5. **Project Structure** — proposed directory tree
|
|
149
|
+
6. **Build Order** — suggested implementation sequence
|
|
150
|
+
7. **Tech Decisions** — confirmed choices
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## ✅ Gate
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
"🏗️ Architecture Blueprint xong. Anh muốn bắt đầu từ feature nào?
|
|
158
|
+
Em suggest: [Feature X] vì [reason — e.g., nhiều feature khác phụ thuộc]."
|
|
159
|
+
|
|
160
|
+
→ User picks feature → Proceed to Phase 2 (Blueprint) for that feature
|
|
161
|
+
→ User wants changes → Adjust architecture
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
*Phase 1: Architecture — Design before you build*
|