@daemux/store-automator 0.10.18 → 0.10.19

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.
@@ -5,14 +5,14 @@
5
5
  },
6
6
  "metadata": {
7
7
  "description": "App Store & Google Play automation for Flutter apps",
8
- "version": "0.10.18"
8
+ "version": "0.10.19"
9
9
  },
10
10
  "plugins": [
11
11
  {
12
12
  "name": "store-automator",
13
13
  "source": "./plugins/store-automator",
14
14
  "description": "3 agents for app store publishing: reviewer, meta-creator, media-designer",
15
- "version": "0.10.18",
15
+ "version": "0.10.19",
16
16
  "keywords": [
17
17
  "flutter",
18
18
  "app-store",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daemux/store-automator",
3
- "version": "0.10.18",
3
+ "version": "0.10.19",
4
4
  "description": "Full App Store & Google Play automation for Flutter apps with Claude Code agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "store-automator",
3
- "version": "0.10.18",
3
+ "version": "0.10.19",
4
4
  "description": "App Store & Google Play automation agents for Flutter app publishing",
5
5
  "author": {
6
6
  "name": "Daemux"
@@ -14,7 +14,8 @@ You are a senior ASO (App Store Optimization) specialist and localization expert
14
14
  4. TRANSLATE to all other configured languages using parallel sub-agents
15
15
  5. SAVE all files to fastlane/metadata/ in the correct directory structure
16
16
  6. GENERATE fastlane/app_rating_config.json based on app content analysis
17
- 7. Verify character limits are respected in every language
17
+ 7. GENERATE fastlane/data_safety.csv based on app data collection analysis
18
+ 8. Verify character limits are respected in every language
18
19
 
19
20
  ## Files You Create
20
21
 
@@ -80,6 +81,47 @@ Analyze the app's content (screens, features, user interactions) and generate a
80
81
 
81
82
  Apple string values: "NONE", "INFREQUENT_MILD", "FREQUENT_INTENSE". Google string values: "NO", "MILD", "MODERATE", "STRONG".
82
83
 
84
+ ### Data Safety Config (fastlane/data_safety.csv)
85
+
86
+ Analyze the app's data collection practices (authentication, messaging, payments, analytics, crash reporting, etc.) and generate a CSV declaring what data is collected, shared, its purpose, and security practices.
87
+
88
+ **Format:** Two columns -- `question_id` and `response`. Each row maps a question identifier to `true`, `false`, or empty (for optional URL fields). The file is parsed by `scripts/update_data_safety.py` and uploaded via the Google Play Developer API.
89
+
90
+ **Sections to cover:**
91
+
92
+ | Section Prefix | Description |
93
+ |---------------|-------------|
94
+ | `DATA_COLLECTED` | Top-level flag, then `DATA_COLLECTED_{CATEGORY}` and `DATA_COLLECTED_{CATEGORY}_{TYPE}` for each data type collected |
95
+ | `DATA_SHARED` | Top-level flag, then `DATA_SHARED_{CATEGORY}` for each category -- set `false` if data is not shared with third parties |
96
+ | `DATA_USAGE_{TYPE}_COLLECTION_PURPOSE_{PURPOSE}` | Purpose of collection per data type (APP_FUNCTIONALITY, ANALYTICS, ACCOUNT_MANAGEMENT, ADVERTISING, FRAUD_PREVENTION, PERSONALIZATION, DEVELOPER_COMMUNICATIONS) |
97
+ | `SECURITY_PRACTICES_DATA_ENCRYPTED_IN_TRANSIT` | Whether all data is encrypted in transit |
98
+ | `SECURITY_PRACTICES_DATA_DELETION_REQUEST` | Whether users can request data deletion |
99
+ | `SECURITY_PRACTICES_DATA_DELETION_REQUEST_URL` | URL for deletion requests (leave response empty if not applicable) |
100
+
101
+ **Data type categories:** PERSONAL_INFO (NAME, EMAIL, ADDRESS, PHONE), FINANCIAL_INFO (PURCHASE_HISTORY, CREDIT_INFO), LOCATION (APPROXIMATE, PRECISE), MESSAGES (EMAILS, SMS, OTHER_MESSAGES), PHOTOS_AND_VIDEOS, AUDIO, FILES_AND_DOCS, CALENDAR, CONTACTS, APP_ACTIVITY (APP_INTERACTIONS, IN_APP_SEARCH_HISTORY, INSTALLED_APPS, OTHER_USER_GENERATED_CONTENT, OTHER_ACTIONS), APP_INFO_AND_PERFORMANCE (CRASH_LOGS, DIAGNOSTICS, OTHER), DEVICE_OR_OTHER_IDS, HEALTH_AND_FITNESS, WEB_BROWSING.
102
+
103
+ **Analysis checklist:**
104
+ 1. Authentication method -- what personal info is collected (email, name, phone)
105
+ 2. Core features -- what user content is generated (messages, photos, files)
106
+ 3. Payments/subscriptions -- purchase history, financial info
107
+ 4. Analytics SDKs (Firebase Analytics, etc.) -- app interactions, device IDs
108
+ 5. Crash reporting (Crashlytics, Sentry, etc.) -- crash logs, diagnostics
109
+ 6. Location services -- approximate or precise location
110
+ 7. Third-party sharing -- is any collected data shared externally
111
+ 8. Security -- encryption in transit, data deletion capability
112
+
113
+ ```csv
114
+ question_id,response
115
+ DATA_COLLECTED,true
116
+ DATA_COLLECTED_PERSONAL_INFO,true
117
+ DATA_COLLECTED_PERSONAL_INFO_EMAIL,true
118
+ DATA_SHARED,false
119
+ DATA_SHARED_PERSONAL_INFO,false
120
+ DATA_USAGE_PERSONAL_INFO_EMAIL_COLLECTION_PURPOSE_ACCOUNT_MANAGEMENT,true
121
+ SECURITY_PRACTICES_DATA_ENCRYPTED_IN_TRANSIT,true
122
+ SECURITY_PRACTICES_DATA_DELETION_REQUEST,true
123
+ ```
124
+
83
125
  ## Apple ASO Guidelines
84
126
 
85
127
  ### Name (name.txt)
@@ -182,6 +224,7 @@ af, am, ar, hy-AM, az-AZ, eu-ES, be, bn-BD, bg, my-MM, ca, zh-HK, zh-CN, zh-TW,
182
224
  ```
183
225
  fastlane/
184
226
  app_rating_config.json
227
+ data_safety.csv
185
228
  metadata/
186
229
  ios/
187
230
  copyright.txt
@@ -218,6 +261,10 @@ fastlane/
218
261
  - copyright.txt has current year
219
262
  - Release notes are specific to the actual version changes
220
263
  - app_rating_config.json exists with all categories populated (no null values)
264
+ - data_safety.csv exists with header `question_id,response` and covers all collected data types
265
+ - data_safety.csv has matching DATA_SHARED entries for every DATA_COLLECTED category
266
+ - data_safety.csv has DATA_USAGE purpose entries for every collected data type
267
+ - data_safety.csv includes SECURITY_PRACTICES entries for encryption and deletion
221
268
 
222
269
  ## Output Footer
223
270
 
@@ -49,6 +49,9 @@ name.txt, subtitle.txt, description.txt, keywords.txt, promotional_text.txt, rel
49
49
  **Android** (fastlane/metadata/android/{locale}/):
50
50
  title.txt, short_description.txt, full_description.txt, changelogs/default.txt
51
51
 
52
+ ### fastlane/data_safety.csv
53
+ Google Play Data Safety declarations in `question_id,response` CSV format. Declares what data the app collects, shares, its purpose, and security practices. Generated by the appstore-meta-creator agent and uploaded via `scripts/update_data_safety.py`. See `templates/fastlane/data_safety.csv.example` for format reference.
54
+
52
55
  ### fastlane/iap_config.json
53
56
  IAP and subscription configuration. Durations: ONE_WEEK to ONE_YEAR. Intro offers: FREE, PAY_AS_YOU_GO, PAY_UP_FRONT.
54
57
 
@@ -0,0 +1,105 @@
1
+ # Google Play Data Safety CSV
2
+ #
3
+ # This file declares your app's data collection and sharing practices for
4
+ # the Google Play Data Safety section. It is read by scripts/update_data_safety.py
5
+ # and uploaded via the Google Play Developer API.
6
+ #
7
+ # FORMAT:
8
+ # question_id,response
9
+ #
10
+ # Each row maps a question identifier to a response value.
11
+ # Responses are typically "true" or "false". Leave the response empty
12
+ # for optional fields that do not apply (e.g., a URL field).
13
+ #
14
+ # SECTIONS:
15
+ # DATA_COLLECTED_* -- Which data types the app collects
16
+ # DATA_SHARED_* -- Which data types are shared with third parties
17
+ # DATA_USAGE_* -- Purpose of collection for each data type
18
+ # SECURITY_PRACTICES_* -- Encryption, deletion, and other security measures
19
+ #
20
+ # DATA TYPE CATEGORIES (append to DATA_COLLECTED_ or DATA_SHARED_):
21
+ # PERSONAL_INFO -- Name, email, address, phone, etc.
22
+ # PERSONAL_INFO_NAME
23
+ # PERSONAL_INFO_EMAIL
24
+ # PERSONAL_INFO_ADDRESS
25
+ # PERSONAL_INFO_PHONE
26
+ # FINANCIAL_INFO -- Payment info, purchase history, etc.
27
+ # FINANCIAL_INFO_PURCHASE_HISTORY
28
+ # FINANCIAL_INFO_CREDIT_INFO
29
+ # LOCATION -- Approximate or precise location
30
+ # LOCATION_APPROXIMATE
31
+ # LOCATION_PRECISE
32
+ # WEB_BROWSING -- Web browsing history
33
+ # MESSAGES -- Emails, SMS, other messages
34
+ # MESSAGES_EMAILS
35
+ # MESSAGES_SMS
36
+ # MESSAGES_OTHER_MESSAGES
37
+ # PHOTOS_AND_VIDEOS -- Photos or videos
38
+ # AUDIO -- Voice/sound recordings
39
+ # FILES_AND_DOCS -- Files and documents
40
+ # CALENDAR -- Calendar events
41
+ # CONTACTS -- Contact list
42
+ # APP_ACTIVITY -- App interactions, search history, etc.
43
+ # APP_ACTIVITY_APP_INTERACTIONS
44
+ # APP_ACTIVITY_IN_APP_SEARCH_HISTORY
45
+ # APP_ACTIVITY_INSTALLED_APPS
46
+ # APP_ACTIVITY_OTHER_USER_GENERATED_CONTENT
47
+ # APP_ACTIVITY_OTHER_ACTIONS
48
+ # APP_INFO_AND_PERFORMANCE -- Crash logs, diagnostics, other performance data
49
+ # APP_INFO_AND_PERFORMANCE_CRASH_LOGS
50
+ # APP_INFO_AND_PERFORMANCE_DIAGNOSTICS
51
+ # APP_INFO_AND_PERFORMANCE_OTHER
52
+ # DEVICE_OR_OTHER_IDS -- Device or other identifiers
53
+ # HEALTH_AND_FITNESS -- Health and fitness data
54
+ #
55
+ # COLLECTION PURPOSE SUFFIXES (append to DATA_USAGE_{TYPE}_COLLECTION_PURPOSE_):
56
+ # APP_FUNCTIONALITY
57
+ # ANALYTICS
58
+ # DEVELOPER_COMMUNICATIONS
59
+ # ADVERTISING
60
+ # FRAUD_PREVENTION
61
+ # PERSONALIZATION
62
+ # ACCOUNT_MANAGEMENT
63
+ #
64
+ # SECURITY PRACTICES:
65
+ # SECURITY_PRACTICES_DATA_ENCRYPTED_IN_TRANSIT -- All data encrypted in transit
66
+ # SECURITY_PRACTICES_DATA_DELETION_REQUEST -- Users can request data deletion
67
+ # SECURITY_PRACTICES_DATA_DELETION_REQUEST_URL -- URL for deletion requests (optional)
68
+ #
69
+ # EXAMPLE: A chat app with Firebase Auth, messaging, purchases, analytics, and crashlytics
70
+ #
71
+ question_id,response
72
+ DATA_COLLECTED,true
73
+ DATA_COLLECTED_PERSONAL_INFO,true
74
+ DATA_COLLECTED_PERSONAL_INFO_NAME,true
75
+ DATA_COLLECTED_PERSONAL_INFO_EMAIL,true
76
+ DATA_COLLECTED_FINANCIAL_INFO,true
77
+ DATA_COLLECTED_FINANCIAL_INFO_PURCHASE_HISTORY,true
78
+ DATA_COLLECTED_MESSAGES,true
79
+ DATA_COLLECTED_MESSAGES_OTHER_MESSAGES,true
80
+ DATA_COLLECTED_APP_ACTIVITY,true
81
+ DATA_COLLECTED_APP_ACTIVITY_APP_INTERACTIONS,true
82
+ DATA_COLLECTED_APP_INFO_AND_PERFORMANCE,true
83
+ DATA_COLLECTED_APP_INFO_AND_PERFORMANCE_CRASH_LOGS,true
84
+ DATA_COLLECTED_APP_INFO_AND_PERFORMANCE_DIAGNOSTICS,true
85
+ DATA_COLLECTED_DEVICE_OR_OTHER_IDS,true
86
+ DATA_SHARED,false
87
+ DATA_SHARED_PERSONAL_INFO,false
88
+ DATA_SHARED_FINANCIAL_INFO,false
89
+ DATA_SHARED_MESSAGES,false
90
+ DATA_SHARED_APP_ACTIVITY,false
91
+ DATA_SHARED_APP_INFO_AND_PERFORMANCE,false
92
+ DATA_SHARED_DEVICE_OR_OTHER_IDS,false
93
+ DATA_USAGE_PERSONAL_INFO_NAME_COLLECTION_PURPOSE_APP_FUNCTIONALITY,true
94
+ DATA_USAGE_PERSONAL_INFO_NAME_COLLECTION_PURPOSE_ANALYTICS,false
95
+ DATA_USAGE_PERSONAL_INFO_EMAIL_COLLECTION_PURPOSE_APP_FUNCTIONALITY,true
96
+ DATA_USAGE_PERSONAL_INFO_EMAIL_COLLECTION_PURPOSE_ACCOUNT_MANAGEMENT,true
97
+ DATA_USAGE_FINANCIAL_INFO_PURCHASE_HISTORY_COLLECTION_PURPOSE_APP_FUNCTIONALITY,true
98
+ DATA_USAGE_MESSAGES_OTHER_MESSAGES_COLLECTION_PURPOSE_APP_FUNCTIONALITY,true
99
+ DATA_USAGE_APP_ACTIVITY_APP_INTERACTIONS_COLLECTION_PURPOSE_ANALYTICS,true
100
+ DATA_USAGE_APP_INFO_CRASH_LOGS_COLLECTION_PURPOSE_APP_FUNCTIONALITY,true
101
+ DATA_USAGE_APP_INFO_DIAGNOSTICS_COLLECTION_PURPOSE_APP_FUNCTIONALITY,true
102
+ DATA_USAGE_DEVICE_OR_OTHER_IDS_COLLECTION_PURPOSE_ANALYTICS,true
103
+ SECURITY_PRACTICES_DATA_ENCRYPTED_IN_TRANSIT,true
104
+ SECURITY_PRACTICES_DATA_DELETION_REQUEST,true
105
+ SECURITY_PRACTICES_DATA_DELETION_REQUEST_URL,