@rubytech/create-maxy-code 0.1.169 → 0.1.170
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/package.json +1 -1
- package/payload/platform/plugins/.claude-plugin/marketplace.json +0 -15
- package/payload/platform/plugins/docs/references/platform.md +1 -1
- package/payload/server/{chunk-3TRIXQSJ.js → chunk-L2YK2VK3.js} +17 -29
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/server.js +1 -1
- package/payload/platform/plugins/teaching/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/teaching/PLUGIN.md +0 -58
- package/payload/platform/plugins/teaching/skills/interactive-tutor/SKILL.md +0 -59
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/assessment.md +0 -70
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +0 -43
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +0 -83
- package/payload/platform/plugins/teaching/skills/lesson-planner/SKILL.md +0 -48
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/context-gathering.md +0 -41
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/plan-structure.md +0 -94
- package/payload/platform/plugins/teaching/skills/study-pack-builder/SKILL.md +0 -52
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/disaggregation.md +0 -49
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/materials.md +0 -116
- package/payload/platform/plugins/venture-studio/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/venture-studio/PLUGIN.md +0 -119
- package/payload/platform/plugins/venture-studio/bin/scaffold.sh +0 -116
- package/payload/platform/plugins/venture-studio/skills/brand-pack/SKILL.md +0 -256
- package/payload/platform/plugins/venture-studio/skills/brand-pack/references/color-psychology.md +0 -118
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/SKILL.md +0 -376
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +0 -64
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/compliance-research-checklist.md +0 -53
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +0 -88
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +0 -39
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/design-tokens-application.md +0 -79
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/html-pdf-pipeline.md +0 -236
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/internal-workings-scrub.md +0 -33
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/termsheet-template.md +0 -88
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/index.html +0 -1565
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/render-pdf.mjs +0 -91
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/term_sheet.html +0 -715
- package/payload/platform/plugins/venture-studio/skills/office-hours/SKILL.md +0 -587
- package/payload/platform/plugins/venture-studio/skills/prototype-host/SKILL.md +0 -179
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/cloudflared-ingress-edit.md +0 -81
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/scaffold-frameworks.md +0 -60
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/systemd-user-service.md +0 -104
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/SKILL.md +0 -336
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/aarrr-metrics.md +0 -275
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/assumption-testing.md +0 -93
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/boolean-search.md +0 -308
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/build-measure-learn.md +0 -262
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/business-model-canvas.md +0 -171
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/commitment-signals.md +0 -246
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/design-thinking.md +0 -183
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/earlyvangelist.md +0 -190
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/first-principles.md +0 -58
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/fishbone.md +0 -114
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/five-whys.md +0 -43
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/ice-scoring.md +0 -237
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/innovation-accounting.md +0 -290
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/jtbd.md +0 -105
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +0 -361
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/market-type.md +0 -167
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md +0 -193
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md +0 -200
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/og-images.md +0 -239
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pareto.md +0 -103
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/persona-development.md +0 -291
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pivot-types.md +0 -225
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/positioning-statement.md +0 -179
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/prd.md +0 -363
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pre-mortem.md +0 -74
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/problem-validation.md +0 -253
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/product-market-fit.md +0 -256
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/research-synthesis.md +0 -276
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/three-engines-of-growth.md +0 -248
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/validation-tests.md +0 -89
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/value-proposition-canvas.md +0 -121
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/win-loss-analysis.md +0 -242
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/workflow-mapping.md +0 -271
- package/payload/platform/plugins/writer-craft/.claude-plugin/plugin.json +0 -17
- package/payload/platform/plugins/writer-craft/PLUGIN.md +0 -130
- package/payload/platform/plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +0 -96
- package/payload/platform/plugins/writer-craft/mcp/package.json +0 -19
- package/payload/platform/plugins/writer-craft/mcp/scripts/smoke.mjs +0 -152
- package/payload/platform/plugins/writer-craft/mcp/src/index.ts +0 -289
- package/payload/platform/plugins/writer-craft/mcp/src/lib/neo4j.ts +0 -56
- package/payload/platform/plugins/writer-craft/mcp/src/lib/voice-corpus.ts +0 -54
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-distil-profile.ts +0 -303
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-record-feedback.ts +0 -114
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-retrieve-conditioning.ts +0 -145
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-tag-content.ts +0 -117
- package/payload/platform/plugins/writer-craft/mcp/tsconfig.json +0 -8
- package/payload/platform/plugins/writer-craft/skills/citation-style/SKILL.md +0 -94
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +0 -77
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/citation-rules.md +0 -103
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/journal-article-models.md +0 -74
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/other-source-models.md +0 -146
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +0 -70
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/SKILL.md +0 -108
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/copyediting.md +0 -73
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +0 -85
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +0 -78
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/line-editing.md +0 -55
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/self-editing.md +0 -89
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +0 -114
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +0 -73
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +0 -76
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +0 -67
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +0 -86
- package/payload/platform/plugins/writer-craft/skills/point-of-view/SKILL.md +0 -97
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +0 -72
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +0 -91
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +0 -71
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +0 -85
- package/payload/platform/plugins/writer-craft/skills/prose-craft/SKILL.md +0 -100
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +0 -72
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/repetition.md +0 -71
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +0 -64
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/word-economy.md +0 -93
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/SKILL.md +0 -100
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +0 -79
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +0 -81
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +0 -67
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +0 -94
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/SKILL.md +0 -111
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +0 -119
- package/payload/platform/plugins/writer-craft/skills/review-prose/SKILL.md +0 -99
- package/payload/platform/plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +0 -112
- package/payload/platform/plugins/writer-craft/skills/review-scene/SKILL.md +0 -99
- package/payload/platform/plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +0 -95
- package/payload/platform/plugins/writer-craft/skills/story-architecture/SKILL.md +0 -106
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +0 -118
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +0 -66
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +0 -87
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +0 -82
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/SKILL.md +0 -133
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +0 -118
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +0 -128
- package/payload/platform/plugins/writer-craft/skills/voice-mirror/SKILL.md +0 -166
package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
# The Mom Test
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
Extract truth from customer conversations by asking questions that even your mom can't lie to you about, avoiding the false positives that kill startups.
|
|
5
|
-
|
|
6
|
-
## When to Use
|
|
7
|
-
- Conducting customer discovery conversations
|
|
8
|
-
- Validating problem and solution hypotheses
|
|
9
|
-
- Gathering requirements from potential customers
|
|
10
|
-
- Avoiding "false positive" feedback that feels good but isn't true
|
|
11
|
-
- Learning what customers actually do, not what they say they'd do
|
|
12
|
-
|
|
13
|
-
## Process
|
|
14
|
-
|
|
15
|
-
### 1. The Three Rules
|
|
16
|
-
|
|
17
|
-
Three simple rules for crafting good questions:
|
|
18
|
-
|
|
19
|
-
1. **Talk about their life instead of your idea**
|
|
20
|
-
2. **Ask about specifics in the past instead of generics or opinions about the future**
|
|
21
|
-
3. **Talk less and listen more**
|
|
22
|
-
|
|
23
|
-
### 2. Good Questions vs. Bad Questions
|
|
24
|
-
|
|
25
|
-
**BAD: "Do you think it's a good idea?"**
|
|
26
|
-
- Only the market can tell if your idea is good—all else is opinion
|
|
27
|
-
- FIX: "How do you currently handle X? What have you tried?"
|
|
28
|
-
|
|
29
|
-
**BAD: "Would you buy a product that does X?"**
|
|
30
|
-
- Hypothetical future promises from optimistic people
|
|
31
|
-
- FIX: "How much do you currently spend on solving this?"
|
|
32
|
-
|
|
33
|
-
**BAD: "How much would you pay for X?"**
|
|
34
|
-
- Numbers feel rigorous but are still hypothetical
|
|
35
|
-
- FIX: "What does this problem cost you now? What's your budget for this?"
|
|
36
|
-
|
|
37
|
-
**SORT-OF-OKAY: "What would your dream product do?"**
|
|
38
|
-
- Good as setup, bad if you stop there
|
|
39
|
-
- FIX: "Why do you want those features? What would they let you do?"
|
|
40
|
-
|
|
41
|
-
**GOOD: "Why do you bother?"**
|
|
42
|
-
- Gets from perceived problem to real one
|
|
43
|
-
- Reveals the job-to-be-done behind the stated need
|
|
44
|
-
|
|
45
|
-
**GOOD: "What are the implications of that?"**
|
|
46
|
-
- Distinguishes must-solve from nice-to-have
|
|
47
|
-
- Reveals if problems have costly implications or don't actually matter
|
|
48
|
-
|
|
49
|
-
**GOOD: "Talk me through the last time that happened."**
|
|
50
|
-
- Specific past events reveal truth; hypotheticals invite lies
|
|
51
|
-
- Shows actual workflow, tools used, time spent
|
|
52
|
-
|
|
53
|
-
**GOOD: "What else have you tried?"**
|
|
54
|
-
- If they haven't looked for solutions, they won't look for yours
|
|
55
|
-
- Reveals how motivated they actually are
|
|
56
|
-
|
|
57
|
-
**GOOD: "Who else should I talk to?"**
|
|
58
|
-
- End every conversation this way
|
|
59
|
-
- If they won't intro you, either you screwed up or they don't care
|
|
60
|
-
|
|
61
|
-
### 3. Avoid the Three Types of Bad Data
|
|
62
|
-
|
|
63
|
-
**1. Compliments**
|
|
64
|
-
- "That's so cool!" "I love it!" "Great idea!"
|
|
65
|
-
- Worthless because people lie to be nice
|
|
66
|
-
- DEFLECT: "Thanks! How are you dealing with this currently?"
|
|
67
|
-
|
|
68
|
-
**2. Fluff (Generics, Hypotheticals, Future)**
|
|
69
|
-
- "I usually..." "I always..." "I would definitely..."
|
|
70
|
-
- Generic claims describe who they want to be, not who they are
|
|
71
|
-
- ANCHOR: "When's the last time that happened? Walk me through it."
|
|
72
|
-
|
|
73
|
-
**3. Ideas**
|
|
74
|
-
- "You should add..." "What if it also..."
|
|
75
|
-
- Feature requests aren't validation
|
|
76
|
-
- DIG: "Why do you want that? How are you coping without it?"
|
|
77
|
-
|
|
78
|
-
### 4. Deflecting and Anchoring Techniques
|
|
79
|
-
|
|
80
|
-
**When you receive a compliment:**
|
|
81
|
-
> Them: "That's a great idea!"
|
|
82
|
-
> You: "Thanks! How are you solving this problem today?"
|
|
83
|
-
|
|
84
|
-
**When you receive fluff:**
|
|
85
|
-
> Them: "I would definitely use that!"
|
|
86
|
-
> You: "Tell me about the last time this came up—what did you do?"
|
|
87
|
-
|
|
88
|
-
**When you receive an idea:**
|
|
89
|
-
> Them: "You should add a reporting feature."
|
|
90
|
-
> You: "Interesting—what would you do with the reports?"
|
|
91
|
-
|
|
92
|
-
**When you slip into pitch mode:**
|
|
93
|
-
> You: "Whoops—I got excited and started pitching. How are you handling this currently?"
|
|
94
|
-
|
|
95
|
-
### 5. The Currencies of Conversation
|
|
96
|
-
|
|
97
|
-
Words are cheap. Track commitment through "currencies":
|
|
98
|
-
|
|
99
|
-
| Currency | Low Value | High Value |
|
|
100
|
-
|----------|-----------|------------|
|
|
101
|
-
| **Time** | "Let's chat sometime" | Schedules specific meeting |
|
|
102
|
-
| **Reputation** | "I might share this" | Introduces you to colleague |
|
|
103
|
-
| **Money** | "I would pay for that" | Pre-order or deposit |
|
|
104
|
-
| **Effort** | "Send me info" | Tries your prototype |
|
|
105
|
-
|
|
106
|
-
**Rule:** Advancement = they give you something valuable (time, intro, money, effort)
|
|
107
|
-
|
|
108
|
-
### 6. Signs You're Failing the Mom Test
|
|
109
|
-
|
|
110
|
-
In the meeting:
|
|
111
|
-
- You're talking more than they are
|
|
112
|
-
- You're defending your idea
|
|
113
|
-
- They're complimenting you
|
|
114
|
-
|
|
115
|
-
Back at the office:
|
|
116
|
-
- "That meeting went really well"
|
|
117
|
-
- "Everyone I talk to loves the idea"
|
|
118
|
-
- "We're getting a lot of positive feedback"
|
|
119
|
-
|
|
120
|
-
**These are warning signs.** Get specific: Why did they love it? What exactly would they use it for? What are they doing about this today?
|
|
121
|
-
|
|
122
|
-
### 7. The Process
|
|
123
|
-
|
|
124
|
-
**Before conversations:**
|
|
125
|
-
- Decide your 3 biggest learning goals
|
|
126
|
-
- Know what commitment/next step you'll push for
|
|
127
|
-
- Do desk research first (don't waste their time on Googleable questions)
|
|
128
|
-
|
|
129
|
-
**During conversations:**
|
|
130
|
-
- Frame it (vision, where you're at, how they can help)
|
|
131
|
-
- Keep it casual (not an interrogation)
|
|
132
|
-
- Ask good questions, deflect compliments, anchor fluff
|
|
133
|
-
- Take notes with symbols (☇ pain, $ money, ☆ follow-up)
|
|
134
|
-
- Push for commitment at the end
|
|
135
|
-
|
|
136
|
-
**After conversations:**
|
|
137
|
-
- Review notes with your team
|
|
138
|
-
- Update beliefs and plans
|
|
139
|
-
- Decide next 3 big questions
|
|
140
|
-
|
|
141
|
-
### 8. Synthesis
|
|
142
|
-
|
|
143
|
-
After your conversation, ask:
|
|
144
|
-
- Did I learn facts or collect opinions?
|
|
145
|
-
- Did they give up something valuable (time, reputation, money)?
|
|
146
|
-
- Would I bet money on what I learned?
|
|
147
|
-
- What do I need to learn next?
|
|
148
|
-
|
|
149
|
-
## Example
|
|
150
|
-
|
|
151
|
-
**Idea**: "App that helps remote workers find great cafés to work from"
|
|
152
|
-
|
|
153
|
-
### Bad Conversation (Fails the Mom Test)
|
|
154
|
-
|
|
155
|
-
You: "I'm building an app to help remote workers find cafés. Would you use it?"
|
|
156
|
-
Them: "Yeah, that sounds useful!"
|
|
157
|
-
You: "What features would you want?"
|
|
158
|
-
Them: "Maybe ratings for WiFi quality? And photos of the space?"
|
|
159
|
-
You: "Great! Do you think $5/month is reasonable?"
|
|
160
|
-
Them: "Sure, I'd pay that."
|
|
161
|
-
|
|
162
|
-
**What you learned:** Nothing useful. All fluff and hypotheticals.
|
|
163
|
-
|
|
164
|
-
### Good Conversation (Passes the Mom Test)
|
|
165
|
-
|
|
166
|
-
You: "Tell me about the last time you worked from a café—how did you find it?"
|
|
167
|
-
|
|
168
|
-
Them: "I usually just go to the same Starbucks near my house."
|
|
169
|
-
|
|
170
|
-
You: "Have you ever tried finding a new place? Walk me through what happened."
|
|
171
|
-
|
|
172
|
-
Them: "Yeah, last month I wanted somewhere quieter. I Googled 'cafés with WiFi' and checked Yelp reviews."
|
|
173
|
-
|
|
174
|
-
You: "How did that work out?"
|
|
175
|
-
|
|
176
|
-
Them: "It was okay. The reviews didn't mention WiFi speed, so I had to guess. One place had no outlets."
|
|
177
|
-
|
|
178
|
-
You: "How often do you look for new places?"
|
|
179
|
-
|
|
180
|
-
Them: "Honestly? Maybe once every few months. I mostly stick to what I know."
|
|
181
|
-
|
|
182
|
-
You: "What would make you try new places more often?"
|
|
183
|
-
|
|
184
|
-
Them: "I guess if I knew for sure the WiFi would be good. But honestly, reliability matters more than variety."
|
|
185
|
-
|
|
186
|
-
**What you learned:**
|
|
187
|
-
- They use existing tools (Google, Yelp) - you're competing with free
|
|
188
|
-
- WiFi reliability is the key pain (outlets mentioned too)
|
|
189
|
-
- Low frequency of need (monthly at best)
|
|
190
|
-
- Inertia is strong - they prefer familiar places
|
|
191
|
-
- This might not be a big enough pain to pay for
|
|
192
|
-
|
|
193
|
-
**Insight:** The problem exists but may not be severe enough to build a business around. The frequency is low and existing free tools partially solve it. Need to find users who need this more frequently (digital nomads? traveling salespeople?) or test whether someone would actually pay before building.
|
package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md
DELETED
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
# MVP Types
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
Choose the right type of Minimum Viable Product to test your riskiest assumption with the least effort, learning what you need before building what you don't.
|
|
5
|
-
|
|
6
|
-
## When to Use
|
|
7
|
-
- Ready to test a business hypothesis but unsure how to start
|
|
8
|
-
- Want to validate demand before building the full product
|
|
9
|
-
- Need to choose between different approaches to testing
|
|
10
|
-
- Have limited resources and need maximum learning per dollar
|
|
11
|
-
- Deciding what to build first
|
|
12
|
-
|
|
13
|
-
## Process
|
|
14
|
-
|
|
15
|
-
### 1. Identify Your Riskiest Assumption
|
|
16
|
-
|
|
17
|
-
Before choosing an MVP type, clarify what you're testing:
|
|
18
|
-
|
|
19
|
-
**Common Riskiest Assumptions:**
|
|
20
|
-
- Will customers pay for this? (Value hypothesis)
|
|
21
|
-
- Can we acquire customers cost-effectively? (Growth hypothesis)
|
|
22
|
-
- Can we actually build this? (Technical feasibility)
|
|
23
|
-
- Will customers use this repeatedly? (Retention hypothesis)
|
|
24
|
-
- Will customers recommend this? (Viral hypothesis)
|
|
25
|
-
|
|
26
|
-
The MVP type should be chosen to test your RISKIEST assumption with MINIMUM effort.
|
|
27
|
-
|
|
28
|
-
### 2. MVP Type Selection Matrix
|
|
29
|
-
|
|
30
|
-
| MVP Type | Best For Testing | Effort Level | Time to Learn |
|
|
31
|
-
|----------|------------------|--------------|---------------|
|
|
32
|
-
| Landing Page | Demand, messaging, pricing | Very Low | Days |
|
|
33
|
-
| Video/Demo | Demand, concept comprehension | Low | Days-Weeks |
|
|
34
|
-
| Concierge | Value delivery, workflow | Medium | Weeks |
|
|
35
|
-
| Wizard of Oz | Value delivery at scale | Medium-High | Weeks |
|
|
36
|
-
| Piecemeal | Full workflow without code | Medium | Weeks |
|
|
37
|
-
| Single-Feature | Core value proposition | High | Months |
|
|
38
|
-
| Smoke Test | Demand for specific feature | Very Low | Days |
|
|
39
|
-
|
|
40
|
-
### 3. MVP Types Explained
|
|
41
|
-
|
|
42
|
-
**Landing Page MVP**
|
|
43
|
-
- **What:** Marketing page describing the product with signup/pre-order
|
|
44
|
-
- **Tests:** Is there demand? Does the value prop resonate? Will they pay?
|
|
45
|
-
- **Process:** Create page → Drive traffic → Measure conversions
|
|
46
|
-
- **Success Metric:** Signup rate, pre-orders, email captures
|
|
47
|
-
- **Example:** Buffer started with a landing page describing the service and pricing before writing any code
|
|
48
|
-
|
|
49
|
-
**Video/Demo MVP**
|
|
50
|
-
- **What:** Explainer video showing how the product would work
|
|
51
|
-
- **Tests:** Do people understand and want this? Can we explain it simply?
|
|
52
|
-
- **Process:** Create video → Share with target audience → Measure engagement
|
|
53
|
-
- **Success Metric:** Shares, signups, comments
|
|
54
|
-
- **Example:** Dropbox's explainer video drove waiting list from 5,000 to 75,000
|
|
55
|
-
|
|
56
|
-
**Concierge MVP**
|
|
57
|
-
- **What:** Manually deliver the value to a small number of customers
|
|
58
|
-
- **Tests:** Does our solution actually solve the problem? What's the real workflow?
|
|
59
|
-
- **Process:** Find 1-5 customers → Deliver value by hand → Learn and iterate
|
|
60
|
-
- **Success Metric:** Customer satisfaction, willingness to pay, retention
|
|
61
|
-
- **Example:** Food on the Table founder personally planned meals and shopped with his first customer
|
|
62
|
-
|
|
63
|
-
**Wizard of Oz MVP**
|
|
64
|
-
- **What:** Looks automated to users, but humans do the work behind the scenes
|
|
65
|
-
- **Tests:** Will the solution work at scale? What does "good" look like?
|
|
66
|
-
- **Process:** Build interface → Manually fulfill requests → Iterate on experience
|
|
67
|
-
- **Success Metric:** User behavior, satisfaction, unit economics hints
|
|
68
|
-
- **Example:** Aardvark (acquired by Google) had humans answer questions before building AI
|
|
69
|
-
|
|
70
|
-
**Piecemeal MVP**
|
|
71
|
-
- **What:** Combine existing tools to deliver value without building
|
|
72
|
-
- **Tests:** Full workflow, integration points, customer acceptance
|
|
73
|
-
- **Process:** String together Typeform + Zapier + Airtable + Stripe
|
|
74
|
-
- **Success Metric:** Completion rates, customer satisfaction, revenue
|
|
75
|
-
- **Example:** Early marketplaces using Google Forms + manual matching + PayPal
|
|
76
|
-
|
|
77
|
-
**Single-Feature MVP**
|
|
78
|
-
- **What:** Build one core feature exceptionally well
|
|
79
|
-
- **Tests:** Core value hypothesis with real product
|
|
80
|
-
- **Process:** Build the ONE thing that matters most → Ship → Measure
|
|
81
|
-
- **Success Metric:** Usage, retention, satisfaction
|
|
82
|
-
- **Example:** Twitter launched with just "post 140 characters" - nothing else
|
|
83
|
-
|
|
84
|
-
**Smoke Test (Fake Door)**
|
|
85
|
-
- **What:** Button/link for a feature that doesn't exist, measuring interest
|
|
86
|
-
- **Tests:** Would people want this feature?
|
|
87
|
-
- **Process:** Add button → Track clicks → Show "coming soon" message
|
|
88
|
-
- **Success Metric:** Click-through rate vs. baseline
|
|
89
|
-
- **Example:** Amazon reportedly tested categories by adding links before building fulfillment
|
|
90
|
-
|
|
91
|
-
### 4. Choosing Your MVP Type
|
|
92
|
-
|
|
93
|
-
**If you need to test DEMAND:**
|
|
94
|
-
→ Landing Page MVP (fastest, cheapest)
|
|
95
|
-
→ Video MVP (if concept needs demonstration)
|
|
96
|
-
|
|
97
|
-
**If you need to test VALUE DELIVERY:**
|
|
98
|
-
→ Concierge MVP (for complex services)
|
|
99
|
-
→ Wizard of Oz MVP (for tech products)
|
|
100
|
-
→ Piecemeal MVP (for workflow-heavy products)
|
|
101
|
-
|
|
102
|
-
**If you need to test TECHNICAL FEASIBILITY:**
|
|
103
|
-
→ Single-Feature MVP (must actually build)
|
|
104
|
-
→ Prototype/Demo (to prove it's possible)
|
|
105
|
-
|
|
106
|
-
**If you need to test WILLINGNESS TO PAY:**
|
|
107
|
-
→ Landing Page with pricing tiers
|
|
108
|
-
→ Concierge with actual invoicing
|
|
109
|
-
→ Pre-orders with real money
|
|
110
|
-
|
|
111
|
-
### 5. MVP Design Principles
|
|
112
|
-
|
|
113
|
-
**Remove everything that doesn't test your hypothesis:**
|
|
114
|
-
- Feature X doesn't matter for this test? Remove it.
|
|
115
|
-
- Visual design doesn't affect the hypothesis? Use templates.
|
|
116
|
-
- Account system not needed for test? Skip it.
|
|
117
|
-
|
|
118
|
-
**Set clear success criteria BEFORE launching:**
|
|
119
|
-
- "Success = 100 signups in 2 weeks"
|
|
120
|
-
- "Success = 3 out of 5 concierge customers paying"
|
|
121
|
-
- "Success = 20% click-through on feature interest"
|
|
122
|
-
|
|
123
|
-
**Plan your learning questions:**
|
|
124
|
-
- What will this MVP tell us?
|
|
125
|
-
- What will it NOT tell us?
|
|
126
|
-
- What would make us abandon this idea?
|
|
127
|
-
- What would make us move forward?
|
|
128
|
-
|
|
129
|
-
### 6. Common Mistakes
|
|
130
|
-
|
|
131
|
-
**Building too much:** "It's not ready yet" is usually fear, not wisdom
|
|
132
|
-
**Testing the wrong thing:** Cool tech demo doesn't test market demand
|
|
133
|
-
**No success criteria:** "We'll know it when we see it" leads to confirmation bias
|
|
134
|
-
**Ignoring the results:** "Users didn't like it, but they will eventually..."
|
|
135
|
-
**Moving too fast from MVP to full build:** MVP success → more MVPs, not full product
|
|
136
|
-
|
|
137
|
-
### 7. Synthesis
|
|
138
|
-
|
|
139
|
-
After choosing and designing your MVP:
|
|
140
|
-
- What specific hypothesis does this test?
|
|
141
|
-
- What's the minimum required to run this test?
|
|
142
|
-
- What would "validated" look like? What would "invalidated" look like?
|
|
143
|
-
- How long until we have results?
|
|
144
|
-
- What will we do with each possible outcome?
|
|
145
|
-
|
|
146
|
-
## Example
|
|
147
|
-
|
|
148
|
-
**Idea**: "AI-powered legal contract review for freelancers"
|
|
149
|
-
|
|
150
|
-
### Riskiest Assumptions
|
|
151
|
-
|
|
152
|
-
1. Freelancers actually worry about contracts (demand)
|
|
153
|
-
2. They'll pay for contract review (willingness to pay)
|
|
154
|
-
3. AI can provide accurate, useful feedback (technical feasibility)
|
|
155
|
-
4. They'll trust AI for legal advice (adoption/trust)
|
|
156
|
-
|
|
157
|
-
### MVP Selection
|
|
158
|
-
|
|
159
|
-
**Riskiest assumption:** #2 - Will freelancers pay for this?
|
|
160
|
-
|
|
161
|
-
(#1 can be tested through conversations; #3 and #4 matter only if #2 is true)
|
|
162
|
-
|
|
163
|
-
**Selected MVP Type:** Landing Page + Concierge combo
|
|
164
|
-
|
|
165
|
-
### MVP Design
|
|
166
|
-
|
|
167
|
-
**Phase 1: Landing Page (1 week)**
|
|
168
|
-
- Value proposition: "AI contract review for freelancers - $29 per contract"
|
|
169
|
-
- Target: Freelancer communities (Reddit, Twitter, Slack groups)
|
|
170
|
-
- CTA: "Upload your contract for review"
|
|
171
|
-
- Success criteria: 20 uploads in 2 weeks
|
|
172
|
-
|
|
173
|
-
**Phase 2: Concierge (if Phase 1 succeeds)**
|
|
174
|
-
- Manually review uploaded contracts
|
|
175
|
-
- Use AI tools to assist (but human reviews output)
|
|
176
|
-
- Send back marked-up contract with concerns highlighted
|
|
177
|
-
- Charge $29 via Stripe
|
|
178
|
-
- Success criteria: 5 paid reviews in 2 weeks
|
|
179
|
-
|
|
180
|
-
### Learning Questions
|
|
181
|
-
|
|
182
|
-
**Phase 1 will tell us:**
|
|
183
|
-
- Is there demand? (upload rate)
|
|
184
|
-
- Does the value prop resonate? (which headlines work)
|
|
185
|
-
- What types of contracts? (scope of problem)
|
|
186
|
-
|
|
187
|
-
**Phase 1 will NOT tell us:**
|
|
188
|
-
- Will they actually pay? (need Phase 2)
|
|
189
|
-
- Will they come back? (need Phase 2)
|
|
190
|
-
|
|
191
|
-
**Phase 2 will tell us:**
|
|
192
|
-
- Will they pay? (conversion rate)
|
|
193
|
-
- What's the real workflow? (manual process reveals it)
|
|
194
|
-
- What makes a "good" review? (customer feedback)
|
|
195
|
-
|
|
196
|
-
**Kill criteria:**
|
|
197
|
-
- Phase 1: <5 uploads → Abandon
|
|
198
|
-
- Phase 2: <20% conversion to paid → Pivot price or value prop
|
|
199
|
-
|
|
200
|
-
**Insight:** By sequencing Landing Page → Concierge, we test demand quickly and cheaply before investing in manual delivery. If demand doesn't exist, we haven't wasted time building the service.
|
package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/og-images.md
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: og-images
|
|
3
|
-
description: Generates Open Graph and Twitter Card images for social media sharing. Use when someone needs to create or update OG images, social media preview images, or Twitter cards. Triggers include "generate OG images", "create social images", "update twitter card", "social media previews", or when discussing meta tags for social sharing.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# OG Image Generator
|
|
7
|
-
|
|
8
|
-
This skill generates Open Graph (OG) and Twitter Card images for social media sharing using a Next.js page and Playwright screenshots.
|
|
9
|
-
|
|
10
|
-
## Overview
|
|
11
|
-
|
|
12
|
-
The system consists of:
|
|
13
|
-
1. **OG Page** (`/app/og/page.tsx`) - A Next.js page that renders the image at exact dimensions
|
|
14
|
-
2. **OG Layout** (`/app/og/layout.tsx`) - A wrapper layout for the OG route
|
|
15
|
-
3. **Playwright** - Takes screenshots at the correct viewport sizes
|
|
16
|
-
4. **Static Images** - Saved to `/public/` for use in meta tags
|
|
17
|
-
|
|
18
|
-
## Image Formats & Dimensions
|
|
19
|
-
|
|
20
|
-
| Format | Dimensions | Use Case |
|
|
21
|
-
|--------|------------|----------|
|
|
22
|
-
| Landscape | 1200×628 | Twitter, LinkedIn, Facebook, Open Graph |
|
|
23
|
-
| Square | 1200×1200 | Instagram, general social |
|
|
24
|
-
| Portrait | 1080×1350 | Instagram feed, mobile-first platforms |
|
|
25
|
-
| LinkedIn Banner | 4200×700 | LinkedIn company page cover image |
|
|
26
|
-
|
|
27
|
-
## Workflow
|
|
28
|
-
|
|
29
|
-
### Step 1: Create/Update the OG Page
|
|
30
|
-
|
|
31
|
-
The OG page at `/app/og/page.tsx` should:
|
|
32
|
-
|
|
33
|
-
1. Accept a `format` query parameter (`landscape`, `square`, `portrait`)
|
|
34
|
-
2. Render at exact dimensions using inline styles with min/max constraints
|
|
35
|
-
3. Use the site's branding (colors, fonts, logo)
|
|
36
|
-
4. Include the hero image with proper styling (rounded corners, glow/shadow)
|
|
37
|
-
|
|
38
|
-
**Key styling requirements:**
|
|
39
|
-
- Set explicit `width`, `height`, `minWidth`, `maxWidth`, `minHeight`, `maxHeight` on the container
|
|
40
|
-
- Use `overflow: "hidden"` to prevent content overflow
|
|
41
|
-
- Apply `borderRadius` and `boxShadow` directly to `<Image>` elements (not containers) when using `objectFit: "contain"`
|
|
42
|
-
- For images that should fill their container, use `fill` prop with `objectFit: "cover"`
|
|
43
|
-
|
|
44
|
-
**Example structure:**
|
|
45
|
-
```tsx
|
|
46
|
-
const dimensions: Record<Format, { width: number; height: number }> = {
|
|
47
|
-
landscape: { width: 1200, height: 628 },
|
|
48
|
-
square: { width: 1200, height: 1200 },
|
|
49
|
-
portrait: { width: 1080, height: 1350 },
|
|
50
|
-
"linkedin-banner": { width: 4200, height: 700 },
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export default async function OGImage({
|
|
54
|
-
searchParams,
|
|
55
|
-
}: {
|
|
56
|
-
searchParams: Promise<{ format?: string }>;
|
|
57
|
-
}) {
|
|
58
|
-
const params = await searchParams;
|
|
59
|
-
const format = (params.format as Format) || "landscape";
|
|
60
|
-
const { width, height } = dimensions[format] || dimensions.landscape;
|
|
61
|
-
|
|
62
|
-
return (
|
|
63
|
-
<div style={{
|
|
64
|
-
width,
|
|
65
|
-
height,
|
|
66
|
-
minWidth: width,
|
|
67
|
-
maxWidth: width,
|
|
68
|
-
minHeight: height,
|
|
69
|
-
maxHeight: height,
|
|
70
|
-
display: "flex",
|
|
71
|
-
// ... rest of styles
|
|
72
|
-
}}>
|
|
73
|
-
{/* Content */}
|
|
74
|
-
</div>
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Step 2: Create the Layout
|
|
80
|
-
|
|
81
|
-
Create `/app/og/layout.tsx` to wrap the OG page:
|
|
82
|
-
|
|
83
|
-
```tsx
|
|
84
|
-
export default function OGLayout({ children }: { children: React.ReactNode }) {
|
|
85
|
-
return (
|
|
86
|
-
<div
|
|
87
|
-
style={{
|
|
88
|
-
margin: 0,
|
|
89
|
-
padding: 0,
|
|
90
|
-
overflow: "hidden",
|
|
91
|
-
backgroundColor: "#1a1f25",
|
|
92
|
-
minHeight: "100vh",
|
|
93
|
-
}}
|
|
94
|
-
>
|
|
95
|
-
{children}
|
|
96
|
-
</div>
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Step 3: Hide from Search Engines
|
|
102
|
-
|
|
103
|
-
Add to `/public/robots.txt`:
|
|
104
|
-
```
|
|
105
|
-
# Hide internal OG image generation page
|
|
106
|
-
Disallow: /og
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Step 4: Generate Images with Playwright
|
|
110
|
-
|
|
111
|
-
Run the dev server, then use Playwright to screenshot each format:
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
# Portrait (1080×1350)
|
|
115
|
-
npx playwright screenshot --viewport-size="1080,1350" "http://localhost:3001/og?format=portrait" public/og-portrait.png
|
|
116
|
-
|
|
117
|
-
# Landscape (1200×628)
|
|
118
|
-
npx playwright screenshot --viewport-size="1200,628" "http://localhost:3001/og?format=landscape" public/og-landscape.png
|
|
119
|
-
|
|
120
|
-
# Square (1200×1200)
|
|
121
|
-
npx playwright screenshot --viewport-size="1200,1200" "http://localhost:3001/og?format=square" public/og-square.png
|
|
122
|
-
|
|
123
|
-
# LinkedIn Banner (4200×700)
|
|
124
|
-
npx playwright screenshot --viewport-size="4200,700" "http://localhost:3001/og?format=linkedin-banner" public/og-linkedin-banner.png
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Step 5: Update Meta Tags
|
|
128
|
-
|
|
129
|
-
In `/app/layout.tsx`, add the OG and Twitter meta tags:
|
|
130
|
-
|
|
131
|
-
```tsx
|
|
132
|
-
export const metadata: Metadata = {
|
|
133
|
-
openGraph: {
|
|
134
|
-
title: "Your Title",
|
|
135
|
-
description: "Your description",
|
|
136
|
-
images: [
|
|
137
|
-
{
|
|
138
|
-
url: "/og-landscape.png",
|
|
139
|
-
width: 1200,
|
|
140
|
-
height: 628,
|
|
141
|
-
alt: "Description",
|
|
142
|
-
},
|
|
143
|
-
],
|
|
144
|
-
type: "website",
|
|
145
|
-
},
|
|
146
|
-
twitter: {
|
|
147
|
-
card: "summary_large_image",
|
|
148
|
-
title: "Your Title",
|
|
149
|
-
description: "Your description",
|
|
150
|
-
images: ["/og-landscape.png"],
|
|
151
|
-
},
|
|
152
|
-
};
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## LinkedIn Banner Layout
|
|
156
|
-
|
|
157
|
-
The LinkedIn company page cover image (4200×700) uses a split layout: the left 50% is empty space showing only the background wallpaper, and the right 50% contains all text and the company logo. This accounts for the LinkedIn profile photo and company info that overlay the left side of the banner on the LinkedIn page.
|
|
158
|
-
|
|
159
|
-
**Layout principles:**
|
|
160
|
-
- Use a two-column flex layout with each half at 50% width
|
|
161
|
-
- Left half: empty — only the background image/wallpaper shows through
|
|
162
|
-
- Right half: company logo and any text, right-aligned or centered within that half
|
|
163
|
-
- Keep text minimal and large enough to read at reduced sizes (LinkedIn scales the banner down)
|
|
164
|
-
- The background wallpaper should span the full 4200×700 area behind both halves
|
|
165
|
-
|
|
166
|
-
**Example structure:**
|
|
167
|
-
```tsx
|
|
168
|
-
{format === "linkedin-banner" && (
|
|
169
|
-
<div style={{
|
|
170
|
-
width: 4200,
|
|
171
|
-
height: 700,
|
|
172
|
-
display: "flex",
|
|
173
|
-
position: "relative",
|
|
174
|
-
overflow: "hidden",
|
|
175
|
-
}}>
|
|
176
|
-
{/* Background wallpaper spanning full width */}
|
|
177
|
-
<Image src="/background.jpg" alt="" fill style={{ objectFit: "cover" }} />
|
|
178
|
-
|
|
179
|
-
{/* Left half: intentionally empty (background only) */}
|
|
180
|
-
<div style={{ width: "50%", flexShrink: 0 }} />
|
|
181
|
-
|
|
182
|
-
{/* Right half: logo and text */}
|
|
183
|
-
<div style={{
|
|
184
|
-
width: "50%",
|
|
185
|
-
display: "flex",
|
|
186
|
-
flexDirection: "column",
|
|
187
|
-
alignItems: "flex-end",
|
|
188
|
-
justifyContent: "center",
|
|
189
|
-
padding: "32px 48px",
|
|
190
|
-
position: "relative",
|
|
191
|
-
zIndex: 1,
|
|
192
|
-
}}>
|
|
193
|
-
<Image src="/logo.png" alt="Company Logo" width={120} height={120} />
|
|
194
|
-
<h1 style={{ color: "#fff", fontSize: 28, marginTop: 16 }}>Company Name</h1>
|
|
195
|
-
<p style={{ color: "#ccc", fontSize: 16 }}>Tagline goes here</p>
|
|
196
|
-
</div>
|
|
197
|
-
</div>
|
|
198
|
-
)}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
## Common Issues & Solutions
|
|
202
|
-
|
|
203
|
-
### Image appears truncated
|
|
204
|
-
- Use `objectFit: "contain"` instead of `"cover"`
|
|
205
|
-
- Ensure container has enough height for the image
|
|
206
|
-
|
|
207
|
-
### Rounded corners not visible
|
|
208
|
-
- Apply `borderRadius` directly to the `<Image>` style prop, not the container
|
|
209
|
-
- This is required when using `objectFit: "contain"` because the image doesn't fill the container
|
|
210
|
-
|
|
211
|
-
### Shadow not visible
|
|
212
|
-
- Use a colored glow (e.g., cyan) instead of pure black on dark backgrounds
|
|
213
|
-
- Example: `boxShadow: "0 0 60px rgba(0, 212, 255, 0.3), 0 20px 60px rgba(0, 0, 0, 0.5)"`
|
|
214
|
-
|
|
215
|
-
### Icon not filling container
|
|
216
|
-
- Use `fill` prop on Next.js Image component
|
|
217
|
-
- Add `position: "relative"` to container and `objectFit: "cover"` to image
|
|
218
|
-
|
|
219
|
-
### Wrong dimensions in screenshot
|
|
220
|
-
- Set explicit min/max constraints on the outer container
|
|
221
|
-
- Use the exact viewport size in Playwright command
|
|
222
|
-
|
|
223
|
-
## Regenerating Images
|
|
224
|
-
|
|
225
|
-
When making changes to the OG page, always regenerate all three images:
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
npx playwright screenshot --viewport-size="1080,1350" "http://localhost:3001/og?format=portrait" public/og-portrait.png && \
|
|
229
|
-
npx playwright screenshot --viewport-size="1200,628" "http://localhost:3001/og?format=landscape" public/og-landscape.png && \
|
|
230
|
-
npx playwright screenshot --viewport-size="1200,1200" "http://localhost:3001/og?format=square" public/og-square.png && \
|
|
231
|
-
npx playwright screenshot --viewport-size="4200,700" "http://localhost:3001/og?format=linkedin-banner" public/og-linkedin-banner.png
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
## Verification
|
|
235
|
-
|
|
236
|
-
After generating, verify:
|
|
237
|
-
1. Images exist in `/public/` with correct file sizes
|
|
238
|
-
2. Dimensions are correct (use an image viewer or `file` command)
|
|
239
|
-
3. Visual appearance matches design (open the files to inspect)
|