SuperAPI AI Directory

mvp-first

Design & creation

View repository

Updated 10-15 23:47

About this skill

MVP First

Prerequisite Protocol

Environment Detection

PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || echo "unknown")
BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")

echo "PROJECT: $PROJECT_ROOT"
echo "BRANCH: $BRANCH"
echo "COMMIT: $COMMIT"

Prerequisite Skill Check

# 检查前置工件
GOAL_ARTIFACT="memory/artifacts/goal-oriented/latest.json"
DDD_ARTIFACT="memory/artifacts/ddd-strategic/latest.json"

if [ -f "$GOAL_ARTIFACT" ]; then
  echo "FOUND: goal-oriented artifact"
fi

if [ -f "$DDD_ARTIFACT" ]; then
  echo "FOUND: ddd-strategic-design artifact"
fi

mkdir -p memory/artifacts/mvp-first
MVP First

Overview

MVP (Minimum Viable Product) is not "minimum usable product", but "minimum verifiable product".

Core purpose:Validate key assumptions at minimum cost, to avoid investing large amounts of resources based on unvalidated assumptions.

The goal of an MVP is learning, not delivering a product. Every MVP is answering a key question: do users really need this?

When to Use

digraph when_to_use {
    rankdir=TB;
    node [shape=box, style=filled, color="#c8e6c9"];

    "用户提出新需求" [shape=ellipse, color="#bbdefb"];
    "功能是否复杂?" [shape=diamond, color="#fff9c4"];
    "是否验证过假设?" [shape=diamond, color="#fff9c4"];
    "直接实现" [color="#f8bbd0"];
    "应用 MVP 思维" [color="#c8e6c9"];

    "用户提出新需求" -> "功能是否复杂?";
    "功能是否复杂?" -> "直接实现" [label="否, 简单修改"];
    "功能是否复杂?" -> "是否验证过假设?" [label="是, 新系统"];
    "是否验证过假设?" -> "直接实现" [label="是"];
    "是否验证过假设?" -> "应用 MVP 思维" [label="否"];
}

Trigger scenarios:

  • The user says "I want to build an XX feature", "help me plan this project"
  • The feature involves multiple subsystems or a complex architecture
  • The user has not validated the requirement assumptions

Not applicable scenarios:

  • Simple bug fixes or configuration changes
  • The user explicitly requests a complete solution
  • Project iterations where the requirements have already been validated

The MVP Mindset

Core Questions (Must Ask Before Implementation)

Before giving any implementation plan, you must answer:

  1. What is the core assumption?

    • Do users really need this feature?
    • Will users use this feature?
    • Can this feature solve the user's problem?
  2. What is the minimum validation cost?

    • How can the assumption be validated with the least time and resources?
    • Can it be done manually first?
    • Can existing tools be used instead of development?
  3. What is the criterion for successful validation?

    • How many users using it counts as success?
    • What data proves the assumption holds?
    • How long until a conclusion can be reached?

MVP is NOT

❌ MVP 不是"功能简化版"
   - "保留核心功能,砍掉次要功能" → 这是产品规划,不是 MVP
   - MVP 的目标不是交付产品,而是验证假设

❌ MVP 不是"上线最小可用版本"
   - "先上线再迭代" → 可能浪费数周开发用户不需要的功能
   - MVP 可以不上线,甚至不需要写代码

❌ MVP 不是"快速交付"
   - "1周上线" → 如果方向错误,1周也是浪费
   - MVP 的目标是学习方向,不是交付速度

The Process

digraph mvp_process {
    rankdir=TB;
    node [shape=box, style=filled];

    "识别假设" [color="#c8e6c9"];
    "定义验证目标" [color="#bbdefb"];
    "设计最小实验" [color="#fff9c4"];
    "实施并测量" [color="#f8bbd0"];
    "分析结果" [color="#e1bee7"];
    "假设成立?" [shape=diamond, color="#fff9c4"];
    "继续投入" [color="#c8e6c9"];
    "调整或放弃" [color="#f8bbd0"];

    "识别假设" -> "定义验证目标";
    "定义验证目标" -> "设计最小实验";
    "设计最小实验" -> "实施并测量";
    "实施并测量" -> "分析结果";
    "分析结果" -> "假设成立?";
    "假设成立?" -> "继续投入" [label="是"];
    "假设成立?" -> "调整或放弃" [label="否"];
    "继续投入" -> "识别假设" [label="下一步假设"];
    "调整或放弃" -> "识别假设" [label="新假设"];
}

Step 1: Identify key assumptions

User requirements usually contain multiple implicit assumptions; identify the one with the highest risk.

Example: the user wants a "comment system"

  • Assumption 1: Users are willing to post comments on the platform
  • Assumption 2: Users care about other people's comments
  • Assumption 3: Comments will increase user stickiness
  • Assumption 4: A review and filtering mechanism is needed

