jobs-to-be-done
Create and review Jobs to be Done in the Jobs-as-Progress tradition (Klement,
Christensen, Moesta) — a job is the progress a person is trying to make in a
situation, not a task they perform or a feature they use. This skill runs the
customer interview Klement actually recommends, lands a job statement that
survives his tests, and never lets a job sound more certain than its evidence.
This skill is pure craft: zero project facts live in it. It learns the
project only from what the human provides and from the target repo's context
layer (docs/product/). It calls no connectors.
In the A-Team pipeline, the JTBD set is the North Star — every downstream
artifact (PRD, briefs, design, spec) traces back to job ids. That is why jobs are
durable artifacts with strict lifecycle rules, and why this skill is grill-shaped:
inventing a job manufactures a North Star from nothing.
When to use
- You have a rough idea, a struggle, or a hunch about why customers would want
something, and you want to express it as a real job.
- You have discovery evidence (interview notes, research synthesis, support
themes,
docs/product/input/ batches) and need to frame the job(s) inside it.
- You're staring at an existing product or feature and want to recover the job it
actually serves.
- You have draft JTBDs / job stories / "user needs" — or an existing
docs/product/jtbd/ set — and want them stress-tested and improved.
When NOT to use
- Writing a PRD, epic, ticket, or acceptance criteria — those consume a
finished JTBD; route there after this skill.
- Plain user-story writing that's really about implementation scope.
- The user only wants JTBD explained — just answer; don't run the workflow.
Core stance (non-negotiable)
These come straight from the book. Hold them or the output isn't a JTBD. Full
reasoning and quotes: references/theory.md.
- Progress, not activity. A job describes how a customer wants their life to
be different, not what they do with a product. If you can picture someone
performing it, it's a task or a solution — not a job.
- People have jobs; things don't. A job is never "what the product does."
Products are solutions hired for a job.
- No job types. Do not label jobs functional / emotional / social. Every job
is a unique blend of emotional forces; typing creates false categories.
- No demographics or personas. The job lives in the situation and struggle,
not in who the person is.
- Cite technical findings, never restate them. When a dev review touches a
job, what belongs in the job file is the effect on the job — a moved
confidence:, a sources: entry, at most a one-line pointer. The substance
(API analysis, auth needs, stack constraints) lives in research-plan.md.
Solution-side content in a job body fails the rubric, and a second durable
copy under ids-forever semantics will eventually contradict the first.
- Honesty over flattery. A job built from someone's assertions is a
hypothesis, not a validated job. Say so, every time — in the
confidence:
field, not just in conversation.
Where jobs live
Target repo present (invoked with a target path, or the CWD's git root has —
or should have — docs/product/): jobs are durable files, one per job, at
docs/product/jtbd/NN-<slug>.md, in the exact template CONTRACT.md defines
(frontmatter: id, slug, status, confidence, sources; sections: headline
sentence, Context, Today, Forces, Success, Don't know, Related). Rules that bind
every write:
- Ids are forever. Assign the next free
NN by reading the existing set.
Never renumber, never reuse.
- Never delete or silently replace. A job that is wrong or reshaped gets
status: superseded plus a pointer; its replacement is a new file whose
## Related says supersedes [[NN-...]]. Feature artifacts cite ids, so ids
must resolve stably forever.
sources: traces every job to raw input — docs/product/input/ batch
names, transcripts, sketches — so a reviewer can audit what you were told
versus what you inferred.
- Never write a durable file without human review in the same session. The
read-back (below) is mandatory before any write.
input/ is read-only. Humans put evidence there; you ingest it.
- One commit per grill run, message naming what changed and why —
docs(jtbd): 03 reshaped — contract recovery is the job, not search.
No target repo (grilling a hunch in the field, nothing to write into): fall
back to conversational delivery — the full job bundle in-chat, with an offer to
save it as markdown the human can later drop into docs/product/input/ and
formalize. Do not fabricate a docs/product/ outside a target repo: ids minted
outside the durable store break the ids-are-forever rule.
Standalone use is never a weaker-review path: with a repo present, the
read-back and durable rules apply identically whether the A-Team orchestrator or
a human invoked you.
Modes
Route based on what the user brings:
- CREATE (grill mode) — they want new job(s), from an idea, evidence, or an
existing product. Run the interview in
references/interview-guide.md.
- REVIEW (diagnose → uplift) — job statement(s) already exist. In a target
repo the default review set is
docs/product/jtbd/** — review and extend the
existing North Star; never re-derive it from scratch. Diagnose, then grill the
ones worth improving.
If it's ambiguous, ask which they want in one line, then proceed.
Outputs — the job bundle
Every finished job is worked up as a five-part bundle. Three parts land in the
durable file; two are grill-time discipline that stays in the conversation:
| Bundle part |
Where it lands |
| JTBD statement (house format: "When [situation], I want to [progress], so I can [outcome]") |
file headline |
| Forces sketch — push / pull / anxiety / inertia, the demand evidence |
## Forces |
Confidence + evidence basis — strong / moderate / directional / hypothesis + what it rests on |
confidence: frontmatter + sources: |
| Altitude note — the ladder rung chosen and the rungs rejected |
conversation only |
| Progress-form check — the job in Klement's "Free me from [struggle], so I can [better me]" form |
conversation only |
The headline must pass every gate in references/rubric.md, including naming
what it replaces — and the I want to… clause must hold progress, not an
action. Always derive the progress form alongside the house statement: the "free
me" verb makes it obvious whether you're on progress or smuggling in a task. If
the two forms disagree, the job isn't clean yet.
If a job is built on the user's assertions alone, stamp it hypothesis and put
the validation step in ## Don't know (almost always: "confirm by finding
customers who switched from [the replaced solution]").
CREATE workflow (grill mode)
Run the interview one question at a time, each with your recommended answer,
mining provided evidence (including docs/product/input/) before asking. The
full question tree is in references/interview-guide.md — read it before
grilling. The shape:
- Triage. If the input holds more than one distinct struggle, list them and
have the user pick ONE to grill now. In a target repo, park the rest as
real files —
status: parked, next free ids, containing only a draft
headline and a ## Don't know of open questions. Nothing invented: a parked
file records that a struggle was seen, not what you guess about it. One deep
job at a time beats five shallow ones.
- Push & pull first. Klement's rule: study push and pull before anything
else — they're felt outside any product. Find the struggling moment ("when
did the old way stop working?") and the better life they're reaching for.
- Then anxiety & inertia. What makes them hesitate, and what habits pull
them back to the old way. These are the silent competitors.
- Ladder. Express the same struggle at 2–3 altitudes (near-task, workable
middle, near-cosmic). Have the user commit to the rung that's actionable.
- Draft & gate. First draft in the "Free me from…, so I can…" form, then
render the house format for delivery, carrying the progress through. Check
live against
references/rubric.md. When an answer reveals a task, feature,
persona, or job-type, name the sin, point at the failed test, and re-ask —
coaching, not lecturing.
- Converge. Stop when the statement is gate-green or the user says "good
enough." Stamp confidence honestly; if gates are open at override, record
which ones and let that pull confidence down.
- Read-back — mandatory before any durable write. Present the drafted
file(s) — active and parked — exactly as they will be written. The human
corrects; you fix. Only then write.
- Write & commit (target repo only). Write the file(s), then loop: offer
the next parked candidate. Grill it, park it further, or stop — the human
decides. One commit for the run, message naming what changed and why.
REVIEW workflow (diagnose → uplift)
- Diagnose all, cheaply. For each statement, score on two axes — never
conflated:
- Form — well-formed progress statement, or a task / feature / persona /
typed job? Judge from the text via
references/rubric.md.
- Grounding — is there evidence behind it? In a target repo, check
sources: against docs/product/input/; from bare text, flag
"unverifiable — needs grounding" rather than guessing.
- Rank. Surface the worst offenders and the highest-value fixes.
- Uplift. Grill the chosen ones into shape using the CREATE workflow.
Review exists to raise quality — default toward grilling, don't stop at the
verdict.
- Deliver. In a target repo, a reshaped job is a new file that
supersedes the old (old flips
status: superseded + pointer; nothing else in
the old file changes). A statement rejected as not-a-job flips to
superseded or parked with the verdict noted in ## Don't know. Read-back
before writing, one commit per run — identical to CREATE.
No human present
This skill is a grill: it cannot run without a human. If invoked with nobody to
answer (e.g. as a subagent), escalate, never guess: serialise the blocking
questions — one per heading — into docs/product/context.md under
## Awaiting answers (or report them in your return text when there is no
target repo), leave any in-flight work uncommitted-clean, and halt with a report.
Autonomous degrade is forbidden. Answering your own questions and writing
invented jobs into docs/product/jtbd/ manufactures a North Star from nothing,
and every downstream agent treats it as ground truth. Assumption-flags do not
mitigate this.
References
references/theory.md — the book's model: definition, the four forces,
competition, the two-interpretations critique, the nine principles.
references/interview-guide.md — the grill question tree and Klement's own
elicitation questions. Read before any CREATE grill.
references/rubric.md — the gate checklist for both modes (the convergence
condition). Read before drafting or diagnosing.
references/examples.md — good job statements, the failure modes with
rewrites, and a worked grill transcript.
1---2name: jobs-to-be-done3description: Use to CREATE or REVIEW a Job to be Done (JTBD) in Alan Klement's demand-side, progress-based sense — a job is the progress a customer is trying to make, never a task or feature. Trigger whenever someone wants to write or draft a JTBD, job statement, or job story; figure out the real motivation, struggle, or progress behind a feature, request, or product; understand why customers switch, adopt, or churn; turn interview notes or research into jobs; or pressure-test, sharpen, or rewrite existing JTBDs into proper jobs. Also trigger on "grill my JTBD", "is this a real job or just a task/feature", "what's the actual job here", "why would they switch". In an A-Team target repo, jobs are durable artifacts — this skill writes docs/product/jtbd/NN-<slug>.md per CONTRACT.md and never deletes or silently rewrites a job. Do NOT use for writing PRDs, roadmaps, tickets, or acceptance criteria (those consume a finished JTBD), or for implementation user stories.4---56# jobs-to-be-done78Create and review Jobs to be Done in the **Jobs-as-Progress** tradition (Klement,9Christensen, Moesta) — a job is the *progress a person is trying to make in a10situation*, not a task they perform or a feature they use. This skill runs the11customer interview Klement actually recommends, lands a job statement that12survives his tests, and never lets a job sound more certain than its evidence.1314This skill is **pure craft**: zero project facts live in it. It learns the15project only from what the human provides and from the target repo's context16layer (`docs/product/`). It calls no connectors.1718In the A-Team pipeline, the JTBD set is the **North Star** — every downstream19artifact (PRD, briefs, design, spec) traces back to job ids. That is why jobs are20durable artifacts with strict lifecycle rules, and why this skill is grill-shaped:21inventing a job manufactures a North Star from nothing.2223## When to use2425- You have a rough idea, a struggle, or a hunch about why customers would want26 something, and you want to express it as a real job.27- You have discovery evidence (interview notes, research synthesis, support28 themes, `docs/product/input/` batches) and need to frame the job(s) inside it.29- You're staring at an existing product or feature and want to recover the job it30 actually serves.31- You have draft JTBDs / job stories / "user needs" — or an existing32 `docs/product/jtbd/` set — and want them stress-tested and improved.3334## When NOT to use3536- Writing a PRD, epic, ticket, or acceptance criteria — those *consume* a37 finished JTBD; route there after this skill.38- Plain user-story writing that's really about implementation scope.39- The user only wants JTBD explained — just answer; don't run the workflow.4041## Core stance (non-negotiable)4243These come straight from the book. Hold them or the output isn't a JTBD. Full44reasoning and quotes: `references/theory.md`.4546- **Progress, not activity.** A job describes how a customer wants their life to47 be *different*, not what they do with a product. If you can picture someone48 performing it, it's a task or a solution — not a job.49- **People have jobs; things don't.** A job is never "what the product does."50 Products are solutions hired for a job.51- **No job types.** Do not label jobs functional / emotional / social. Every job52 is a unique blend of emotional forces; typing creates false categories.53- **No demographics or personas.** The job lives in the *situation and struggle*,54 not in who the person is.55- **Cite technical findings, never restate them.** When a dev review touches a56 job, what belongs in the job file is the *effect on the job* — a moved57 `confidence:`, a `sources:` entry, at most a one-line pointer. The substance58 (API analysis, auth needs, stack constraints) lives in `research-plan.md`.59 Solution-side content in a job body fails the rubric, and a second durable60 copy under ids-forever semantics will eventually contradict the first.61- **Honesty over flattery.** A job built from someone's assertions is a62 *hypothesis*, not a validated job. Say so, every time — in the `confidence:`63 field, not just in conversation.6465## Where jobs live6667**Target repo present** (invoked with a target path, or the CWD's git root has —68or should have — `docs/product/`): jobs are durable files, one per job, at69`docs/product/jtbd/NN-<slug>.md`, in the exact template CONTRACT.md defines70(frontmatter: `id`, `slug`, `status`, `confidence`, `sources`; sections: headline71sentence, Context, Today, Forces, Success, Don't know, Related). Rules that bind72every write:7374- **Ids are forever.** Assign the next free `NN` by reading the existing set.75 Never renumber, never reuse.76- **Never delete or silently replace.** A job that is wrong or reshaped gets77 `status: superseded` plus a pointer; its replacement is a **new file** whose78 `## Related` says `supersedes [[NN-...]]`. Feature artifacts cite ids, so ids79 must resolve stably forever.80- **`sources:` traces every job to raw input** — `docs/product/input/` batch81 names, transcripts, sketches — so a reviewer can audit what you were told82 versus what you inferred.83- **Never write a durable file without human review in the same session.** The84 read-back (below) is mandatory before any write.85- **`input/` is read-only.** Humans put evidence there; you ingest it.86- **One commit per grill run**, message naming what changed and why —87 `docs(jtbd): 03 reshaped — contract recovery is the job, not search`.8889**No target repo** (grilling a hunch in the field, nothing to write into): fall90back to conversational delivery — the full job bundle in-chat, with an offer to91save it as markdown the human can later drop into `docs/product/input/` and92formalize. Do not fabricate a `docs/product/` outside a target repo: ids minted93outside the durable store break the ids-are-forever rule.9495Standalone use is **never a weaker-review path**: with a repo present, the96read-back and durable rules apply identically whether the A-Team orchestrator or97a human invoked you.9899## Modes100101Route based on what the user brings:102103- **CREATE (grill mode)** — they want new job(s), from an idea, evidence, or an104 existing product. Run the interview in `references/interview-guide.md`.105- **REVIEW (diagnose → uplift)** — job statement(s) already exist. In a target106 repo the default review set is `docs/product/jtbd/**` — review and extend the107 existing North Star; never re-derive it from scratch. Diagnose, then grill the108 ones worth improving.109110If it's ambiguous, ask which they want in one line, then proceed.111112## Outputs — the job bundle113114Every finished job is worked up as a five-part bundle. Three parts land in the115durable file; two are grill-time discipline that stays in the conversation:116117| Bundle part | Where it lands |118|---|---|119| **JTBD statement** (house format: *"When [situation], I want to [progress], so I can [outcome]"*) | file headline |120| **Forces sketch** — push / pull / anxiety / inertia, the demand evidence | `## Forces` |121| **Confidence + evidence basis** — `strong / moderate / directional / hypothesis` + what it rests on | `confidence:` frontmatter + `sources:` |122| **Altitude note** — the ladder rung chosen and the rungs rejected | conversation only |123| **Progress-form check** — the job in Klement's *"Free me from [struggle], so I can [better me]"* form | conversation only |124125The headline must pass every gate in `references/rubric.md`, including naming126what it replaces — and the `I want to…` clause must hold *progress*, not an127action. Always derive the progress form alongside the house statement: the "free128me" verb makes it obvious whether you're on progress or smuggling in a task. If129the two forms disagree, the job isn't clean yet.130131If a job is built on the user's assertions alone, stamp it `hypothesis` and put132the validation step in `## Don't know` (almost always: *"confirm by finding133customers who switched from [the replaced solution]"*).134135## CREATE workflow (grill mode)136137Run the interview one question at a time, each with your recommended answer,138mining provided evidence (including `docs/product/input/`) before asking. The139full question tree is in `references/interview-guide.md` — read it before140grilling. The shape:1411421. **Triage.** If the input holds more than one distinct struggle, list them and143 have the user pick ONE to grill now. In a target repo, park the rest as144 **real files** — `status: parked`, next free ids, containing only a draft145 headline and a `## Don't know` of open questions. Nothing invented: a parked146 file records that a struggle was seen, not what you guess about it. One deep147 job at a time beats five shallow ones.1482. **Push & pull first.** Klement's rule: study push and pull before anything149 else — they're felt outside any product. Find the struggling moment ("when150 did the old way stop working?") and the better life they're reaching for.1513. **Then anxiety & inertia.** What makes them hesitate, and what habits pull152 them back to the old way. These are the silent competitors.1534. **Ladder.** Express the same struggle at 2–3 altitudes (near-task, workable154 middle, near-cosmic). Have the user commit to the rung that's actionable.1555. **Draft & gate.** First draft in the *"Free me from…, so I can…"* form, then156 render the house format for delivery, carrying the progress through. Check157 live against `references/rubric.md`. When an answer reveals a task, feature,158 persona, or job-type, name the sin, point at the failed test, and re-ask —159 coaching, not lecturing.1606. **Converge.** Stop when the statement is gate-green *or* the user says "good161 enough." Stamp confidence honestly; if gates are open at override, record162 which ones and let that pull confidence down.1637. **Read-back — mandatory before any durable write.** Present the drafted164 file(s) — active and parked — exactly as they will be written. The human165 corrects; you fix. Only then write.1668. **Write & commit** (target repo only). Write the file(s), then loop: offer167 the next parked candidate. Grill it, park it further, or stop — the human168 decides. One commit for the run, message naming what changed and why.169170## REVIEW workflow (diagnose → uplift)1711721. **Diagnose all, cheaply.** For each statement, score on two axes — never173 conflated:174 - **Form** — well-formed progress statement, or a task / feature / persona /175 typed job? Judge from the text via `references/rubric.md`.176 - **Grounding** — is there evidence behind it? In a target repo, check177 `sources:` against `docs/product/input/`; from bare text, flag178 *"unverifiable — needs grounding"* rather than guessing.1792. **Rank.** Surface the worst offenders and the highest-value fixes.1803. **Uplift.** Grill the chosen ones into shape using the CREATE workflow.181 Review exists to raise quality — default toward grilling, don't stop at the182 verdict.1834. **Deliver.** In a target repo, a reshaped job is a **new file** that184 supersedes the old (old flips `status: superseded` + pointer; nothing else in185 the old file changes). A statement rejected as not-a-job flips to186 `superseded` or `parked` with the verdict noted in `## Don't know`. Read-back187 before writing, one commit per run — identical to CREATE.188189## No human present190191This skill is a grill: it cannot run without a human. If invoked with nobody to192answer (e.g. as a subagent), **escalate, never guess**: serialise the blocking193questions — one per heading — into `docs/product/context.md` under194`## Awaiting answers` (or report them in your return text when there is no195target repo), leave any in-flight work uncommitted-clean, and halt with a report.196197**Autonomous degrade is forbidden.** Answering your own questions and writing198invented jobs into `docs/product/jtbd/` manufactures a North Star from nothing,199and every downstream agent treats it as ground truth. Assumption-flags do not200mitigate this.201202## References203204- `references/theory.md` — the book's model: definition, the four forces,205 competition, the two-interpretations critique, the nine principles.206- `references/interview-guide.md` — the grill question tree and Klement's own207 elicitation questions. Read before any CREATE grill.208- `references/rubric.md` — the gate checklist for both modes (the convergence209 condition). Read before drafting or diagnosing.210- `references/examples.md` — good job statements, the failure modes with211 rewrites, and a worked grill transcript.