codymaster 4.4.4 → 4.5.1

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.
Files changed (190) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +29 -14
  3. package/commands/demo.md +1 -1
  4. package/dist/context-bus.js +70 -0
  5. package/dist/context-db.js +265 -0
  6. package/dist/continuity.js +12 -0
  7. package/dist/file-watcher.js +79 -0
  8. package/dist/index.js +152 -1
  9. package/dist/l0-indexer.js +158 -0
  10. package/dist/mcp-context-server.js +400 -0
  11. package/dist/migrate-json-to-sqlite.js +126 -0
  12. package/dist/skill-chain.js +19 -3
  13. package/dist/token-budget.js +108 -0
  14. package/dist/uri-resolver.js +203 -0
  15. package/package.json +7 -1
  16. package/skills/_shared/helpers.md +50 -14
  17. package/skills/cm-autopilot/SKILL.md +29 -0
  18. package/skills/cm-autopilot/scripts/autopilot.py +190 -0
  19. package/skills/cm-continuity/SKILL.md +90 -28
  20. package/skills/cm-quality-gate/SKILL.md +11 -1
  21. package/skills/cm-safe-deploy/SKILL.md +38 -2
  22. package/skills/cm-security-gate/SKILL.md +158 -34
  23. package/skills/cm-skill-chain/SKILL.md +47 -1
  24. package/skills/cm-start/SKILL.md +11 -2
  25. package/skills/cm-test-gate/SKILL.md +3 -0
  26. package/skills/boxme-git-config/SKILL.md +0 -56
  27. package/skills/boxme-local-dev/SKILL.md +0 -66
  28. package/skills/jobs-to-be-done/SKILL.md +0 -266
  29. package/skills/jobs-to-be-done/references/case-studies.md +0 -154
  30. package/skills/jobs-to-be-done/references/competitive-strategy.md +0 -280
  31. package/skills/jobs-to-be-done/references/diagnostics.md +0 -158
  32. package/skills/jobs-to-be-done/references/innovation-process.md +0 -392
  33. package/skills/jobs-to-be-done/references/organizational-change.md +0 -328
  34. package/skills/marketplace-report-crawler/SKILL.md +0 -176
  35. package/skills/marketplace-report-crawler/config/accounts.json +0 -41
  36. package/skills/marketplace-report-crawler/config/report-types.json +0 -422
  37. package/skills/marketplace-report-crawler/config/sessions.json +0 -3
  38. package/skills/marketplace-report-crawler/scripts/ab-wrapper.sh +0 -102
  39. package/skills/marketplace-report-crawler/scripts/browser-actions/lazada/lazada-actions.js +0 -114
  40. package/skills/marketplace-report-crawler/scripts/browser-actions/shopee/shopee-actions.js +0 -94
  41. package/skills/marketplace-report-crawler/scripts/browser-actions/tiktok/tiktok-actions.js +0 -272
  42. package/skills/marketplace-report-crawler/scripts/crawl-runner.js +0 -281
  43. package/skills/marketplace-report-crawler/scripts/session-check.sh +0 -72
  44. package/skills/marketplace-report-crawler/scripts/session-manager.sh +0 -349
  45. package/skills/marketplace-report-crawler/scripts/setup-folders.sh +0 -83
  46. package/skills/medical-research/SKILL.md +0 -194
  47. package/skills/medical-research/scripts/evidence_checker.py +0 -288
  48. package/skills/mom-test/SKILL.md +0 -267
  49. package/skills/mom-test/references/avoiding-bad-data.md +0 -221
  50. package/skills/mom-test/references/case-studies.md +0 -306
  51. package/skills/mom-test/references/commitment-advancement.md +0 -219
  52. package/skills/mom-test/references/finding-conversations.md +0 -251
  53. package/skills/mom-test/references/processing-learning.md +0 -256
  54. package/skills/mom-test/references/question-patterns.md +0 -198
  55. package/skills/pandasai-analytics/SKILL.md +0 -251
  56. package/skills/release-it/SKILL.md +0 -235
  57. package/skills/release-it/references/anti-patterns.md +0 -279
  58. package/skills/release-it/references/capacity-planning.md +0 -285
  59. package/skills/release-it/references/chaos-engineering.md +0 -325
  60. package/skills/release-it/references/deployment-strategies.md +0 -331
  61. package/skills/release-it/references/observability.md +0 -301
  62. package/skills/release-it/references/stability-patterns.md +0 -355
  63. package/skills/skill-creator-ultra/.agents/workflows/skill-audit.md +0 -37
  64. package/skills/skill-creator-ultra/.agents/workflows/skill-compare.md +0 -34
  65. package/skills/skill-creator-ultra/.agents/workflows/skill-export.md +0 -51
  66. package/skills/skill-creator-ultra/.agents/workflows/skill-generate.md +0 -39
  67. package/skills/skill-creator-ultra/.agents/workflows/skill-scaffold.md +0 -52
  68. package/skills/skill-creator-ultra/.agents/workflows/skill-simulate.md +0 -25
  69. package/skills/skill-creator-ultra/.agents/workflows/skill-stats.md +0 -31
  70. package/skills/skill-creator-ultra/.agents/workflows/skill-validate.md +0 -25
  71. package/skills/skill-creator-ultra/README.md +0 -1242
  72. package/skills/skill-creator-ultra/SKILL.md +0 -388
  73. package/skills/skill-creator-ultra/agents/analyzer.md +0 -274
  74. package/skills/skill-creator-ultra/agents/comparator.md +0 -202
  75. package/skills/skill-creator-ultra/agents/grader.md +0 -223
  76. package/skills/skill-creator-ultra/assets/eval_review.html +0 -146
  77. package/skills/skill-creator-ultra/eval-viewer/generate_review.py +0 -471
  78. package/skills/skill-creator-ultra/eval-viewer/viewer.html +0 -1325
  79. package/skills/skill-creator-ultra/examples/example_anthropic_frontend.md +0 -109
  80. package/skills/skill-creator-ultra/examples/example_anthropic_pdf.md +0 -116
  81. package/skills/skill-creator-ultra/examples/example_api_docs.md +0 -189
  82. package/skills/skill-creator-ultra/examples/example_db_migration.md +0 -253
  83. package/skills/skill-creator-ultra/examples/example_git_commit.md +0 -111
  84. package/skills/skill-creator-ultra/install.ps1 +0 -289
  85. package/skills/skill-creator-ultra/install.sh +0 -313
  86. package/skills/skill-creator-ultra/phases/phase1_interview.md +0 -202
  87. package/skills/skill-creator-ultra/phases/phase2_extract.md +0 -55
  88. package/skills/skill-creator-ultra/phases/phase3_detect.md +0 -57
  89. package/skills/skill-creator-ultra/phases/phase4_generate.md +0 -543
  90. package/skills/skill-creator-ultra/phases/phase5_test.md +0 -319
  91. package/skills/skill-creator-ultra/phases/phase6_eval.md +0 -301
  92. package/skills/skill-creator-ultra/phases/phase7_iterate.md +0 -103
  93. package/skills/skill-creator-ultra/phases/phase8_optimize.md +0 -113
  94. package/skills/skill-creator-ultra/resources/advanced_patterns.md +0 -499
  95. package/skills/skill-creator-ultra/resources/anti_patterns.md +0 -376
  96. package/skills/skill-creator-ultra/resources/blueprints.md +0 -498
  97. package/skills/skill-creator-ultra/resources/checklist.md +0 -243
  98. package/skills/skill-creator-ultra/resources/composition_cookbook.md +0 -291
  99. package/skills/skill-creator-ultra/resources/description_optimization.md +0 -90
  100. package/skills/skill-creator-ultra/resources/eval_guide.md +0 -133
  101. package/skills/skill-creator-ultra/resources/industry_questions.md +0 -189
  102. package/skills/skill-creator-ultra/resources/interview_questions.md +0 -200
  103. package/skills/skill-creator-ultra/resources/pattern_detection.md +0 -200
  104. package/skills/skill-creator-ultra/resources/prompt_engineering.md +0 -531
  105. package/skills/skill-creator-ultra/resources/schemas.md +0 -430
  106. package/skills/skill-creator-ultra/resources/script_integration.md +0 -593
  107. package/skills/skill-creator-ultra/resources/scripts_guide.md +0 -339
  108. package/skills/skill-creator-ultra/resources/skill_template.md +0 -124
  109. package/skills/skill-creator-ultra/resources/skill_writing_guide.md +0 -634
  110. package/skills/skill-creator-ultra/resources/versioning_guide.md +0 -193
  111. package/skills/skill-creator-ultra/scripts/ci_eval.py +0 -200
  112. package/skills/skill-creator-ultra/scripts/package_skill.py +0 -165
  113. package/skills/skill-creator-ultra/scripts/simulate_skill.py +0 -398
  114. package/skills/skill-creator-ultra/scripts/skill_audit.py +0 -611
  115. package/skills/skill-creator-ultra/scripts/skill_compare.py +0 -265
  116. package/skills/skill-creator-ultra/scripts/skill_export.py +0 -334
  117. package/skills/skill-creator-ultra/scripts/skill_scaffold.py +0 -403
  118. package/skills/skill-creator-ultra/scripts/skill_stats.py +0 -339
  119. package/skills/skill-creator-ultra/scripts/validate_skill.py +0 -411
  120. package/skills/tailwind-mastery/SKILL.md +0 -229
  121. package/skills/vercel-react-best-practices/AGENTS.md +0 -3373
  122. package/skills/vercel-react-best-practices/README.md +0 -123
  123. package/skills/vercel-react-best-practices/SKILL.md +0 -143
  124. package/skills/vercel-react-best-practices/rules/_sections.md +0 -46
  125. package/skills/vercel-react-best-practices/rules/_template.md +0 -28
  126. package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  127. package/skills/vercel-react-best-practices/rules/advanced-init-once.md +0 -42
  128. package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -39
  129. package/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -38
  130. package/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -80
  131. package/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -51
  132. package/skills/vercel-react-best-practices/rules/async-parallel.md +0 -28
  133. package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
  134. package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -59
  135. package/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
  136. package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
  137. package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  138. package/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -50
  139. package/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
  140. package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
  141. package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
  142. package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
  143. package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -107
  144. package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
  145. package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
  146. package/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
  147. package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
  148. package/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -50
  149. package/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +0 -60
  150. package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
  151. package/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -37
  152. package/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -49
  153. package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
  154. package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
  155. package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
  156. package/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -26
  157. package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  158. package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
  159. package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
  160. package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  161. package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  162. package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
  163. package/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +0 -85
  164. package/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +0 -68
  165. package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
  166. package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +0 -75
  167. package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
  168. package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
  169. package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
  170. package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
  171. package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
  172. package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  173. package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
  174. package/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -44
  175. package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
  176. package/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +0 -82
  177. package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
  178. package/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +0 -64
  179. package/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
  180. package/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +0 -59
  181. package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
  182. package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
  183. package/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -96
  184. package/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
  185. package/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -76
  186. package/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -65
  187. package/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +0 -142
  188. package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
  189. package/skills/vercel-react-best-practices/rules/server-serialization.md +0 -38
  190. package/skills/web-design-guidelines/SKILL.md +0 -39
