@appscreenshotstudio/mcp 0.2.1 → 0.2.2
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/dist/index.js +23 -0
- package/package.json +2 -1
- package/skills/appscreenshotstudio/SKILL.md +104 -0
package/dist/index.js
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
+
import { existsSync, mkdirSync, copyFileSync } from 'node:fs';
|
|
6
|
+
import { join, dirname } from 'node:path';
|
|
7
|
+
import { homedir } from 'node:os';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
// ─── CLI: install-skill ─────────────────────────────────────────────────────────
|
|
10
|
+
const args = process.argv.slice(2);
|
|
11
|
+
if (args[0] === 'install-skill') {
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const src = join(__dirname, '..', 'skills', 'appscreenshotstudio', 'SKILL.md');
|
|
14
|
+
const destDir = join(homedir(), '.claude', 'skills', 'appscreenshotstudio');
|
|
15
|
+
const dest = join(destDir, 'SKILL.md');
|
|
16
|
+
if (!existsSync(src)) {
|
|
17
|
+
console.error('Error: SKILL.md not found in package. Try reinstalling @appscreenshotstudio/mcp.');
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
mkdirSync(destDir, { recursive: true });
|
|
21
|
+
copyFileSync(src, dest);
|
|
22
|
+
console.log('Skill installed to ~/.claude/skills/appscreenshotstudio/SKILL.md');
|
|
23
|
+
console.log('');
|
|
24
|
+
console.log('You can now use /appscreenshotstudio in Claude Code to generate screenshots.');
|
|
25
|
+
console.log('Make sure the MCP server is also configured in your Claude Code settings.');
|
|
26
|
+
process.exit(0);
|
|
27
|
+
}
|
|
5
28
|
const API_BASE = process.env.APPSCREENSHOTSTUDIO_URL || 'https://appscreenshotstudio.com';
|
|
6
29
|
const API_KEY = process.env.APPSCREENSHOTSTUDIO_API_KEY;
|
|
7
30
|
// ─── Devices (mirrors lib/device-specs.ts) ─────────────────────────────────────
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appscreenshotstudio/mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "MCP server for generating App Store screenshots via AppScreenshotStudio",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"dist",
|
|
42
|
+
"skills",
|
|
42
43
|
"README.md"
|
|
43
44
|
]
|
|
44
45
|
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: appscreenshotstudio
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Generate App Store screenshots by researching the codebase and calling AppScreenshotStudio MCP tools. Use when the user mentions "screenshots", "App Store", "Play Store", "store listing", or wants to create marketing screenshots for their app.
|
|
5
|
+
allowed_tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Glob
|
|
8
|
+
- Grep
|
|
9
|
+
- Bash
|
|
10
|
+
- WebFetch
|
|
11
|
+
- AskUserQuestion
|
|
12
|
+
argument-hint: [app name or description]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# App Store Screenshot Generator
|
|
16
|
+
|
|
17
|
+
You generate production-ready App Store / Play Store screenshots by researching the user's codebase and calling the AppScreenshotStudio MCP tools.
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
### Step 1: Research the Codebase
|
|
22
|
+
|
|
23
|
+
Before generating, thoroughly research the app. This context dramatically improves output quality.
|
|
24
|
+
|
|
25
|
+
**Find and read these files:**
|
|
26
|
+
|
|
27
|
+
- **App identity**: `README.md`, `package.json`, `Cargo.toml`, `pubspec.yaml`, `build.gradle`
|
|
28
|
+
- **Brand colors**: `tailwind.config.*` (colors/theme), `**/theme.*`, `**/colors.*`, `**/palette.*`
|
|
29
|
+
- SwiftUI: search for `Color(` or `.accentColor`
|
|
30
|
+
- Flutter: search for `ThemeData`, `primarySwatch`, `colorScheme`
|
|
31
|
+
- **Key screens**: route/page files, navigation definitions, tab bars
|
|
32
|
+
- React/Next.js: `app/`, `pages/`, route files
|
|
33
|
+
- SwiftUI: `NavigationView`, `TabView`, `View` structs
|
|
34
|
+
- Flutter: `MaterialPageRoute`, `GoRouter`
|
|
35
|
+
- React Native: `createStackNavigator`, `Screen`
|
|
36
|
+
- **Store metadata**: `Info.plist`, fastlane `metadata/`, `AndroidManifest.xml`
|
|
37
|
+
- **Marketing copy**: landing pages, about pages, existing descriptions
|
|
38
|
+
|
|
39
|
+
**Build this context object:**
|
|
40
|
+
```
|
|
41
|
+
readme_summary: What the app does (2-3 sentences)
|
|
42
|
+
key_screens: ["Dashboard with activity feed", "Settings page", ...]
|
|
43
|
+
color_tokens: {"primary": "#hex", "secondary": "#hex"}
|
|
44
|
+
target_audience: Who it's for
|
|
45
|
+
app_category: fitness|finance|social|productivity|food|travel|health|education
|
|
46
|
+
competitive_edge: What makes it unique
|
|
47
|
+
ui_style: "dark mode with neon accents" or "clean minimal"
|
|
48
|
+
primary_user_flow: "Sign up → Create project → Track progress"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step 2: Confirm with the User
|
|
52
|
+
|
|
53
|
+
Present your findings and ask:
|
|
54
|
+
- "I found these as your main features: [X, Y, Z]. Are these the top 3-5 to highlight?"
|
|
55
|
+
- "Your brand colors appear to be [primary, secondary]. Should I use these?"
|
|
56
|
+
- "What mood fits? Options: energetic, calm, professional, playful, minimal, bold, warm, dark"
|
|
57
|
+
- "How many screenshots? (3-10, default 5)"
|
|
58
|
+
|
|
59
|
+
### Step 3: Generate Screenshots
|
|
60
|
+
|
|
61
|
+
Call the `generate-screenshots` MCP tool with:
|
|
62
|
+
- `app_name`: from package.json or user input
|
|
63
|
+
- `app_description`: from README or user description
|
|
64
|
+
- `features`: top 3-5 features as array
|
|
65
|
+
- `brand_colors`: `{ primary, secondary?, accent? }` from theme files
|
|
66
|
+
- `mood`: user's chosen mood
|
|
67
|
+
- `device_id`: `"iphone-6.9"` (default), `"ipad-13"`, `"android-phone"`, `"android-tablet-10"`
|
|
68
|
+
- `count`: number of cards (3-10)
|
|
69
|
+
- `story_flow`: `"auto"` (default), `"hero-intro"`, `"problem-solution"`, `"benefit-first"`, etc.
|
|
70
|
+
- `codebase_context`: the full context object from Step 1
|
|
71
|
+
|
|
72
|
+
### Step 4: Review and Iterate
|
|
73
|
+
|
|
74
|
+
Share the project URL and offer refinements using `edit-screenshots`:
|
|
75
|
+
- "Want to change any headlines or colors?"
|
|
76
|
+
- "Should I add a social proof card with ratings?"
|
|
77
|
+
- "Want to try a different layout style?"
|
|
78
|
+
|
|
79
|
+
### Step 5: Export
|
|
80
|
+
|
|
81
|
+
Call `render-screenshots` to export PNGs at exact App Store dimensions. This is free.
|
|
82
|
+
|
|
83
|
+
## Headline Rules
|
|
84
|
+
|
|
85
|
+
Headlines must pass the "one second test" — readable at thumbnail size.
|
|
86
|
+
|
|
87
|
+
**Three styles:**
|
|
88
|
+
1. Paint a moment: "Morning runs handled", "Your kitchen simplified"
|
|
89
|
+
2. State an outcome: "Never miss a workout", "Inbox zero daily"
|
|
90
|
+
3. Eliminate a pain: "No more forgotten tasks", "Ditch the spreadsheet"
|
|
91
|
+
|
|
92
|
+
**Banned:** feature lists, "and"-joined phrases, starting with "The", vague aspirational fluff.
|
|
93
|
+
|
|
94
|
+
## Credit Costs
|
|
95
|
+
|
|
96
|
+
| Tool | Cost |
|
|
97
|
+
|------|------|
|
|
98
|
+
| generate-screenshots | 5 credits |
|
|
99
|
+
| edit-screenshots | 5 credits |
|
|
100
|
+
| generate-background | 6 credits |
|
|
101
|
+
| render-screenshots | free |
|
|
102
|
+
| prepare-screenshot-brief | free |
|
|
103
|
+
| list-devices | free |
|
|
104
|
+
| get-project | free |
|