Skip to content

Commit 0ee3179

Browse files
authored
feat(skills): add discovery and strategy skills
Add 5 new skills for product discovery and strategy phases including market research, competitive analysis, user research synthesis, opportunity scoring, and strategy formulation.
1 parent 1b65598 commit 0ee3179

5 files changed

Lines changed: 751 additions & 0 deletions

File tree

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
---
2+
name: create-interview-guide
3+
description: Generate a Mom Test interview guide with warm-up, core, and closing questions when the user asks to prepare for customer interviews, user research, or discovery calls
4+
owner: chalk
5+
version: "1.0.0"
6+
metadata-version: "1"
7+
allowed-tools: Read, Glob, Grep, Write
8+
argument-hint: "[topic or hypothesis to explore]"
9+
---
10+
11+
# Create Interview Guide
12+
13+
## Overview
14+
15+
Generate a structured customer interview guide based on The Mom Test (Rob Fitzpatrick). Every question is designed to extract truthful signal about past behavior, real pain, and actual workflows — not hypothetical opinions or compliments. The guide includes a "Bad vs Good" column so the interviewer can self-correct in real time, and "What to listen for" cues so they know what signal to capture.
16+
17+
## Workflow
18+
19+
1. **Read product context** — Scan `.chalk/docs/product/` for the product profile (`0_product_profile.md`), existing JTBD canvases, research syntheses, and any prior interview guides. Check `.chalk/docs/product/` for research synthesis docs to avoid re-asking already-answered questions. If no product context exists, work from what the user provides.
20+
21+
2. **Parse the research goal** — Extract from `$ARGUMENTS` the topic, hypothesis, or area of exploration. If the user provides a vague topic (e.g., "onboarding"), ask one round of clarifying questions: Who are we interviewing? What decisions will this research inform? What do we already believe is true?
22+
23+
3. **Identify the interview persona** — Determine who will be interviewed based on product context or user input. Note their likely context, role, and relationship to the problem space. This shapes the warm-up questions and the vocabulary used throughout.
24+
25+
4. **Generate warm-up questions (5 questions)** — These build rapport and establish context. They ask about the person's role, daily workflow, and general environment. No product-related questions yet. Purpose: make the interviewee comfortable and give the interviewer context to ask better follow-up questions.
26+
27+
5. **Generate core questions (8-12 questions)** — These are the heart of the interview. Every question must pass all Mom Test rules:
28+
- Asks about **past behavior**, not hypothetical futures
29+
- Asks for **specifics** (last time, specific instance), not generalizations
30+
- Focuses on **their life and problems**, not your idea or solution
31+
- Contains **no leading language** that telegraphs the "right" answer
32+
- Each question includes a "Bad vs Good" comparison and a "What to listen for" note
33+
34+
6. **Generate closing questions (3 questions)** — These capture referrals, uncover what was missed, and establish follow-up permission. Include: "Who else should I talk to?", "What should I have asked that I didn't?", and a permission-to-follow-up question.
35+
36+
7. **Add interviewer briefing notes** — Include a short section on interview conduct: how to handle silence, how to follow up on interesting answers, when to deviate from the script, and how to avoid accidentally pitching.
37+
38+
8. **Determine the next file number** — Read filenames in `.chalk/docs/product/` to find the highest numbered file. The next number is `highest + 1`.
39+
40+
9. **Write the file** — Save to `.chalk/docs/product/<n>_interview_guide_<topic_slug>.md`.
41+
42+
10. **Confirm** — Tell the user the guide was created, share the file path, and highlight the 2-3 most critical core questions that will generate the highest-signal answers.
43+
44+
## Interview Guide Structure
45+
46+
```markdown
47+
# Interview Guide: <Topic>
48+
49+
Last updated: <YYYY-MM-DD> (Initial draft)
50+
51+
Target persona: <who we are interviewing and their context>
52+
Research goal: <what decisions this will inform>
53+
Estimated duration: 30-45 minutes
54+
55+
## Mom Test Rules (Quick Reference)
56+
57+
1. Talk about their life, not your idea
58+
2. Ask about specifics in the past, not hypotheticals about the future
59+
3. Talk less, listen more
60+
4. No pitching — if you catch yourself explaining your solution, stop
61+
5. Compliments are noise, not signal — redirect to facts
62+
63+
## Warm-up Questions (5 min)
64+
65+
Purpose: Build rapport, understand their context. Do not mention the product or problem yet.
66+
67+
| # | Question | What to listen for |
68+
|---|----------|--------------------|
69+
| W1 | ... | ... |
70+
| W2 | ... | ... |
71+
| W3 | ... | ... |
72+
| W4 | ... | ... |
73+
| W5 | ... | ... |
74+
75+
## Core Questions (20-30 min)
76+
77+
Purpose: Extract signal about real behavior, pain, and workflows.
78+
79+
| # | Bad Version (Don't Ask) | Good Version (Ask This) | What to Listen For |
80+
|---|-------------------------|-------------------------|--------------------|
81+
| C1 | ... | ... | ... |
82+
| C2 | ... | ... | ... |
83+
| ... | ... | ... | ... |
84+
85+
### Follow-up Prompts
86+
87+
Use these when an interviewee gives an interesting but vague answer:
88+
- "Can you walk me through the last time that happened?"
89+
- "What did you do next?"
90+
- "How much time/money did that cost you?"
91+
- "You mentioned [X] — what made that particularly painful?"
92+
- "What happened after that?"
93+
- "Why did you choose that approach over alternatives?"
94+
95+
## Closing Questions (5 min)
96+
97+
| # | Question | What to listen for |
98+
|---|----------|--------------------|
99+
| CL1 | Who else deals with this problem that I should talk to? | Network mapping — strong signal if they enthusiastically name people |
100+
| CL2 | What should I have asked you that I didn't? | Blind spots in your research framing |
101+
| CL3 | Would it be okay if I followed up with you as we learn more? | Engagement level — eagerness to stay involved signals real pain |
102+
103+
## Interviewer Briefing
104+
105+
### Before the interview
106+
- Review this guide but do not memorize it — conversations should feel natural
107+
- Set up recording (with permission) so you can focus on listening
108+
- Have a note-taking template ready with columns: timestamp, quote, theme
109+
110+
### During the interview
111+
- **Silence is your friend** — count to 5 before filling a pause; they often add the most valuable detail after a pause
112+
- **Follow the energy** — if they light up or get frustrated about a topic, go deeper there even if it is off-script
113+
- **Deflect compliments** — if they say "That sounds great!", respond with "Thanks — but tell me more about how you handle this today"
114+
- **Anchor to specifics** — if they generalize ("usually", "sometimes"), ask "Can you tell me about a specific time?"
115+
- **Never pitch** — if you catch yourself explaining how your product works, stop immediately and ask another question
116+
117+
### After the interview
118+
- Write up notes within 1 hour while memory is fresh
119+
- Highlight 3-5 verbatim quotes that were most surprising or informative
120+
- Tag each quote with a theme for later synthesis
121+
- Note what you expected to hear vs. what you actually heard
122+
```
123+
124+
## Output
125+
126+
- **File**: `.chalk/docs/product/<n>_interview_guide_<topic_slug>.md`
127+
- **Format**: Plain markdown, no YAML frontmatter
128+
- **First line**: `# Interview Guide: <Topic>`
129+
- **Second line**: `Last updated: <YYYY-MM-DD> (Initial draft)`
130+
131+
## Anti-patterns
132+
133+
- **Hypothetical questions ("Would you use X?")** — People are terrible at predicting their future behavior. "Would you pay for this?" gets you polite lies. "How much did you spend last month trying to solve this?" gets you truth. Every question must reference past or current behavior.
134+
- **Leading questions** — "Don't you think it would be better if...?" telegraphs the answer. The interviewee will agree to be polite. Strip all opinion from your questions. Ask "How do you handle X today?" not "Isn't handling X really annoying?"
135+
- **Pitching during research** — The moment you explain your solution, the interview becomes a sales call. The interviewee switches from telling you their truth to reacting to your idea. If they ask what you are building, say "I'll tell you at the end — right now I want to learn from your experience."
136+
- **Asking about the future** — "How would you want this to work?" generates fantasy, not data. People design solutions based on what they can imagine, not what they actually need. Ask about the last time they struggled instead.
137+
- **Generic questions without specificity** — "Do you have problems with X?" gets a yes/no. "Walk me through the last time you dealt with X" gets a story with details, emotions, and workarounds — the raw material of product insight.
138+
- **Interviewing only friendly users** — Friendly users tell you what you want to hear. Include skeptics, churned users, and people who chose a competitor. The most uncomfortable interviews produce the most valuable signal.
139+
- **Treating the guide as a rigid script** — The guide is a safety net, not a straitjacket. The best interviews follow the interviewee's energy. If they reveal something unexpected in question 3, abandon questions 4-7 and dig into what they just said.
140+
- **No "What to listen for" guidance** — Without this, interviewers miss signal. A question about workflow should note "Listen for workarounds, manual steps, and emotional language — these indicate unmet needs."