@@ -1,56 +0,0 @@
1
- ---
2
- description: Verify and fix git configuration to ensure all pushes go to omisocial GitHub account
3
- ---
4
-
5
- # Git Account Verification
6
-
7
- Use this skill when: "check git", "verify git", "git account", "fix remote", "push fails", or before any deploy/push operation.
8
-
9
- ## Expected Configuration
10
-
11
- | Setting | Expected Value |
12
- |---------|---------------|
13
- | `gh auth status` | `omisocial` |
14
- | `git remote origin` | `https://github.com/omisocial/boxme_levelling.git` |
15
- | `git config user.name` | `omisocial` |
16
- | `git config user.email` | `omisocial@users.noreply.github.com` |
17
-
18
- ## Quick Check
19
-
20
- Run this one-liner to verify everything:
21
-
22
- ```bash
23
- echo "=== GitHub CLI ===" && gh auth status 2>&1 | head -3 && echo "=== Git Remote ===" && git remote get-url origin && echo "=== Git User ===" && git config user.name && git config user.email
24
- ```
25
-
26
- ## Fix if Wrong
27
-
28
- ### GitHub CLI (gh) logged into wrong account
29
- ```bash
30
- gh auth logout
31
- gh auth login
32
- # Select: Login with web browser → omisocial
33
- ```
34
-
35
- ### Git remote pointing to wrong repo
36
- ```bash
37
- git remote set-url origin https://github.com/omisocial/boxme_levelling.git
38
- ```
39
-
40
- ### Git user config wrong
41
- ```bash
42
- git config user.name "omisocial"
43
- git config user.email "omisocial@users.noreply.github.com"
44
- ```
45
-
46
- ## Project Root
47
- ```
48
- /Users/todyle/Library/Mobile Documents/com~apple~CloudDocs/Code/Boxme_Projects/boxme_levelling-main
49
- ```
50
-
51
- ## Account History
52
-
53
- | Account | Purpose | Status |
54
- |---------|---------|--------|
55
- | `omisocial` | Current active GitHub account | ✅ Active |
56
- | `boxmevibe` | Previous GitHub account | ⚠️ Archived as `old-boxmevibe` remote |
@@ -1,66 +0,0 @@
1
- ---
2
- description: Start all Boxme Scoring System local development modules (PRMS, Seller SOS, Docs Site)
3
- ---
4
-
5
- # Boxme Local Dev — Start All Modules
6
-
7
- Use this skill when the user says any of: "start local", "run local", "dev local", "start dev", or asks to run the Boxme project locally.
8
-
9
- ## Project Root
10
-
11
- ```
12
- /Users/todyle/Library/Mobile Documents/com~apple~CloudDocs/Code/Boxme_Projects/boxme_levelling-main
13
- ```
14
-
15
- ## Modules
16
-
17
- | Module | Directory | Command | URL |
18
- |--------|-----------|---------|-----|
19
- | **PRMS** (Performance Review) | project root | `npm run dev` | http://localhost:5173 |
20
- | **Seller SOS** | `seller-sos/` | `npm run dev` | http://localhost:5174 |
21
- | **Docs Site** (Docusaurus) | `docs-site/` | `npm start` | http://localhost:3000 |
22
-
23
- ## Instructions
24
-
25
- ### Step 1 – Start PRMS
26
-
27
- Open terminal and run:
28
-
29
- ```bash
30
- cd "/Users/todyle/Library/Mobile Documents/com~apple~CloudDocs/Code/Boxme_Projects/boxme_levelling-main"
31
- npm run dev
32
- ```
33
-
34
- ### Step 2 – Start Seller SOS
35
-
36
- Open a **new terminal** and run:
37
-
38
- ```bash
39
- cd "/Users/todyle/Library/Mobile Documents/com~apple~CloudDocs/Code/Boxme_Projects/boxme_levelling-main/seller-sos"
40
- npm run dev
41
- ```
42
-
43
- ### Step 3 – Start Docs Site
44
-
45
- Open another **new terminal** and run:
46
-
47
- ```bash
48
- cd "/Users/todyle/Library/Mobile Documents/com~apple~CloudDocs/Code/Boxme_Projects/boxme_levelling-main/docs-site"
49
- npm start
50
- ```
51
-
52
- ## Notes
53
-
54
- - PRMS uses **Vite + Hono** (Cloudflare Workers backend), served via `@hono/vite-dev-server`
55
- - Seller SOS also uses **Vite + Hono**, port 5174
56
- - Docs Site is **Docusaurus 3.x**, starts on port 3000
57
- - All modules use their own `node_modules` — run `npm install` in each directory if fresh clone
58
- - If a port is busy, kill it: `lsof -ti:5173 | xargs kill -9`
59
-
60
- ## Ports Quick Reference
61
-
62
- ```
63
- http://localhost:5173 → PRMS
64
- http://localhost:5174 → Seller SOS
65
- http://localhost:3000 → Docs Site
66
- ```
@@ -1,266 +0,0 @@
1
- ---
2
- name: jobs-to-be-done
3
- description: 'Discover what customers truly need by analyzing the "job" they hire your product to do. Use when the user mentions "customer discovery", "why customers churn", "what job does this solve", "competing against luck", or "product-market fit". Covers JTBD interviews, competition analysis, and jobs-oriented roadmaps. For product positioning, see obviously-awesome. For rapid validation, see design-sprint.'
4
- license: MIT
5
- metadata:
6
- author: wondelai
7
- version: "1.1.1"
8
- ---
9
-
10
- # Jobs to Be Done Framework
11
-
12
- Framework for discovering innovation based on a fundamental truth: customers don't buy products - they "hire" them to do a specific job in their lives.
13
-
14
- ## Core Principle
15
-
16
- **Job to Be Done** = the progress a customer wants to make in specific circumstances.
17
-
18
- Key elements of the definition:
19
- - **Progress** (not goal, not solution) - customer wants to move from current state to a better one
20
- - **Circumstances** - context determines the job, not customer attributes (demographics are useless)
21
- - **Hiring/Firing** - customer actively chooses a product for the "job"
22
-
23
- ## Scoring
24
-
25
- **Goal: 10/10.** When reviewing or creating product strategy or positioning, rate it 0-10 based on adherence to the principles below. A 10/10 means full alignment with all guidelines; lower scores indicate gaps to address. Always provide the current score and specific improvements needed to reach 10/10.
26
-
27
- ## Three Dimensions of Every Job
28
-
29
- Every job has three inseparable dimensions - omitting any means failure:
30
-
31
- | Dimension | Question | Example (milkshake) |
32
- |-----------|----------|---------------------|
33
- | **Functional** | What does the customer need to do? | Occupy myself during boring commute |
34
- | **Emotional** | How do they want to feel? | Have a small treat for myself |
35
- | **Social** | How do they want to be perceived? | As a sensible parent (not buying donuts) |
36
-
37
- ## Framework
38
-
39
- ### 1. The Job Statement
40
-
41
- **Core concept:** A job statement captures the progress a customer seeks in a specific circumstance, expressed in a structured format that separates context, desired progress, and expected outcome.
42
-
43
- **Why it works:** By forcing teams to articulate the job in the customer's language and circumstances, it prevents solution-first thinking and keeps innovation grounded in real human progress.
44
-
45
- **Key insights:**
46
- - The format is: "When [circumstances], I want to [progress], so I can [outcome]"
47
- - Circumstances matter more than customer demographics - the same person has different jobs in different situations
48
- - A well-written job statement never mentions your product or any specific solution
49
- - Jobs are stable over time; solutions change but the underlying job persists
50
-
51
- **Product applications:**
52
-
53
- | Context | Application | Example |
54
- |---------|-------------|---------|
55
- | New product ideation | Define the job before brainstorming features | "When I'm commuting alone, I want something to occupy me and satisfy hunger, so I'm not hungry until lunch" |
56
- | Feature prioritization | Evaluate whether a feature serves the core job | Prioritize features that help accomplish the stated job over nice-to-have additions |
57
- | Positioning & messaging | Use the job statement language in marketing copy | Lead with the circumstance and desired progress, not product specs |
58
-
59
- **Copy patterns:**
60
- - "When you're [circumstance], you need [progress] -- that's exactly what [product] does"
61
- - Lead with the situation the customer recognizes, not the product category
62
- - Mirror the emotional and social dimensions alongside the functional one
63
-
64
- **Ethical boundary:** Never fabricate or exaggerate circumstances to manufacture urgency. The job must reflect genuine customer progress, not artificially created anxiety.
65
-
66
- See: [references/innovation-process.md](references/innovation-process.md)
67
-
68
- ### 2. Forces of Progress (Push, Pull, Anxiety, Habit)
69
-
70
- **Core concept:** The decision to "hire" a new product results from the interplay of four forces: Push (frustration with current situation), Pull (attraction of new solution), Anxiety (fear of the new), and Habit (comfort with current behavior). Change only happens when Push + Pull > Habit + Anxiety.
71
-
72
- **Why it works:** Most innovation efforts focus only on making the product better (increasing Pull), but ignore the equally powerful anti-change forces. Understanding all four forces reveals why great products still fail to gain adoption.
73
-
74
- **Key insights:**
75
- - Push is frustration with the current situation ("this annoys me")
76
- - Pull is the attraction of a new solution ("I want this")
77
- - Habit is attachment to current behavior ("I've always done it this way")
78
- - Anxiety is fear of the new ("what if it doesn't work?")
79
- - Often it's more effective to reduce anxiety and habit than to increase push and pull
80
- - Passive seekers (vaguely aware of a problem) are easier to influence than active seekers who already have criteria
81
-
82
- **Product applications:**
83
-
84
- | Context | Application | Example |
85
- |---------|-------------|---------|
86
- | Onboarding design | Reduce anxiety with free trials, guarantees, and social proof | Money-back guarantee addresses "what if it doesn't work?" anxiety |
87
- | Switching campaigns | Address habit directly by making migration effortless | One-click data import from competitor reduces habit friction |
88
- | Content marketing | Awaken push in passive seekers by naming their frustration | Blog post: "5 signs your current tool is costing you hours every week" |
89
-
90
- **Copy patterns:**
91
- - Address anxiety directly: "No lock-in, cancel anytime, your data is always yours"
92
- - Name the push: "Tired of [frustration]? There's a better way"
93
- - Reduce habit friction: "Switch in 5 minutes -- we import everything automatically"
94
-
95
- **Ethical boundary:** Never manufacture artificial push by exaggerating pain or creating fear. Reducing real anxiety is ethical; creating new anxiety to drive sales is manipulation.
96
-
97
- See: [references/competitive-strategy.md](references/competitive-strategy.md)
98
-
99
- ### 3. The Big Hire & Little Hire
100
-
101
- **Core concept:** There are two distinct decision moments: the Big Hire (purchase/signup decision, happens once) and the Little Hire (decision to use in the moment, happens repeatedly). Winning the Big Hire does not guarantee the Little Hire.
102
-
103
- **Why it works:** Many products win the sale but lose the customer because they optimize only for the purchase decision and neglect the repeated usage decision. Understanding both moments reveals where retention problems truly originate.
104
-
105
- **Key insights:**
106
- - Big Hire is driven by marketing, onboarding, and first impressions
107
- - Little Hire is driven by product quality, UX, and ongoing value delivery
108
- - Many products lose at the Little Hire stage -- purchased but never used
109
- - The forces of progress operate differently at each stage: Big Hire anxiety is about the purchase risk; Little Hire anxiety is about effort and learning curves
110
- - Retention problems are almost always Little Hire failures, not Big Hire failures
111
-
112
- **Product applications:**
113
-
114
- | Context | Application | Example |
115
- |---------|-------------|---------|
116
- | Retention analysis | Distinguish Big Hire metrics from Little Hire metrics | Track "first use after signup" and "weekly active usage" separately from signup conversion |
117
- | Product design | Optimize the repeated usage experience, not just first impression | Reduce friction in daily workflows even if onboarding is already smooth |
118
- | Customer success | Monitor Little Hire signals to predict churn | Declining usage frequency is a Little Hire failure signaling upcoming churn |
119
-
120
- **Copy patterns:**
121
- - Big Hire copy focuses on the promise: "Transform how you [job]"
122
- - Little Hire copy focuses on ease: "One click and you're done"
123
- - Re-engagement copy addresses Little Hire failure: "We've made [specific friction] easier"
124
-
125
- **Ethical boundary:** Never design dark patterns that win the Big Hire (e.g., hidden fees, misleading trials) while failing the Little Hire. Both decisions must deliver genuine progress.
126
-
127
- See: [references/case-studies.md](references/case-studies.md)
128
-
129
- ### 4. Competitive Landscape (Non-Obvious Competition)
130
-
131
- **Core concept:** True competition is everything a customer can "hire" for the same job, often from completely different product categories. Competitors are defined by the job, not by industry classification.
132
-
133
- **Why it works:** Analyzing competition through product categories creates blind spots. A milkshake competes with bananas, bagels, boredom, and podcasts. Netflix competes with TikTok, sleep, family conversation, and games. By mapping the full competitive landscape around the job, teams spot threats and opportunities invisible to traditional analysis.
134
-
135
- **Key insights:**
136
- - Non-consumption (doing nothing) is often the biggest competitor
137
- - Workarounds and compensating behaviors reveal unserved jobs: people hack, combine, and improvise solutions
138
- - Online courses compete with books, YouTube, mentoring, and doing nothing
139
- - Integration is needed when performance is "not good enough" for the job; modularization when it's "good enough"
140
- - The best competitive positioning answers "what job are we the best hire for?" not "how do we compare to similar products?"
141
-
142
- **Product applications:**
143
-
144
- | Context | Application | Example |
145
- |---------|-------------|---------|
146
- | Competitive analysis | Map all hires for the same job across categories | A project management tool competes with spreadsheets, sticky notes, email threads, and memory |
147
- | Positioning strategy | Position against the real alternative, not the obvious one | Position against "doing it manually" rather than against a named competitor |
148
- | Pricing strategy | Price relative to the job's value, not competitor pricing | If the job saves 10 hours per week, price against the value of that time, not against similar SaaS products |
149
-
150
- **Copy patterns:**
151
- - "Stop using [workaround] for [job] -- there's a purpose-built solution"
152
- - "You wouldn't hire a [bad fit] to [job] -- so why are you using [current hack]?"
153
- - Position around the job outcome, not feature comparison charts
154
-
155
- **Ethical boundary:** Never misrepresent competitors or create false equivalences. Honest competitive framing based on the job is powerful; distorting alternatives is deceptive.
156
-
157
- See: [references/competitive-strategy.md](references/competitive-strategy.md)
158
-
159
- ### 5. Customer Discovery Interviews
160
-
161
- **Core concept:** Don't ask customers directly "what do you need" -- they don't know. Instead, investigate the purchase timeline by reconstructing the moments of first thought, search, purchase, and usage to uncover the real job.
162
-
163
- **Why it works:** Customers rationalize decisions after the fact and can't articulate latent needs. By walking backward through the concrete events of their decision journey, you uncover the true circumstances, forces, and tradeoffs that drove their behavior.
164
-
165
- **Key insights:**
166
- - First thought questions: "When did you first think about looking for a solution?", "What was happening in your life then?", "What was frustrating you?"
167
- - Search questions: "What alternatives did you look for?", "What eliminated options?", "Who did you talk to about this decision?"
168
- - Purchase moment questions: "Where were you?", "What ultimately convinced you?", "What were you afraid of?"
169
- - Usage questions: "Is the product doing what you expected?", "What surprised you?", "What's still missing?"
170
- - Signals of undiscovered jobs: workarounds, non-consumption, compensating behaviors, negative emotions with current solutions
171
-
172
- **Product applications:**
173
-
174
- | Context | Application | Example |
175
- |---------|-------------|---------|
176
- | New market entry | Interview people who recently switched to or from a competitor | Reconstruct the timeline to find what pushed them away and pulled them toward the new solution |
177
- | Churn reduction | Interview churned customers about their decision timeline | Discover whether the failure was Big Hire (wrong expectations) or Little Hire (poor daily experience) |
178
- | Feature discovery | Interview customers using workarounds | A customer using spreadsheets alongside your product reveals an unmet job dimension |
179
-
180
- **Copy patterns:**
181
- - Use exact customer language from interviews in marketing copy
182
- - "We heard you say [verbatim quote] -- so we built [feature]"
183
- - Frame benefits using the circumstances and emotions customers actually described
184
-
185
- **Ethical boundary:** Never lead interview subjects toward predetermined conclusions. The goal is genuine discovery, not confirmation of existing assumptions.
186
-
187
- See: [references/innovation-process.md](references/innovation-process.md)
188
-
189
- ### 6. Designing for the Job
190
-
191
- **Core concept:** Build the entire product experience -- features, metrics, and organization -- around helping the customer accomplish their job, not around internal capabilities or competitive feature parity.
192
-
193
- **Why it works:** When every product decision answers "will this help the customer better accomplish their job?", teams avoid feature bloat, build coherent experiences, and create products that customers genuinely value. If you can't answer the question, you don't understand the job yet.
194
-
195
- **Key insights:**
196
- - Replace customer satisfaction metrics with "did the job get done?" metrics
197
- - Replace NPS with "reasons for hiring and firing"
198
- - Replace feature usage metrics with "progress on the job"
199
- - When the job is poorly understood, integrate (control entire experience); when well understood, modularize (specialize components)
200
- - Integrate where performance is "not good enough" for the job; modularize where it's "good enough"
201
- - Every product decision should answer: "Will this help the customer better accomplish their job?"
202
-
203
- **Product applications:**
204
-
205
- | Context | Application | Example |
206
- |---------|-------------|---------|
207
- | Metrics design | Define success metrics around job completion | Track "time from problem to resolution" instead of "features used per session" |
208
- | Product roadmap | Prioritize based on job dimensions (functional, emotional, social) | A functional improvement that ignores the emotional dimension may not move the needle |
209
- | Organizational alignment | Structure teams around jobs, not product components | A "morning commute job" team owns everything from content to packaging to distribution |
210
-
211
- **Copy patterns:**
212
- - "Built for [the job], not for [the category]"
213
- - Emphasize outcome and progress, not features and specifications
214
- - "Everything you need to [job] -- nothing you don't"
215
-
216
- **Ethical boundary:** Never design addictive patterns that serve engagement metrics rather than genuine customer progress. The job framework demands that the customer's progress is the true north, not your retention numbers.
217
-
218
- See: [references/organizational-change.md](references/organizational-change.md)
219
-
220
- ## Common Mistakes
221
-
222
- | Mistake | Why It Fails | Fix |
223
- |---------|-------------|-----|
224
- | Defining jobs too narrowly around your product | You miss the real competitive landscape and build features no one needs | Define the job from the customer's perspective, never mentioning your product |
225
- | Ignoring the emotional and social dimensions | Functional-only jobs miss why customers actually choose (and stay with) products | Always complete all three dimensions: functional, emotional, and social |
226
- | Confusing jobs with goals or tasks | Goals are too abstract ("be healthy") and tasks are too specific ("click button") to drive strategy | Jobs describe progress in specific circumstances -- more concrete than goals, more strategic than tasks |
227
- | Only increasing Pull while ignoring Anxiety and Habit | A great product still fails if switching costs and fear are too high | Map all four forces and design interventions for each, especially reducing anti-change forces |
228
- | Winning the Big Hire but ignoring the Little Hire | High acquisition with high churn -- purchased but never used | Track and optimize the repeated usage decision separately from the purchase decision |
229
- | Asking customers "what do you want?" | Customers rationalize and can't articulate latent needs; you get incremental feature requests | Use timeline-based discovery interviews that reconstruct actual behavior and decisions |
230
- | Defining competition by product category | You miss the real threats and opportunities from adjacent categories and non-consumption | Map every alternative the customer could "hire" for the same job, including doing nothing |
231
-
232
- ## Quick Diagnostic
233
-
234
- | Question | If No | Action |
235
- |----------|-------|--------|
236
- | Can you state the job in one sentence without mentioning your product? | You're product-focused, not job-focused | Write a job statement: "When [circumstances], I want to [progress], so I can [outcome]" |
237
- | Have you mapped all four forces (Push, Pull, Anxiety, Habit)? | You're likely over-investing in Pull and ignoring barriers | Map each force and design specific interventions for Anxiety and Habit |
238
- | Do you know the emotional and social dimensions of the job? | Your product may win functionally but lose on experience | Conduct discovery interviews focused on feelings and social context around the decision |
239
- | Have you identified non-obvious competitors from other categories? | You have blind spots in your competitive landscape | List everything a customer could "hire" for the same job, including non-consumption |
240
- | Are you tracking Little Hire separately from Big Hire? | You can't distinguish acquisition problems from retention problems | Create separate metrics for purchase conversion and repeated usage engagement |
241
- | Can your team explain how a feature helps accomplish the job? | You're building features without strategic grounding | Require every feature proposal to reference the specific job dimension it serves |
242
- | Have you interviewed customers about their purchase timeline? | Your understanding of the job is based on assumptions, not evidence | Conduct 10+ discovery interviews reconstructing the first-thought-to-usage journey |
243
-
244
- See: [references/diagnostics.md](references/diagnostics.md) for the full diagnostic checklist.
245
-
246
- ## Examples and Case Studies
247
-
248
- See: [references/case-studies.md](references/case-studies.md) for detailed analyses (SNHU, American Girl, Intuit).
249
-
250
- ## Reference Files
251
-
252
- - [innovation-process.md](references/innovation-process.md): Job hunting methodology, job atlas, prototype testing, job statements
253
- - [competitive-strategy.md](references/competitive-strategy.md): Non-obvious competition, jobs-based positioning, pricing strategy
254
- - [organizational-change.md](references/organizational-change.md): Overcoming objections, feature-factory trap, executive buy-in, change management
255
- - [diagnostics.md](references/diagnostics.md): Diagnostic checklist for evaluating products through the jobs lens
256
- - [case-studies.md](references/case-studies.md): Detailed analyses of SNHU, American Girl, Intuit, and more
257
-
258
- ## About the Author
259
-
260
- Clayton M. Christensen (1952-2020) was the Kim B. Clark Professor of Business Administration at Harvard Business School and one of the most influential management thinkers of the modern era. He is best known for introducing the theory of disruptive innovation in his landmark book *The Innovator's Dilemma* (1997), which fundamentally changed how business leaders think about competition and market evolution. Christensen developed the Jobs to Be Done framework as a practical methodology for understanding customer motivation and driving successful innovation, detailed in *Competing Against Luck* (2016). He co-founded the innovation consulting firm Innosight and the Clayton Christensen Institute for Disruptive Innovation. Christensen was ranked the #1 management thinker in the world by Thinkers50 and received the award multiple times. His body of work, spanning nine books including *The Innovator's Solution* and *How Will You Measure Your Life?*, continues to shape product strategy, corporate innovation, and entrepreneurial thinking worldwide.
261
-
262
- ## Further Reading
263
-
264
- This skill is based on the Jobs to Be Done framework developed by Clayton M. Christensen. For the complete methodology, case studies, and deeper insights, read the original book:
265
-
266
- - [*"Competing Against Luck: The Story of Innovation and Customer Choice"*](https://www.amazon.com/Competing-Against-Luck-Innovation-Customer/dp/0062435612?tag=wondelai00-20) by Clayton M. Christensen, Taddy Hall, Karen Dillon, and David S. Duncan
@@ -1,154 +0,0 @@
1
- # JTBD Case Studies
2
-
3
- ## 1. McDonald's Milkshake
4
-
5
- ### Situation
6
- McDonald's wanted to increase milkshake sales. Traditional research (focus groups, surveys) gave conflicting results: "less sweet," "more chocolate," "more fruit chunks."
7
-
8
- ### Job Discovery
9
- Observation revealed that 40% of milkshakes were bought in the morning, by solo drivers, to-go.
10
-
11
- **Morning job:** "When I'm driving alone to work and have a boring hour of commute, I want something to keep my hands busy, satisfy my hunger until lunch, and give me a small pleasure."
12
-
13
- **Afternoon job (different!):** "When picking up my child from school, I want to be a good parent and give them a small reward, but without feeling guilty."
14
-
15
- ### Competition Through Job Lens
16
- - Morning job: banana, bagel, coffee, boredom, podcast
17
- - Afternoon job: ice cream, candy, toy, parental attention
18
-
19
- ### Solution
20
- - **Morning milkshake:** thicker (takes longer to drink), with chunks (more interesting), larger, easier to buy (drive-through kiosk)
21
- - **Afternoon milkshake:** smaller (sense of moderation), faster to drink (child doesn't get bored)
22
-
23
- ### Lesson
24
- The same product can serve completely different jobs. Improving the "product" without understanding the job leads nowhere.
25
-
26
- ---
27
-
28
- ## 2. Southern New Hampshire University (SNHU)
29
-
30
- ### Situation
31
- SNHU was a small college with 2,500 students. They launched an online program that exploded to 100,000+ students.
32
-
33
- ### Job Discovery
34
- Typical online student: 30+ years old, working, often with family, interrupted education years ago.
35
-
36
- **Job:** "When I realize I'm stuck in my career and need a degree to advance, but I have a job, family, and little time, I want to get a degree without turning my life upside down."
37
-
38
- ### Job Dimensions
39
- - **Functional:** Get a degree from an accredited institution
40
- - **Emotional:** Feel that I'm growing, prove to myself that I can do it
41
- - **Social:** Show my family I'm setting a good example; not look like a "student" at work
42
-
43
- ### Competition
44
- - Doing nothing (most common!)
45
- - Other online universities
46
- - Industry certifications
47
- - Changing jobs without a degree
48
-
49
- ### Breakthrough Changes
50
- 1. **Onboarding:** Calling applicants within minutes (not days) - reduces "can I do this" anxiety
51
- 2. **Personal advisor:** One point of contact throughout studies - like GPS, not bureaucracy
52
- 3. **Credit transfer:** Liberal policy for recognizing previous courses - faster to the goal
53
- 4. **Communication:** Simplicity, no academic jargon - "we work for you, not the other way around"
54
-
55
- ### Lesson
56
- SNHU doesn't compete with Harvard - it competes with "doing nothing." The job isn't "education" but "unfreezing a stuck life."
57
-
58
- ---
59
-
60
- ## 3. American Girl
61
-
62
- ### Situation
63
- Premium doll company ($100+) at a time when competitors offered dolls for $20.
64
-
65
- ### Job
66
- **Mothers/grandmothers:** "When I want to have a meaningful moment with my daughter/granddaughter and pass on values, I want an experience that connects us and teaches, not just a toy."
67
-
68
- **Girls (8-12):** "When I'm at an age where I don't want to be a 'little girl' anymore but I'm not yet a teenager, I want something that takes me seriously and says my interests matter."
69
-
70
- ### Dimensions
71
- - **Functional:** Playing with doll, reading stories
72
- - **Emotional:** Feeling "grown up," understood
73
- - **Social:** Ritual with mother/grandmother, belonging to American Girl "club"
74
-
75
- ### Experience Integration
76
- - Doll + book with story (context, values)
77
- - Stores with hair salons for dolls
78
- - Restaurants where girls eat with their dolls
79
- - Magazine, events, community
80
-
81
- ### Competition
82
- - Not other dolls (!)
83
- - Other "moments with daughter": trips, movies, shopping
84
- - Other ways to pass on values: conversations, books
85
- - Non-consumption: "I'll just buy something at the store"
86
-
87
- ### Lesson
88
- American Girl sells an experience-ritual, not a doll. That's why $100+ price makes sense - it's not a "toy" but a "moment with daughter."
89
-
90
- ---
91
-
92
- ## 4. Intuit QuickBooks
93
-
94
- ### Situation
95
- QuickBooks dominated among small businesses. Attempts to enter the "even smaller" segment (freelancers, single-person) by simplifying the product didn't work.
96
-
97
- ### Job Discovery
98
- Freelancers have a different job than small businesses.
99
-
100
- **Small business job:** "Manage company finances professionally and in compliance with regulations"
101
-
102
- **Freelancer job:** "When I send an invoice to a client, I want to know I'll get paid, and I don't want to feel like an amateur"
103
-
104
- ### Breakthrough: Mint.com → QuickBooks Self-Employed
105
- Instead of "stripped-down QuickBooks" - a completely new product:
106
- - Automatic expense tracking (not manual bookkeeping)
107
- - Bank account integration
108
- - Simple split: business vs personal
109
- - Real-time tax estimation
110
-
111
- ### Lesson
112
- "Simpler version of the same thing" isn't innovation. Different job requires different product, not a simplified old one.
113
-
114
- ---
115
-
116
- ## 5. Airbnb vs Hotels
117
-
118
- ### Business traveler job
119
- "When I travel for work, I want efficiency, predictability, and ability to work"
120
- → Hotel wins (standardization, wifi, desk, room service)
121
-
122
- ### Family traveler job
123
- "When we go somewhere with kids for a week, we want to feel at home, have space, cook, be together"
124
- → Airbnb wins (kitchen, rooms, locality, group pricing)
125
-
126
- ### "Experience" job
127
- "When I want to really get to know a place and feel the locality, not be a tourist"
128
- → Airbnb wins (local hosts, authentic locations)
129
-
130
- ### Lesson
131
- Airbnb doesn't compete with "hotels" - it competes for specific jobs. For some jobs, a hotel is a better "employee."
132
-
133
- ---
134
-
135
- ## Patterns from Case Studies
136
-
137
- ### 1. Same product, different jobs
138
- Morning vs afternoon milkshake - require different solutions even though it's "the same product."
139
-
140
- ### 2. Competition from unexpected places
141
- - SNHU: competitor is "doing nothing"
142
- - American Girl: competitor is "other activities with daughter"
143
- - Milkshake: competitor is banana and boredom
144
-
145
- ### 3. Integration for poorly understood jobs
146
- American Girl and SNHU heavily integrated the experience because the job was poorly served by existing solutions.
147
-
148
- ### 4. Emotions and social aspects often more important than functionality
149
- - SNHU: "prove to myself I can do it"
150
- - American Girl: "moment with daughter"
151
- - Milkshake: "small pleasure to start the day"
152
-
153
- ### 5. Anti-change forces are powerful
154
- SNHU won mainly by reducing anxiety (quick callback, personal advisor) - not by "better education."