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
package/install.sh
ADDED
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Mobile AI Agents — One-command installer
|
|
4
|
+
# Usage: ./install.sh [--platform android|ios|flutter|rn|gaming|all] [--tool claude|cursor|windsurf|copilot|codex|all]
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
PLATFORM="all"
|
|
9
|
+
TOOL="claude"
|
|
10
|
+
CLAUDE_AGENTS_DIR="$HOME/.claude/agents"
|
|
11
|
+
CLAUDE_COMMANDS_DIR="$HOME/.claude/commands"
|
|
12
|
+
|
|
13
|
+
# Parse args
|
|
14
|
+
while [[ "$#" -gt 0 ]]; do
|
|
15
|
+
case $1 in
|
|
16
|
+
--platform) PLATFORM="$2"; shift ;;
|
|
17
|
+
--tool) TOOL="$2"; shift ;;
|
|
18
|
+
android|ios|flutter|rn|gaming) PLATFORM="$1" ;;
|
|
19
|
+
*) echo "Unknown parameter: $1"; exit 1 ;;
|
|
20
|
+
esac
|
|
21
|
+
shift
|
|
22
|
+
done
|
|
23
|
+
|
|
24
|
+
echo ""
|
|
25
|
+
echo "Mobile AI Agents Installer"
|
|
26
|
+
echo "Platform: $PLATFORM | Tool: $TOOL"
|
|
27
|
+
echo ""
|
|
28
|
+
|
|
29
|
+
# ---------------------------------------------------------------------------
|
|
30
|
+
# Helpers
|
|
31
|
+
# ---------------------------------------------------------------------------
|
|
32
|
+
|
|
33
|
+
# Copy a file to a destination, print a dot on success
|
|
34
|
+
_cp() {
|
|
35
|
+
local src="$1" dst="$2"
|
|
36
|
+
if [[ -f "$src" ]]; then
|
|
37
|
+
cp "$src" "$dst"
|
|
38
|
+
else
|
|
39
|
+
echo " [WARN] missing: $src"
|
|
40
|
+
fi
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
# Build list of agent source paths for the current platform selection
|
|
44
|
+
# Outputs: "<name> <src_path>" lines
|
|
45
|
+
_agent_lines() {
|
|
46
|
+
# Cross-platform (always)
|
|
47
|
+
for agent in appforge crasher launchpad sentinel pipeline scribe perf figma \
|
|
48
|
+
mobile-harness mobile-memory \
|
|
49
|
+
accessibility-auditor ci-cd-generator release-notes-generator \
|
|
50
|
+
security-scanner store-listing-writer; do
|
|
51
|
+
src="agents/cross-platform/$agent/agent.md"
|
|
52
|
+
[[ -f "$src" ]] && echo "$agent $src"
|
|
53
|
+
done
|
|
54
|
+
|
|
55
|
+
if [[ "$PLATFORM" == "android" || "$PLATFORM" == "all" ]]; then
|
|
56
|
+
echo "anr-investigation agents/android/anr-investigation/agent.md"
|
|
57
|
+
echo "axiom agents/android/axiom/agent.md"
|
|
58
|
+
echo "android-crash-analyzer agents/android/android-crash-analyzer/agent.md"
|
|
59
|
+
echo "android-code-reviewer agents/android/code-reviewer/agent.md"
|
|
60
|
+
echo "compose-navigation agents/android/compose-navigation/agent.md"
|
|
61
|
+
echo "compose-screen-builder agents/android/compose-screen-builder/agent.md"
|
|
62
|
+
echo "compose-ui-reviewer agents/android/compose-ui-reviewer/agent.md"
|
|
63
|
+
echo "android-crash-analyzer-v2 agents/android/crash-analyzer/agent.md"
|
|
64
|
+
echo "memory-leak-analyzer agents/android/memory-leak-analyzer/agent.md"
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
if [[ "$PLATFORM" == "ios" || "$PLATFORM" == "all" ]]; then
|
|
68
|
+
echo "swift agents/ios/swift/agent.md"
|
|
69
|
+
echo "ios-crash-analyzer agents/ios/crash-analyzer/agent.md"
|
|
70
|
+
echo "swift-reviewer agents/ios/swift-reviewer/agent.md"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
if [[ "$PLATFORM" == "flutter" || "$PLATFORM" == "all" ]]; then
|
|
74
|
+
echo "dart agents/flutter/dart/agent.md"
|
|
75
|
+
echo "bloc-feature-builder agents/flutter/bloc-feature-builder/agent.md"
|
|
76
|
+
echo "widget-generator agents/flutter/widget-generator/agent.md"
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
if [[ "$PLATFORM" == "rn" || "$PLATFORM" == "all" ]]; then
|
|
80
|
+
echo "bridge agents/react-native/bridge/agent.md"
|
|
81
|
+
echo "rn-performance-optimizer agents/react-native/performance-optimizer/agent.md"
|
|
82
|
+
fi
|
|
83
|
+
|
|
84
|
+
if [[ "$PLATFORM" == "gaming" || "$PLATFORM" == "all" ]]; then
|
|
85
|
+
echo "forge agents/gaming/forge/agent.md"
|
|
86
|
+
echo "unreal agents/gaming/unreal/agent.md"
|
|
87
|
+
echo "shader-generator agents/unity/shader-generator/agent.md"
|
|
88
|
+
echo "blueprint-advisor agents/unreal/blueprint-advisor/agent.md"
|
|
89
|
+
fi
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
# Build list of skill source paths for the current platform selection
|
|
93
|
+
# Outputs: "<slug> <src_path>" lines
|
|
94
|
+
_skill_lines() {
|
|
95
|
+
# Cross-platform skills (always)
|
|
96
|
+
echo "grill-mobile skills/cross-platform/grill-mobile.md"
|
|
97
|
+
echo "crash-triage skills/cross-platform/crash-triage.md"
|
|
98
|
+
echo "perf-audit skills/cross-platform/perf-audit.md"
|
|
99
|
+
echo "clean-code-audit skills/cross-platform/clean-code-audit.md"
|
|
100
|
+
echo "security-audit skills/cross-platform/security-audit.md"
|
|
101
|
+
echo "store-listing skills/cross-platform/store-listing.md"
|
|
102
|
+
echo "release-prep skills/cross-platform/release-prep.md"
|
|
103
|
+
echo "feature-slice skills/cross-platform/feature-slice.md"
|
|
104
|
+
echo "mobile-mcp-qa skills/cross-platform/mobile-mcp-qa.md"
|
|
105
|
+
echo "mobile-memory-save skills/cross-platform/mobile-memory-save.md"
|
|
106
|
+
echo "mobile-memory-graph skills/cross-platform/mobile-memory-graph.md"
|
|
107
|
+
echo "mobile-memory-search skills/cross-platform/mobile-memory-search.md"
|
|
108
|
+
echo "accessibility-audit skills/cross-platform/accessibility-audit.md"
|
|
109
|
+
echo "api-versioning skills/cross-platform/api-versioning.md"
|
|
110
|
+
echo "deeplink-debug skills/cross-platform/deeplink-debug.md"
|
|
111
|
+
echo "crash-analysis skills/shared/crash-analysis.md"
|
|
112
|
+
echo "security-scan skills/shared/security-scan.md"
|
|
113
|
+
echo "shared-accessibility-audit skills/shared/accessibility-audit.md"
|
|
114
|
+
|
|
115
|
+
if [[ "$PLATFORM" == "android" || "$PLATFORM" == "all" ]]; then
|
|
116
|
+
echo "anr-investigation skills/android/anr-investigation.md"
|
|
117
|
+
echo "android-tdd skills/android/android-tdd.md"
|
|
118
|
+
echo "compose-review skills/android/compose-review.md"
|
|
119
|
+
echo "compose-migration skills/android/compose-migration.md"
|
|
120
|
+
echo "kotlin-modernize skills/android/kotlin-modernize.md"
|
|
121
|
+
echo "memory-leak-investigation skills/android/memory-leak-investigation.md"
|
|
122
|
+
echo "android-code-review skills/android/code-review.md"
|
|
123
|
+
echo "proguard-rules skills/android/proguard-rules.md"
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
if [[ "$PLATFORM" == "ios" || "$PLATFORM" == "all" ]]; then
|
|
127
|
+
echo "ios-tdd skills/ios/ios-tdd.md"
|
|
128
|
+
echo "swiftui-review skills/ios/swiftui-review.md"
|
|
129
|
+
echo "swift-review skills/ios/swift-review.md"
|
|
130
|
+
echo "swiftui-state skills/ios/swiftui-state.md"
|
|
131
|
+
echo "swift-concurrency skills/ios/swift-concurrency.md"
|
|
132
|
+
echo "data-persistence skills/ios/data-persistence.md"
|
|
133
|
+
echo "ios-networking skills/ios/networking.md"
|
|
134
|
+
echo "ios-performance skills/ios/performance.md"
|
|
135
|
+
echo "ios-unit-testing skills/ios/unit-testing.md"
|
|
136
|
+
echo "xcode-warnings skills/ios/xcode-warnings.md"
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
if [[ "$PLATFORM" == "flutter" || "$PLATFORM" == "all" ]]; then
|
|
140
|
+
echo "flutter-tdd skills/flutter/flutter-tdd.md"
|
|
141
|
+
echo "flutter-review skills/flutter/flutter-review.md"
|
|
142
|
+
echo "dart-modernize skills/flutter/dart-modernize.md"
|
|
143
|
+
echo "widget-extract skills/flutter/widget-extract.md"
|
|
144
|
+
echo "widget-gen skills/flutter/widget-gen.md"
|
|
145
|
+
fi
|
|
146
|
+
|
|
147
|
+
if [[ "$PLATFORM" == "rn" || "$PLATFORM" == "all" ]]; then
|
|
148
|
+
echo "rn-tdd skills/react-native/rn-tdd.md"
|
|
149
|
+
echo "rn-review skills/react-native/rn-review.md"
|
|
150
|
+
echo "bridge-audit skills/react-native/bridge-audit.md"
|
|
151
|
+
echo "expo-optimize skills/react-native/expo-optimize.md"
|
|
152
|
+
echo "new-arch-migrate skills/react-native/new-arch-migrate.md"
|
|
153
|
+
echo "rn-performance skills/react-native/performance.md"
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
if [[ "$PLATFORM" == "gaming" || "$PLATFORM" == "all" ]]; then
|
|
157
|
+
echo "shader-gen skills/gaming/shader-gen.md"
|
|
158
|
+
echo "game-perf skills/gaming/game-perf.md"
|
|
159
|
+
echo "blueprint-to-cpp skills/gaming/blueprint-to-cpp.md"
|
|
160
|
+
echo "unity-tdd skills/gaming/unity-tdd.md"
|
|
161
|
+
echo "shader-review skills/unity/shader-review.md"
|
|
162
|
+
fi
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
# Build list of workflow source paths (always all)
|
|
166
|
+
# Outputs: "<name> <src_path>" lines
|
|
167
|
+
_workflow_lines() {
|
|
168
|
+
for wf in feature-ship release-cycle game-level crash-to-fix ci-setup \
|
|
169
|
+
new-screen new-project-setup app-launch perf-sprint mobile-memory-workflow \
|
|
170
|
+
appforge-workflow mobile-mcp-qa mobile-harness; do
|
|
171
|
+
echo "$wf workflows/$wf.md"
|
|
172
|
+
done
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
# ---------------------------------------------------------------------------
|
|
176
|
+
# Install: Claude Code
|
|
177
|
+
# ---------------------------------------------------------------------------
|
|
178
|
+
install_claude() {
|
|
179
|
+
mkdir -p "$CLAUDE_AGENTS_DIR"
|
|
180
|
+
mkdir -p "$CLAUDE_COMMANDS_DIR"
|
|
181
|
+
|
|
182
|
+
echo "→ Installing agents..."
|
|
183
|
+
while IFS=" " read -r name src; do
|
|
184
|
+
name=$(echo "$name" | xargs) # trim whitespace
|
|
185
|
+
src=$(echo "$src" | xargs)
|
|
186
|
+
_cp "$src" "$CLAUDE_AGENTS_DIR/$name.md"
|
|
187
|
+
_cp "$src" "$CLAUDE_COMMANDS_DIR/$name.md"
|
|
188
|
+
done < <(_agent_lines)
|
|
189
|
+
|
|
190
|
+
echo "→ Installing skills..."
|
|
191
|
+
while IFS=" " read -r slug src; do
|
|
192
|
+
slug=$(echo "$slug" | xargs)
|
|
193
|
+
src=$(echo "$src" | xargs)
|
|
194
|
+
_cp "$src" "$CLAUDE_COMMANDS_DIR/$slug.md"
|
|
195
|
+
done < <(_skill_lines)
|
|
196
|
+
|
|
197
|
+
echo "→ Installing workflows..."
|
|
198
|
+
while IFS=" " read -r name src; do
|
|
199
|
+
name=$(echo "$name" | xargs)
|
|
200
|
+
src=$(echo "$src" | xargs)
|
|
201
|
+
_cp "$src" "$CLAUDE_COMMANDS_DIR/$name.md"
|
|
202
|
+
done < <(_workflow_lines)
|
|
203
|
+
|
|
204
|
+
echo ""
|
|
205
|
+
echo "Installed to:"
|
|
206
|
+
echo " Agents → $CLAUDE_AGENTS_DIR"
|
|
207
|
+
echo " Commands → $CLAUDE_COMMANDS_DIR"
|
|
208
|
+
echo ""
|
|
209
|
+
echo " Slash commands available:"
|
|
210
|
+
echo ""
|
|
211
|
+
echo " Cross-platform agents:"
|
|
212
|
+
echo " /appforge /crasher /sentinel /mobile-harness /mobile-memory"
|
|
213
|
+
echo " /scribe /pipeline /perf /launchpad /figma"
|
|
214
|
+
echo " /accessibility-auditor /ci-cd-generator /release-notes-generator"
|
|
215
|
+
echo " /security-scanner /store-listing-writer"
|
|
216
|
+
echo ""
|
|
217
|
+
echo " Cross-platform skills:"
|
|
218
|
+
echo " /grill-mobile /clean-code-audit /security-audit /crash-triage"
|
|
219
|
+
echo " /perf-audit /store-listing /release-prep"
|
|
220
|
+
echo " /feature-slice /mobile-mcp-qa /mobile-memory-save /mobile-memory-graph"
|
|
221
|
+
echo " /mobile-memory-search"
|
|
222
|
+
echo " /accessibility-audit"
|
|
223
|
+
echo " /api-versioning /deeplink-debug"
|
|
224
|
+
echo " /crash-analysis /security-scan /shared-accessibility-audit"
|
|
225
|
+
echo ""
|
|
226
|
+
echo " Workflows:"
|
|
227
|
+
echo " /feature-ship /release-cycle /crash-to-fix /ci-setup /new-screen"
|
|
228
|
+
echo " /new-project-setup /app-launch /perf-sprint /game-level"
|
|
229
|
+
echo " /mobile-memory-workflow /appforge-workflow /mobile-mcp-qa /mobile-harness"
|
|
230
|
+
if [[ "$PLATFORM" == "android" || "$PLATFORM" == "all" ]]; then
|
|
231
|
+
echo ""
|
|
232
|
+
echo " Android agents:"
|
|
233
|
+
echo " /anr-investigation /axiom /android-crash-analyzer"
|
|
234
|
+
echo " /android-crash-analyzer-v2"
|
|
235
|
+
echo " /android-code-reviewer /compose-navigation"
|
|
236
|
+
echo " /compose-screen-builder /compose-ui-reviewer"
|
|
237
|
+
echo " /memory-leak-analyzer"
|
|
238
|
+
echo " Android skills:"
|
|
239
|
+
echo " /anr-investigation /android-tdd /compose-review /compose-migration"
|
|
240
|
+
echo " /kotlin-modernize /memory-leak-investigation"
|
|
241
|
+
echo " /android-code-review /proguard-rules"
|
|
242
|
+
fi
|
|
243
|
+
if [[ "$PLATFORM" == "ios" || "$PLATFORM" == "all" ]]; then
|
|
244
|
+
echo ""
|
|
245
|
+
echo " iOS agents:"
|
|
246
|
+
echo " /swift /ios-crash-analyzer /swift-reviewer"
|
|
247
|
+
echo " iOS skills:"
|
|
248
|
+
echo " /ios-tdd /swiftui-review /swift-review /swiftui-state /swift-concurrency"
|
|
249
|
+
echo " /data-persistence /ios-networking /ios-performance /ios-unit-testing"
|
|
250
|
+
echo " /xcode-warnings"
|
|
251
|
+
fi
|
|
252
|
+
if [[ "$PLATFORM" == "flutter" || "$PLATFORM" == "all" ]]; then
|
|
253
|
+
echo ""
|
|
254
|
+
echo " Flutter agents:"
|
|
255
|
+
echo " /dart /bloc-feature-builder /widget-generator"
|
|
256
|
+
echo " Flutter skills:"
|
|
257
|
+
echo " /flutter-tdd /flutter-review /dart-modernize /widget-extract /widget-gen"
|
|
258
|
+
fi
|
|
259
|
+
if [[ "$PLATFORM" == "rn" || "$PLATFORM" == "all" ]]; then
|
|
260
|
+
echo ""
|
|
261
|
+
echo " React Native agents:"
|
|
262
|
+
echo " /bridge /rn-performance-optimizer"
|
|
263
|
+
echo " React Native skills:"
|
|
264
|
+
echo " /rn-tdd /rn-review /bridge-audit /expo-optimize /new-arch-migrate"
|
|
265
|
+
echo " /rn-performance"
|
|
266
|
+
fi
|
|
267
|
+
if [[ "$PLATFORM" == "gaming" || "$PLATFORM" == "all" ]]; then
|
|
268
|
+
echo ""
|
|
269
|
+
echo " Gaming agents:"
|
|
270
|
+
echo " /forge /unreal /shader-generator /blueprint-advisor"
|
|
271
|
+
echo " Gaming skills:"
|
|
272
|
+
echo " /shader-gen /game-perf /blueprint-to-cpp /unity-tdd /shader-review"
|
|
273
|
+
fi
|
|
274
|
+
echo ""
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
# ---------------------------------------------------------------------------
|
|
278
|
+
# Install: Cursor (.cursor/rules/*.mdc)
|
|
279
|
+
# ---------------------------------------------------------------------------
|
|
280
|
+
install_cursor() {
|
|
281
|
+
local rules_dir=".cursor/rules"
|
|
282
|
+
mkdir -p "$rules_dir"
|
|
283
|
+
echo "→ Installing for Cursor ($rules_dir/)..."
|
|
284
|
+
|
|
285
|
+
while IFS=" " read -r name src; do
|
|
286
|
+
name=$(echo "$name" | xargs)
|
|
287
|
+
src=$(echo "$src" | xargs)
|
|
288
|
+
if [[ -f "$src" ]]; then
|
|
289
|
+
cp "$src" "$rules_dir/$name.mdc"
|
|
290
|
+
fi
|
|
291
|
+
done < <(_agent_lines)
|
|
292
|
+
|
|
293
|
+
while IFS=" " read -r slug src; do
|
|
294
|
+
slug=$(echo "$slug" | xargs)
|
|
295
|
+
src=$(echo "$src" | xargs)
|
|
296
|
+
if [[ -f "$src" ]]; then
|
|
297
|
+
cp "$src" "$rules_dir/$slug.mdc"
|
|
298
|
+
fi
|
|
299
|
+
done < <(_skill_lines)
|
|
300
|
+
|
|
301
|
+
while IFS=" " read -r name src; do
|
|
302
|
+
name=$(echo "$name" | xargs)
|
|
303
|
+
src=$(echo "$src" | xargs)
|
|
304
|
+
if [[ -f "$src" ]]; then
|
|
305
|
+
cp "$src" "$rules_dir/$name.mdc"
|
|
306
|
+
fi
|
|
307
|
+
done < <(_workflow_lines)
|
|
308
|
+
|
|
309
|
+
echo " $rules_dir/ created — reference agents with @axiom, @flutter-review, @crash-to-fix etc."
|
|
310
|
+
echo ""
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
# ---------------------------------------------------------------------------
|
|
314
|
+
# Install: Windsurf (.windsurfrules)
|
|
315
|
+
# ---------------------------------------------------------------------------
|
|
316
|
+
install_windsurf() {
|
|
317
|
+
echo "→ Installing for Windsurf (.windsurfrules)..."
|
|
318
|
+
{
|
|
319
|
+
echo "# Mobile AI Agents — AI dev team for mobile engineers"
|
|
320
|
+
echo ""
|
|
321
|
+
|
|
322
|
+
while IFS=" " read -r name src; do
|
|
323
|
+
name=$(echo "$name" | xargs)
|
|
324
|
+
src=$(echo "$src" | xargs)
|
|
325
|
+
if [[ -f "$src" ]]; then
|
|
326
|
+
echo "## AGENT: $name"
|
|
327
|
+
echo ""
|
|
328
|
+
cat "$src"
|
|
329
|
+
echo ""
|
|
330
|
+
echo "---"
|
|
331
|
+
echo ""
|
|
332
|
+
fi
|
|
333
|
+
done < <(_agent_lines)
|
|
334
|
+
|
|
335
|
+
while IFS=" " read -r slug src; do
|
|
336
|
+
slug=$(echo "$slug" | xargs)
|
|
337
|
+
src=$(echo "$src" | xargs)
|
|
338
|
+
if [[ -f "$src" ]]; then
|
|
339
|
+
echo "## SKILL: $slug"
|
|
340
|
+
echo ""
|
|
341
|
+
cat "$src"
|
|
342
|
+
echo ""
|
|
343
|
+
echo "---"
|
|
344
|
+
echo ""
|
|
345
|
+
fi
|
|
346
|
+
done < <(_skill_lines)
|
|
347
|
+
|
|
348
|
+
while IFS=" " read -r name src; do
|
|
349
|
+
name=$(echo "$name" | xargs)
|
|
350
|
+
src=$(echo "$src" | xargs)
|
|
351
|
+
if [[ -f "$src" ]]; then
|
|
352
|
+
echo "## WORKFLOW: $name"
|
|
353
|
+
echo ""
|
|
354
|
+
cat "$src"
|
|
355
|
+
echo ""
|
|
356
|
+
echo "---"
|
|
357
|
+
echo ""
|
|
358
|
+
fi
|
|
359
|
+
done < <(_workflow_lines)
|
|
360
|
+
} > .windsurfrules
|
|
361
|
+
|
|
362
|
+
echo " .windsurfrules created in current directory"
|
|
363
|
+
echo ""
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
# ---------------------------------------------------------------------------
|
|
367
|
+
# Install: GitHub Copilot (.github/copilot-instructions.md)
|
|
368
|
+
# ---------------------------------------------------------------------------
|
|
369
|
+
install_copilot() {
|
|
370
|
+
local out_dir=".github"
|
|
371
|
+
local out_file="$out_dir/copilot-instructions.md"
|
|
372
|
+
mkdir -p "$out_dir"
|
|
373
|
+
echo "→ Installing for GitHub Copilot ($out_file)..."
|
|
374
|
+
{
|
|
375
|
+
echo "# Mobile AI Agents — AI dev team for mobile engineers"
|
|
376
|
+
echo ""
|
|
377
|
+
echo "Use the agent and skill definitions below to guide code generation, review, and"
|
|
378
|
+
echo "refactoring across Android, iOS, Flutter, React Native, and gaming platforms."
|
|
379
|
+
echo ""
|
|
380
|
+
|
|
381
|
+
while IFS=" " read -r name src; do
|
|
382
|
+
name=$(echo "$name" | xargs)
|
|
383
|
+
src=$(echo "$src" | xargs)
|
|
384
|
+
if [[ -f "$src" ]]; then
|
|
385
|
+
echo "## AGENT: $name"
|
|
386
|
+
echo ""
|
|
387
|
+
cat "$src"
|
|
388
|
+
echo ""
|
|
389
|
+
echo "---"
|
|
390
|
+
echo ""
|
|
391
|
+
fi
|
|
392
|
+
done < <(_agent_lines)
|
|
393
|
+
|
|
394
|
+
while IFS=" " read -r slug src; do
|
|
395
|
+
slug=$(echo "$slug" | xargs)
|
|
396
|
+
src=$(echo "$src" | xargs)
|
|
397
|
+
if [[ -f "$src" ]]; then
|
|
398
|
+
echo "## SKILL: $slug"
|
|
399
|
+
echo ""
|
|
400
|
+
cat "$src"
|
|
401
|
+
echo ""
|
|
402
|
+
echo "---"
|
|
403
|
+
echo ""
|
|
404
|
+
fi
|
|
405
|
+
done < <(_skill_lines)
|
|
406
|
+
|
|
407
|
+
while IFS=" " read -r name src; do
|
|
408
|
+
name=$(echo "$name" | xargs)
|
|
409
|
+
src=$(echo "$src" | xargs)
|
|
410
|
+
if [[ -f "$src" ]]; then
|
|
411
|
+
echo "## WORKFLOW: $name"
|
|
412
|
+
echo ""
|
|
413
|
+
cat "$src"
|
|
414
|
+
echo ""
|
|
415
|
+
echo "---"
|
|
416
|
+
echo ""
|
|
417
|
+
fi
|
|
418
|
+
done < <(_workflow_lines)
|
|
419
|
+
} > "$out_file"
|
|
420
|
+
|
|
421
|
+
echo " $out_file created"
|
|
422
|
+
echo ""
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
# ---------------------------------------------------------------------------
|
|
426
|
+
# Install: Codex / OpenAI (AGENTS.md)
|
|
427
|
+
# ---------------------------------------------------------------------------
|
|
428
|
+
install_codex() {
|
|
429
|
+
local out_file="AGENTS.md"
|
|
430
|
+
echo "→ Installing for Codex/OpenAI ($out_file)..."
|
|
431
|
+
{
|
|
432
|
+
echo "# Mobile AI Agents — AI dev team for mobile engineers"
|
|
433
|
+
echo ""
|
|
434
|
+
echo "Full system prompts, skills, and workflows for Android, iOS, Flutter,"
|
|
435
|
+
echo "React Native, Unity, and Unreal development."
|
|
436
|
+
echo ""
|
|
437
|
+
|
|
438
|
+
while IFS=" " read -r name src; do
|
|
439
|
+
name=$(echo "$name" | xargs)
|
|
440
|
+
src=$(echo "$src" | xargs)
|
|
441
|
+
if [[ -f "$src" ]]; then
|
|
442
|
+
echo "## AGENT: $name"
|
|
443
|
+
echo ""
|
|
444
|
+
cat "$src"
|
|
445
|
+
echo ""
|
|
446
|
+
echo "---"
|
|
447
|
+
echo ""
|
|
448
|
+
fi
|
|
449
|
+
done < <(_agent_lines)
|
|
450
|
+
|
|
451
|
+
while IFS=" " read -r slug src; do
|
|
452
|
+
slug=$(echo "$slug" | xargs)
|
|
453
|
+
src=$(echo "$src" | xargs)
|
|
454
|
+
if [[ -f "$src" ]]; then
|
|
455
|
+
echo "## SKILL: $slug"
|
|
456
|
+
echo ""
|
|
457
|
+
cat "$src"
|
|
458
|
+
echo ""
|
|
459
|
+
echo "---"
|
|
460
|
+
echo ""
|
|
461
|
+
fi
|
|
462
|
+
done < <(_skill_lines)
|
|
463
|
+
|
|
464
|
+
while IFS=" " read -r name src; do
|
|
465
|
+
name=$(echo "$name" | xargs)
|
|
466
|
+
src=$(echo "$src" | xargs)
|
|
467
|
+
if [[ -f "$src" ]]; then
|
|
468
|
+
echo "## WORKFLOW: $name"
|
|
469
|
+
echo ""
|
|
470
|
+
cat "$src"
|
|
471
|
+
echo ""
|
|
472
|
+
echo "---"
|
|
473
|
+
echo ""
|
|
474
|
+
fi
|
|
475
|
+
done < <(_workflow_lines)
|
|
476
|
+
} > "$out_file"
|
|
477
|
+
|
|
478
|
+
echo " $out_file created in current directory"
|
|
479
|
+
echo ""
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
# ---------------------------------------------------------------------------
|
|
483
|
+
# Dispatch
|
|
484
|
+
# ---------------------------------------------------------------------------
|
|
485
|
+
if [[ "$TOOL" == "claude" || "$TOOL" == "all" ]]; then
|
|
486
|
+
install_claude
|
|
487
|
+
fi
|
|
488
|
+
|
|
489
|
+
if [[ "$TOOL" == "cursor" || "$TOOL" == "all" ]]; then
|
|
490
|
+
install_cursor
|
|
491
|
+
fi
|
|
492
|
+
|
|
493
|
+
if [[ "$TOOL" == "windsurf" || "$TOOL" == "all" ]]; then
|
|
494
|
+
install_windsurf
|
|
495
|
+
fi
|
|
496
|
+
|
|
497
|
+
if [[ "$TOOL" == "copilot" || "$TOOL" == "all" ]]; then
|
|
498
|
+
install_copilot
|
|
499
|
+
fi
|
|
500
|
+
|
|
501
|
+
if [[ "$TOOL" == "codex" || "$TOOL" == "all" ]]; then
|
|
502
|
+
install_codex
|
|
503
|
+
fi
|
|
504
|
+
|
|
505
|
+
echo "Mobile AI Agents installed. Happy shipping."
|
|
506
|
+
echo " → github.com/salmanashraf/mobile-agency"
|
|
507
|
+
echo ""
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Mobile Engineer's CLAUDE.md
|
|
2
|
+
|
|
3
|
+
4 rules that stop AI agents shipping broken mobile apps.
|
|
4
|
+
|
|
5
|
+
Copy this into your project's CLAUDE.md to apply them automatically.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Rule 1 — Ask the API level before assuming
|
|
10
|
+
|
|
11
|
+
Never assume minimum SDK, OS version, or API availability.
|
|
12
|
+
|
|
13
|
+
Before writing any platform API call:
|
|
14
|
+
- Android: "What's your minSdkVersion?" (APIs differ wildly between API 21 and 35)
|
|
15
|
+
- iOS: "What's your deployment target?" (async/await requires iOS 15+, SwiftUI differs by version)
|
|
16
|
+
- Flutter: "What's your Dart SDK constraint?" (null safety, records, sealed classes are version-gated)
|
|
17
|
+
- React Native: "Old Architecture or New Architecture?" (bridge vs JSI changes every native call)
|
|
18
|
+
|
|
19
|
+
**The wrong API on the wrong SDK version crashes silently in production on one device model.**
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Rule 2 — Check for existing platform components first
|
|
24
|
+
|
|
25
|
+
Before generating a custom component, check whether a native or framework equivalent already exists.
|
|
26
|
+
|
|
27
|
+
- Android: Material3 components (M3Button, TopAppBar, NavigationBar, DatePicker)
|
|
28
|
+
- iOS: SF Symbols for icons, SwiftUI built-in sheets, alerts, and pickers
|
|
29
|
+
- Flutter: Material3 / Cupertino widgets, provider package for state
|
|
30
|
+
- React Native: react-navigation for routing, react-native-paper for Material UI
|
|
31
|
+
|
|
32
|
+
Building custom when standard exists is always wrong:
|
|
33
|
+
1. It takes 10× longer
|
|
34
|
+
2. It won't handle accessibility by default
|
|
35
|
+
3. It won't handle dark mode / dynamic type automatically
|
|
36
|
+
4. You will maintain it forever
|
|
37
|
+
|
|
38
|
+
**Ask "does this already exist?" before generating any UI component.**
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Rule 3 — Never touch what wasn't asked
|
|
43
|
+
|
|
44
|
+
Mobile codebases are deeply interconnected.
|
|
45
|
+
|
|
46
|
+
- A ViewModel change can break a Fragment
|
|
47
|
+
- A widget rebuild can cascade through the entire tree
|
|
48
|
+
- A dependency update can introduce a transitive conflict
|
|
49
|
+
- A Gradle change can break the build for every module
|
|
50
|
+
|
|
51
|
+
**Before touching any file:**
|
|
52
|
+
1. State the blast radius: which files/classes could this change affect?
|
|
53
|
+
2. Change ONLY the specific function, class, or file that was asked about
|
|
54
|
+
3. Do not refactor surrounding code, fix unrelated warnings, or "clean up while you're in there"
|
|
55
|
+
4. If the fix requires touching multiple files, list them all and confirm before proceeding
|
|
56
|
+
|
|
57
|
+
**Unauthorized side effects are the #1 source of "it was working before you changed it" incidents.**
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Rule 4 — Performance is a feature, not an afterthought
|
|
62
|
+
|
|
63
|
+
Before generating any UI code, ask:
|
|
64
|
+
|
|
65
|
+
*"Will this run at 60fps on a mid-range Android device from 3 years ago?"*
|
|
66
|
+
|
|
67
|
+
If the answer is unclear, say so. Then apply these rules:
|
|
68
|
+
|
|
69
|
+
- Never generate synchronous network or disk operations on the main thread
|
|
70
|
+
- Never generate unbounded lists (ScrollView + .map()) — always use LazyColumn / FlatList / ListView.builder
|
|
71
|
+
- Never generate `GlobalScope.launch` — use `viewModelScope` or lifecycle-scoped coroutines
|
|
72
|
+
- Never generate `GetComponent<T>()` in Unity's `Update()` — cache in `Awake()`
|
|
73
|
+
- Never generate `GetAllActorsOfClass` in Unreal's `Tick()` — cache in `BeginPlay()`
|
|
74
|
+
|
|
75
|
+
**A feature that ships at 40fps is a bug. Mention performance constraints before generating, not after.**
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
*Part of the [mobile-dev-skills](https://github.com/salmanashraf/mobile-dev-skills) toolkit.*
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mobile-ai-agents",
|
|
3
|
+
"version": "1.0.23",
|
|
4
|
+
"description": "AI agents, skills, and Loop Engineering workflows for building, testing, auditing, and releasing mobile apps.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"mobile-ai-agents": "cli/index.js",
|
|
7
|
+
"mobile-agency": "cli/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"AGENTS.md",
|
|
11
|
+
"CLAUDE.md",
|
|
12
|
+
"agents/",
|
|
13
|
+
"cli/",
|
|
14
|
+
"docs/",
|
|
15
|
+
"install.sh",
|
|
16
|
+
"mobile-karpathy.md",
|
|
17
|
+
"skills/",
|
|
18
|
+
"templates/",
|
|
19
|
+
"workflows/"
|
|
20
|
+
],
|
|
21
|
+
"keywords": [
|
|
22
|
+
"mobile",
|
|
23
|
+
"mobile-ai-agents",
|
|
24
|
+
"mobile-agents",
|
|
25
|
+
"mobile-development",
|
|
26
|
+
"android",
|
|
27
|
+
"ios",
|
|
28
|
+
"flutter",
|
|
29
|
+
"react-native",
|
|
30
|
+
"unity",
|
|
31
|
+
"unreal",
|
|
32
|
+
"claude",
|
|
33
|
+
"claude-code",
|
|
34
|
+
"ai",
|
|
35
|
+
"ai-agents",
|
|
36
|
+
"agents",
|
|
37
|
+
"skills",
|
|
38
|
+
"loop-engineering",
|
|
39
|
+
"mobile-harness",
|
|
40
|
+
"llm",
|
|
41
|
+
"cursor",
|
|
42
|
+
"windsurf"
|
|
43
|
+
],
|
|
44
|
+
"author": "Salman Ashraf",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "git+https://github.com/salmanashraf/mobile-agency.git"
|
|
49
|
+
},
|
|
50
|
+
"homepage": "https://github.com/salmanashraf/mobile-agency",
|
|
51
|
+
"bugs": {
|
|
52
|
+
"url": "https://github.com/salmanashraf/mobile-agency/issues"
|
|
53
|
+
},
|
|
54
|
+
"engines": {
|
|
55
|
+
"node": ">=18.0.0"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Android Skills
|
|
2
|
+
|
|
3
|
+
Reusable skill prompt modules for Android (Kotlin / Jetpack Compose) code reviews and analysis. Compose with agents or use standalone in any LLM session.
|
|
4
|
+
|
|
5
|
+
## Index
|
|
6
|
+
|
|
7
|
+
| Skill | File | When to Use |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| Android ANR Investigation | [anr-investigation.md](anr-investigation.md) | Classify ANRs, trace blocking dependencies, propose a safe fix, and define verification |
|
|
10
|
+
| Android Code Review | [code-review.md](code-review.md) | Quick inline review of Kotlin files — coroutines, Clean Architecture, Compose, DI |
|
|
11
|
+
| Android Memory Leak Investigation | [memory-leak-investigation.md](memory-leak-investigation.md) | Trace GC-root ownership, find lifecycle leaks, propose a focused fix, and verify collection |
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
Paste a skill prompt at the start of any LLM session, then paste your Kotlin code:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
# Quick review session
|
|
19
|
+
[paste skill prompt from code-review.md]
|
|
20
|
+
|
|
21
|
+
Now review this ViewModel: [paste code]
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Composable With
|
|
25
|
+
|
|
26
|
+
- [`agents/android/code-reviewer`](../../agents/android/code-reviewer/) — full structured review using these rules
|
|
27
|
+
- [`agents/android/compose-ui-reviewer`](../../agents/android/compose-ui-reviewer/) — Compose-specific depth
|
|
28
|
+
|
|
29
|
+
## Contributing
|
|
30
|
+
|
|
31
|
+
New skills should cover one focused concern (e.g., "Hilt injection patterns", "Room query optimization"). Copy `templates/skill-template.md` and open a PR.
|