skills/create-jtbd-canvas/SKILL.md

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
---
2+
name: create-jtbd-canvas
3+
description: Generate a Jobs-to-be-Done canvas mapping functional, emotional, and social jobs when the user asks to define jobs, map customer needs, or create a JTBD analysis
4+
owner: chalk
5+
version: "1.0.0"
6+
metadata-version: "1"
7+
allowed-tools: Read, Glob, Grep, Write
8+
argument-hint: "[persona or problem space to analyze]"
9+
---
10+
11+
# Create JTBD Canvas
12+
13+
## Overview
14+
15+
Generate a Jobs-to-be-Done canvas that maps the full job landscape for a persona or problem space — functional jobs (what they are trying to accomplish), emotional jobs (how they want to feel), and social jobs (how they want to be perceived). Each job includes the current solution, pain points, desired outcomes, situation-based triggers, and hiring/firing criteria. This canvas is the foundation for opportunity identification and solution design.
16+
17+
## Workflow
18+
19+
1. **Read product context** — Load `.chalk/docs/product/0_product_profile.md`, any existing research syntheses, interview guides, and prior JTBD docs. If research synthesis docs exist, they are the primary input — JTBD canvases should be grounded in evidence, not speculation. If no product context exists, work from what the user provides and flag that the canvas is hypothesis-based.
20+
21+
2. **Identify the persona** — Parse `$ARGUMENTS` to determine the target persona or problem space. If the user specifies a persona, use it. If they specify a problem space (e.g., "expense reporting"), identify the primary persona who experiences that problem. If neither is clear, ask: "Who is the person struggling with this? What is their role and context?"
22+
23+
3. **Map the main job** — Identify the overarching job the persona is trying to get done. This is not a task or feature — it is the higher-order goal. Use Alan Klement's format: "When [situation], I want to [motivation], so I can [desired outcome]." The main job anchors the entire canvas.
24+
25+
4. **Map functional jobs** — Break down the practical things the persona needs to accomplish. For each functional job:
26+
- **Job statement**: concrete action they need to perform
27+
- **Current solution**: how they solve this today (including workarounds, manual processes, competitor products)
28+
- **Pain points**: what is frustrating, slow, expensive, or broken about the current solution
29+
- **Desired outcome**: what success looks like when this job is done well
30+
- Group functional jobs by phase if a natural sequence exists (e.g., planning, executing, reviewing)
31+
32+
5. **Map emotional jobs** — Identify how the persona wants to feel throughout the experience. Emotional jobs are often the real driver behind product switching. For each emotional job:
33+
- **Job statement**: the feeling they are seeking or the feeling they are trying to avoid
34+
- **Current reality**: how the current solution makes them feel
35+
- **Desired state**: how they want to feel instead
36+
- Common emotional jobs: feel confident, feel in control, avoid anxiety, avoid embarrassment, feel competent
37+
38+
6. **Map social jobs** — Identify how the persona wants to be perceived by others. Social jobs drive adoption in B2B and collaborative contexts. For each social job:
39+
- **Job statement**: how they want to be seen by peers, managers, reports, or customers
40+
- **Current reality**: how the current solution affects their professional perception
41+
- **Desired perception**: how they want to be perceived when doing this job well
42+
43+
7. **Define situation triggers ("When ___" statements)** — Map the specific situations that trigger the person to "hire" a solution. Triggers are more valuable than demographics for segmentation. Use the format: "When [specific situation], they need to [job]." Good triggers are concrete and observable, not vague states.
44+
45+
8. **Map hiring and firing criteria** — Document what causes someone to adopt ("hire") a new solution and what causes them to abandon ("fire") their current one:
46+
- **Hiring criteria**: what pushes them toward a new solution (push forces) and what pulls them toward it (pull forces)
47+
- **Firing criteria**: what anxieties hold them back from switching and what habits keep them attached to the current solution
48+
- Use the Four Forces framework: Push (current pain), Pull (new solution appeal), Anxiety (fear of switching), Habit (comfort with status quo)
49+
50+
9. **Identify the struggling moment** — Describe the specific moment when the gap between the current solution and the desired outcome is most painful. This is the moment a product must nail. Include: what just happened, what they are trying to do, what goes wrong, and how they feel.
51+
52+
10. **Determine the next file number** — Read filenames in `.chalk/docs/product/` to find the highest numbered file. The next number is `highest + 1`.
53+
54+
11. **Write the file** — Save to `.chalk/docs/product/<n>_jtbd_canvas_<persona_slug>.md`.
55+
56+
12. **Confirm** — Tell the user the canvas was created, share the file path, and highlight the main job, the most critical struggling moment, and the strongest hiring/firing criteria.
57+
58+
## JTBD Canvas Structure
59+
60+
```markdown
61+
# JTBD Canvas: <Persona or Problem Space>
62+
63+
Last updated: <YYYY-MM-DD> (Initial draft)
64+
65+
Evidence base: <list source docs or "Hypothesis-based — needs validation">
66+
67+
## Main Job
68+
69+
When [situation], I want to [motivation], so I can [desired outcome].
70+
71+
## The Struggling Moment
72+
73+
<Narrative description of the specific moment when the current solution fails the persona. What happened? What were they trying to do? What went wrong? How did they feel? This is the emotional anchor for the entire canvas.>
74+
75+
## Functional Jobs
76+
77+
### Phase 1: <Phase Name> (if applicable)
78+
79+
| # | Job Statement | Current Solution | Pain Points | Desired Outcome |
80+
|---|---------------|------------------|-------------|-----------------|
81+
| F1 | ... | ... | ... | ... |
82+
| F2 | ... | ... | ... | ... |
83+
84+
### Phase 2: <Phase Name>
85+
86+
| # | Job Statement | Current Solution | Pain Points | Desired Outcome |
87+
|---|---------------|------------------|-------------|-----------------|
88+
| F3 | ... | ... | ... | ... |
89+
90+
## Emotional Jobs
91+
92+
| # | Job Statement (Feel/Avoid) | Current Reality | Desired State |
93+
|---|---------------------------|-----------------|---------------|
94+
| E1 | Feel confident that ... | Currently feels uncertain because ... | Wants to feel sure that ... |
95+
| E2 | Avoid anxiety about ... | Currently worries about ... | Wants to stop worrying about ... |
96+
97+
## Social Jobs
98+
99+
| # | Job Statement (Be Perceived As) | Current Reality | Desired Perception |
100+
|---|--------------------------------|-----------------|-------------------|
101+
| S1 | Be seen as ... by ... | Currently perceived as ... | Wants to be perceived as ... |
102+
103+
## Situation Triggers
104+
105+
When [specific observable situation], they need to [job]:
106+
107+
1. When ..., they need to ...
108+
2. When ..., they need to ...
109+
3. When ..., they need to ...
110+
111+
## Hiring & Firing Criteria
112+
113+
### Four Forces of Progress
114+
115+
| Force | Description | Strength |
116+
|-------|-------------|----------|
117+
| **Push** (pain with current) | ... | low/moderate/high |
118+
| **Pull** (appeal of new) | ... | low/moderate/high |
119+
| **Anxiety** (fear of switching) | ... | low/moderate/high |
120+
| **Habit** (comfort with current) | ... | low/moderate/high |
121+
122+
### What Makes Them Switch (Hiring Criteria)
123+
- ...
124+
125+
### What Makes Them Leave (Firing Criteria)
126+
- ...
127+
128+
### What Holds Them Back (Barriers to Switching)
129+
- ...
130+
```
131+
132+
## Output
133+
134+
- **File**: `.chalk/docs/product/<n>_jtbd_canvas_<persona_slug>.md`
135+
- **Format**: Plain markdown, no YAML frontmatter
136+
- **First line**: `# JTBD Canvas: <Persona or Problem Space>`
137+
- **Second line**: `Last updated: <YYYY-MM-DD> (Initial draft)`
138+
139+
## Anti-patterns
140+
141+
- **Listing features as jobs** — "I want to use a dashboard" is a feature, not a job. "I want to understand whether my campaign is on track before my Monday standup" is a job. Jobs exist independently of any product. If deleting your product would not eliminate the job, you have found a real one.
142+
- **Confusing tasks with jobs** — "Export a CSV" is a task. "Get data into the format my finance team requires so I can get budget approved" is the job. Tasks are how people accomplish jobs with their current tools. Jobs persist even when tools change.
143+
- **Ignoring emotional and social dimensions** — Teams that map only functional jobs miss the strongest drivers of product switching. People do not switch expense tools because the new one saves 4 minutes. They switch because the old one made them feel incompetent in front of their manager. Always fill in the emotional and social sections.
144+
- **Not capturing the struggling moment** — The struggling moment is the most actionable element of the canvas. Without it, the canvas is academic. Describe a specific, concrete moment of frustration that the team can empathize with and design around.
145+
- **Vague situation triggers** — "When they need to do something" is not a trigger. "When a new team member joins and needs access to 12 different tools by their first standup" is a trigger. Triggers should be concrete enough that you could observe them in a workplace.
146+
- **Hypothesis canvases without labeling** — A JTBD canvas generated without underlying research data is a hypothesis, not a finding. Always label the evidence base. If there is no research, say so prominently. Hypotheses are valuable but must be validated.
147+
- **Forgetting the Four Forces** — Push and Pull alone do not explain switching behavior. Anxiety and Habit are the forces that prevent switching even when Push and Pull are strong. A canvas that ignores these forces will overestimate willingness to adopt.
148+
- **Generic personas ("the user")** — JTBD canvases for "the user" are useless. Specify the persona with enough context that the team can picture a real person: role, seniority, company stage, team size, and the specific situation they face.

0 commit comments

Comments
 (0)