@daemux/store-automator 0.10.13 → 0.10.14
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.
|
|
8
|
+
"version": "0.10.14"
|
|
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.
|
|
15
|
+
"version": "0.10.14",
|
|
16
16
|
"keywords": [
|
|
17
17
|
"flutter",
|
|
18
18
|
"app-store",
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ This package installs three Claude Code agents and a complete CI/CD template sui
|
|
|
8
8
|
|
|
9
9
|
- **appstore-reviewer** -- Reviews metadata, screenshots, and tests compliance with Apple App Store and Google Play guidelines
|
|
10
10
|
- **appstore-meta-creator** -- Creates all store metadata texts (names, descriptions, keywords) for all available languages
|
|
11
|
-
- **app-designer** -- Designs complete app UI, creates ASO-optimized store screenshots, and designs marketing web pages
|
|
11
|
+
- **app-designer** -- Designs complete app UI, creates ASO-optimized store screenshots, and designs marketing web pages -- all in Stitch MCP
|
|
12
12
|
|
|
13
13
|
Plus CI/CD templates for GitHub Actions, Fastlane, web pages, and scripts.
|
|
14
14
|
|
|
@@ -25,21 +25,31 @@ cd your-flutter-project
|
|
|
25
25
|
npm install @daemux/store-automator@latest
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
The postinstall script
|
|
28
|
+
The postinstall script runs an interactive setup with five sections:
|
|
29
29
|
|
|
30
|
-
1.
|
|
31
|
-
2.
|
|
32
|
-
3.
|
|
33
|
-
4.
|
|
34
|
-
5.
|
|
35
|
-
|
|
30
|
+
1. **App Identity** -- App name, bundle ID, package name, SKU, Apple ID
|
|
31
|
+
2. **Credentials** -- Guided steps for App Store Connect API key, Google Play service account, Android keystore, and Match code signing
|
|
32
|
+
3. **Store Settings** -- iOS categories/pricing, Android track/rollout, metadata languages
|
|
33
|
+
4. **Web Settings** -- Domain, colors, company info, legal jurisdiction
|
|
34
|
+
5. **MCP Tokens** -- Stitch and Cloudflare API keys (optional, press Enter to skip)
|
|
35
|
+
|
|
36
|
+
All values are written to `ci.config.yaml`. The installer also:
|
|
37
|
+
|
|
38
|
+
- Configures `.mcp.json` with MCP servers (Playwright, mobile-mcp, Stitch, Cloudflare)
|
|
39
|
+
- Installs `.claude/CLAUDE.md` with your app name and agent configurations
|
|
40
|
+
- Copies CI/CD templates (Fastlane, scripts, web pages, GitHub Actions)
|
|
41
|
+
- Configures `.claude/settings.json` with required env vars
|
|
42
|
+
- Runs post-install guides for GitHub repo setup, secrets, and Firebase
|
|
43
|
+
|
|
44
|
+
Re-running the installer reads existing `ci.config.yaml` values as defaults, so you can update individual fields without re-entering everything.
|
|
36
45
|
|
|
37
46
|
## After Installation
|
|
38
47
|
|
|
39
|
-
1.
|
|
40
|
-
2. Add credential files:
|
|
48
|
+
1. Add any credential files not configured during the guided setup:
|
|
41
49
|
- `creds/AuthKey.p8` -- Apple App Store Connect API key
|
|
42
50
|
- `creds/play-service-account.json` -- Google Play service account
|
|
51
|
+
- `creds/upload-keystore.jks` -- Android upload keystore
|
|
52
|
+
2. Verify `ci.config.yaml` has all required values filled in
|
|
43
53
|
3. Start Claude Code and use the agents
|
|
44
54
|
|
|
45
55
|
## Manual Setup
|
|
@@ -50,6 +60,186 @@ If postinstall was skipped (CI environment), run manually:
|
|
|
50
60
|
npx store-automator
|
|
51
61
|
```
|
|
52
62
|
|
|
63
|
+
## CLI Reference
|
|
64
|
+
|
|
65
|
+
### General Options
|
|
66
|
+
|
|
67
|
+
| Flag | Description |
|
|
68
|
+
|------|-------------|
|
|
69
|
+
| `-g`, `--global` | Install globally (~/.claude) instead of project scope |
|
|
70
|
+
| `-u`, `--uninstall` | Uninstall plugin and remove files |
|
|
71
|
+
| `--postinstall` | Run as postinstall hook (auto-detected) |
|
|
72
|
+
| `-v`, `--version` | Show version number |
|
|
73
|
+
| `-h`, `--help` | Show help |
|
|
74
|
+
|
|
75
|
+
### App Identity
|
|
76
|
+
|
|
77
|
+
| Flag | Description |
|
|
78
|
+
|------|-------------|
|
|
79
|
+
| `--app-name=NAME` | App display name |
|
|
80
|
+
| `--bundle-id=ID` | Bundle ID / Package Name (e.g., com.company.app) |
|
|
81
|
+
| `--sku=SKU` | App Store Connect SKU |
|
|
82
|
+
| `--apple-id=EMAIL` | Apple Developer Account email |
|
|
83
|
+
|
|
84
|
+
### Credentials
|
|
85
|
+
|
|
86
|
+
| Flag | Description |
|
|
87
|
+
|------|-------------|
|
|
88
|
+
| `--key-id=ID` | App Store Connect Key ID |
|
|
89
|
+
| `--issuer-id=ID` | App Store Connect Issuer ID |
|
|
90
|
+
| `--keystore-password=PASS` | Android keystore password |
|
|
91
|
+
| `--match-deploy-key-path=PATH` | Path to Match deploy key |
|
|
92
|
+
| `--match-git-url=URL` | Match certificates Git URL (SSH) |
|
|
93
|
+
|
|
94
|
+
### iOS Store Settings
|
|
95
|
+
|
|
96
|
+
| Flag | Description |
|
|
97
|
+
|------|-------------|
|
|
98
|
+
| `--primary-category=CAT` | Primary category (e.g., UTILITIES) |
|
|
99
|
+
| `--secondary-category=CAT` | Secondary category (e.g., PRODUCTIVITY) |
|
|
100
|
+
| `--price-tier=N` | Price tier (0 = free) |
|
|
101
|
+
| `--submit-for-review=BOOL` | Auto-submit for review (true/false) |
|
|
102
|
+
| `--automatic-release=BOOL` | Auto-release after approval (true/false) |
|
|
103
|
+
|
|
104
|
+
### Android Store Settings
|
|
105
|
+
|
|
106
|
+
| Flag | Description |
|
|
107
|
+
|------|-------------|
|
|
108
|
+
| `--track=TRACK` | Release track (internal/alpha/beta/production) |
|
|
109
|
+
| `--rollout-fraction=N` | Rollout fraction (0.0-1.0) |
|
|
110
|
+
| `--in-app-update-priority=N` | In-app update priority (0-5) |
|
|
111
|
+
|
|
112
|
+
### Web Settings
|
|
113
|
+
|
|
114
|
+
| Flag | Description |
|
|
115
|
+
|------|-------------|
|
|
116
|
+
| `--domain=DOMAIN` | Web domain (e.g., myapp-pages.pages.dev) |
|
|
117
|
+
| `--cf-project-name=NAME` | Cloudflare Pages project name |
|
|
118
|
+
| `--tagline=TEXT` | App tagline |
|
|
119
|
+
| `--primary-color=HEX` | Primary color (e.g., #2563EB) |
|
|
120
|
+
| `--secondary-color=HEX` | Secondary color (e.g., #7C3AED) |
|
|
121
|
+
| `--company-name=NAME` | Company name |
|
|
122
|
+
| `--contact-email=EMAIL` | Contact email |
|
|
123
|
+
| `--support-email=EMAIL` | Support email |
|
|
124
|
+
| `--jurisdiction=TEXT` | Legal jurisdiction (e.g., Delaware, USA) |
|
|
125
|
+
|
|
126
|
+
### Languages
|
|
127
|
+
|
|
128
|
+
| Flag | Description |
|
|
129
|
+
|------|-------------|
|
|
130
|
+
| `--languages=LANGS` | Comma-separated language codes (e.g., en-US,de-DE,ja) |
|
|
131
|
+
|
|
132
|
+
### MCP Tokens
|
|
133
|
+
|
|
134
|
+
| Flag | Description |
|
|
135
|
+
|------|-------------|
|
|
136
|
+
| `--stitch-key=KEY` | Stitch MCP API key |
|
|
137
|
+
| `--cloudflare-token=TOKEN` | Cloudflare API token |
|
|
138
|
+
| `--cloudflare-account-id=ID` | Cloudflare account ID |
|
|
139
|
+
|
|
140
|
+
### GitHub Actions CI
|
|
141
|
+
|
|
142
|
+
| Flag | Description |
|
|
143
|
+
|------|-------------|
|
|
144
|
+
| `--github-actions` | GitHub Actions CI mode (requires --bundle-id, --match-deploy-key, --match-git-url) |
|
|
145
|
+
| `--match-deploy-key=PATH` | Path to Match deploy key file |
|
|
146
|
+
| `--match-git-url=URL` | Git URL for Match certificates repo (SSH) |
|
|
147
|
+
|
|
148
|
+
## Full Non-Interactive Example
|
|
149
|
+
|
|
150
|
+
Pass all flags to skip every interactive prompt:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npx @daemux/store-automator \
|
|
154
|
+
--app-name="My Amazing App" \
|
|
155
|
+
--bundle-id=com.mycompany.amazingapp \
|
|
156
|
+
--sku=MY_AMAZING_APP \
|
|
157
|
+
--apple-id=developer@mycompany.com \
|
|
158
|
+
--key-id=ABC123DEF4 \
|
|
159
|
+
--issuer-id=12345678-1234-1234-1234-123456789012 \
|
|
160
|
+
--keystore-password=my-secure-password \
|
|
161
|
+
--match-deploy-key-path=creds/match_deploy_key \
|
|
162
|
+
--match-git-url=git@github.com:mycompany/certificates.git \
|
|
163
|
+
--primary-category=UTILITIES \
|
|
164
|
+
--secondary-category=PRODUCTIVITY \
|
|
165
|
+
--price-tier=0 \
|
|
166
|
+
--submit-for-review=true \
|
|
167
|
+
--automatic-release=true \
|
|
168
|
+
--track=internal \
|
|
169
|
+
--rollout-fraction=1.0 \
|
|
170
|
+
--in-app-update-priority=3 \
|
|
171
|
+
--domain=amazingapp-pages.pages.dev \
|
|
172
|
+
--cf-project-name=amazingapp-pages \
|
|
173
|
+
--tagline="The best utility app ever" \
|
|
174
|
+
--primary-color="#2563EB" \
|
|
175
|
+
--secondary-color="#7C3AED" \
|
|
176
|
+
--company-name="My Company LLC" \
|
|
177
|
+
--contact-email=hello@mycompany.com \
|
|
178
|
+
--support-email=support@mycompany.com \
|
|
179
|
+
--jurisdiction="Delaware, USA" \
|
|
180
|
+
--languages=en-US,de-DE,ja \
|
|
181
|
+
--stitch-key=sk-stitch-xxx \
|
|
182
|
+
--cloudflare-token=cf-token-xxx \
|
|
183
|
+
--cloudflare-account-id=abc123def456
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## ci.config.yaml Reference
|
|
187
|
+
|
|
188
|
+
The installer writes all configuration to `ci.config.yaml`. Below is the full structure with the corresponding CLI flag for each field.
|
|
189
|
+
|
|
190
|
+
```yaml
|
|
191
|
+
flutter_root: "." # Subdirectory if Flutter project is not at repo root
|
|
192
|
+
|
|
193
|
+
credentials:
|
|
194
|
+
apple:
|
|
195
|
+
p8_key_path: creds/AuthKey.p8 # Path to AuthKey .p8 file (manual)
|
|
196
|
+
key_id: "" # --key-id
|
|
197
|
+
issuer_id: "" # --issuer-id
|
|
198
|
+
google:
|
|
199
|
+
service_account_json_path: creds/play-service-account.json # Manual
|
|
200
|
+
android:
|
|
201
|
+
keystore_password: "" # --keystore-password
|
|
202
|
+
match:
|
|
203
|
+
deploy_key_path: "" # --match-deploy-key-path
|
|
204
|
+
git_url: "" # --match-git-url
|
|
205
|
+
|
|
206
|
+
app:
|
|
207
|
+
name: "" # --app-name
|
|
208
|
+
bundle_id: "" # --bundle-id
|
|
209
|
+
package_name: "" # --bundle-id (same value)
|
|
210
|
+
sku: "" # --sku
|
|
211
|
+
apple_id: "" # --apple-id
|
|
212
|
+
|
|
213
|
+
ios:
|
|
214
|
+
primary_category: "UTILITIES" # --primary-category
|
|
215
|
+
secondary_category: "PRODUCTIVITY" # --secondary-category
|
|
216
|
+
price_tier: 0 # --price-tier
|
|
217
|
+
submit_for_review: true # --submit-for-review
|
|
218
|
+
automatic_release: true # --automatic-release
|
|
219
|
+
|
|
220
|
+
android:
|
|
221
|
+
track: "internal" # --track
|
|
222
|
+
rollout_fraction: "1.0" # --rollout-fraction
|
|
223
|
+
in_app_update_priority: 3 # --in-app-update-priority
|
|
224
|
+
|
|
225
|
+
metadata:
|
|
226
|
+
languages: # --languages (comma-separated)
|
|
227
|
+
- en-US
|
|
228
|
+
|
|
229
|
+
web:
|
|
230
|
+
domain: "" # --domain
|
|
231
|
+
cloudflare_project_name: "" # --cf-project-name
|
|
232
|
+
tagline: "" # --tagline
|
|
233
|
+
primary_color: "#2563EB" # --primary-color
|
|
234
|
+
secondary_color: "#7C3AED" # --secondary-color
|
|
235
|
+
company_name: "" # --company-name
|
|
236
|
+
contact_email: "" # --contact-email
|
|
237
|
+
support_email: "" # --support-email
|
|
238
|
+
jurisdiction: "" # --jurisdiction
|
|
239
|
+
app_store_url: "" # Filled after first iOS publish
|
|
240
|
+
google_play_url: "" # Filled after first Android publish
|
|
241
|
+
```
|
|
242
|
+
|
|
53
243
|
## Usage
|
|
54
244
|
|
|
55
245
|
### Global Install
|
|
@@ -94,8 +284,8 @@ The package installs these templates to your project:
|
|
|
94
284
|
|
|
95
285
|
## Workflow
|
|
96
286
|
|
|
97
|
-
1. Install the package
|
|
98
|
-
2.
|
|
287
|
+
1. Install the package (interactive setup fills `ci.config.yaml`)
|
|
288
|
+
2. Add any remaining credential files
|
|
99
289
|
3. Use `app-designer` to design app UI + create screenshots + design web page
|
|
100
290
|
4. Use `appstore-meta-creator` to generate metadata
|
|
101
291
|
5. Use `appstore-reviewer` to verify compliance
|
|
@@ -112,40 +302,15 @@ The package configures these MCP servers in `.mcp.json`:
|
|
|
112
302
|
| stitch | AI design tool for screenshot generation | `STITCH_API_KEY` |
|
|
113
303
|
| cloudflare | Cloudflare Pages deployment | `CLOUDFLARE_API_TOKEN` + Account ID |
|
|
114
304
|
|
|
115
|
-
##
|
|
305
|
+
## Idempotency
|
|
116
306
|
|
|
117
|
-
|
|
307
|
+
The installer is idempotent. Re-running it reads existing values from `ci.config.yaml` as defaults for each prompt. This means you can:
|
|
118
308
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
--stitch-key=YOUR_STITCH_KEY \
|
|
123
|
-
--cloudflare-token=YOUR_CF_TOKEN \
|
|
124
|
-
--cloudflare-account-id=YOUR_CF_ACCOUNT_ID
|
|
125
|
-
```
|
|
309
|
+
- Update a single field by re-running and pressing Enter through unchanged fields
|
|
310
|
+
- Add credentials you skipped during the first run
|
|
311
|
+
- Change store settings without losing other configuration
|
|
126
312
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
## CLI Options
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
Usage: npx @daemux/store-automator [options]
|
|
133
|
-
|
|
134
|
-
Options:
|
|
135
|
-
-g, --global Install globally (~/.claude) instead of project scope
|
|
136
|
-
-u, --uninstall Uninstall plugin and remove files
|
|
137
|
-
--postinstall Run as postinstall hook (auto-detected)
|
|
138
|
-
-v, --version Show version number
|
|
139
|
-
-h, --help Show help
|
|
140
|
-
|
|
141
|
-
App Configuration:
|
|
142
|
-
--bundle-id=ID Bundle ID / Package Name (e.g., com.company.app)
|
|
143
|
-
|
|
144
|
-
MCP Token Flags (skip interactive prompts):
|
|
145
|
-
--stitch-key=KEY Stitch MCP API key
|
|
146
|
-
--cloudflare-token=TOKEN Cloudflare API token
|
|
147
|
-
--cloudflare-account-id=ID Cloudflare account ID
|
|
148
|
-
```
|
|
313
|
+
CLI flags override both the existing config and the interactive prompt for that field.
|
|
149
314
|
|
|
150
315
|
## License
|
|
151
316
|
|
package/package.json
CHANGED