appshot-cli 1.0.0 → 1.0.1

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/README.md CHANGED
@@ -232,23 +232,23 @@ Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
232
232
 
233
233
  | Tool | Description |
234
234
  |------|-------------|
235
- | `appshot.projectInfo` | Get project metadata (devices, languages, config) |
236
- | `appshot.init` | Initialize new project structure |
237
- | `appshot.build` | Generate final screenshots |
238
- | `appshot.frame` | Apply device frames only (transparent background) |
239
- | `appshot.captions` | Read/write caption text, auto-generate from filenames |
240
- | `appshot.gradients` | List/apply gradient presets |
241
- | `appshot.backgrounds` | Configure background images |
242
- | `appshot.fonts` | List/validate available fonts |
243
- | `appshot.config` | Modify device-specific settings |
244
- | `appshot.validate` | Check App Store compliance |
245
- | `appshot.specs` | View App Store specifications |
246
- | `appshot.doctor` | Run system diagnostics |
247
- | `appshot.presets` | Manage App Store presets |
248
- | `appshot.localize` | AI-powered caption translation |
249
- | `appshot.languages` | Discover available translations |
250
- | `appshot.export` | Export for Fastlane |
251
- | `appshot.clean` | Remove generated files |
235
+ | `appshot_projectInfo` | Get project metadata (devices, languages, config) |
236
+ | `appshot_init` | Initialize new project structure |
237
+ | `appshot_build` | Generate final screenshots |
238
+ | `appshot_frame` | Apply device frames only (transparent background) |
239
+ | `appshot_captions` | Read/write caption text, auto-generate from filenames |
240
+ | `appshot_gradients` | List/apply gradient presets |
241
+ | `appshot_backgrounds` | Configure background images |
242
+ | `appshot_fonts` | List/validate available fonts |
243
+ | `appshot_config` | Modify device-specific settings |
244
+ | `appshot_validate` | Check App Store compliance |
245
+ | `appshot_specs` | View App Store specifications |
246
+ | `appshot_doctor` | Run system diagnostics |
247
+ | `appshot_presets` | Manage App Store presets |
248
+ | `appshot_localize` | AI-powered caption translation |
249
+ | `appshot_languages` | Discover available translations |
250
+ | `appshot_export` | Export for Fastlane |
251
+ | `appshot_clean` | Remove generated files |
252
252
 
253
253
  ### Example: Agent Workflow
254
254
 
@@ -1991,11 +1991,11 @@ appshot mcp
1991
1991
 
1992
1992
  **Tools exposed:**
1993
1993
 
1994
- - `appshot.projectInfo` – Returns `appshot.json` metadata (devices, languages, templates).
1995
- - `appshot.doctor` – Runs diagnostics and returns console output.
1996
- - `appshot.build` – Wraps `appshot build` with options for devices, languages, and rendering flags.
1997
- - `appshot.frame` – Batch frames screenshots (including `--frame-tone neutral` support).
1998
- - `appshot.export` – Runs the Fastlane export pipeline.
1994
+ - `appshot_projectInfo` – Returns `appshot_json` metadata (devices, languages, templates).
1995
+ - `appshot_doctor` – Runs diagnostics and returns console output.
1996
+ - `appshot_build` – Wraps `appshot build` with options for devices, languages, and rendering flags.
1997
+ - `appshot_frame` – Batch frames screenshots (including `--frame-tone neutral` support).
1998
+ - `appshot_export` – Runs the Fastlane export pipeline.
1999
1999
 
2000
2000
  The server uses the stdio transport, so you can register it in Anthropic Desktop by pointing at `appshot mcp` (working directory = your Appshot project). The same entry point works for any MCP-compatible agent or automation.
2001
2001
 
@@ -3081,7 +3081,7 @@ For security vulnerabilities, please see [SECURITY.md](SECURITY.md).
3081
3081
  ### NPM Package
3082
3082
 