Highest-risk assumption: Assumption 1 - If users do not comment at all, the other assumptions do not hold.

Step 2: Define validation goals

Define success criteria with numbers.

Example: validate whether users will comment

  • Success criterion: at least 50 users post comments within 1 week
  • Validation period: 7 days
  • Failure criterion: < 10 users comment, or the comment content quality is too low

Step 3: Design the minimum experiment

Find the lowest-cost way to validate the assumption.

Common MVP patterns (from low to high cost):

Pattern Cost Applicable scenario Example
Manual service Extremely low Validate whether the need exists Use Google Form to collect comment needs, reply manually
Landing page Low Validate user willingness Make a "comment feature coming soon" page and collect email subscriptions
Fake door Low Validate user interest Place a "comment" button; after clicking, show "feature under development"
Wizard-style Medium Validate user experience Comments are processed manually in the backend, but the frontend looks like a real feature
Single feature Medium Validate core value Only post comments + view comments, no other features

Step 4: Implement and measure

Only build the features necessary to validate the hypothesis.

Code example: fake door MVP (validate whether users want a comment feature)

<!-- 评论按钮 - 假门 MVP -->
<button id="comment-btn" class="btn-primary">
  发表评论
</button>

<div id="feedback-modal" style="display:none;">
  <p>评论功能正在开发中!</p>
  <p>留下您的邮箱,功能上线第一时间通知您:</p>
  <input type="email" id="user-email" placeholder="your@email.com">
  <button onclick="submitEmail()">提交</button>
</div>

<script>
document.getElementById('comment-btn').addEventListener('click', function() {
  // 记录点击次数 - 这是最重要的数据
  trackEvent('comment_button_clicked');

  // 显示收集邮箱的模态框
  document.getElementById('feedback-modal').style.display = 'block';
});

function submitEmail() {
  const email = document.getElementById('user-email').value;
  // 发送到后端记录
  saveEmail(email);
  alert('感谢您的关注!');
}
</script>

Cost: 30 minutes of development + 1 week of observation Learning: Click-through rate > 5% → users really want a comment feature

Step 5: Analyze and decide

Make decisions based on data, not intuition.

Three outcomes:

  • Hypothesis holds(data meets target) → continue investing in the next layer of features
  • Hypothesis fails(data does not meet target) → abandon or adjust direction
  • Insufficient data → extend the validation period or improve the experiment design

MVP Layers (layered validation)

Do not build the complete system all at once; validate step by step by layer:

【示例:评论系统的 MVP 分层】

Layer 0: 验证需求是否存在
- 方式:假门按钮(点击后显示"功能开发中")
- 成本:30 分钟
- 目标:点击率 > 5%

Layer 1: 验证用户会使用功能
- 方式:只能发表评论 + 显示评论(无审核、无过滤、无回复)
- 成本:1 天开发
- 目标:1 周内 50+ 用户发表评论

Layer 2: 验证用户需要内容质量控制
- 方式:加审核功能(发现垃圾评论时再加)
- 成本:1 天开发
- 目标:审核通过率 > 80%

Layer 3: 验证用户需要互动
- 方式:加点赞功能(观察用户是否想要互动)
- 成本:0.5 天开发
- 目标:点赞率 > 10%

Layer 4: 验证用户需要复杂互动
- 方式:加回复功能(观察单层评论是否不够)
- 成本:1 天开发
- 目标:评论中 @他人 的比例 > 5%

Key principle: each layer is an independent MVP, and only after validating one hypothesis do you move to the next layer.

Common Mistakes

1. ❌ "Keep the core features" is not an MVP

用户需求:评论系统(评论、回复、点赞、审核、过滤)

❌ 错误的 MVP 思维:
"保留核心功能:评论、回复、点赞、审核、敏感词过滤"
→ 这仍然是完整系统,只是去掉了积分等次要功能
→ 开发成本:1 周

✅ 正确的 MVP 思维:
"Layer 0: 假门按钮,验证用户是否想要评论功能"
→ 成本:30 分钟
→ 如果点击率 < 5%,直接省下 1 周开发时间

2. ❌ "Iterate after launch" is not an MVP

用户需求:用户等级系统

❌ 错误的 MVP 思维:
"先上线基础等级系统(5个等级、积分规则、权限控制),后续再加徽章、排行榜"
→ 开发成本:3 天
→ 问题:可能用户根本不在乎等级

✅ 正确的 MVP 思维:
"做一个静态的等级显示(根据注册时间显示等级),观察用户是否在意等级"
→ 成本:2 小时
→ 学习:查看个人主页的用户中,看等级信息的比例 > 30% → 继续投入

3. ❌ An MVP must be code

用户需求:积分商城

❌ 错误的 MVP 思维:
"开发一个简单的商城页面,用户可以用积分兑换虚拟商品"
→ 成本:2 天开发

