fogg-behavior-model
Design behavior change using the B=MAP framework. Use when designing onboarding flows, improving conversion, building habits, increasing feature adoption, or understanding why users don't take desired actions.
Best use case
fogg-behavior-model is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Design behavior change using the B=MAP framework. Use when designing onboarding flows, improving conversion, building habits, increasing feature adoption, or understanding why users don't take desired actions.
Teams using fogg-behavior-model should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/fogg-behavior-model/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How fogg-behavior-model Compares
| Feature / Agent | fogg-behavior-model | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Design behavior change using the B=MAP framework. Use when designing onboarding flows, improving conversion, building habits, increasing feature adoption, or understanding why users don't take desired actions.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Fogg Behavior Model - B = MAP
The Fogg Behavior Model explains that three elements must converge at the same
moment for a behavior to occur: **Motivation**, **Ability**, and a **Prompt**.
When a behavior does not occur, at least one of these elements is missing.
## When to Use This Skill
- Designing onboarding and activation flows
- Improving conversion rates
- Building habit-forming products
- Increasing feature adoption
- Understanding why users drop off
- Planning behavior change interventions
## The B = MAP Formula
```
┌─────────────────────────────────────────────────────────────────┐
│ BEHAVIOR = MAP │
│ │
│ Behavior happens when Motivation, Ability, and Prompt │
│ come together at the SAME MOMENT. │
│ │
│ When behavior doesn't happen → at least one is missing. │
└─────────────────────────────────────────────────────────────────┘
High │ ·····
M │ ····· Behavior
o │ ····· Happens
t │ ····· Here
i │····─────────────────────────────
v │ Action Line
a │
t │ Behavior
i │ Fails
o │ Here
n │
Low └─────────────────────────────────────
Hard ←── Ability ──→ Easy
Prompts only work above the Action Line.
```
## The Three Elements
### 1. Motivation
**What drives the user to act?**
```
Motivation Sources:
Core Motivators (Fogg):
├── Pleasure / Pain
├── Hope / Fear
└── Social Acceptance / Rejection
Additional Drivers:
├── Intrinsic interest
├── Personal goals
├── External rewards
└── Social pressure
```
| Motivator | Low | High |
| ------------- | ------------------- | ------------------------ |
| Pleasure/Pain | "I should exercise" | "I want to feel great" |
| Hope/Fear | "Might be useful" | "Don't want to miss out" |
| Social | "No one cares" | "Everyone's doing it" |
### 2. Ability
**How easy is it to do?**
```
Ability Factors (Fogg):
Simplicity Chain (weakest link determines ability):
├── Time: How long does it take?
├── Money: How much does it cost?
├── Physical effort: How hard physically?
├── Mental effort: How much thinking?
├── Social deviance: How weird is it?
└── Non-routine: How different from habits?
Ability = Inverse of the HARDEST factor
```
| Factor | Low Ability | High Ability |
| -------- | ----------------- | ------------------- |
| Time | 30-minute signup | 2-click signup |
| Money | $99/month | Free trial |
| Physical | Visit store | Click button |
| Mental | Complex form | Smart defaults |
| Social | Public commitment | Private action |
| Routine | New behavior | Fits existing habit |
### 3. Prompt
**What triggers action at the right moment?**
```
Prompt Types:
Spark (High Ability, Low Motivation):
├── Inspires and motivates
├── Appeals to emotions
└── Example: "Your friends are waiting"
Facilitator (High Motivation, Low Ability):
├── Makes action easier
├── Reduces friction
└── Example: "One-click purchase"
Signal (High Motivation, High Ability):
├── Simple reminder
├── Just needs timing
└── Example: "Time to check in"
```
## Behavior Diagnosis Framework
### Step 1: Define Target Behavior
Be specific about what you want users to do:
```
Behavior Definition:
❌ Vague: "Use the app more"
✅ Specific: "Complete a 5-minute workout daily"
Components:
├── Who: [Target user segment]
├── What: [Specific action]
├── When: [Timing/context]
└── How often: [Frequency]
```
### Step 2: Diagnose Missing Element
```
Diagnosis Tree:
Is the user doing the behavior?
│
├── NO → Diagnose which element is missing:
│ │
│ ├── Do they WANT to do it?
│ │ ├── NO → Motivation problem
│ │ └── YES → Continue
│ │
│ ├── CAN they easily do it?
│ │ ├── NO → Ability problem
│ │ └── YES → Continue
│ │
│ └── Are they PROMPTED at the right moment?
│ ├── NO → Prompt problem
│ └── YES → Re-examine all three
│
└── YES → Behavior successful
```
### Step 3: Design Intervention
| Problem | Solution Approach |
| --------------- | -------------------------------------- |
| Low Motivation | Increase desire (spark prompt) |
| Low Ability | Reduce friction (facilitator prompt) |
| No Prompt | Add well-timed trigger (signal prompt) |
| Multiple issues | Start with Ability (easiest to change) |
## Output Template
After completing analysis, document as:
```markdown
## Behavior Design Analysis
**Target Behavior:** [Specific behavior]
**User Segment:** [Who]
**Date:** [Date]
### Current State
| Element | Score (1-5) | Evidence |
| ---------- | ----------- | --------------------- |
| Motivation | [Score] | [What indicates this] |
| Ability | [Score] | [What indicates this] |
| Prompt | [Score] | [What indicates this] |
### Ability Breakdown
| Factor | Current State | Bottleneck? |
| -------- | ------------- | ----------- |
| Time | [Assessment] | Yes/No |
| Money | [Assessment] | Yes/No |
| Physical | [Assessment] | Yes/No |
| Mental | [Assessment] | Yes/No |
| Social | [Assessment] | Yes/No |
| Routine | [Assessment] | Yes/No |
### Diagnosis
**Primary Issue:** [Motivation/Ability/Prompt]
**Root Cause:** [Specific reason]
### Intervention Design
| Priority | Change | Element | Expected Impact |
| -------- | ----------------- | ------- | -------------------- |
| 1 | [Specific change] | [M/A/P] | [Measurable outcome] |
| 2 | [Specific change] | [M/A/P] | [Measurable outcome] |
### Success Metrics
| Metric | Current | Target | Timeline |
| --------------- | ------- | ------ | -------- |
| [Behavior rate] | X% | Y% | [Time] |
```
## Real-World Examples
### Example 1: Daily Exercise Habit
```
Target Behavior: Do a 20-minute workout daily
Motivation:
├── Want to get fit ✓
├── Feel better ✓
└── Score: 4/5 (High)
Ability:
├── Time: 20 min → Could be less
├── Physical: Moderate effort
├── Mental: Need to decide what to do
├── Routine: Not part of current habits
└── Score: 2/5 (Low - bottleneck)
Prompt:
├── No consistent trigger
└── Score: 2/5 (Low)
Interventions:
├── Ability: Reduce to 5-minute starter routine
├── Ability: Pre-select workout (no decisions)
├── Prompt: Phone alarm + clothes laid out
└── Routine: Anchor to morning coffee
```
### Example 2: Feature Adoption (SaaS)
```
Target Behavior: Use new collaboration feature
Motivation:
├── Users don't see value yet
└── Score: 2/5 (Low - problem)
Ability:
├── Feature is buried in menu
├── Requires 4 clicks to access
└── Score: 2/5 (Low - problem)
Prompt:
├── One email announcement sent
└── Score: 1/5 (Very low)
Interventions:
├── Motivation: Show social proof ("Teams save 2hrs/week")
├── Ability: Add one-click access from dashboard
├── Ability: Pre-configure with defaults
├── Prompt: In-app tooltip at relevant moment
└── Prompt: Contextual suggestion during related tasks
```
### Example 3: Newsletter Signup
```
Target Behavior: Subscribe to weekly newsletter
Motivation:
├── Valuable content promised
├── Social proof: "10,000 subscribers"
└── Score: 3/5 (Medium)
Ability:
├── Email only (simple)
├── One field
└── Score: 5/5 (High)
Prompt:
├── Popup after 30 seconds
├── User often not ready yet
└── Score: 2/5 (Wrong timing)
Intervention:
├── Prompt: Move to end of valuable article
├── Prompt: "Want more like this?"
└── Context: After user received value
```
## Design Principles
### Start with Ability
```
Why Ability First:
Motivation:
├── Hard to change
├── Often outside your control
└── Fluctuates over time
Ability:
├── Directly designable
├── Permanent once improved
└── Helps when motivation dips
"Make it so easy they can't say no."
```
### Right Prompt, Right Moment
```
Prompt Timing:
Too Early:
├── User not ready
├── Creates annoyance
└── Wasted impression
Too Late:
├── Moment passed
├── Motivation cooled
└── Friction accumulated
Just Right:
├── High motivation moment
├── Ability is present
└── Action is natural next step
```
### Tiny Habits Approach
```
BJ Fogg's Tiny Habits:
1. Make it TINY
└── Smallest possible version of behavior
2. Find the right ANCHOR
└── Existing habit to attach to
3. Celebrate IMMEDIATELY
└── Positive emotion reinforces
Formula: "After I [ANCHOR], I will [TINY BEHAVIOR]"
Example: "After I pour my coffee, I will do 2 pushups"
```
## Behavior Types
| Type | Motivation | Ability | Focus |
| ---------- | ---------- | ------- | --------------------- |
| **Green** | High | High | Just add prompt |
| **Blue** | High | Low | Increase ability |
| **Purple** | Low | High | Increase motivation |
| **Gray** | Low | Low | Major redesign needed |
## Integration with Other Methods
| Method | Combined Use |
| ------------------ | -------------------------------------- |
| **Hooked Model** | Fogg explains the trigger/action phase |
| **Cognitive Load** | Ability = inverse of cognitive load |
| **Loss Aversion** | Powerful motivation lever |
| **Curiosity Gap** | Motivation through information gaps |
| **Five Whys** | Why isn't behavior happening? |
## Quick Reference
```
B = MAP CHECKLIST
Motivation Boosters:
□ Clear value proposition
□ Social proof present
□ Loss framing considered
□ Personalized relevance
□ Emotional connection
Ability Enhancers:
□ Minimum steps possible
□ Smart defaults set
□ No unnecessary fields
□ Mobile-friendly
□ Fits existing routines
Prompt Optimization:
□ Right type for situation
□ Appears at right moment
□ Clear call to action
□ Not interruptive
□ Contextually relevant
```
## Resources
- [BJ Fogg's Behavior Model](https://behaviormodel.org/)
- [Tiny Habits - BJ Fogg](https://tinyhabits.com/)
- [Hooked - Nir Eyal](https://www.nirandfar.com/hooked/)
- [Atomic Habits - James Clear](https://jamesclear.com/atomic-habits)Related Skills
hooked-model
Design habit-forming products using the Hook cycle. Use when building engagement loops, improving retention, designing notifications, or creating products users return to without external prompting.
business-model-canvas
Design and analyze business models using the Business Model Canvas framework. Use when evaluating startups, planning new products, pivoting existing businesses, or understanding how companies create and capture value.
what-not-to-do-as-product-manager
Anti-patterns and mistakes to avoid as a product manager. Use when evaluating leadership behaviors, improving team dynamics, reflecting on management practices, or onboarding new product managers.
visual-cues-cta-psychology
Design effective CTAs using visual attention and gaze psychology principles. Use when designing landing pages, button hierarchies, conversion elements, or optimizing user attention flow through interfaces.
vercel-sandbox
Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include "Vercel Sandbox browser", "microVM Chrome", "agent-browser in sandbox", "browser automation on Vercel", or any task requiring Chrome in a Vercel Sandbox.
value-realization
Analyze if end users discover clear value. Use when evaluating product concepts, analyzing adoption, or uncertain about direction.
user-story-fundamentals
Capture requirements from user perspective with structured user stories. Use when writing backlog items, defining acceptance criteria, prioritizing features, or communicating requirements between product and development.
typescript-satisfies-operator
Guides proper usage of TypeScript's satisfies operator vs type annotations. Use this skill when deciding between type annotations (colon) and satisfies, validating object shapes while preserving literal types, or troubleshooting type inference issues.
typescript-interface-vs-type
Guides when to use interface vs type in TypeScript. Use this skill when defining object types, extending types, or choosing between interface and type aliases.
typescript-best-practices
Guides TypeScript best practices for type safety, code organization, and maintainability. Use this skill when configuring TypeScript projects, deciding on typing strategies, writing async code, or reviewing TypeScript code quality.
typescript-advanced-types
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications. Use when implementing complex type logic, creating reusable type utilities, or ensuring compile-time type safety in TypeScript projects.
trust-psychology
Build trust signals that reduce perceived risk and enable user action. Use when designing landing pages, checkout flows, onboarding experiences, or any conversion point where user hesitation is a barrier.