3083
3083
  - 📦 [appshot-cli on NPM](https://www.npmjs.com/package/appshot-cli)
3084
- - 🔄 Latest version: 1.0.0
3084
+ - 🔄 Latest version: 1.0.1
3085
3085
 
3086
3086
  ---
3087
3087
 
@@ -147,7 +147,7 @@ function registerProjectInfoTool(server) {
147
147
  const inputSchema = z.object({
148
148
  configPath: z.string().optional().describe('Path to appshot.json config file')
149
149
  });
150
- server.registerTool('appshot.projectInfo', {
150
+ server.registerTool('appshot_projectInfo', {
151
151
  title: 'Read project configuration',
152
152
  description: 'Loads appshot.json and returns device + language metadata',
153
153
  inputSchema,
@@ -183,7 +183,7 @@ function registerProjectInfoTool(server) {
183
183
  });
184
184
  }
185
185
  function registerDoctorTool(server) {
186
- server.registerTool('appshot.doctor', {
186
+ server.registerTool('appshot_doctor', {
187
187
  title: 'Run doctor checks',
188
188
  description: 'Runs appshot doctor to validate the current project'
189
189
  }, async () => {
@@ -211,7 +211,7 @@ function registerBuildTool(server) {
211
211
  verbose: z.boolean().optional().describe('Show detailed output'),
212
212
  concurrency: z.number().int().positive().optional().describe('Number of parallel builds')
213
213
  });
214
- server.registerTool('appshot.build', {
214
+ server.registerTool('appshot_build', {
215
215
  title: 'Run appshot build',
216
216
  description: 'Generates screenshots for the configured devices and languages',
217
217
  inputSchema
@@ -249,7 +249,7 @@ function registerFrameTool(server) {
249
249
  verbose: z.boolean().optional().describe('Show detailed output'),
250
250
  frameTone: z.enum(['original', 'neutral']).optional().describe('Frame color tone')
251
251
  });
252
- server.registerTool('appshot.frame', {
252
+ server.registerTool('appshot_frame', {
253
253
  title: 'Apply device frames',
254
254
  description: 'Wraps the frame CLI for MCP clients',
255
255
  inputSchema
@@ -277,7 +277,7 @@ function registerExportTool(server) {
277
277
  json: z.boolean().optional().describe('Output as JSON'),
278
278
  configPath: z.string().optional().describe('Path to appshot.json config file')
279
279
  });
280
- server.registerTool('appshot.export', {
280
+ server.registerTool('appshot_export', {
281
281
  title: 'Export screenshots',
282
282
  description: 'Runs appshot export fastlane with optional filters',
283
283
  inputSchema
@@ -292,7 +292,7 @@ function registerInitTool(server) {
292
292
  force: z.boolean().optional().describe('Overwrite existing configuration files'),
293
293
  projectDir: z.string().optional().describe('Directory to initialize the project in')
294
294
  });
295
- server.registerTool('appshot.init', {
295
+ server.registerTool('appshot_init', {
296
296
  title: 'Initialize project',
297
297
  description: 'Scaffold a new appshot project with default configuration',
298
298
  inputSchema
@@ -310,7 +310,7 @@ function registerSpecsTool(server) {
310
310
  device: z.string().optional().describe('Filter by device type: iphone, ipad, mac, watch, appletv, visionpro'),
311
311
  required: z.boolean().optional().describe('Show only required App Store presets')
312
312
  });
313
- server.registerTool('appshot.specs', {
313
+ server.registerTool('appshot_specs', {
314
314
  title: 'App Store specifications',
315
315
  description: 'Get Apple App Store screenshot requirements and specifications (returns JSON)',
316
316
  inputSchema
@@ -325,7 +325,7 @@ function registerValidateTool(server) {
325
325
  strict: z.boolean().optional().describe('Validate against required presets only'),
326
326
  fix: z.boolean().optional().describe('Suggest fixes for invalid screenshots')
327
327
  });
328
- server.registerTool('appshot.validate', {
328
+ server.registerTool('appshot_validate', {
329
329
  title: 'Validate screenshots',
330
330
  description: 'Validate screenshots against App Store requirements (returns JSON)',
331
331
  inputSchema
@@ -343,7 +343,7 @@ function registerCleanTool(server) {
343
343
  keepHistory: z.boolean().optional().describe('Keep history when using --all'),
344
344
  configPath: z.string().optional().describe('Path to appshot config file or project directory')
345
345
  });
346
- server.registerTool('appshot.clean', {
346
+ server.registerTool('appshot_clean', {
347
347
  title: 'Clean generated files',
348
348
  description: 'Remove generated screenshots and optionally clear caches (auto-confirms)',
349
349
  inputSchema
@@ -368,7 +368,7 @@ function registerLocalizeTool(server) {
368
368
  sourceLanguage: z.string().optional().describe('Source language code (default: en)'),
369
369
  overwrite: z.boolean().optional().describe('Overwrite existing translations')
370
370
  });
371
- server.registerTool('appshot.localize', {
371
+ server.registerTool('appshot_localize', {
372
372
  title: 'Batch translate captions',
373
373
  description: 'Translate captions to multiple languages using AI. Requires OPENAI_API_KEY environment variable.',
374
374
  inputSchema
@@ -386,7 +386,7 @@ function registerPresetsTool(server) {
386
386
  generate: z.array(z.string()).optional().describe('Generate config for specific preset IDs'),
387
387
  outputFile: z.string().optional().describe('Output file for generated config')
388
388
  });
389
- server.registerTool('appshot.presets', {
389
+ server.registerTool('appshot_presets', {
390
390
  title: 'List presets',
391
391
  description: 'List available App Store presets and generate configuration (returns JSON)',
392
392
  inputSchema
@@ -401,7 +401,7 @@ function registerLanguagesTool(server) {
401
401
  device: z.string().optional().describe('Specific device to check (iphone/ipad/mac/watch), or omit for all devices'),
402
402
  configPath: z.string().optional().describe('Path to appshot config file or project directory')
403
403
  });
404
- server.registerTool('appshot.languages', {
404
+ server.registerTool('appshot_languages', {
405
405
  title: 'Discover available languages',
406
406
  description: 'Scans caption files to discover which languages have translations available',
407
407
  inputSchema
@@ -458,7 +458,7 @@ function registerConfigTool(server) {
458
458
  marginTop: z.number().optional().describe('Top margin for caption box'),
459
459
  marginBottom: z.number().optional().describe('Bottom margin for caption box')
460
460
  });
461
- server.registerTool('appshot.config', {
461
+ server.registerTool('appshot_config', {
462
462
  title: 'Update device configuration',
463
463
  description: 'Modifies device-specific settings in the appshot config file',
464
464
  inputSchema
@@ -570,7 +570,7 @@ function registerCaptionsTool(server) {
570
570
  captions: z.string().optional().describe('JSON object of filename:caption pairs for bulk-set (e.g., {"file1.png": "Caption 1", "file2.png": "Caption 2"})'),
571
571
  overwrite: z.boolean().optional().describe('Overwrite existing captions (for auto action, default: false)')
572
572
  });
573
- server.registerTool('appshot.captions', {
573
+ server.registerTool('appshot_captions', {
574
574
  title: 'Manage captions',
575
575
  description: 'Read and write caption text for screenshots',
576
576
  inputSchema
@@ -845,7 +845,7 @@ function registerGradientsTool(server) {
845
845
  category: z.enum(['warm', 'cool', 'vibrant', 'subtle', 'monochrome', 'brand']).optional().describe('Filter by category (for list action)'),
846
846
  preset: z.string().optional().describe('Preset ID to apply (required for apply action)')
847
847
  });
848
- server.registerTool('appshot.gradients', {
848
+ server.registerTool('appshot_gradients', {
849
849
  title: 'Manage gradients',
850
850
  description: 'List available gradient presets and apply them to config',
851
851
  inputSchema
@@ -948,7 +948,7 @@ function registerBackgroundsTool(server) {
948
948
  image: z.string().optional().describe('Path to background image (for set action)'),
949
949
  fit: z.enum(['cover', 'contain', 'fill', 'scale-down']).optional().describe('Background fit mode (for set action)')
950
950
  });
951
- server.registerTool('appshot.backgrounds', {
951
+ server.registerTool('appshot_backgrounds', {
952
952
  title: 'Manage backgrounds',
953
953
  description: 'Configure background images for screenshots',
954
954
  inputSchema
@@ -1081,7 +1081,7 @@ function registerFontsTool(server) {
1081
1081
  action: z.enum(['list', 'validate', 'embedded']).describe('Action to perform'),
1082
1082
  font: z.string().optional().describe('Font name to validate (required for validate action)')
1083
1083
  });
1084
- server.registerTool('appshot.fonts', {
1084
+ server.registerTool('appshot_fonts', {
1085
1085
  title: 'Manage fonts',
1086
1086
  description: 'List available fonts and check font availability',
1087
1087
  inputSchema
@@ -1112,7 +1112,7 @@ function registerTemplateTool(server) {
1112
1112
  dryRun: z.boolean().optional().describe('Preview changes without applying'),
1113
1113
  projectDir: z.string().optional().describe('Project directory to apply template to')
1114
1114
  });
1115
- server.registerTool('appshot.template', {
1115
+ server.registerTool('appshot_template', {
1116
1116
  title: 'Apply template',
1117
1117
  description: 'Apply professional screenshot templates for quick App Store setup',
1118
1118
  inputSchema
@@ -1133,7 +1133,7 @@ function registerQuickstartTool(server) {
1133
1133
  force: z.boolean().optional().describe('Overwrite existing configuration'),
1134
1134
  projectDir: z.string().optional().describe('Directory to initialize the project in')
1135
1135
  });
1136
- server.registerTool('appshot.quickstart', {
1136
+ server.registerTool('appshot_quickstart', {
1137
1137
  title: 'Quickstart',
1138
1138
  description: 'Get started with App Store screenshots in seconds - initializes project, applies template, sets up captions',
1139
1139
  inputSchema
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appshot-cli",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Generate App Store–ready screenshots with frames, gradients, and captions",
5
5
  "bin": {
6
6
  "appshot": "bin/appshot.js"
package/skill/SKILL.md CHANGED
@@ -13,29 +13,29 @@ AppShot generates App Store-ready screenshots with device frames, gradient backg
13
13
 
14
14
  | Tool | Purpose |
15
15
  |------|---------|
16
- | `appshot.init` | Initialize new project structure |
17
- | `appshot.captions` | Read/write/auto-generate caption text |
18
- | `appshot.gradients` | List/apply gradient presets |
19
- | `appshot.backgrounds` | Configure background images |
20
- | `appshot.fonts` | List/validate available fonts |
21
- | `appshot.config` | Modify device-specific settings |
22
- | `appshot.build` | Generate final screenshots |
23
- | `appshot.validate` | Check App Store compliance |
24
- | `appshot.specs` | View App Store specifications |
25
- | `appshot.doctor` | System diagnostics |
26
- | `appshot.presets` | App Store preset configurations |
27
- | `appshot.localize` | AI-powered caption translation |
28
- | `appshot.languages` | Discover available translations |
29
- | `appshot.frame` | Apply device frames only |
30
- | `appshot.export` | Export for Fastlane |
31
- | `appshot.clean` | Remove generated files |
16
+ | `appshot_init` | Initialize new project structure |
17
+ | `appshot_captions` | Read/write/auto-generate caption text |
18
+ | `appshot_gradients` | List/apply gradient presets |
19
+ | `appshot_backgrounds` | Configure background images |
20
+ | `appshot_fonts` | List/validate available fonts |
21
+ | `appshot_config` | Modify device-specific settings |
22
+ | `appshot_build` | Generate final screenshots |
23
+ | `appshot_validate` | Check App Store compliance |
24
+ | `appshot_specs` | View App Store specifications |
25
+ | `appshot_doctor` | System diagnostics |
26
+ | `appshot_presets` | App Store preset configurations |
27
+ | `appshot_localize` | AI-powered caption translation |
28
+ | `appshot_languages` | Discover available translations |
29
+ | `appshot_frame` | Apply device frames only |
30
+ | `appshot_export` | Export for Fastlane |
31
+ | `appshot_clean` | Remove generated files |
32
32
 
33
33
  ## Project Workflow
34
34
 
35
35
  ### 1. Initialize Project
36
36
 
37
37
  ```
38
- appshot.init with force: true
38
+ appshot_init with force: true
39
39
  ```
40
40
 
41
41
  Creates the project structure:
@@ -59,131 +59,131 @@ final/ # Generated output
59
59
 
60
60
  List existing captions:
61
61
  ```
62
- appshot.captions with device: "iphone", action: "list"
62
+ appshot_captions with device: "iphone", action: "list"
63
63
  ```
64
64
 
65
65
  Set a caption:
66
66
  ```
67
- appshot.captions with device: "iphone", action: "set", filename: "home.png", caption: "Welcome Home", language: "en"
67
+ appshot_captions with device: "iphone", action: "set", filename: "home.png", caption: "Welcome Home", language: "en"
68
68
  ```
69
69
 
70
70
  Auto-generate captions from filenames:
71
71
  ```
72
- appshot.captions with device: "iphone", action: "auto"
72
+ appshot_captions with device: "iphone", action: "auto"
73
73
  ```
74
74
  This converts filenames like `home-screen.png` → "Home Screen"
75
75
 
76
76
  Bulk set multiple captions:
77
77
  ```
78
- appshot.captions with device: "iphone", action: "bulk-set", captions: "{\"home.png\": \"Welcome\", \"settings.png\": \"Settings\"}"
78
+ appshot_captions with device: "iphone", action: "bulk-set", captions: "{\"home.png\": \"Welcome\", \"settings.png\": \"Settings\"}"
79
79
  ```
80
80
 
81
81
  Add translations:
82
82
  ```
83
- appshot.captions with device: "iphone", action: "set", filename: "home.png", caption: "Bienvenido", language: "es"
83
+ appshot_captions with device: "iphone", action: "set", filename: "home.png", caption: "Bienvenido", language: "es"
84
84
  ```
85
85
 
86
86
  ### 3. Apply Styling
87
87
 
88
88
  List gradient presets:
89
89
  ```
90
- appshot.gradients with action: "list"
90
+ appshot_gradients with action: "list"
91
91
  ```
92
92
 
93
93
  Apply a gradient:
94
94
  ```
95
- appshot.gradients with action: "apply", preset: "ocean"
95
+ appshot_gradients with action: "apply", preset: "ocean"
96
96
  ```
97
97
 
98
98
  Set background image:
99
99
  ```
100
- appshot.backgrounds with action: "set", image: "./bg.jpg", fit: "cover"
100
+ appshot_backgrounds with action: "set", image: "./bg.jpg", fit: "cover"
101
101
  ```
102
102
 
103
103
  Configure device settings:
104
104
  ```
105
- appshot.config with device: "iphone", frameScale: 0.85, captionPosition: "above"
105
+ appshot_config with device: "iphone", frameScale: 0.85, captionPosition: "above"
106
106
  ```
107
107
 
108
108
  ### 4. Build Screenshots
109
109
 
110
110
  Build all devices and languages:
111
111
  ```
112
- appshot.build
112
+ appshot_build
113
113
  ```
114
114
 
115
115
  Build specific devices:
116
116
  ```
117
- appshot.build with devices: ["iphone", "ipad"]
117
+ appshot_build with devices: ["iphone", "ipad"]
118
118
  ```
119
119
 
120
120
  Build with App Store presets:
121
121
  ```
122
- appshot.build with presets: ["iphone-6-9", "ipad-13"]
122
+ appshot_build with presets: ["iphone-6-9", "ipad-13"]
123
123
  ```
124
124
 
125
125
  ### 5. Frame Only (No Background)
126
126
 
127
127
  Apply device frames without gradients or captions:
128
128
  ```
129
- appshot.frame with input: "./screenshots/iphone"
129
+ appshot_frame with input: "./screenshots/iphone"
130
130
  ```
131
131
 
132
132
  Frame with output directory:
133
133
  ```
134
- appshot.frame with input: "./screenshots/iphone", outputDir: "./framed"
134
+ appshot_frame with input: "./screenshots/iphone", outputDir: "./framed"
135
135
  ```
136
136
 
137
137
  Frame recursively:
138
138
  ```
139
- appshot.frame with input: "./screenshots", recursive: true
139
+ appshot_frame with input: "./screenshots", recursive: true
140
140
  ```
141
141
 
142
142
  Preview what would be framed:
143
143
  ```
144
- appshot.frame with input: "./screenshots/iphone", dryRun: true
144
+ appshot_frame with input: "./screenshots/iphone", dryRun: true
145
145
  ```
146
146
 
147
147
  ### 6. Validate
148
148
 
149
149
  Check App Store compliance:
150
150
  ```
151
- appshot.validate
151
+ appshot_validate
152
152
  ```
153
153
 
154
154
  ## Common Scenarios
155
155
 
156
156
  ### New iPhone-Only Project
157
157
 
158
- 1. `appshot.init` with `force: true`
158
+ 1. `appshot_init` with `force: true`
159
159
  2. User adds screenshots to `screenshots/iphone/`
160
- 3. `appshot.captions` - set captions for each screenshot
161
- 4. `appshot.gradients` - apply preferred gradient
162
- 5. `appshot.build` with `devices: ["iphone"]`
160
+ 3. `appshot_captions` - set captions for each screenshot
161
+ 4. `appshot_gradients` - apply preferred gradient
162
+ 5. `appshot_build` with `devices: ["iphone"]`
163
163
 
164
164
  ### Multi-Language App Store Submission
165
165
 
166
- 1. `appshot.init` with `force: true`
167
- 2. `appshot.captions` - add English captions
168
- 3. `appshot.localize` with `languages: ["es", "fr", "de", "ja"]`
169
- 4. `appshot.build` with `languages: ["en", "es", "fr", "de", "ja"]`
170
- 5. `appshot.validate`
166
+ 1. `appshot_init` with `force: true`
167
+ 2. `appshot_captions` - add English captions
168
+ 3. `appshot_localize` with `languages: ["es", "fr", "de", "ja"]`
169
+ 4. `appshot_build` with `languages: ["en", "es", "fr", "de", "ja"]`
170
+ 5. `appshot_validate`
171
171
 
172
172
  ### Quick Styling Update
173
173
 
174
- 1. `appshot.gradients` with `action: "list"` to see options
175
- 2. `appshot.gradients` with `action: "apply", preset: "sunset"`
176
- 3. `appshot.build`
174
+ 1. `appshot_gradients` with `action: "list"` to see options
175
+ 2. `appshot_gradients` with `action: "apply", preset: "sunset"`
176
+ 3. `appshot_build`
177
177
 
178
178
  ### Quick Auto-Caption Project
179
179
 
180
180
  When filenames are descriptive (e.g., `home-screen.png`, `settings_page.png`):
181
181
 
182
- 1. `appshot.init` with `force: true`
182
+ 1. `appshot_init` with `force: true`
183
183
  2. User adds screenshots to `screenshots/iphone/`
184
- 3. `appshot.captions` with `device: "iphone", action: "auto"`
185
- 4. `appshot.gradients` with `action: "apply", preset: "ocean"`
186
- 5. `appshot.build` with `devices: ["iphone"]`
184
+ 3. `appshot_captions` with `device: "iphone", action: "auto"`
185
+ 4. `appshot_gradients` with `action: "apply", preset: "ocean"`
186
+ 5. `appshot_build` with `devices: ["iphone"]`
187
187
 
188
188
  Captions are auto-generated from filenames (hyphens/underscores become spaces, title case applied).
189
189
 
@@ -191,7 +191,7 @@ Captions are auto-generated from filenames (hyphens/underscores become spaces, t
191
191
 
192
192
  For quick device mockups without backgrounds or captions:
193
193
 
194
- 1. `appshot.frame` with `input: "./screenshots/iphone", outputDir: "./framed"`
194
+ 1. `appshot_frame` with `input: "./screenshots/iphone", outputDir: "./framed"`
195
195
 
196
196
  Output has transparent background - perfect for presentations, design comps, or overlaying on custom backgrounds.
197
197
 
@@ -41,15 +41,15 @@
41
41
 
42
42
  List embedded fonts:
43
43
  ```
44
- appshot.fonts with action: "embedded"
44
+ appshot_fonts with action: "embedded"
45
45
  ```
46
46
 
47
47
  Validate a font:
48
48
  ```
49
- appshot.fonts with action: "validate", font: "Inter"
49
+ appshot_fonts with action: "validate", font: "Inter"
50
50
  ```
51
51
 
52
52
  Configure font in project:
53
53
  ```
54
- appshot.config with device: "iphone", font: "Montserrat Bold"
54
+ appshot_config with device: "iphone", font: "Montserrat Bold"
55
55
  ```
@@ -60,10 +60,10 @@
60
60
 
61
61
  To apply a gradient:
62
62
  ```
63
- appshot.gradients with action: "apply", preset: "<id>"
63
+ appshot_gradients with action: "apply", preset: "<id>"
64
64
  ```
65
65
 
66
66
  To list gradients by category:
67
67
  ```
68
- appshot.gradients with action: "list", category: "warm"
68
+ appshot_gradients with action: "list", category: "warm"
69
69
  ```
@@ -27,7 +27,7 @@
27
27
  - **Best for:** Consumer apps, social apps, general-purpose
28
28
 
29
29
  ```
30
- appshot.template with template: "modern"
30
+ appshot_template with template: "modern"
31
31
  ```
32
32
 
33
33
  ---
@@ -42,7 +42,7 @@ appshot.template with template: "modern"
42
42
  - **Best for:** Health apps, wellness, lifestyle
43
43
 
44
44
  ```
45
- appshot.template with template: "minimal"
45
+ appshot_template with template: "minimal"
46
46
  ```
47
47
 
48
48
  ---
@@ -57,7 +57,7 @@ appshot.template with template: "minimal"
57
57
  - **Best for:** Finance apps, security, premium features
58
58
 
59
59
  ```
60
- appshot.template with template: "bold"
60
+ appshot_template with template: "bold"
61
61
  ```
62
62
 
63
63
  ---
@@ -72,7 +72,7 @@ appshot.template with template: "bold"
72
72
  - **Best for:** Developer tools, CLI apps, open source projects
73
73
 
74
74
  ```
75
- appshot.template with template: "nerdy"
75
+ appshot_template with template: "nerdy"
76
76
  ```
77
77
 
78
78
  **Note:** Place a grid/terminal background image at `screenshots/iphone/background.png` for best results.
@@ -89,7 +89,7 @@ appshot.template with template: "nerdy"
89
89
  - **Best for:** Luxury apps, premium services, professional tools
90
90
 
91
91
  ```
92
- appshot.template with template: "elegant"
92
+ appshot_template with template: "elegant"
93
93
  ```
94
94
 
95
95
  ---
@@ -104,7 +104,7 @@ appshot.template with template: "elegant"
104
104
  - **Best for:** Apps with strong visual branding, custom marketing assets
105
105
 
106
106
  ```
107
- appshot.template with template: "showcase"
107
+ appshot_template with template: "showcase"
108
108
  ```
109
109
 
110
110
  **Tip:** Add your branded background to `screenshots/iphone/background.png`
@@ -121,7 +121,7 @@ appshot.template with template: "showcase"
121
121
  - **Best for:** Games, kids apps, entertainment, social
122
122
 
123
123
  ```
124
- appshot.template with template: "playful"
124
+ appshot_template with template: "playful"
125
125
  ```
126
126
 
127
127
  ---
@@ -136,7 +136,7 @@ appshot.template with template: "playful"
136
136
  - **Best for:** Business apps, B2B, enterprise, productivity
137
137
 
138
138
  ```
139
- appshot.template with template: "corporate"
139
+ appshot_template with template: "corporate"
140
140
  ```
141
141
 
142
142
  ---
@@ -145,13 +145,13 @@ appshot.template with template: "corporate"
145
145
 
146
146
  ```
147
147
  # Apply a template
148
- appshot.template with template: "nerdy"
148
+ appshot_template with template: "nerdy"
149
149
 
150
150
  # Preview without applying
151
- appshot.template with preview: "modern"
151
+ appshot_template with preview: "modern"
152
152
 
153
153
  # List all templates
154
- appshot.template with list: true
154
+ appshot_template with list: true
155
155
  ```
156
156
 
157
157
  ## Customizing After Template
@@ -160,11 +160,11 @@ Templates set a starting point. Customize further with:
160
160
 
161
161
  ```
162
162
  # Change gradient
163
- appshot.gradients with action: "apply", preset: "sunset"
163
+ appshot_gradients with action: "apply", preset: "sunset"
164
164
 
165
165
  # Adjust device positioning
166
- appshot.config with device: "iphone", frameScale: 0.85, framePosition: 30
166
+ appshot_config with device: "iphone", frameScale: 0.85, framePosition: 30
167
167
 
168
168
  # Change caption position
169
- appshot.config with device: "iphone", captionPosition: "below"
169
+ appshot_config with device: "iphone", captionPosition: "below"
170
170
  ```
@@ -1,6 +1,6 @@
1
1
  # Troubleshooting Guide
2
2
 
3
- Common issues and solutions when using appshot.
3
+ Common issues and solutions when using appshot_
4
4
 
5
5
  ---
6
6
 
@@ -12,7 +12,7 @@ Common issues and solutions when using appshot.
12
12
 
13
13
  **Solution:**
14
14
  ```
15
- appshot.init with force: true
15
+ appshot_init with force: true
16
16
  ```
17
17
 
18
18
  ### "Input directory not found"
@@ -38,13 +38,13 @@ appshot.init with force: true
38
38
  **Solutions:**
39
39
  ```
40
40
  # Check current captions
41
- appshot.captions with device: "iphone", action: "list"
41
+ appshot_captions with device: "iphone", action: "list"
42
42
 
43
43
  # Auto-generate from filenames
44
- appshot.captions with device: "iphone", action: "auto"
44
+ appshot_captions with device: "iphone", action: "auto"
45
45
 
46
46
  # Set manually
47
- appshot.captions with device: "iphone", action: "set", filename: "screen.png", caption: "My Caption"
47
+ appshot_captions with device: "iphone", action: "set", filename: "screen.png", caption: "My Caption"
48
48
  ```
49
49
 
50
50
  ### Caption text cut off
@@ -55,7 +55,7 @@ appshot.captions with device: "iphone", action: "set", filename: "screen.png", c
55
55
  1. Use shorter text (2-3 words ideal)
56
56
  2. Adjust caption box settings:
57
57
  ```
58
- appshot.config with device: "iphone", captionPosition: "above"
58
+ appshot_config with device: "iphone", captionPosition: "above"
59
59
  ```
60
60
 
61
61
  ### Wrong font displaying
@@ -65,10 +65,10 @@ appshot.config with device: "iphone", captionPosition: "above"
65
65
  **Solution:**
66
66
  ```
67
67
  # Check font availability
68
- appshot.fonts with action: "validate", font: "SF Pro Display"
68
+ appshot_fonts with action: "validate", font: "SF Pro Display"
69
69
 
70
70
  # List embedded fonts (always available)
71
- appshot.fonts with action: "embedded"
71
+ appshot_fonts with action: "embedded"
72
72
  ```
73
73
 
74
74
  **Embedded fonts:** Inter, Poppins, Montserrat, DM Sans, Roboto, Open Sans, Lato, Work Sans, JetBrains Mono, Fira Code
@@ -109,7 +109,7 @@ appshot.fonts with action: "embedded"
109
109
  **Solutions:**
110
110
  ```
111
111
  # Run diagnostics
112
- appshot.doctor
112
+ appshot_doctor
113
113
  ```
114
114
 
115
115
  ### "Failed to load screenshot"
@@ -126,13 +126,13 @@ appshot.doctor
126
126
  **Solutions:**
127
127
  ```
128
128
  # Reduce concurrency on low-memory systems
129
- appshot.build with concurrency: 2
129
+ appshot_build with concurrency: 2
130
130
 
131
131
  # Build specific devices only
132
- appshot.build with devices: ["iphone"]
132
+ appshot_build with devices: ["iphone"]
133
133
 
134
134
  # Use preview mode for testing
135
- appshot.build with preview: true
135
+ appshot_build with preview: true
136
136
  ```
137
137
 
138
138
  ---
@@ -148,17 +148,17 @@ appshot.build with preview: true
148
148
  **Solutions:**
149
149
  ```
150
150
  # Set background explicitly
151
- appshot.backgrounds with action: "set", image: "./bg.png", fit: "cover"
151
+ appshot_backgrounds with action: "set", image: "./bg.png", fit: "cover"
152
152
 
153
153
  # Or use auto-detect (looks for background.png in device folders)
154
- appshot.build with autoBackground: true
154
+ appshot_build with autoBackground: true
155
155
  ```
156
156
 
157
157
  ### Background looks stretched/cropped
158
158
 
159
159
  **Solution:** Change fit mode:
160
160
  ```
161
- appshot.backgrounds with action: "set", image: "./bg.png", fit: "contain"
161
+ appshot_backgrounds with action: "set", image: "./bg.png", fit: "contain"
162
162
  ```
163
163
 
164
164
  Fit modes:
@@ -178,10 +178,10 @@ Fit modes:
178
178
  **Solution:**
179
179
  ```
180
180
  # Check required specs
181
- appshot.specs with device: "iphone", required: true
181
+ appshot_specs with device: "iphone", required: true
182
182
 
183
183
  # Use presets for correct sizing
184
- appshot.build with presets: ["iphone-6-9", "ipad-13"]
184
+ appshot_build with presets: ["iphone-6-9", "ipad-13"]
185
185
  ```
186
186
 
187
187
  ### Missing required sizes
@@ -199,7 +199,7 @@ appshot.build with presets: ["iphone-6-9", "ipad-13"]
199
199
  **Solution:**
200
200
  ```
201
201
  # Run doctor to check system
202
- appshot.doctor
202
+ appshot_doctor
203
203
 
204
204
  # Reinstall if needed (in terminal)
205
205
  npm rebuild sharp
@@ -217,7 +217,7 @@ npm rebuild sharp
217
217
 
218
218
  Run the doctor command to check all systems:
219
219
  ```
220
- appshot.doctor
220
+ appshot_doctor
221
221
  ```
222
222
 
223
223
  This checks: