@appscreenshotstudio/mcp 0.6.0 → 0.6.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/README.md CHANGED
@@ -188,6 +188,7 @@ Once installed, use `/appscreenshotstudio` in Claude Code or just ask "generate
188
188
  | `ipad-13` | iPad Pro 13" | 2064x2752 | App Store |
189
189
  | `android-phone` | Android Phone | 1080x2340 | Play Store |
190
190
  | `android-tablet-10` | Android Tablet 7" | 1200x1920 | Play Store |
191
+ | `android-tablet-large` | Android Tablet 10" | 1600x2560 | Play Store |
191
192
  | `apple-watch-ultra` | Apple Watch Ultra 2 | 410x502 | App Store |
192
193
 
193
194
  ## Design Features
package/dist/index.js CHANGED
@@ -28,13 +28,15 @@ if (args[0] === 'install-skill') {
28
28
  const API_BASE = process.env.APPSCREENSHOTSTUDIO_URL || 'https://appscreenshotstudio.com';
29
29
  const API_KEY = process.env.APPSCREENSHOTSTUDIO_API_KEY;
30
30
  // ─── Devices (mirrors lib/device-specs.ts) ─────────────────────────────────────
31
- // ⚠️ Keep in sync: lib/device-specs.ts, mcp-server/README.md, docs/api page, docs/mcp page
31
+ // ⚠️ Keep in sync: lib/device-specs.ts, mcp-server/README.md, docs/api page, docs/mcp page,
32
+ // mcp-server/skills/appscreenshotstudio/SKILL.md (ships in the npm package, so it drifts unseen)
32
33
  const DEVICES = [
33
34
  { id: 'iphone-6.9', name: 'iPhone 16 Pro Max', width: 1260, height: 2736, category: 'iphone', required: true },
34
35
  { id: 'iphone-6.3', name: 'iPhone 17 Pro', width: 1206, height: 2622, category: 'iphone', required: false },
35
36
  { id: 'ipad-13', name: 'iPad Pro 13"', width: 2064, height: 2752, category: 'ipad', required: true },
36
37
  { id: 'android-phone', name: 'Android Phone', width: 1080, height: 2340, category: 'android-phone', required: true },
37
38
  { id: 'android-tablet-10', name: 'Android Tablet 7"', width: 1200, height: 1920, category: 'android-tablet', required: true },
39
+ { id: 'android-tablet-large', name: 'Android Tablet 10"', width: 1600, height: 2560, category: 'android-tablet', required: false },
38
40
  { id: 'apple-watch-ultra', name: 'Apple Watch Ultra 2', width: 410, height: 502, category: 'apple-watch', required: true },
39
41
  ];
40
42
  const VALID_DEVICE_IDS = DEVICES.map(d => d.id);
@@ -192,7 +194,7 @@ const chatImagesSchema = z.array(z.object({
192
194
  // ─── MCP Server ─────────────────────────────────────────────────────────────────
193
195
  const server = new McpServer({
194
196
  name: 'appscreenshotstudio',
195
- version: '0.5.5',
197
+ version: '0.6.1',
196
198
  });
197
199
  // Tool 1: generate-screenshots
198
200
  server.registerTool('generate-screenshots', {
@@ -668,18 +670,20 @@ Good prompts describe a continuous scene, not objects or text:
668
670
  // Tool 8: prepare-screenshot-brief
669
671
  server.registerTool('prepare-screenshot-brief', {
670
672
  title: 'Prepare Screenshot Brief',
671
- description: `Get a research checklist and strategy guide to prepare for screenshot generation. Call this BEFORE generate-screenshots to know what to look for in the codebase. Free no API call or credits needed.
673
+ description: `Get a category playbook and repo-research checklist to prepare for screenshot generation. Call this BEFORE generate-screenshots. Free (no credits).
674
+
675
+ Pass app_category to get category-specific guidance pulled live from AppScreenshotStudio: the frame-1 hook playbook (default layout, what to avoid, caption patterns), the recommended story_flow and mood, and the exact facts to dig out of THIS app's repo for its category (e.g. security and compliance signals for finance, real gameplay art for games, the outcome for fitness).
672
676
 
673
677
  Returns:
674
- - A codebase research checklist (file patterns to search for each tech stack)
675
- - Story flow recommendations by app category
676
- - Tips for writing compelling screenshot headlines
677
- - The codebase_context schema to fill in
678
+ - A category playbook (frame-1 hooks + layout + arc + mood) for the app_category
679
+ - A category-specific repo research focus (what to grep this app for)
680
+ - A generic codebase research checklist (file patterns per tech stack)
681
+ - Headline tips + the codebase_context schema to fill in
678
682
 
679
- This tool helps you gather the right information so generate-screenshots produces the best possible output on the first try.`,
683
+ The more you gather here, the better generate-screenshots does on the first try.`,
680
684
  inputSchema: z.object({
681
685
  app_category: z.string().optional()
682
- .describe('App category if known — e.g. fitness, finance, social, productivity, developer-tools'),
686
+ .describe('App category, e.g. fitness, finance, gaming, social, productivity, health, travel, wellness. Drives the category playbook this tool returns; synonyms are normalized server-side.'),
683
687
  platform: z.enum(['ios', 'android', 'both']).default('ios')
684
688
  .describe('Target platform'),
685
689
  }),
@@ -755,84 +759,31 @@ This tool helps you gather the right information so generate-screenshots produce
755
759
  '- Main navigation → what users do most',
756
760
  '- Key interactions → what makes the app satisfying to use',
757
761
  ];
758
- // Story flow recommendations
759
- const storyFlows = [
760
- '',
761
- '---',
762
- '',
763
- '# Story Flow Recommendations',
764
- '',
765
- ];
766
- const categoryRecommendations = {
767
- 'fitness': [
768
- '**Fitness apps → `journey` or `benefit-first`**',
769
- '- Lead with transformation: "Before → After" or "Track → Improve → Achieve"',
770
- '- Highlight: workout tracking, progress charts, streaks, community challenges',
771
- '- Mood: energetic or bold',
772
- ],
773
- 'finance': [
774
- '**Finance apps → `benefit-first` or `problem-solution`**',
775
- '- Lead with outcomes: "Save $X/month" or "See all accounts in one place"',
776
- '- Highlight: dashboards, charts, budgets, alerts, security',
777
- '- Mood: professional or calm',
778
- ],
779
- 'social': [
780
- '**Social apps → `social-proof-bookend` or `hero-intro`**',
781
- '- Lead with community: "Join 1M+ users" or show vibrant UI',
782
- '- Highlight: feed, messaging, profiles, discovery, sharing',
783
- '- Mood: playful or energetic',
784
- ],
785
- 'productivity': [
786
- '**Productivity apps → `problem-solution` or `standard`**',
787
- '- Lead with pain point: "Stop juggling 5 apps" → "One place for everything"',
788
- '- Highlight: task management, collaboration, integrations, speed',
789
- '- Mood: minimal or professional',
790
- ],
791
- 'food': [
792
- '**Food/recipe apps → `hero-intro` or `journey`**',
793
- '- Lead with beautiful imagery or the discovery experience',
794
- '- Highlight: recipe browsing, meal planning, grocery lists, cooking mode',
795
- '- Mood: warm or playful',
796
- ],
797
- 'travel': [
798
- '**Travel apps → `journey` or `hero-intro`**',
799
- '- Lead with destination discovery or trip planning flow',
800
- '- Highlight: search, booking, itinerary, maps, offline access',
801
- '- Mood: energetic or calm',
802
- ],
803
- 'health': [
804
- '**Health/wellness apps → `benefit-first` or `journey`**',
805
- '- Lead with outcomes: "Sleep better", "Feel calmer", "Know your body"',
806
- '- Highlight: tracking, insights, reminders, progress, professional guidance',
807
- '- Mood: calm or professional',
808
- ],
809
- 'education': [
810
- '**Education apps → `journey` or `hero-intro`**',
811
- '- Lead with learning progression or "learn anything" hero',
812
- '- Highlight: courses, progress tracking, quizzes, certificates, offline',
813
- '- Mood: playful or professional',
814
- ],
815
- 'developer-tools': [
816
- '**Developer tools → `problem-solution` or `benefit-first`**',
817
- '- Lead with workflow pain: "Stop copy-pasting" → "One command and done"',
818
- '- Highlight: CLI, integrations, speed, DX, code examples',
819
- '- Mood: minimal or bold',
820
- ],
821
- 'shopping': [
822
- '**Shopping/e-commerce → `social-proof-bookend` or `benefit-first`**',
823
- '- Lead with deals or trust: "Trusted by 500K+ shoppers"',
824
- '- Highlight: discovery, search, wishlists, checkout, tracking',
825
- '- Mood: bold or energetic',
826
- ],
827
- };
828
- if (app_category && categoryRecommendations[app_category]) {
829
- storyFlows.push(...categoryRecommendations[app_category]);
762
+ let playbook = null;
763
+ try {
764
+ const res = await fetch(`${API_BASE}/api/v1/playbook?category=${encodeURIComponent(app_category ?? '')}`);
765
+ if (res.ok) {
766
+ const json = (await res.json());
767
+ if (json?.data)
768
+ playbook = json.data;
769
+ }
830
770
  }
831
- else {
832
- storyFlows.push('**General recommendations by app type:**', '');
833
- for (const [, lines] of Object.entries(categoryRecommendations)) {
834
- storyFlows.push(...lines, '');
771
+ catch {
772
+ // offline or endpoint unavailable: the generic checklist still stands
773
+ }
774
+ const categoryBlock = [];
775
+ if (playbook && playbook.depth !== 'general') {
776
+ categoryBlock.push(`# Category Playbook: ${playbook.label}`, '', `Recommended \`story_flow\`: \`${playbook.arc}\` | \`mood\`: \`${playbook.mood}\``, '', '## Research this app for its category', `These are what a ${playbook.label.toLowerCase()} frame 1 lives or dies on. Dig them out of the repo before generating:`, ...playbook.researchFocus.map((r) => `- ${r}`), '');
777
+ if (playbook.frame1) {
778
+ categoryBlock.push('## Frame 1 (the hook) for this category', `Default layout: \`${playbook.frame1.defaultLayout}\`. Avoid: ${playbook.frame1.avoidLayouts.map((l) => `\`${l}\``).join(', ')}.`, `Why: ${playbook.frame1.rationale}`, '', 'Pick the hook that fits the app, then write the headline from its caption pattern:', ...playbook.frame1.hooks.map((h) => `- **${h.name}** (${h.layout}): ${h.shows}. Caption: ${h.captionPattern}`), '');
779
+ }
780
+ if (playbook.patternsToAvoid && playbook.patternsToAvoid.length) {
781
+ categoryBlock.push('## Avoid for this category', ...playbook.patternsToAvoid.map((p) => `- ${p}`), '');
782
+ }
783
+ if (playbook.highlights && playbook.highlights.length) {
784
+ categoryBlock.push(`Highlights worth surfacing: ${playbook.highlights.join(', ')}.`, '');
835
785
  }
786
+ categoryBlock.push('---', '');
836
787
  }
837
788
  // Headline tips
838
789
  const headlineTips = [
@@ -866,6 +817,7 @@ This tool helps you gather the right information so generate-screenshots produce
866
817
  deviceTips.push('**Android (required for Play Store):**');
867
818
  deviceTips.push('- Android Phone (android-phone): 1080×2340 — REQUIRED');
868
819
  deviceTips.push('- Android Tablet 7" (android-tablet-10): 1200×1920 — REQUIRED');
820
+ deviceTips.push('- Android Tablet 10" (android-tablet-large): 1600×2560 — second large-screen slot');
869
821
  deviceTips.push('');
870
822
  }
871
823
  // Schema reminder
@@ -901,7 +853,7 @@ This tool helps you gather the right information so generate-screenshots produce
901
853
  return {
902
854
  content: [{
903
855
  type: 'text',
904
- text: [...checklist, ...storyFlows, ...headlineTips, ...deviceTips, ...schemaReminder].join('\n'),
856
+ text: [...categoryBlock, ...checklist, ...headlineTips, ...deviceTips, ...schemaReminder].join('\n'),
905
857
  }],
906
858
  };
907
859
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appscreenshotstudio/mcp",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "MCP server for generating App Store screenshots via AppScreenshotStudio",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -64,7 +64,7 @@ Call the `generate-screenshots` MCP tool with:
64
64
  - `features`: top 3-5 features as array
65
65
  - `brand_colors`: `{ primary, secondary?, accent? }` from theme files
66
66
  - `mood`: user's chosen mood
67
- - `device_id`: `"iphone-6.9"` (default), `"ipad-13"`, `"android-phone"`, `"android-tablet-10"`, `"apple-watch-ultra"`
67
+ - `device_id`: `"iphone-6.9"` (default), `"iphone-6.3"`, `"ipad-13"`, `"android-phone"`, `"android-tablet-10"` (7"), `"android-tablet-large"` (10"), `"apple-watch-ultra"`
68
68
  - `count`: number of cards (3-10)
69
69
  - `story_flow`: `"auto"` (default), `"hero-intro"`, `"problem-solution"`, `"benefit-first"`, etc.
70
70
  - `codebase_context`: the full context object from Step 1