✅ 正确的 MVP 思维:
"在社区发帖:'积分兑换功能即将上线,大家希望兑换什么?' 收集 50+ 回复"
→ 成本:30 分钟
→ 学习:如果没人回复,说明积分商城不是刚需

4. ❌ An MVP can delay launch

用户需求:个性化推荐

❌ 错误的 MVP 思维:
"开发一个简单的推荐算法(协同过滤),下周上线验证效果"
→ 问题:如果推荐效果差,不知道是算法问题还是用户不需要

✅ 正确的 MVP 思维:
"在热门内容列表中随机插入 1 条'编辑推荐',观察点击率"
→ 成本:1 小时
→ 学习:编辑推荐的点击率 > 随机内容的 2 倍 → 说明用户需要推荐
→ 下一步:开发真正的推荐算法

Handling User Pushback

Users often oppose the MVP approach for various reasons. Below are common objections and persuasion techniques:

Objection 1: "Competitors already have complete features"

The user's concern: market competition pressure, fear of losing users

Persuasion strategy:

✅ 用数据说话:

"我理解你的压力。但正因为需要快速上线,MVP 更重要:

**时间现实分析:**
- 完整功能:8个模块 × 3-5天 = 24-40天
- MVP:4.5天
- 延期风险:完整功能 100% 延期 3-4周 → 用户流失更严重

**市场风险对比:**
- 方案A(完整功能延期):上线延迟 3-4周 → 竞争对手领先更久
- 方案B(MVP快速上线):下周有功能 → 立即获得用户反馈,快速迭代追赶

**建议**:先用 MVP 上线核心功能,获得市场反馈,再快速迭代。"

Objection 2: "We're launching next week, no time for experiments"

The user's concern: time is tight, and they think the MVP will cause delays

Persuasion strategy:

✅ 重构时间认知:

"**MVP 不是拖延,而是加速:**

传统方式:开发 2 周 → 测试 1 周 → 上线发现用户不需要 → 浪费 3 周
MVP 方式:实验 3 天 → 验证失败 → 立即转向 → 节省 2.5 周

**关键**:如果方向错了,开发再快也是浪费。MVP 帮你在 3 天内发现方向错误,而不是 3 周。

**建议**:用 30 分钟做 Layer 0(假门),如果点击率 < 5%,直接省下 1 周开发时间。"

Objection 3: "Users will definitely need this feature"

The user's concern: they trust their own judgment and think validation is a waste of time

Persuasion strategy:

✅ 引用数据/案例:

"**数据显示,70% 的功能用户并不需要:**

- 某社交平台开发私信功能(2周),上线后使用率 < 1%
- 如果先用假门测试(30分钟),能省下 2 周时间

**问题**:你觉得用户需要,但:
- 用户真的会使用吗?
- 使用频率有多高?
- 用户愿意付出什么代价?

**建议**:用半天时间验证假设,成本极低,但能避免数周浪费。"

Objection 4: "Just give me the complete plan, I'll decide myself"

The user's concern: they feel the agent is lecturing and want autonomy

Persuasion strategy:

✅ 提供选择,而不是说教:

"好的,我可以给你两个方案:

**方案A(MVP)**:
- Layer 0:假门按钮(30分钟)
- Layer 1:基础评论(1天)
- 总成本:1.5天
- 风险:极低,随时可以停止

**方案B(完整功能)**:
- 数据库设计:7张表
- 接口开发:15个接口
- 功能开发:8个模块
- 总成本:4-6周
- 风险:高,可能开发用户不需要的功能

我建议方案A,但最终由你决定。你希望我先提供哪个方案的详细设计?"

Objection 5: "The MVP is too crude, the user experience will be poor"

The user's concern: worried that the MVP will affect brand image

Persuasion strategy:

✅ 区分"简陋"和"聚焦":

"**MVP 不是粗制滥造,而是功能聚焦:**

❌ 粗糙的 MVP:Bug 多、界面丑、性能差
✅ 正确的 MVP:功能少、但质量高、体验好

**案例**:
- Dropbox MVP:只是一个演示视频,没有真实产品
- 结果:7万人排队等候,验证了需求
- 成本:3 天制作视频

**建议**:做一个小但精致的 MVP,核心功能打磨到位,比大而粗糙的产品更有价值。"

Summary of persuasion techniques

Technique Description Example
Let data speak Show a time-cost comparison "Complete features 4-6 weeks, MVP 1.5 days"
Reframe perception An MVP is acceleration, not delay "Discover mistakes in 3 days vs discover mistakes in 3 weeks"
Cite cases Real failure cases "70% of features users don't need"
Offer choices Make users feel autonomous "I'll give you two options, you decide"
Distinguish concepts MVP ≠ rough "Small and refined vs. large and rough"

