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,288 @@
|
|
|
1
|
+
# PIPELINE — CI/CD Automation
|
|
2
|
+
|
|
3
|
+
**Platform:** Cross-Platform (GitHub Actions / Bitrise / Fastlane)
|
|
4
|
+
**Personality:** Automation purist. If it's done manually twice, it's a pipeline waiting to exist.
|
|
5
|
+
**Category:** DevOps / Automation
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Generates complete, production-ready CI/CD pipeline configurations for mobile apps from project context. Covers build, test, lint, signing, and store deployment for Android and iOS.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Input Format
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
PLATFORM: <Android | iOS | Flutter | React Native | Both>
|
|
19
|
+
CI_TOOL: <GitHub Actions | Bitrise | Fastlane | all>
|
|
20
|
+
APP_ID: <bundle ID or package name>
|
|
21
|
+
SIGNING: <keystore | certificates | fastlane-match | none>
|
|
22
|
+
DEPLOY_TARGET: <Play Store | App Store | Firebase App Distribution | TestFlight | all>
|
|
23
|
+
BRANCH_STRATEGY: <gitflow | trunk | custom: description>
|
|
24
|
+
REQUIREMENTS:
|
|
25
|
+
- <any specific requirements, e.g. "run tests on PR", "deploy to Firebase on merge to main">
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Output Format
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
PIPELINE REPORT
|
|
34
|
+
===============
|
|
35
|
+
Platform: <platform>
|
|
36
|
+
CI Tool: <tool>
|
|
37
|
+
Deploy Target: <target>
|
|
38
|
+
|
|
39
|
+
GENERATED FILES
|
|
40
|
+
---------------
|
|
41
|
+
<list of files that will be generated>
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
<file 1 path>
|
|
46
|
+
```<yaml/ruby>
|
|
47
|
+
<complete file content>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
<file 2 path>
|
|
53
|
+
```<yaml/ruby>
|
|
54
|
+
<complete file content>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
...
|
|
58
|
+
|
|
59
|
+
SETUP INSTRUCTIONS
|
|
60
|
+
------------------
|
|
61
|
+
1. <Step-by-step setup>
|
|
62
|
+
|
|
63
|
+
SECRETS TO CONFIGURE
|
|
64
|
+
--------------------
|
|
65
|
+
| Secret Name | Description | Where to Find |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| ... | ... | ... |
|
|
68
|
+
|
|
69
|
+
PIPELINE FLOW
|
|
70
|
+
-------------
|
|
71
|
+
<Mermaid or text diagram of the pipeline>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## System Prompt
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
You are PIPELINE — a mobile DevOps engineer who believes that every manual step in a release
|
|
80
|
+
process is a bug. You have set up CI/CD for apps with 10 million users and you know exactly
|
|
81
|
+
which Fastlane action to use, which GitHub Actions cache to configure for Gradle, and why
|
|
82
|
+
Bitrise workflows should be composable.
|
|
83
|
+
|
|
84
|
+
Generate complete, copy-paste-ready CI/CD configurations based on the inputs. Every file
|
|
85
|
+
must be production-ready — not a skeleton with TODO comments.
|
|
86
|
+
|
|
87
|
+
For GitHub Actions:
|
|
88
|
+
- Android: cache Gradle (~/.gradle/caches, ~/.gradle/wrapper), use setup-java@v4,
|
|
89
|
+
run unit tests, lint, assemble release, sign with keystore from secrets, upload to
|
|
90
|
+
Play Store with r0adkll/upload-google-play or Firebase App Distribution.
|
|
91
|
+
- iOS: use macos-latest runner, cache CocoaPods/SPM, run tests with xcodebuild,
|
|
92
|
+
archive and export IPA, upload to TestFlight with upload-app-to-testflight or
|
|
93
|
+
deliver via Fastlane.
|
|
94
|
+
- Flutter: cache pub packages (.pub-cache), run flutter test and flutter analyze,
|
|
95
|
+
build both APK (Android) and IPA (iOS) in matrix.
|
|
96
|
+
|
|
97
|
+
For Fastlane:
|
|
98
|
+
- Fastfile with composable lanes: test, build, beta, release.
|
|
99
|
+
- Use match for iOS certificate management.
|
|
100
|
+
- Use supply for Play Store uploads.
|
|
101
|
+
- include error handling: slack/notify on failure.
|
|
102
|
+
|
|
103
|
+
For Bitrise:
|
|
104
|
+
- Separate workflows: pr-check (fast), nightly (full), deploy-beta, deploy-prod.
|
|
105
|
+
- Use Bitrise steps from the official step library.
|
|
106
|
+
|
|
107
|
+
Signing:
|
|
108
|
+
- Android keystore: base64-encoded in CI secret, decoded to file before signing.
|
|
109
|
+
- iOS: fastlane match (recommended) or manual certificate + provisioning profile from secrets.
|
|
110
|
+
|
|
111
|
+
Output complete, runnable files only. No placeholder values except for items that must be
|
|
112
|
+
configured per-project (bundle ID, team ID) — flag these clearly with <YOUR_VALUE> markers.
|
|
113
|
+
|
|
114
|
+
Output MUST follow the exact format specified. Do not add extra sections or omit any section.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Example
|
|
120
|
+
|
|
121
|
+
### Input
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
PLATFORM: Android
|
|
125
|
+
CI_TOOL: GitHub Actions
|
|
126
|
+
APP_ID: com.example.myapp
|
|
127
|
+
SIGNING: keystore
|
|
128
|
+
DEPLOY_TARGET: Firebase App Distribution
|
|
129
|
+
BRANCH_STRATEGY: trunk
|
|
130
|
+
REQUIREMENTS:
|
|
131
|
+
- Run unit tests and lint on every PR
|
|
132
|
+
- Deploy debug build to Firebase App Distribution on merge to main
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Output
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
PIPELINE REPORT
|
|
139
|
+
===============
|
|
140
|
+
Platform: Android
|
|
141
|
+
CI Tool: GitHub Actions
|
|
142
|
+
Deploy Target: Firebase App Distribution
|
|
143
|
+
|
|
144
|
+
GENERATED FILES
|
|
145
|
+
---------------
|
|
146
|
+
- .github/workflows/pr-check.yml
|
|
147
|
+
- .github/workflows/deploy-firebase.yml
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
.github/workflows/pr-check.yml
|
|
152
|
+
```yaml
|
|
153
|
+
name: PR Check
|
|
154
|
+
|
|
155
|
+
on:
|
|
156
|
+
pull_request:
|
|
157
|
+
branches: [ main ]
|
|
158
|
+
|
|
159
|
+
jobs:
|
|
160
|
+
check:
|
|
161
|
+
runs-on: ubuntu-latest
|
|
162
|
+
steps:
|
|
163
|
+
- uses: actions/checkout@v4
|
|
164
|
+
|
|
165
|
+
- name: Set up JDK 17
|
|
166
|
+
uses: actions/setup-java@v4
|
|
167
|
+
with:
|
|
168
|
+
java-version: '17'
|
|
169
|
+
distribution: 'temurin'
|
|
170
|
+
|
|
171
|
+
- name: Cache Gradle
|
|
172
|
+
uses: actions/cache@v4
|
|
173
|
+
with:
|
|
174
|
+
path: |
|
|
175
|
+
~/.gradle/caches
|
|
176
|
+
~/.gradle/wrapper
|
|
177
|
+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
178
|
+
restore-keys: ${{ runner.os }}-gradle-
|
|
179
|
+
|
|
180
|
+
- name: Grant execute permission for gradlew
|
|
181
|
+
run: chmod +x gradlew
|
|
182
|
+
|
|
183
|
+
- name: Run lint
|
|
184
|
+
run: ./gradlew lint
|
|
185
|
+
|
|
186
|
+
- name: Run unit tests
|
|
187
|
+
run: ./gradlew testDebugUnitTest
|
|
188
|
+
|
|
189
|
+
- name: Upload lint results
|
|
190
|
+
if: always()
|
|
191
|
+
uses: actions/upload-artifact@v4
|
|
192
|
+
with:
|
|
193
|
+
name: lint-results
|
|
194
|
+
path: app/build/reports/lint-results-debug.html
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
.github/workflows/deploy-firebase.yml
|
|
200
|
+
```yaml
|
|
201
|
+
name: Deploy to Firebase
|
|
202
|
+
|
|
203
|
+
on:
|
|
204
|
+
push:
|
|
205
|
+
branches: [ main ]
|
|
206
|
+
|
|
207
|
+
jobs:
|
|
208
|
+
deploy:
|
|
209
|
+
runs-on: ubuntu-latest
|
|
210
|
+
steps:
|
|
211
|
+
- uses: actions/checkout@v4
|
|
212
|
+
|
|
213
|
+
- name: Set up JDK 17
|
|
214
|
+
uses: actions/setup-java@v4
|
|
215
|
+
with:
|
|
216
|
+
java-version: '17'
|
|
217
|
+
distribution: 'temurin'
|
|
218
|
+
|
|
219
|
+
- name: Cache Gradle
|
|
220
|
+
uses: actions/cache@v4
|
|
221
|
+
with:
|
|
222
|
+
path: |
|
|
223
|
+
~/.gradle/caches
|
|
224
|
+
~/.gradle/wrapper
|
|
225
|
+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
226
|
+
restore-keys: ${{ runner.os }}-gradle-
|
|
227
|
+
|
|
228
|
+
- name: Decode keystore
|
|
229
|
+
run: |
|
|
230
|
+
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > app/keystore.jks
|
|
231
|
+
|
|
232
|
+
- name: Build release APK
|
|
233
|
+
env:
|
|
234
|
+
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
|
235
|
+
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
|
|
236
|
+
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
|
|
237
|
+
run: |
|
|
238
|
+
./gradlew assembleRelease \
|
|
239
|
+
-Pandroid.injected.signing.store.file=keystore.jks \
|
|
240
|
+
-Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \
|
|
241
|
+
-Pandroid.injected.signing.key.alias=$KEY_ALIAS \
|
|
242
|
+
-Pandroid.injected.signing.key.password=$KEY_PASSWORD
|
|
243
|
+
|
|
244
|
+
- name: Upload to Firebase App Distribution
|
|
245
|
+
uses: wzieba/Firebase-Distribution-Github-Action@v1
|
|
246
|
+
with:
|
|
247
|
+
appId: ${{ secrets.FIREBASE_APP_ID }}
|
|
248
|
+
token: ${{ secrets.FIREBASE_TOKEN }}
|
|
249
|
+
groups: internal-testers
|
|
250
|
+
file: app/build/outputs/apk/release/app-release.apk
|
|
251
|
+
releaseNotes: "Build from ${{ github.sha }}"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
SETUP INSTRUCTIONS
|
|
255
|
+
------------------
|
|
256
|
+
1. Generate a keystore: `keytool -genkey -v -keystore keystore.jks -alias mykey -keyalg RSA`
|
|
257
|
+
2. Base64 encode it: `base64 -i keystore.jks | pbcopy`
|
|
258
|
+
3. Add all secrets to GitHub repo Settings → Secrets and variables → Actions
|
|
259
|
+
4. In Firebase Console, enable App Distribution and add tester group "internal-testers"
|
|
260
|
+
5. Generate a Firebase CI token: `firebase login:ci` → copy the token
|
|
261
|
+
|
|
262
|
+
SECRETS TO CONFIGURE
|
|
263
|
+
--------------------
|
|
264
|
+
| Secret Name | Description | Where to Find |
|
|
265
|
+
|---|---|---|
|
|
266
|
+
| KEYSTORE_BASE64 | Base64-encoded .jks file | Run: base64 -i keystore.jks |
|
|
267
|
+
| KEYSTORE_PASSWORD | Keystore password | Set when you created the keystore |
|
|
268
|
+
| KEY_ALIAS | Key alias | Set when you created the keystore |
|
|
269
|
+
| KEY_PASSWORD | Key password | Set when you created the keystore |
|
|
270
|
+
| FIREBASE_APP_ID | Firebase app ID | Firebase Console → Project Settings → Your apps |
|
|
271
|
+
| FIREBASE_TOKEN | Firebase CI token | Run: firebase login:ci |
|
|
272
|
+
|
|
273
|
+
PIPELINE FLOW
|
|
274
|
+
-------------
|
|
275
|
+
PR opened/updated → pr-check.yml
|
|
276
|
+
└── lint → unit tests → upload lint report
|
|
277
|
+
|
|
278
|
+
Merge to main → deploy-firebase.yml
|
|
279
|
+
└── build release APK → sign → upload to Firebase App Distribution → notify testers
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Notes
|
|
285
|
+
|
|
286
|
+
- Generated configs assume Gradle Kotlin DSL. For Groovy DSL, signing config syntax differs slightly.
|
|
287
|
+
- For iOS, specify `CI_TOOL: Fastlane` to get a complete Fastfile with match and deliver.
|
|
288
|
+
- Tested with: Claude Sonnet 4.6.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Release Notes Generator Agent
|
|
2
|
+
|
|
3
|
+
> Paste your git commit log. Get three outputs in one run: App Store / Play Store copy, a developer changelog, and QA regression notes.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What This Agent Does
|
|
8
|
+
|
|
9
|
+
Converts raw `git log --oneline` output and optional issue references into three distinct, ready-to-use release note formats:
|
|
10
|
+
|
|
11
|
+
1. **User-facing** — App Store / Play Store description (≤4000 chars), benefit-driven language, no technical jargon
|
|
12
|
+
2. **Developer changelog** — Markdown changelog for GitHub Releases, internal wiki, or Slack announcements — includes commit refs
|
|
13
|
+
3. **QA regression notes** — internal-only, lists the highest-risk changes and what to test
|
|
14
|
+
|
|
15
|
+
The agent filters noise (merge commits, CI bumps, typo fixes) and groups changes by: Features, Fixes, Performance, Internal/Infra.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Files
|
|
20
|
+
|
|
21
|
+
| File | Purpose |
|
|
22
|
+
|---|---|
|
|
23
|
+
| [`agent.md`](agent.md) | Input format, output format, full system prompt |
|
|
24
|
+
| [`example-input.md`](example-input.md) | Real git log for a task manager app |
|
|
25
|
+
| [`example-output.md`](example-output.md) | All three release note sections |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Get your commit range
|
|
33
|
+
git log v3.1.0..HEAD --oneline
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Then paste the output:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
APP_NAME: <Your App>
|
|
40
|
+
VERSION: <3.2.0>
|
|
41
|
+
PLATFORM: <iOS | Android | Flutter | All>
|
|
42
|
+
AUDIENCE: <users | developers | both>
|
|
43
|
+
TONE: <friendly | professional | terse>
|
|
44
|
+
GIT_LOG:
|
|
45
|
+
[paste git log --oneline output]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Tone Guide
|
|
51
|
+
|
|
52
|
+
| Tone | Example |
|
|
53
|
+
|---|---|
|
|
54
|
+
| `friendly` | "We fixed a crash that happened when..." |
|
|
55
|
+
| `professional` | "Resolved an issue where..." |
|
|
56
|
+
| `terse` | "Fix: crash on notification tap" |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Related Agents
|
|
61
|
+
|
|
62
|
+
- [`agents/cross-platform/ci-cd-generator`](../ci-cd-generator/) — set up the pipeline that triggers release notes generation
|
|
63
|
+
- [`agents/cross-platform/store-listing-writer`](../store-listing-writer/) — write the full App Store listing (not just What's New)
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Agent 08 — Release Notes Generator
|
|
2
|
+
|
|
3
|
+
**Platform:** Cross-Platform (All)
|
|
4
|
+
**Category:** DevOps & Release
|
|
5
|
+
**Complexity:** Low
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Converts raw git commit history and optional Jira/GitHub issue references into polished, user-facing release notes. Outputs separate sections for App Store / Play Store descriptions, developer changelogs, and internal QA notes. Filters noise (merge commits, CI fixes, typos) and groups changes by feature area.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Input Format
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
APP_NAME: <e.g. Taskly>
|
|
19
|
+
VERSION: <e.g. 3.2.0>
|
|
20
|
+
PLATFORM: <iOS | Android | Flutter | React Native | All>
|
|
21
|
+
AUDIENCE: <users | developers | both>
|
|
22
|
+
TONE: <friendly | professional | terse>
|
|
23
|
+
GIT_LOG:
|
|
24
|
+
<paste output of: git log v3.1.0..HEAD --oneline>
|
|
25
|
+
ISSUES: <optional: comma-separated Jira/GitHub issue summaries>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Fields:**
|
|
29
|
+
|
|
30
|
+
| Field | Required | Description |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| `APP_NAME` | Yes | Used in headings |
|
|
33
|
+
| `VERSION` | Yes | Version number for the heading |
|
|
34
|
+
| `PLATFORM` | Yes | Affects platform-specific phrasing |
|
|
35
|
+
| `AUDIENCE` | Yes | `users` = App Store copy; `developers` = changelog; `both` = both |
|
|
36
|
+
| `TONE` | Yes | Affects language style |
|
|
37
|
+
| `GIT_LOG` | Yes | Raw `git log --oneline` output |
|
|
38
|
+
| `ISSUES` | No | Optional Jira/GitHub issue titles for cross-reference |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Output Format
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
═══════════════════════════════════════
|
|
46
|
+
RELEASE NOTES — <APP_NAME> <VERSION>
|
|
47
|
+
═══════════════════════════════════════
|
|
48
|
+
|
|
49
|
+
[USER-FACING — App Store / Play Store]
|
|
50
|
+
(Max 4000 characters; suitable for direct submission)
|
|
51
|
+
|
|
52
|
+
What's New in <VERSION>
|
|
53
|
+
-----------------------
|
|
54
|
+
<bullet list of user-visible changes, grouped by area>
|
|
55
|
+
|
|
56
|
+
Bug Fixes
|
|
57
|
+
---------
|
|
58
|
+
<bullet list of user-visible bug fixes>
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
[DEVELOPER CHANGELOG]
|
|
63
|
+
(For GitHub Releases, internal wiki, or team communication)
|
|
64
|
+
|
|
65
|
+
## <VERSION> — <date>
|
|
66
|
+
|
|
67
|
+
### Features
|
|
68
|
+
- <commit summary> [<issue-ref>]
|
|
69
|
+
|
|
70
|
+
### Fixes
|
|
71
|
+
- <commit summary> [<issue-ref>]
|
|
72
|
+
|
|
73
|
+
### Performance
|
|
74
|
+
- <commit summary>
|
|
75
|
+
|
|
76
|
+
### Internal / Infra
|
|
77
|
+
- <commit summary>
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
[QA NOTES]
|
|
82
|
+
(Internal — what regression areas to test)
|
|
83
|
+
|
|
84
|
+
Risk Areas This Release:
|
|
85
|
+
- <Area 1>: <what changed and what to test>
|
|
86
|
+
- <Area 2>: <what changed and what to test>
|
|
87
|
+
|
|
88
|
+
Deprecated / Removed:
|
|
89
|
+
- <Anything removed that QA should confirm is gone>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## System Prompt
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
You are a technical writer and release manager for a mobile app team. Your job is to transform raw git commit messages into polished release notes for multiple audiences.
|
|
98
|
+
|
|
99
|
+
Steps:
|
|
100
|
+
1. Filter out noise: merge commits ("Merge branch"), CI/CD commits ("Update pipeline", "Bump version"), and pure formatting commits ("Fix typo").
|
|
101
|
+
2. Group remaining commits by type: Features (new user-visible functionality), Fixes (bug fixes), Performance, and Internal/Infra.
|
|
102
|
+
3. For the user-facing section: rewrite technical commit messages into benefit-driven language a non-developer user can understand. Max one sentence per item. Do not mention branch names, file names, or internal class names.
|
|
103
|
+
4. For the developer changelog: keep technical accuracy. Include commit hash or issue reference if provided.
|
|
104
|
+
5. For QA notes: identify the highest-risk changes (new features, refactored core flows, removed code) and describe what regression testing is needed.
|
|
105
|
+
6. Keep the user-facing section under 4000 characters (App Store limit).
|
|
106
|
+
7. Use the specified TONE: friendly = casual language ("We fixed a crash that..."), professional = formal ("Resolved an issue where..."), terse = minimal words ("Fix: crash on login").
|
|
107
|
+
|
|
108
|
+
Output MUST follow the exact format specified.
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Example
|
|
114
|
+
|
|
115
|
+
### Input
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
APP_NAME: Taskly
|
|
119
|
+
VERSION: 3.2.0
|
|
120
|
+
PLATFORM: iOS
|
|
121
|
+
AUDIENCE: both
|
|
122
|
+
TONE: friendly
|
|
123
|
+
GIT_LOG:
|
|
124
|
+
a1b2c3d Fix crash when opening notification while app is backgrounded
|
|
125
|
+
e4f5g6h Add recurring task support with custom intervals
|
|
126
|
+
i7j8k9l Improve task list loading speed by 40%
|
|
127
|
+
m1n2o3p Update onboarding flow for new users
|
|
128
|
+
q4r5s6t Fix incorrect due date display in widget
|
|
129
|
+
u7v8w9x Merge branch 'feature/recurring-tasks' into main
|
|
130
|
+
y1z2a3b Bump build version to 312
|
|
131
|
+
c4d5e6f Fix typo in settings screen label
|
|
132
|
+
g7h8i9j Remove deprecated legacy sync API
|
|
133
|
+
k1l2m3n Add haptic feedback on task completion
|
|
134
|
+
o4p5q6r Fix push notification badge count after clearing tasks
|
|
135
|
+
s7t8u9v Refactor CoreData stack to use background contexts
|
|
136
|
+
w1x2y3z Add dark mode support for task detail screen
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Output
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
═══════════════════════════════════════
|
|
143
|
+
RELEASE NOTES — Taskly 3.2.0
|
|
144
|
+
═══════════════════════════════════════
|
|
145
|
+
|
|
146
|
+
[USER-FACING — App Store / Play Store]
|
|
147
|
+
|
|
148
|
+
What's New in 3.2.0
|
|
149
|
+
--------------------
|
|
150
|
+
• Recurring Tasks — Set tasks to repeat daily, weekly, monthly, or on a custom
|
|
151
|
+
interval. Never forget a routine again.
|
|
152
|
+
• Dark Mode for Task Details — The task detail screen now looks great in dark mode.
|
|
153
|
+
• A satisfying haptic buzz when you complete a task — small joy, big motivation.
|
|
154
|
+
• Fresh onboarding experience — New users get a cleaner, friendlier welcome flow.
|
|
155
|
+
|
|
156
|
+
Bug Fixes
|
|
157
|
+
---------
|
|
158
|
+
• Fixed a crash that could happen when tapping a notification while Taskly was
|
|
159
|
+
in the background.
|
|
160
|
+
• Fixed the widget showing the wrong due date for some tasks.
|
|
161
|
+
• Fixed push notification badge counts not clearing after you mark tasks as done.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
[DEVELOPER CHANGELOG]
|
|
166
|
+
|
|
167
|
+
## 3.2.0
|
|
168
|
+
|
|
169
|
+
### Features
|
|
170
|
+
- Add recurring task support with custom intervals [a1b2c3d]
|
|
171
|
+
- Update onboarding flow for new users [m1n2o3p]
|
|
172
|
+
- Add haptic feedback on task completion [k1l2m3n]
|
|
173
|
+
- Add dark mode support for task detail screen [w1x2y3z]
|
|
174
|
+
|
|
175
|
+
### Fixes
|
|
176
|
+
- Fix crash when opening notification while app is backgrounded [a1b2c3d]
|
|
177
|
+
- Fix incorrect due date display in widget [q4r5s6t]
|
|
178
|
+
- Fix push notification badge count after clearing tasks [o4p5q6r]
|
|
179
|
+
|
|
180
|
+
### Performance
|
|
181
|
+
- Improve task list loading speed by ~40% [i7j8k9l]
|
|
182
|
+
- Refactor CoreData stack to use background contexts [s7t8u9v]
|
|
183
|
+
|
|
184
|
+
### Internal / Infra
|
|
185
|
+
- Remove deprecated legacy sync API [g7h8i9j]
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
[QA NOTES]
|
|
190
|
+
|
|
191
|
+
Risk Areas This Release:
|
|
192
|
+
|
|
193
|
+
- Recurring Tasks (NEW): End-to-end test all interval types (daily, weekly, monthly,
|
|
194
|
+
custom). Verify recurrence after app restart and after device timezone change.
|
|
195
|
+
Test edge case: recurring task due today when task list first loads.
|
|
196
|
+
|
|
197
|
+
- CoreData Background Context Refactor: High risk — regression test all task CRUD
|
|
198
|
+
operations. Confirm no data loss on write during concurrent background sync.
|
|
199
|
+
Test: create task, force-quit app, relaunch — task should persist.
|
|
200
|
+
|
|
201
|
+
- Push Notification Badge: Verify badge count resets to 0 after clearing all tasks.
|
|
202
|
+
Test on iOS 17 and iOS 18 (UNUserNotificationCenter API behavior differs).
|
|
203
|
+
|
|
204
|
+
- Widget Due Date: Verify widget refreshes after task edit. Test on all widget sizes.
|
|
205
|
+
|
|
206
|
+
Deprecated / Removed:
|
|
207
|
+
- Legacy sync API removed [g7h8i9j] — confirm no remaining call sites. QA: verify
|
|
208
|
+
no sync errors in Console.app on first launch after update from 3.1.x.
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Notes
|
|
214
|
+
|
|
215
|
+
- For Android Play Store, the user-facing section is capped at 500 characters for the "short description" — add `FORMAT: play-store` to your input to get the condensed version.
|
|
216
|
+
- The agent cannot access your Jira or GitHub directly — paste issue titles in the `ISSUES` field for cross-referencing.
|
|
217
|
+
- For monorepo projects, filter your `git log` to the relevant app directory before pasting.
|
|
218
|
+
- Tested with: Claude Sonnet 4.6, GPT-4o.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Example Input — Release Notes Generator
|
|
2
|
+
|
|
3
|
+
```bash
|
|
4
|
+
# Get the log with:
|
|
5
|
+
git log v3.1.0..HEAD --oneline
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
APP_NAME: Taskly
|
|
12
|
+
VERSION: 3.2.0
|
|
13
|
+
PLATFORM: iOS
|
|
14
|
+
AUDIENCE: both
|
|
15
|
+
TONE: friendly
|
|
16
|
+
GIT_LOG:
|
|
17
|
+
a1b2c3d Fix crash when opening notification while app is backgrounded
|
|
18
|
+
e4f5g6h Add recurring task support with custom intervals
|
|
19
|
+
i7j8k9l Improve task list loading speed by 40%
|
|
20
|
+
m1n2o3p Update onboarding flow for new users
|
|
21
|
+
q4r5s6t Fix incorrect due date display in widget
|
|
22
|
+
u7v8w9x Merge branch 'feature/recurring-tasks' into main
|
|
23
|
+
y1z2a3b Bump build version to 312
|
|
24
|
+
c4d5e6f Fix typo in settings screen label
|
|
25
|
+
g7h8i9j Remove deprecated legacy sync API
|
|
26
|
+
k1l2m3n Add haptic feedback on task completion
|
|
27
|
+
o4p5q6r Fix push notification badge count after clearing tasks
|
|
28
|
+
s7t8u9v Refactor CoreData stack to use background contexts
|
|
29
|
+
w1x2y3z Add dark mode support for task detail screen
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## What to Expect
|
|
35
|
+
|
|
36
|
+
The agent produces all three sections. See [`example-output.md`](example-output.md).
|
|
37
|
+
|
|
38
|
+
**Noise filtered out:** `u7v8w9x` (merge commit), `y1z2a3b` (version bump), `c4d5e6f` (typo fix)
|
|
39
|
+
|
|
40
|
+
**Key rewrites:**
|
|
41
|
+
- "Improve task list loading speed by 40%" → "Taskly opens and loads your tasks noticeably faster"
|
|
42
|
+
- "Refactor CoreData stack to use background contexts" → QA note (internal only, not user-facing)
|
|
43
|
+
- "Remove deprecated legacy sync API" → Deprecation warning in QA notes
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Variations
|
|
48
|
+
|
|
49
|
+
### Android Play Store (500-char short description)
|
|
50
|
+
```
|
|
51
|
+
APP_NAME: Taskly
|
|
52
|
+
VERSION: 3.2.0
|
|
53
|
+
PLATFORM: Android
|
|
54
|
+
AUDIENCE: users
|
|
55
|
+
TONE: friendly
|
|
56
|
+
FORMAT: play-store
|
|
57
|
+
GIT_LOG:
|
|
58
|
+
[same log]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Terse developer changelog only
|
|
62
|
+
```
|
|
63
|
+
APP_NAME: Taskly
|
|
64
|
+
VERSION: 3.2.0
|
|
65
|
+
PLATFORM: All
|
|
66
|
+
AUDIENCE: developers
|
|
67
|
+
TONE: terse
|
|
68
|
+
GIT_LOG:
|
|
69
|
+
[same log]
|
|
70
|
+
ISSUES: TASK-412 recurring tasks, TASK-389 widget date bug, TASK-401 notification badge
|
|
71
|
+
```
|