@polderlabs/bizar 10.7.0 → 10.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/_shared/AGENT_BASELINE.md +266 -0
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
- package/.claude/agents/_shared/SKILLS.md +109 -0
- package/.claude/agents/brand-designer.md +55 -0
- package/.claude/agents/exec-assistant.md +34 -0
- package/.claude/agents/help-desk.md +44 -0
- package/.claude/agents/it-lead.md +53 -0
- package/.claude/agents/knowledge-manager.md +49 -0
- package/.claude/agents/office-coordinator.md +39 -0
- package/.claude/agents/office-greeter.md +53 -0
- package/.claude/agents/office-manager.md +287 -0
- package/.claude/agents/principal-engineer.md +58 -0
- package/.claude/agents/qa-reviewer.md +51 -0
- package/.claude/agents/research-analyst.md +53 -0
- package/.claude/agents/senior-engineer.md +55 -0
- package/.claude/agents/support-tech.md +87 -0
- package/.claude/agents/vp-engineering.md +54 -0
- package/.claude/commands/audit.md +48 -0
- package/.claude/commands/bizar.md +22 -0
- package/.claude/commands/cron.md +36 -0
- package/.claude/commands/explain.md +17 -0
- package/.claude/commands/goal.md +99 -0
- package/.claude/commands/init.md +15 -0
- package/.claude/commands/learn.md +46 -0
- package/.claude/commands/plan.md +35 -0
- package/.claude/commands/plow-through.md +50 -0
- package/.claude/commands/pr-review.md +49 -0
- package/.claude/commands/setup-provider.md +96 -0
- package/.claude/commands/spec.md +47 -0
- package/.claude/commands/sprint.md +43 -0
- package/.claude/commands/tailscale-serve.md +100 -0
- package/.claude/commands/team.md +132 -0
- package/.claude/commands/test.md +62 -0
- package/.claude/commands/validate.md +68 -0
- package/.claude/commands/visual-plan.md +24 -0
- package/.claude/hooks/README.md +108 -0
- package/.claude/hooks/__tests__/pretooluse-editwrite.test.mjs +146 -0
- package/.claude/hooks/__tests__/sessionend-recall.test.mjs +256 -0
- package/.claude/hooks/__tests__/sessionstart-prime.test.mjs +325 -0
- package/.claude/hooks/__tests__/thinking-route.test.mjs +319 -0
- package/.claude/hooks/auto-instinct.sh +81 -0
- package/.claude/hooks/learning-extract.mjs +92 -0
- package/.claude/hooks/post-merge-audit.sh +93 -0
- package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
- package/.claude/hooks/pretooluse-bash.mjs +87 -0
- package/.claude/hooks/pretooluse-editwrite.mjs +117 -0
- package/.claude/hooks/sessionend-recall.mjs +384 -0
- package/.claude/hooks/sessionstart-prime.mjs +278 -0
- package/.claude/hooks/thinking-route.mjs +314 -0
- package/.claude/hooks/worker-suggest.mjs +110 -0
- package/.claude/settings.json +167 -0
- package/.claude/skills/9router/SKILL.md +80 -0
- package/.claude/skills/9router-chat/SKILL.md +73 -0
- package/.claude/skills/9router-embeddings/SKILL.md +69 -0
- package/.claude/skills/9router-image/SKILL.md +86 -0
- package/.claude/skills/9router-stt/SKILL.md +79 -0
- package/.claude/skills/9router-tts/SKILL.md +80 -0
- package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
- package/.claude/skills/9router-web-search/SKILL.md +91 -0
- package/.claude/skills/agent-browser/SKILL.md +64 -0
- package/.claude/skills/bizar/README.md +9 -0
- package/.claude/skills/bizar/SKILL.md +447 -0
- package/.claude/skills/cpp-coding-standards/README.md +28 -0
- package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
- package/.claude/skills/cpp-testing/README.md +28 -0
- package/.claude/skills/cpp-testing/SKILL.md +304 -0
- package/.claude/skills/cpp-testing/references/coverage.md +370 -0
- package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
- package/.claude/skills/cpp-testing/references/mocking.md +364 -0
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
- package/.claude/skills/cubesandbox/SKILL.md +148 -0
- package/.claude/skills/de-sloppify/SKILL.md +38 -0
- package/.claude/skills/de-sloppify/cleanup.mjs +253 -0
- package/.claude/skills/de-sloppify/cleanup.test.mjs +189 -0
- package/.claude/skills/embedded-esp-idf/README.md +41 -0
- package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
- package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
- package/.claude/skills/glyph/SKILL.md +163 -0
- package/.claude/skills/harness-engineering/SKILL.md +142 -0
- package/.claude/skills/lightrag/SKILL.md +81 -0
- package/.claude/skills/memory-protocol/SKILL.md +105 -0
- package/.claude/skills/obsidian/SKILL.md +306 -0
- package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
- package/.claude/skills/self-improvement/SKILL.md +64 -0
- package/.claude/skills/skillopt/SKILL.md +129 -0
- package/.claude/skills/thinking-archetypes/SKILL.md +90 -0
- package/.claude/skills/thinking-bayesian/SKILL.md +267 -0
- package/.claude/skills/thinking-bounded-rationality/SKILL.md +406 -0
- package/.claude/skills/thinking-circle-of-competence/SKILL.md +216 -0
- package/.claude/skills/thinking-cynefin/SKILL.md +70 -0
- package/.claude/skills/thinking-debiasing/SKILL.md +192 -0
- package/.claude/skills/thinking-dual-process/SKILL.md +282 -0
- package/.claude/skills/thinking-effectuation/SKILL.md +366 -0
- package/.claude/skills/thinking-feedback-loops/SKILL.md +464 -0
- package/.claude/skills/thinking-fermi-estimation/SKILL.md +263 -0
- package/.claude/skills/thinking-first-principles/SKILL.md +167 -0
- package/.claude/skills/thinking-five-whys-plus/SKILL.md +139 -0
- package/.claude/skills/thinking-inversion/SKILL.md +195 -0
- package/.claude/skills/thinking-jobs-to-be-done/SKILL.md +363 -0
- package/.claude/skills/thinking-kepner-tregoe/SKILL.md +154 -0
- package/.claude/skills/thinking-leverage-points/SKILL.md +390 -0
- package/.claude/skills/thinking-lindy-effect/SKILL.md +331 -0
- package/.claude/skills/thinking-map-territory/SKILL.md +111 -0
- package/.claude/skills/thinking-margin-of-safety/SKILL.md +330 -0
- package/.claude/skills/thinking-model-combination/SKILL.md +406 -0
- package/.claude/skills/thinking-model-router/SKILL.md +360 -0
- package/.claude/skills/thinking-model-selection/SKILL.md +341 -0
- package/.claude/skills/thinking-occams-razor/SKILL.md +129 -0
- package/.claude/skills/thinking-ooda/SKILL.md +127 -0
- package/.claude/skills/thinking-opportunity-cost/SKILL.md +360 -0
- package/.claude/skills/thinking-pre-mortem/SKILL.md +170 -0
- package/.claude/skills/thinking-probabilistic/SKILL.md +324 -0
- package/.claude/skills/thinking-red-team/SKILL.md +142 -0
- package/.claude/skills/thinking-regret-minimization/SKILL.md +335 -0
- package/.claude/skills/thinking-reversibility/SKILL.md +326 -0
- package/.claude/skills/thinking-scientific-method/SKILL.md +162 -0
- package/.claude/skills/thinking-second-order/SKILL.md +184 -0
- package/.claude/skills/thinking-socratic/SKILL.md +198 -0
- package/.claude/skills/thinking-steel-manning/SKILL.md +332 -0
- package/.claude/skills/thinking-systems/SKILL.md +238 -0
- package/.claude/skills/thinking-theory-of-constraints/SKILL.md +338 -0
- package/.claude/skills/thinking-thought-experiment/SKILL.md +354 -0
- package/.claude/skills/thinking-triz/SKILL.md +171 -0
- package/.claude/skills/thinking-via-negativa/SKILL.md +358 -0
- package/bizar-dash/skills/publishing/SKILL.md +2 -1
- package/cli/install/postinstall.mjs +54 -28
- package/cli/install/postinstall.test.mjs +98 -0
- package/cli/provision.mjs +29 -0
- package/install.sh +7 -0
- package/package.json +7 -2
- package/scripts/git-hooks/__tests__/commit-msg.test.mjs +61 -0
- package/scripts/git-hooks/commit-msg +38 -0
- package/scripts/install-hooks.sh +9 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thinking-inversion
|
|
3
|
+
description: When planning work where optimism may be hiding risks, ask "how would I guarantee this fails?" — enumerate failure paths, then turn the top ones into explicit requirements to avoid.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Inversion Thinking
|
|
7
|
+
|
|
8
|
+
> **Redirect:** For most risk-anticipation work, prefer `thinking-pre-mortem` — it produces a narrative prospective-hindsight pass that surfaces richer, more specific failure causes than a generic checklist. Use inversion only as a pam failure-mode enumeration on a scoped feature/design; for full plans, launches, or strategic decisions, pre-mortem is the stronger tool.
|
|
9
|
+
|
|
10
|
+
## Trigger Card
|
|
11
|
+
|
|
12
|
+
When planning a scoped feature or design where optimism may be hiding risks:
|
|
13
|
+
|
|
14
|
+
1. **State the goal clearly.**
|
|
15
|
+
2. **Ask: "How would I guarantee this fails?"** — list 10+ concrete failure paths.
|
|
16
|
+
3. **Convert the top 3-5 into explicit avoidance requirements.** (e.g., "No plaintext passwords" → "Use bcrypt with work factor ≥ 12")
|
|
17
|
+
4. **Verify the plan addresses each.**
|
|
18
|
+
|
|
19
|
+
Skip if the task is small/reversible or if failure modes are already well-covered by existing checks. For full plans or launches, use `thinking-pre-mortem` instead.
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
Inversion thinking, championed by Charlie Munger and rooted in mathematician Carl Jacobi's principle "Invert, always invert," approaches problems by considering their opposite. Instead of asking "How do I succeed?", ask "How would I guarantee failure?" then avoid those paths.
|
|
23
|
+
|
|
24
|
+
**Core Principle:** "All I want to know is where I'm going to die, so I'll never go there." — Charlie Munger
|
|
25
|
+
|
|
26
|
+
## When to Use
|
|
27
|
+
- Planning a new project, feature, or initiative
|
|
28
|
+
- Evaluating a decision before committing
|
|
29
|
+
- Identifying risks that optimistic thinking obscures
|
|
30
|
+
- Stuck on how to achieve a positive outcome
|
|
31
|
+
- Need to challenge assumptions in a plan
|
|
32
|
+
- Writing requirements or acceptance criteria
|
|
33
|
+
|
|
34
|
+
Decision flow:
|
|
35
|
+
```
|
|
36
|
+
Have a goal? → yes → Can you list ways to achieve it? → maybe → INVERT FIRST
|
|
37
|
+
↘ no → Definitely invert
|
|
38
|
+
↘ no → Define goal, then invert
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## When NOT to Use
|
|
42
|
+
|
|
43
|
+
- **You're planning a full launch, project, or strategic decision.** Use `thinking-pre-mortem` instead — it produces a narrative prospective-hindsight pass that surfaces richer, more specific failure causes than a checklist enumeration. Inversion is the lighter, faster tool; pre-mortem is the deeper one.
|
|
44
|
+
- The task is small/reversible and failure is cheap — just do it and fix forward.
|
|
45
|
+
- You'd only produce generic boilerplate failure modes ("no tests", "poor naming") that don't apply here; skip if nothing specific surfaces.
|
|
46
|
+
- The failure modes are already well-covered by existing checks (CI, lint, type system); don't re-enumerate what's enforced.
|
|
47
|
+
|
|
48
|
+
## The Process
|
|
49
|
+
|
|
50
|
+
### Step 1: Define the Goal Clearly
|
|
51
|
+
State what success looks like:
|
|
52
|
+
```
|
|
53
|
+
Goal: "Ship a reliable authentication system by Q2"
|
|
54
|
+
Goal: "Build a high-performing engineering team"
|
|
55
|
+
Goal: "Launch product with strong user retention"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Step 2: Invert — Ask "How Would I Fail?"
|
|
59
|
+
List all ways to guarantee failure, ruin, or the opposite of your goal:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Goal: Ship reliable auth system
|
|
63
|
+
Inversions (How to guarantee failure):
|
|
64
|
+
- Skip security review and pen testing
|
|
65
|
+
- No rate limiting or brute force protection
|
|
66
|
+
- Store passwords in plaintext
|
|
67
|
+
- No monitoring or alerting
|
|
68
|
+
- Skip edge cases in testing
|
|
69
|
+
- No documentation for on-call
|
|
70
|
+
- Single point of failure, no redundancy
|
|
71
|
+
- Ignore compliance requirements
|
|
72
|
+
- No rollback plan
|
|
73
|
+
- Deploy on Friday before vacation
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Step 3: Categorize the Failure Modes
|
|
77
|
+
Group by type and severity:
|
|
78
|
+
|
|
79
|
+
| Category | Failure Mode | Severity |
|
|
80
|
+
|----------|--------------|----------|
|
|
81
|
+
| Security | Plaintext passwords | Critical |
|
|
82
|
+
| Security | No rate limiting | High |
|
|
83
|
+
| Operations | No monitoring | High |
|
|
84
|
+
| Operations | No rollback plan | High |
|
|
85
|
+
| Process | Skip security review | Critical |
|
|
86
|
+
| Process | No documentation | Medium |
|
|
87
|
+
| Reliability | Single point of failure | High |
|
|
88
|
+
|
|
89
|
+
### Step 4: Convert to Avoidance Checklist
|
|
90
|
+
Transform each failure mode into a requirement:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Anti-goal: Store passwords in plaintext
|
|
94
|
+
→ Requirement: Use bcrypt/argon2 with appropriate work factor
|
|
95
|
+
|
|
96
|
+
Anti-goal: No rate limiting
|
|
97
|
+
→ Requirement: Implement rate limiting with exponential backoff
|
|
98
|
+
|
|
99
|
+
Anti-goal: Deploy Friday before vacation
|
|
100
|
+
→ Requirement: No deploys within 48h of team unavailability
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Step 5: Prioritize by Impact
|
|
104
|
+
Focus on avoiding the failures that would be:
|
|
105
|
+
- Most damaging if they occurred
|
|
106
|
+
- Most likely to occur without explicit prevention
|
|
107
|
+
- Hardest to recover from
|
|
108
|
+
|
|
109
|
+
## Application Patterns
|
|
110
|
+
|
|
111
|
+
### For Technical Design
|
|
112
|
+
```
|
|
113
|
+
Goal: Build scalable API
|
|
114
|
+
Invert: How to make it fail under load?
|
|
115
|
+
- No caching → Add caching layer
|
|
116
|
+
- Synchronous everything → Add async where appropriate
|
|
117
|
+
- No connection pooling → Implement pooling
|
|
118
|
+
- N+1 queries → Eager loading, query optimization
|
|
119
|
+
- No circuit breakers → Add circuit breakers
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### For Code Review
|
|
123
|
+
```
|
|
124
|
+
Goal: Merge high-quality code
|
|
125
|
+
Invert: What would make this PR problematic?
|
|
126
|
+
- Introduces security vulnerability
|
|
127
|
+
- Breaks existing functionality
|
|
128
|
+
- No tests for new behavior
|
|
129
|
+
- Unclear intent/poor naming
|
|
130
|
+
- Performance regression
|
|
131
|
+
- Missing error handling
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### For Career/Team Building
|
|
135
|
+
```
|
|
136
|
+
Goal: Build successful engineering career
|
|
137
|
+
Invert (Munger's list of what to avoid):
|
|
138
|
+
- Be unreliable
|
|
139
|
+
- Learn only from your own mistakes (ignore others')
|
|
140
|
+
- Give up after first failure
|
|
141
|
+
- Be resentful and envious
|
|
142
|
+
- Stay within comfort zone
|
|
143
|
+
- Avoid difficult conversations
|
|
144
|
+
- Don't learn continuously
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### For Project Planning
|
|
148
|
+
```
|
|
149
|
+
Goal: Successful product launch
|
|
150
|
+
Invert: How to guarantee launch failure?
|
|
151
|
+
- No user research → Validate with users
|
|
152
|
+
- No load testing → Load test before launch
|
|
153
|
+
- No rollback capability → Build rollback
|
|
154
|
+
- No success metrics defined → Define metrics upfront
|
|
155
|
+
- Team burnout → Sustainable pace
|
|
156
|
+
- No communication plan → Prepare stakeholder comms
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Combining with Pre-Mortem
|
|
160
|
+
Inversion + Pre-Mortem creates powerful risk identification:
|
|
161
|
+
|
|
162
|
+
1. **Inversion**: List ways the project could fail (theoretical)
|
|
163
|
+
2. **Pre-Mortem**: Imagine it DID fail, explain why (narrative)
|
|
164
|
+
3. **Synthesize**: Combine both lists, prioritize, mitigate
|
|
165
|
+
|
|
166
|
+
## Common Inversions for Software
|
|
167
|
+
|
|
168
|
+
| Domain | Goal | Key Inversions to Avoid |
|
|
169
|
+
|--------|------|------------------------|
|
|
170
|
+
| Security | Secure system | Trusting user input, weak auth, exposed secrets |
|
|
171
|
+
| Performance | Fast system | No caching, blocking calls, no indexes |
|
|
172
|
+
| Reliability | Stable system | No monitoring, no redundancy, no graceful degradation |
|
|
173
|
+
| Maintainability | Clean code | No tests, cryptic names, tight coupling |
|
|
174
|
+
| Team | High performance | Poor communication, no psychological safety, unclear goals |
|
|
175
|
+
|
|
176
|
+
## Verification Checklist
|
|
177
|
+
- [ ] Goal clearly defined
|
|
178
|
+
- [ ] Listed 10+ ways to fail/achieve opposite
|
|
179
|
+
- [ ] Categorized failures by type and severity
|
|
180
|
+
- [ ] Converted top failures to explicit requirements
|
|
181
|
+
- [ ] Verified plan addresses the most critical inversions
|
|
182
|
+
- [ ] Re-checked the top inversions against the actual design for blind spots
|
|
183
|
+
|
|
184
|
+
## Key Questions
|
|
185
|
+
- "What would guarantee failure here?"
|
|
186
|
+
- "What mistakes do others commonly make?"
|
|
187
|
+
- "What am I most likely to overlook?"
|
|
188
|
+
- "If this fails spectacularly, what will the postmortem say?"
|
|
189
|
+
- "What would I tell someone else to avoid?"
|
|
190
|
+
- "What would the opposite of success look like, specifically?"
|
|
191
|
+
|
|
192
|
+
## Munger's Warning
|
|
193
|
+
"It is remarkable how much long-term advantage people like us have gotten by trying to be consistently not stupid, instead of trying to be very intelligent."
|
|
194
|
+
|
|
195
|
+
The power of inversion is in avoiding obvious errors that optimism blinds us to. Simple avoidance often beats clever optimization.
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thinking-jobs-to-be-done
|
|
3
|
+
description: Deciding what to build or why a feature isn't adopted. Reframe from features to the "job" users hire the product for — the progress they seek — to prioritize and position.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Jobs to Be Done
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Jobs to Be Done (JTBD), developed by Clayton Christensen, reframes product thinking around the progress customers are trying to make in their lives. People don't buy products; they "hire" products to do a job. Understanding the job reveals what you're really competing against and what success looks like.
|
|
11
|
+
|
|
12
|
+
**Core Principle:** People don't want a quarter-inch drill. They don't even want a quarter-inch hole. They want to hang a picture of their family.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- Product development and roadmapping
|
|
17
|
+
- Feature prioritization
|
|
18
|
+
- User research and interviews
|
|
19
|
+
- Competitive analysis
|
|
20
|
+
- Market positioning
|
|
21
|
+
- Understanding "surprising" competitors
|
|
22
|
+
- Debugging low adoption of features
|
|
23
|
+
|
|
24
|
+
Decision flow:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
Building/improving a product?
|
|
28
|
+
→ Do you understand the job users hire it for? → no → DISCOVER THE JOB
|
|
29
|
+
→ Are features not being adopted? → yes → CHECK JOB ALIGNMENT
|
|
30
|
+
→ Surprising competitors winning? → yes → IDENTIFY THEIR JOB
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## When NOT to Use
|
|
34
|
+
|
|
35
|
+
- **Skip for execution and infrastructure problems.** If the task is "fix this bug," "make this query faster," "design this schema," "wire up CI" — the job is already known and the work is technical. JTBD adds nothing; route to debugging, theory-of-constraints, or architecture skills instead.
|
|
36
|
+
- **Skip when the job is already well-established** and the open question is purely *how* to build it, not *whether/why*.
|
|
37
|
+
- **Don't use it to retro-justify** a feature decision already made — that's framework theater. Use it before prioritization, to change the decision.
|
|
38
|
+
|
|
39
|
+
## Trigger Card
|
|
40
|
+
|
|
41
|
+
When deciding what to build or why a feature isn't adopted:
|
|
42
|
+
|
|
43
|
+
1. **Identify the job** — what progress is the user trying to make in a specific situation? Frame it as "When [situation], I want to [progress]."
|
|
44
|
+
2. **Map competing solutions** — what do users currently hire to get this job done? Include non-software alternatives.
|
|
45
|
+
3. **Find the underserved job dimension** — where do current solutions fall short? Build for that gap.
|
|
46
|
+
|
|
47
|
+
Skip if the job is already well-established and the question is purely how to build it. Don't use to retro-justify a decision already made.
|
|
48
|
+
|
|
49
|
+
## Understanding Jobs
|
|
50
|
+
|
|
51
|
+
### The Job Formula
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
When I [situation/trigger]
|
|
55
|
+
I want to [motivation/progress]
|
|
56
|
+
So I can [desired outcome/better state]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Example:**
|
|
60
|
+
```
|
|
61
|
+
When I [finish a project milestone]
|
|
62
|
+
I want to [notify my team without disrupting their focus]
|
|
63
|
+
So I can [maintain team awareness while respecting their time]
|
|
64
|
+
|
|
65
|
+
Job: "Keep team informed asynchronously"
|
|
66
|
+
Not: "Use Slack" (that's a solution, not the job)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Job Dimensions
|
|
70
|
+
|
|
71
|
+
Every job has multiple dimensions:
|
|
72
|
+
|
|
73
|
+
| Dimension | Question | Example (Project Management Tool) |
|
|
74
|
+
|-----------|----------|-----------------------------------|
|
|
75
|
+
| Functional | What task needs doing? | Track tasks, assign work, see progress |
|
|
76
|
+
| Emotional | How do I want to feel? | In control, not overwhelmed, confident |
|
|
77
|
+
| Social | How do I want to appear? | Organized, reliable, professional |
|
|
78
|
+
|
|
79
|
+
### Job Context
|
|
80
|
+
|
|
81
|
+
Jobs are situation-specific:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Same person, different jobs:
|
|
85
|
+
|
|
86
|
+
Morning: "Help me triage what needs attention today"
|
|
87
|
+
→ Simple dashboard, prioritized list
|
|
88
|
+
|
|
89
|
+
Deep work: "Get out of my way, let me focus"
|
|
90
|
+
→ Minimal notifications, distraction-free
|
|
91
|
+
|
|
92
|
+
End of day: "Help me hand off cleanly so I can disconnect"
|
|
93
|
+
→ Status summary, async update capabilities
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## The JTBD Discovery Process
|
|
97
|
+
|
|
98
|
+
### Step 1: Identify Job Performers
|
|
99
|
+
|
|
100
|
+
Who is "hiring" your product?
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## Job Performers
|
|
104
|
+
|
|
105
|
+
Primary: Engineering managers
|
|
106
|
+
- Hire product for: tracking team delivery
|
|
107
|
+
- Frequency: daily
|
|
108
|
+
- Stakes: team performance visible to leadership
|
|
109
|
+
|
|
110
|
+
Secondary: Individual engineers
|
|
111
|
+
- Hire product for: knowing what to work on next
|
|
112
|
+
- Frequency: multiple times daily
|
|
113
|
+
- Stakes: personal productivity and recognition
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Step 2: Derive the Job From Available Artifacts
|
|
117
|
+
|
|
118
|
+
You usually can't run live user interviews. Instead, **reconstruct the job from the evidence already in front of you** — the PRD, tickets, support transcripts, analytics, and the code itself. Read these and answer the interview questions *from the artifacts*:
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
## JTBD Evidence Sources (in priority order)
|
|
122
|
+
|
|
123
|
+
1. PRD / spec / design doc
|
|
124
|
+
- What problem statement and "success" definition does it state?
|
|
125
|
+
- What user motivation is asserted (and is it backed by evidence)?
|
|
126
|
+
|
|
127
|
+
2. Tickets / issues / support threads / sales notes
|
|
128
|
+
- What trigger made the user reach for this? ("When I…")
|
|
129
|
+
- What did they try before / complain about? (the switch + the pain)
|
|
130
|
+
- Recurring phrasings = the real job, in the user's words
|
|
131
|
+
|
|
132
|
+
3. Usage / analytics / logs
|
|
133
|
+
- Where do users actually go, and where do they drop off?
|
|
134
|
+
- Which flows get repeated (real job) vs. abandoned (stated but not real)?
|
|
135
|
+
|
|
136
|
+
4. The code / config itself
|
|
137
|
+
- What does the feature actually let a user accomplish today?
|
|
138
|
+
|
|
139
|
+
Then answer, from that evidence — NOT from a hypothetical interview:
|
|
140
|
+
- Trigger: what situation makes them reach for this?
|
|
141
|
+
- Progress sought: what better state are they after?
|
|
142
|
+
- Switch: what were they using before, and what was wrong with it?
|
|
143
|
+
- Done signal: how do they know the job is finished?
|
|
144
|
+
|
|
145
|
+
If the artifacts genuinely don't answer these, name the gap explicitly and
|
|
146
|
+
flag that user research is needed — do NOT invent quotes or fabricate a
|
|
147
|
+
persona to fill it.
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Step 3: Analyze Competing Solutions
|
|
151
|
+
|
|
152
|
+
What else could do this job?
|
|
153
|
+
|
|
154
|
+
```markdown
|
|
155
|
+
## Competition for "Keep team informed on project status"
|
|
156
|
+
|
|
157
|
+
Direct competitors:
|
|
158
|
+
- Other project management tools (Asana, Monday.com)
|
|
159
|
+
|
|
160
|
+
Indirect competitors (same job, different solution):
|
|
161
|
+
- Email updates
|
|
162
|
+
- Slack messages
|
|
163
|
+
- Weekly standup meetings
|
|
164
|
+
- Walking over to someone's desk
|
|
165
|
+
- Spreadsheets
|
|
166
|
+
|
|
167
|
+
Non-consumption:
|
|
168
|
+
- Just hope everyone knows
|
|
169
|
+
- Let things fall through cracks
|
|
170
|
+
|
|
171
|
+
Insight: We're not competing with other tools—we're competing
|
|
172
|
+
with "just send an email" and "bring it up in standup"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Step 4: Map Job Steps
|
|
176
|
+
|
|
177
|
+
Break the job into stages:
|
|
178
|
+
|
|
179
|
+
```markdown
|
|
180
|
+
## Job Map: "Deliver working software on time"
|
|
181
|
+
|
|
182
|
+
1. Define: Understand what needs to be built
|
|
183
|
+
- Sub-jobs: Clarify requirements, estimate scope, identify risks
|
|
184
|
+
|
|
185
|
+
2. Plan: Organize how to build it
|
|
186
|
+
- Sub-jobs: Break into tasks, sequence work, allocate resources
|
|
187
|
+
|
|
188
|
+
3. Execute: Build the thing
|
|
189
|
+
- Sub-jobs: Track progress, remove blockers, adjust course
|
|
190
|
+
|
|
191
|
+
4. Validate: Confirm it works
|
|
192
|
+
- Sub-jobs: Test, get feedback, verify acceptance criteria
|
|
193
|
+
|
|
194
|
+
5. Deliver: Get it to users
|
|
195
|
+
- Sub-jobs: Deploy, communicate, monitor
|
|
196
|
+
|
|
197
|
+
Pain points cluster around: #2 (scope conflicts) and #3 (blocker visibility)
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Step 5: Identify Outcome Metrics
|
|
201
|
+
|
|
202
|
+
What does success look like for the job?
|
|
203
|
+
|
|
204
|
+
```markdown
|
|
205
|
+
## Desired Outcomes: "Deliver working software on time"
|
|
206
|
+
|
|
207
|
+
Minimize:
|
|
208
|
+
- Time spent on status reporting
|
|
209
|
+
- Surprises in sprint reviews
|
|
210
|
+
- Blocked time waiting for others
|
|
211
|
+
- Rework from misunderstood requirements
|
|
212
|
+
|
|
213
|
+
Maximize:
|
|
214
|
+
- Confidence in delivery timeline
|
|
215
|
+
- Clarity on priorities
|
|
216
|
+
- Team awareness of blockers
|
|
217
|
+
- Early warning of issues
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## JTBD Application Patterns
|
|
221
|
+
|
|
222
|
+
### Feature Prioritization
|
|
223
|
+
|
|
224
|
+
```markdown
|
|
225
|
+
## Feature Evaluation: Job Lens
|
|
226
|
+
|
|
227
|
+
Feature: Advanced reporting dashboard
|
|
228
|
+
|
|
229
|
+
Job it serves: "Demonstrate team value to leadership"
|
|
230
|
+
Job performers: ~10% of users (managers reporting up)
|
|
231
|
+
Job frequency: Monthly
|
|
232
|
+
Alternative solutions: Screenshots + slides (works fine)
|
|
233
|
+
|
|
234
|
+
Verdict: Low priority - job is infrequent, alternatives adequate
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
Feature: Blocker visibility alerts
|
|
239
|
+
|
|
240
|
+
Job it serves: "Remove obstacles before they delay delivery"
|
|
241
|
+
Job performers: ~60% of users (anyone managing work)
|
|
242
|
+
Job frequency: Daily
|
|
243
|
+
Alternative solutions: Manual check-ins (time-consuming, often missed)
|
|
244
|
+
|
|
245
|
+
Verdict: High priority - frequent job, poor alternatives
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Competitive Analysis
|
|
249
|
+
|
|
250
|
+
```markdown
|
|
251
|
+
## Competitive Analysis via JTBD
|
|
252
|
+
|
|
253
|
+
Our product: Developer documentation tool
|
|
254
|
+
|
|
255
|
+
Traditional competitive frame:
|
|
256
|
+
- Competitors: ReadMe, GitBook, Docusaurus
|
|
257
|
+
- Differentiation: Features, pricing, integrations
|
|
258
|
+
|
|
259
|
+
JTBD competitive frame:
|
|
260
|
+
Job: "Help developers integrate our API successfully"
|
|
261
|
+
|
|
262
|
+
Competitors for this job:
|
|
263
|
+
- Our own code examples (strongest competitor!)
|
|
264
|
+
- Stack Overflow answers
|
|
265
|
+
- Competitor's documentation
|
|
266
|
+
- Direct support from our team
|
|
267
|
+
- Just trying stuff until it works
|
|
268
|
+
|
|
269
|
+
Insight: Improving code examples in docs might beat any feature work
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Low Adoption Debugging
|
|
273
|
+
|
|
274
|
+
```markdown
|
|
275
|
+
## Why isn't Feature X being used?
|
|
276
|
+
|
|
277
|
+
Feature: Automated weekly report generation
|
|
278
|
+
Usage: 3% of target users
|
|
279
|
+
|
|
280
|
+
JTBD analysis:
|
|
281
|
+
Expected job: "Create status reports efficiently"
|
|
282
|
+
Actual job: "Demonstrate my judgment and insight to leadership"
|
|
283
|
+
|
|
284
|
+
Problem: Automated reports don't show judgment
|
|
285
|
+
The PROCESS of creating reports is part of the job
|
|
286
|
+
They want to curate, not automate
|
|
287
|
+
|
|
288
|
+
Solution: Change from "generate report" to "draft report for review"
|
|
289
|
+
Support the curation job, don't replace it
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## JTBD Template
|
|
293
|
+
|
|
294
|
+
```markdown
|
|
295
|
+
# Jobs to Be Done Analysis: [Product/Feature]
|
|
296
|
+
|
|
297
|
+
## Job Performers
|
|
298
|
+
| Performer | Hire For | Frequency | Stakes |
|
|
299
|
+
|-----------|----------|-----------|--------|
|
|
300
|
+
| | | | |
|
|
301
|
+
|
|
302
|
+
## Primary Job
|
|
303
|
+
|
|
304
|
+
When I [situation/trigger]
|
|
305
|
+
I want to [motivation/progress]
|
|
306
|
+
So I can [desired outcome]
|
|
307
|
+
|
|
308
|
+
### Job Dimensions
|
|
309
|
+
- Functional: [What task]
|
|
310
|
+
- Emotional: [How feel]
|
|
311
|
+
- Social: [How appear]
|
|
312
|
+
|
|
313
|
+
## Job Map
|
|
314
|
+
1. [Stage]: [Sub-jobs]
|
|
315
|
+
2. [Stage]: [Sub-jobs]
|
|
316
|
+
...
|
|
317
|
+
|
|
318
|
+
## Competing Solutions
|
|
319
|
+
| Competitor | How it does the job | Where it falls short |
|
|
320
|
+
|------------|---------------------|---------------------|
|
|
321
|
+
| | | |
|
|
322
|
+
|
|
323
|
+
## Desired Outcomes
|
|
324
|
+
Minimize:
|
|
325
|
+
- [Negative outcome]
|
|
326
|
+
|
|
327
|
+
Maximize:
|
|
328
|
+
- [Positive outcome]
|
|
329
|
+
|
|
330
|
+
## Implications
|
|
331
|
+
- Feature should: [Insight]
|
|
332
|
+
- Feature shouldn't: [Insight]
|
|
333
|
+
- Position against: [True competitor]
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
## Verification Checklist
|
|
337
|
+
|
|
338
|
+
- [ ] Identified job performers (who hires the product)
|
|
339
|
+
- [ ] Articulated job in When/Want/So format
|
|
340
|
+
- [ ] Considered functional, emotional, and social dimensions
|
|
341
|
+
- [ ] Mapped job steps
|
|
342
|
+
- [ ] Identified all competing solutions (including non-consumption)
|
|
343
|
+
- [ ] Defined measurable desired outcomes
|
|
344
|
+
- [ ] Features traced to specific jobs
|
|
345
|
+
|
|
346
|
+
## Key Questions
|
|
347
|
+
|
|
348
|
+
- "What job is the user hiring this product to do?"
|
|
349
|
+
- "What progress are they trying to make?"
|
|
350
|
+
- "What are they switching from? (Including 'nothing')"
|
|
351
|
+
- "What are they giving up by using this?"
|
|
352
|
+
- "What does success look like for this job?"
|
|
353
|
+
- "What surprising competitors exist for this job?"
|
|
354
|
+
|
|
355
|
+
## Christensen's Wisdom
|
|
356
|
+
|
|
357
|
+
"People don't want a quarter-inch drill bit. They want a quarter-inch hole."
|
|
358
|
+
|
|
359
|
+
Actually: They want to hang a picture. Actually: They want to enjoy their family photos. The deeper you go, the more insight you get into what "better" really means.
|
|
360
|
+
|
|
361
|
+
"The jobs that arise in people's lives are the fundamental causal driver behind everything."
|
|
362
|
+
|
|
363
|
+
Products don't fail because of features. They fail because they don't help people make progress on jobs they care about. Understand the job, and the features become obvious.
|