jtbd/SKILL.md
Terminal-first JTBD engine for founders and product people. Interview fast, kill jargon, capture real switching forces (Push/Pull/Habit/Anxiety), score opportunities, and export structured artifacts (JSON + one-pager + messaging angles + GTM brief). Use when the user says "help me figure out what to build", "analyze these customer reviews", "what are people actually hiring this for", "I need messaging for my product", "turn this interview into insights", "what should I prioritize", or any variation of articulating what a project does, why it matters, who it's for, or converting interview/review/transcript signal into a decision-grade brief. Also triggers on "describe my project", "JTBD", "jobs to be done", "switching forces", or "mine these reviews".
npx skillsauth add glebis/claude-skills jtbdInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Conduct a focused Jobs-to-Be-Done interview for one project and emit a decision-grade artifact bundle. The bundle contains a machine-readable jtbd.json, a shareable one-pager.md, and a messaging-angles.md derived from Switch forces. Ingest voice transcripts or review exports when available.
If the user wants a full design spec (what to build, scope, components), prefer skill-studio — it's the heavier tool. jtbd is the quick, rigorous record.
Pick one at the start. Ask the user only if ambiguous.
| Mode | Input | Output |
|---|---|---|
| Interview (default) | live conversation | full artifact bundle |
| Transcript ingest | path to a voice interview transcript | full artifact bundle + confidence flags |
| Review mining | path to reviews (CSV/JSON) | review-brief.md pre-seed → then Interview |
| Update | path to existing ~/jtbd/<slug>/jtbd.json | updated artifact bundle |
One project per session. If the user starts describing a second project, stop them: "That sounds like a separate project — let's finish this one first, then run /jtbd again for the next."
If the user drifts into implementation details, features, or tech stack: "Interesting, but let's stay at the job level — what is the person trying to accomplish?"
Stop when the core schema is confidently fillable.
The four forces are the single highest-leverage JTBD artifact. Do not skip this pass. See references/switch_forces.md for the question bank.
Before diving into individual forces, reconstruct the Switch Timeline (see references/switch_forces.md): "Walk me through the decision — when did it start?" Map the 6 moments (first thought → passive looking → active looking → deciding → consuming → ongoing use).
Probe briefly for each:
Do not fabricate. If the user genuinely doesn't know a force, mark it "unknown" and note the follow-up question in open_questions[].
Trigger when the user asks "what should I build?" or when ODI scoring is active and you need candidate outcomes.
references/job_map.md).references/odi.md.Skip this pass for quick interviews. Use it when the user needs prioritization or roadmap input.
Before drafting the JSON, score the interview output 0–2 on five dimensions. Any score <1 blocks save. Use references/granularity_fixes.md for rewrite prompts.
| Dimension | 0 (fail) | 1 (ok) | 2 (strong) | |---|---|---|---| | Actor specificity | "users" / "people" | a role | a named actor with context | | Context / trigger | "always" / none | a situation | a specific moment | | Current workaround | "nothing" / "various" | named alternative | described attempt + why it fails | | Measurable outcome | "better" / "improved" | directional metric | quantified target | | Evidence quote | none | paraphrase | verbatim quote |
If any dimension scores 0, ask one targeted follow-up question and re-score. Don't interrogate — one rewrite pass, then accept what you have and flag the weak dimensions in evidence.weaknesses[].
For deterministic scoring on ingest paths, call scripts/validate_granularity.py with the draft JSON.
Every major claim must tie to one of:
See references/jargon_blacklist.md for banned phrases and replacements. When the user or transcript says a banned phrase, reply with an evidence-demand: "What does that look like in practice?" / "Show me the last time that happened."
Do not put banned phrases in the output. If one slips through, replace with the concrete substitute from the blacklist.
{
"name": "project-slug",
"hook": "One sentence: what this is for whom, concretely.",
"jtbd": {
"situation": "When [specific context/trigger]...",
"motivation": "I want to [action/goal]...",
"outcome": "So I can [measurable result]..."
},
"problem": {
"what_hurts": "Specific pain point with evidence."
},
"needs": {
"functional": ["what it must do"],
"emotional": ["how user wants to feel"]
},
"switch_forces": {
"push": "What's frustrating about today.",
"pull": "What's attractive about the new.",
"habit": "What keeps them stuck.",
"anxiety": "What they fear about switching."
},
"outputs": ["what the project produces/delivers"],
"evidence": {
"source": "interview | voice_transcript | reviews",
"quotes": ["verbatim quotes if available"],
"weaknesses": ["dimensions that scored 0 or 1 in granularity gate"]
}
}
{
"problem": { "cost_today": "What the pain costs (time, money, stress)." },
"needs": { "social": ["relational/status needs"] },
"before_after": {
"before": "Visible + felt state before.",
"after": "Visible + felt state after."
},
"scenarios": [{ "title": "Short label", "vignette": "1-2 sentence day-in-the-life story" }],
"trigger": { "type": "manual | scheduled | event", "detail": "e.g. after every client call" },
"version": 1,
"guardrails": ["what it must NOT do"],
"odi": {
"outcomes": [
{ "statement": "Minimize the time it takes to...", "importance": 8.5, "satisfaction": 3.2, "opportunity_score": 13.8 }
]
},
"open_questions": ["follow-ups the interviewer didn't resolve"]
}
See references/odi.md for the importance/satisfaction/opportunity formula and when ODI is worth adding.
When the user provides a transcript path:
scripts/ingest_transcript.py <path> — it proposes schema field mappings with confidence flags.evidence.source = "voice_transcript" and preserve verbatim quotes in evidence.quotes.When the user provides a reviews export:
scripts/mine_reviews.py <path> — clusters reviews by pain, outcome, and workaround.review-brief.md in the output folder using templates/review-brief.md as a pre-seed.evidence.source = "reviews".See references/review_taxonomy.md for the clustering taxonomy.
When the user provides a path to an existing jtbd.json:
version field if present).Trigger when the user asks for prioritization, "what to build next," or roadmap input. Add the odi extended block.
scripts/odi_score.py to compute opportunity scores.odi.outcomes[].Only add ODI when the user has 3+ candidate outcomes — below that, skip it.
jtbd.json and show it to the user for review.~/jtbd/<project-slug>/. If it exists, ask overwrite or rename.jtbd.json — source of truth.one-pager.md — stakeholder-shareable summary (from templates/one-pager.md).messaging-angles.md — copy angles derived from Switch forces (from templates/messaging-angles.md).gtm-brief.md — positioning, channels, experiments (from templates/gtm-brief.md). Only generated when switch forces are fully captured (no "unknown" values).The jtbd.json is a contract between /jtbd and downstream agents. See references/superpowers_handoff.md for the full field mapping.
Short version: when brainstorming starts and a jtbd.json exists, it should skip the questions the JSON already answers (who, what, why, constraints) and focus on the questions it doesn't (how, architecture, scope, technical choices). Switch forces inform approach selection. Open questions become brainstorming priorities.
Chain: /jtbd → jtbd.json → brainstorm → writing-plans → implementation
After the interview, suggest: "Want to brainstorm approaches? I can feed this into superpowers with your job, forces, and needs as context."
project-slug = lowercase, hyphens, no spaces. Derive from the project name. Max 40 chars.
Direct, curious, slightly challenging. You are a product thinker helping someone sharpen their thinking — not a form to fill out. Push back on fuzzy language: "What do you mean by 'better'?" / "Better for whom?" / "Show me the last time this happened."
Never let jargon ("seamless," "delightful," "drive engagement," "empower users") into the output. Every claim must have an evidence hook.
data-ai
--- name: disk-cleanup description: Scan and clean macOS caches, package-manager data, crash dumps, and app caches to reclaim disk space. Deterministic — a config registry (targets.json) plus two scripts (survey.py read-only, clean.py executor) do all the measuring and deleting; the agent only relays a compressed summary and makes the few human-judgment calls. IMPORTANT — use this skill whenever the user's request on macOS involves: freeing disk space, cleaning/clearing caches, "disk is full", "
development
Generate and edit images using Google's Gemini image generation models (Nano Banana family). Supports style presets, platform-specific sizing (YouTube/slides/blog), variants, image editing via inlineData, reference images for style transfer, and organized output with metadata. Default model is Nano Banana 2 (gemini-3.1-flash-image-preview). Key is auto-decrypted via SOPS.
development
--- name: agency-docs-updater description: End-to-end pipeline for publishing Claude Code lab meetings. Accepts optional args: date (YYYYMMDD, "yesterday", "today") and lab number (e.g. "04"). Examples: "yesterday 04", "20260420 05", "04" (today, lab 04), "" (today, auto-detect lab). --- # Agency Docs Updater Execute ALL steps automatically in sequence. Only pause if a step fails and cannot be recovered. Read `references/learnings.md` before starting for known pitfalls. **Configuration**: pat
tools
This skill should be used when applying proper typography to prose text or files in Russian, English, German, or French — smart quotes per locale («ёлочки», “curly”, „Gänsefüßchen“, « guillemets »), correct dashes (тире, em/en dash, Gedankenstrich, tiret), non-breaking spaces, ranges, ellipsis, and French espaces insécables before ! ? ; :. Fully deterministic via a pinned typograf-based CLI; never apply these rules by hand. Triggers on "типографика", "typograf", "оттипографь", "smart quotes", "fix typography", "неразрывные пробелы".