Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run a full Jobs-To-Be-Done discovery workshop with switch interviews, forces-of-progress mapping, ODI outcome scoring, and opportunity statements across 2hr, 4hr, and 8hr formats.
.claude/skills/borghei-jtbd-workshop/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 49% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 66% | 0% |
Run a Jobs-To-Be-Done (JTBD) workshop end-to-end. This skill is the workshop facilitation companion to the execution/job-stories/ skill (the writing format for backlog stories). Where job-stories/ produces When/Want/So statements for individual backlog items, this skill produces the upstream discovery output -- the job hierarchy, the forces driving switching behavior, and the desired-outcome statements that anchor product strategy.
The workshop synthesizes four JTBD schools: Christensen's milkshake hiring frame, Ulwick's Outcome-Driven Innovation (ODI) with importance/satisfaction scoring, Klement's situation-motivation-outcome canvas (the job story format), and Moesta's switch interview method surfacing the four forces of progress (push, pull, anxiety, habit). A well-run workshop produces three artifacts: a ranked job hierarchy with measurable outcome statements, a forces-of-progress map, and a prioritized opportunity list ready to feed PRDs, OKRs, or roadmap themes.
Before planning the workshop, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
<verb> <object> <context>) with named owners.identify-assumptions/, brainstorm-experiments/, or create-prd/. Revisit quarterly.Load the reference that matches the task -- keep this file lean and pull detail on demand:
Workshop templates live in assets/: workshop_agenda_2hr.md, workshop_agenda_4hr.md, workshop_agenda_8hr.md, pre_work_email.md, switch_interview_script.md, forces_of_progress_canvas.md.
In scope: 2h/4h/8h formats; switch interview script and four-anchor timeline; forces-of-progress mapping; Ulwick outcome statements with Importance x Satisfaction scoring; Klement situation-motivation-outcome decomposition (bridge to execution/job-stories/); pre-work email and participant brief.
Out of scope: writing individual backlog stories (execution/job-stories/); quantitative ODI surveying at scale; recording/transcription tooling; recruiting operations; personas (JTBD is segment-by-job, not persona-by-demographic).
Caveats: switch interviews require recent (90-day) switchers; the 2-hour format is for validation, not primary discovery; ODI scoring is sensitive to who is in the room (internal scores are hypotheses, customer-derived scores are truth); a workshop without customer voice produces team-aligned fiction.
| Integration | Direction | What Flows | |-------------|-----------|------------| | discovery/customer-interview-script/ | Receives from | Switch interviews use the base interview script structure | | discovery/interview-synthesis/ | Receives from | Synthesized themes seed the snippet wall on workshop day | | discovery/identify-assumptions/ | Feeds into | Top outcomes become assumptions to test | | discovery/brainstorm-experiments/ | Feeds into | Forces-of-progress weaknesses become experiment hypotheses | | discovery/value-proposition-canvas/ | Feeds into | Jobs, pains, gains populate the Customer Profile | | execution/job-stories/ | Feeds into | Job + outcome decomposition becomes When/Want/So backlog stories | | execution/create-prd/ | Feeds into | Job hierarchy populates PRD Section 5; outcomes populate Section 6 | | execution/outcome-roadmap/ | Feeds into | Top desired outcomes become roadmap themes | | execution/north-star-metric/ | Feeds into | The highest-priority outcome often becomes the input metric tree root |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 18,016 | 21,161 | +17% | 1 | 1 | 0% | 2,809 | 4,969 | +77% | 0 | 0 | — |
case-01 | fail→fail | 25,218 | 18,862 | -25% | 1 | 1 | 0% | 3,858 | 4,545 | +18% | 0 | 0 | — |
case-02 | fail→fail | 38,877 | 27,768 | -29% | 1 | 1 | 0% | 6,214 | 6,210 | -0% | 0 | 0 | — |
case-03 | fail→fail | 25,896 | 31,897 | +23% | 1 | 1 | 0% | 3,917 | 6,430 | +64% | 0 | 0 | — |
case-05 | pass→pass | 13,458 | 9,247 | -31% | 1 | 1 | 0% | 1,897 | 2,756 | +45% | 0 | 0 | — |
case-06 | pass→pass | 12,774 | 9,348 | -27% | 1 | 1 | 0% | 1,866 | 3,012 | +61% | 0 | 0 | — |
case-07 | fail→pass | 13,361 | 8,270 | -38% | 1 | 1 | 0% | 2,157 | 2,773 | +29% | 0 | 0 | — |
case-08 | pass→pass | 10,045 | 7,141 | -29% | 1 | 1 | 0% | 1,635 | 2,683 | +64% | 0 | 0 | — |
case-09 | pass→pass | 15,033 | 9,439 | -37% | 1 | 1 | 0% | 2,285 | 2,953 | +29% | 0 | 0 | — |
case-10 | pass→pass | 14,824 | 13,570 | -8% | 1 | 1 | 0% | 2,280 | 3,497 | +53% | 0 | 0 | — |
case-11 | fail→pass | 12,815 | 9,572 | -25% | 1 | 1 | 0% | 1,957 | 2,899 | +48% | 0 | 0 | — |
case-12 | pass→pass | 12,272 | 9,124 | -26% | 1 | 1 | 0% | 1,800 | 2,975 | +65% | 0 | 0 | — |
case-13 | pass→pass | 11,965 | 9,760 | -18% | 1 | 1 | 0% | 1,670 | 2,914 | +74% | 0 | 0 | — |
case-14 | pass→pass | 15,128 | 12,068 | -20% | 1 | 1 | 0% | 2,243 | 3,398 | +51% | 0 | 0 | — |
case-15 | pass→pass | 12,334 | 11,310 | -8% | 1 | 1 | 0% | 1,966 | 3,296 | +68% | 0 | 0 | — |
case-16 | pass→fail | 16,495 | 12,026 | -27% | 1 | 1 | 0% | 2,571 | 3,269 | +27% | 0 | 0 | — |
case-17 | pass→pass | 12,312 | 8,546 | -31% | 1 | 1 | 0% | 1,832 | 2,672 | +46% | 0 | 0 | — |
case-18 | fail→pass | 13,587 | 10,391 | -24% | 1 | 1 | 0% | 2,109 | 3,035 | +44% | 0 | 0 | — |
case-19 | pass→pass | 11,001 | 8,855 | -20% | 1 | 1 | 0% | 1,632 | 2,895 | +77% | 0 | 0 | — |
case-20 | pass→pass | 11,063 | 6,803 | -39% | 1 | 1 | 0% | 1,698 | 2,570 | +51% | 0 | 0 | — |
case-21 | fail→pass | 13,663 | 9,234 | -32% | 1 | 1 | 0% | 2,011 | 2,987 | +49% | 0 | 0 | — |
case-22 | fail→pass | 12,601 | 10,685 | -15% | 1 | 1 | 0% | 1,887 | 3,123 | +66% | 0 | 0 | — |
case-23 | fail→fail | 29,842 | 21,365 | -28% | 1 | 1 | 0% | 5,089 | 4,911 | -3% | 0 | 0 | — |
case-24 | fail→pass | 30,456 | 12,016 | -61% | 1 | 1 | 0% | 4,955 | 3,325 | -33% | 0 | 0 | — |
case-25 | fail→pass | 17,377 | 16,868 | -3% | 1 | 1 | 0% | 2,668 | 4,133 | +55% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +24 percentage points is the difference between those two pass rates over the 25 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.