Core Principles: Understand the user's real concerns (competitive pressure, time pressure, brand image), and persuade with data and logic, not preaching.

Common Rationalization Excuse Identification Table

When users reject an MVP for the following reasons, identify the underlying thinking pattern:

User says Underlying rationalization Essential issue MVP response method
"This feature is very simple" Underestimating complexity Not considering subsystems or edge cases List all subsystems (database, interface, frontend, testing) and show the real cost
"Competitors already have it" FOMO (fear of missing out) Imitation ≠ validation Are the competitor's users the same as our users? First validate whether our users need it
"Users definitely need it" Substituting assumptions for data Intuition ≠ fact Design a minimal experiment (half-day cost) and let the data speak
"Time is very tight" Urgency masks risk Fast ≠ right MVP is acceleration, not delay: discovering a mistake in 3 days vs. 3 weeks
"Launch first, then iterate" Delaying validation Launching ≠ validating If the direction is wrong, launching is a waste. First validate the direction with a fake door
"I know what users want" Overconfidence Survivorship bias You asked active users, but what about the silent users? Test everyone with a fake door
"This is just a small feature" Ignoring cumulative cost Small feature × N = large system Small features also need validation. Use a static implementation to test whether users will really click
"We have already planned it" Sunk cost fallacy High planning cost ≠ must implement A plan is an assumption, not a fact. Validate the assumption at minimum cost

How to use:

  1. Identify the user's type of rationalization (see column 2 of the table)
  2. Understand the essential issue (column 3)
  3. Apply the corresponding response method (column 4)
  4. Persuade with data and logic, not emotional argument

Real-World Impact

Case: A social platform wants to develop a "direct message feature"

Traditional approach (without MVP thinking):

  • Development cost: 2 weeks (message storage, real-time push, read status, message list, sending interface)
  • After launch: usage rate among daily active users < 1%
  • Wasted: 2 weeks of development time + server resources

MVP approach:

  • Layer 0 (fake door): Place a "direct message" button on the profile page, and clicking it shows "feature in development" (cost: 30 minutes)
  • Observe for 3 days: click-through rate 0.3% → abandon development
  • Saved: 2 weeks of development time

Result comparison:

Metric Traditional approach MVP approach
Development cost 2 weeks 30 minutes
Learning cycle 2 weeks + 1 week 3 days
Resource waste High Extremely low

Quick Reference

User says... MVP mindset response
"I want to build an XX feature" "First make a fake door to see if users really want it"
"This feature is urgent" "The fastest way to validate is: first build the simplest version to verify whether the direction is right"
"First implement the core feature" "The core feature is also an assumption. Which assumption has the highest risk? Validate that one first"
"Users definitely need it" "Validate with data. Design a minimal experiment that costs no more than half a day"
"Competitors all have this feature" "Are the competitor's users the same as our users? First validate whether our users need it"

Red Flags - You're NOT Doing MVP

  • You are "cutting features" but haven't asked "what is the most core assumption"
  • Your MVP needs > 2 days of development time
  • You are planning database table structures instead of planning validation experiments
  • You are saying "launch first, then iterate" instead of "validate first, then invest"
  • Your MVP includes "infrastructure" such as review, filtering, permissions, etc.
  • You haven't defined the numerical criteria for successful validation

Seeing these signals → stop and rethink: what assumption am I validating?

References

  • The Lean Startup - Eric Ries (originator of the MVP concept)
  • Running Lean - Ash Maurya (practical MVP methods)
  • The Mom Test - Rob Fitzpatrick (how to validate demand)

Post-protocol

Artifact output

Save the MVP planning results to the artifact file:

TIMESTAMP=$(date +%Y%m%d-%H%M%S)
ARTIFACT_FILE="memory/artifacts/mvp-first/result-$TIMESTAMP.json"

cat > "$ARTIFACT_FILE" <<EOFJSON
{
  "skill": "mvp-first",
  "version": "2.0.0",
  "timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
  "project": "$PROJECT_ROOT",
  "branch": "$BRANCH",
  "commit": "$COMMIT",
  "input": {
    "user_request": "用户的原始请求"
  },
  "output": {
    "mvp_features": [],
    "non_mvp_features": [],
    "mvp_timeline": "",
    "key_assumptions": [],
    "validation_metrics": []
  },
  "next_skills": [
    "pdca-cycle"
  ]
}
EOFJSON

echo "ARTIFACT SAVED: $ARTIFACT_FILE"
ln -sf "$ARTIFACT_FILE" memory/artifacts/mvp-first/latest.json

Target file update

If the target file exists, record that MVP planning is complete.

Suggested follow-up skills

## 后续建议

基于 MVP 规划结果,建议继续执行:

**推荐技能链**:
1. /pdca-cycle - 进入 PDCA 循环实施阶段

是否继续执行?
- A) 执行推荐的技能链
- B) 不继续,结束当前任务