This skill should be used when the user asks for "/case-practice", "/pm-job-search:case-practice", "drill me on product cases", "practice PM case interviews", "MC case drill", or "test my case-interview recognition". Runs drill 1 of the case-practice methodology — a multiple-choice (MC) rapid-recognition drill that samples scenario questions across the MC-able case types (product sense, metric movement, metric tree, prioritisation, behavioural-signal), scores each pick with the specific failu...
Scanned 8/31/2026
Install to Claude Code
npx -y skills add archugunov/pm-job-search --skill case-practice --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Case Practice?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/archugunov-case-practice)More formats (shields.io, HTML) on the badges page.
---
name: case-practice
description: This skill should be used when the user asks for "/case-practice", "/pm-job-search:case-practice", "drill me on product cases", "practice PM case interviews", "MC case drill", or "test my case-interview recognition". Runs drill 1 of the case-practice methodology — a multiple-choice (MC) rapid-recognition drill that samples scenario questions across the MC-able case types (product sense, metric movement, metric tree, prioritisation, behavioural-signal), scores each pick with the specific failure mode every distractor demonstrates, tracks a running score against an 80% readiness gate, extracts anchors to lock, and writes a session log to userdata/case-practice/<date>-mc-drill.md. Optional <Company> argument themes products and weights the mix toward that company's likely rounds.
---
# /case-practice — MC rapid-recognition drill
This is drill 1 — MC rapid-recognition — of the case-practice methodology, and it's the first rung of a five-drill ladder. Its job is to lock the *recognition* of senior-vs-junior answers and build the vocabulary every later drill needs: you can't fix a gap you don't have the language to name. It runs as batches of single-select questions, scores each pick with the specific failure mode behind every wrong option, tracks a running score against an 80% readiness gate, and extracts anchors to memorise. See `${CLAUDE_PLUGIN_ROOT}/references/case-interviews/practice-methodology.md` for the full five-drill ladder (recognition → generation → performance) and why the order matters. The live mock (drill 4) runs via the `interviewer-simulator` agent — only after the user clears the ≥80% gate here.
**Voice:** follows `${CLAUDE_PLUGIN_ROOT}/TONE.md`. Low-effort-first — start on context-weighted defaults; don't interrogate the user about scope, depth, or case types before the first batch. If a `<Company>` argument is given, theme from it silently (read the company's files, weight the mix, theme products) — no confirmation question.
## MC-able case types (what the drill draws from)
MC recognition only fits *atomic, discriminable* judgement calls — "pick the strongest of four" where exactly one option is right and the rest each fail for a nameable reason. It does NOT fit open-ended strategy, technical / system-design, or estimation cases: those are free-form / live-mock territory (drills 2 and 4) and are out of scope for this drill. Don't generate MC questions for them.
The drill samples from:
- **Product sense** — strongest NSM; the right segment + a clean pick-reason; JTBD need quality. This is the richest seam — weight it heaviest by default.
- **Metric movement** — the correct first diagnostic fork (drop-to-diagnose vs goal-to-hit); MECE-clean vs overlapping decomposition.
- **Metric tree** — the 4-part NSM form (unit + behaviour + threshold + cadence); guardrail vs counter-metric vs vanity metric.
- **Prioritisation** — which lens fits the situation; "define value before you score"; spotting the sycophancy / spreadsheet-obeying trap.
- **Behavioural** — spotting the seniority signal (rejected-options / named trade-off / honest retrospective) vs the junior tell (heroics, no failure named, wrong altitude).
## Inputs
No topic-selection argument. The drill samples a broad mix across the MC-able types above, **context-weighted**. Read with the userdata-override convention (mirror story-builder): for each reference doc, read `userdata/references/case-interviews/<doc>.md` if it exists, else `${CLAUDE_PLUGIN_ROOT}/references/case-interviews/<doc>.md`.
- **`practice-methodology.md`** — the MC drill format, the Pattern-1 feedback structure, and the ≥80% readiness gate. This skill operationalises that doc.
- **`case-types-reference.md`** — the failure-mode vocabulary. Lean on the Product Sense / Metric Movement / Metric Tree sections most of all (their "common traps" tables are the source of named distractors), plus the Prioritisation and Behavioural "common traps".
- **`userdata/profile.md`** — `target_titles` weights the mix and calibrates which option counts as "right":
- A Head-of-Product / Lead / Director / VP / CPO candidate gets more prioritisation and behavioural-altitude calls, and their "right" answers weight org/portfolio judgement higher (e.g. the strongest behavioural option is the one showing capital-allocation or hire/fire judgement, not feature craft).
- An IC / Senior PM candidate gets more product-sense and metric calls, with "right" answers weighting craft and execution.
- `## Tone of Voice` shapes all prose (question stems, feedback, the close).
- **Optional `<Company>` argument:** if `userdata/companies/<Co>/` exists, read its `[<slug>/]research-brief.md` and `[<slug>/]meta.md` (the `position` field). If the company tracks multiple roles (subfolder layout), ask which role first — e.g. `Plaid tracks 2 roles — pick: 1) senior-pm-consumer-credit, 2) senior-pm-growth-loops` — then read that slug's files. Weight the mix toward that role's likely rounds using the "When each case type shows up" table in `case-types-reference.md` (e.g. an infra/payments company leans metric-tree + prioritisation; a FAANG consumer role leans product-sense + metric-movement). Theme the products in the questions to an **adjacent** public domain (not the company's own internals). Default (no company argument): assorted well-known public products, mix weighted by `target_titles` only.
If `userdata/profile.md` is missing → tell the user to run `/setup` first, then stop.
## Drill flow
1. **Open.** State the context-weighted mix chosen (and the company theme, if any) in one line — e.g. "Weighting toward product-sense and metric calls for a Senior PM, products themed around payments infra." Then state the format in one line: batches of 4, single-select, scored after each batch.
2. **Generate a batch of 4 questions** sampled across the MC-able types per the weighting. Each question = a scenario + 4 options; exactly one option is the strongest; the **three distractors each demonstrate a specific, named failure mode** — drawn from the relevant type's "common traps" in `case-types-reference.md`: vanity metric, gameable metric, wrong segmentation lens, solution-disguised-as-need, wrong diagnostic fork (drop vs goal), MECE-violating decomposition, leaf-that-isn't-a-lever, mixing equation/ratio form, lens-misfit (RICE where value isn't defined), spreadsheet-obeying, sycophancy pick, junior behavioural tell (heroics / no failure / wrong altitude), and so on. For product-sense **needs** questions past the first batch, use the harder design from `practice-methodology.md`: 4 JTBD-formatted options forcing discrimination on stakes-in-the-so-clause, non-obviousness, and segment-specificity — NOT 1 good option plus 3 obviously-wrong ones.
3. **Collect the answer** via `AskUserQuestion` (4 options fits cleanly) or a numbered list. Accept a letter or a number.
4. **Score + teach the batch** — Pattern-1, roughly 150 words per question:
- ✓ why the right answer is right (one line).
- ✗ the specific failure mode each distractor shows (one line each).
- the batch-level senior pattern being taught (one line).
The distractors carry the lesson — teach every one, not just the right pick.
5. **Track the running score** and report it after each batch (e.g. "6/8 so far"). Score is cumulative over the whole session: `M` = questions asked, `N` = questions where the user picked the single strongest option (a skipped question doesn't count toward either). The ≥80% gate is evaluated on the full-session `N/M`, not per batch.
6. **Continue** until the user stops or reaches ~30 questions / ~7-8 batches. Offer to stop at each batch boundary ("Another batch, or wrap up?").
7. **Close.** Extract the 4-6 **anchors to lock** — short verbatim phrases (5-15 words each) the user should memorise. Report the final score against the **≥80% readiness gate** (met / not yet). Give the end-of-run nudge.
## Output — session log
Always write `userdata/case-practice/<YYYY-MM-DD>-mc-drill.md` (path relative to the active install root — e.g. `userdata/examples/maya/case-practice/...` when running against the Maya example). Create the `userdata/case-practice/` directory on first run. If a log for the same date already exists, **prepend** a new section (don't overwrite — spaced-practice history matters). Use this exact template:
```markdown
# MC case drill — <YYYY-MM-DD>
**Score:** <N>/<M> (<pct>%) **Readiness gate (≥80%):** met | not yet
## Anchors to lock
- <4-6 short verbatim phrases>
## Missed / shaky
- <question stem> — picked <X>, strongest was <Y>. Failure mode: <named>.
## Suggested next
<free-form drill, or interviewer-simulator live mock once gate met>
```
## End-of-run nudge
Per `${CLAUDE_PLUGIN_ROOT}/references/recommended-flow.md`, compose one context-aware next-step line:
- Score **<80%** → "Run /case-practice again on a fresh batch before moving on — the gate is 80%."
- Score **≥80%** → "You've cleared the recognition gate. Next: a free-form generation drill (roadmap), or run the interviewer-simulator agent for a live product-case mock."
## What /case-practice never does
- Never claims to record, listen to, or play audio. This drill is text-only; voice-memo steps in the methodology are the user's own phone, not Claude.
- Never writes outside `userdata/case-practice/`. No edits to `profile.md`, company files, or the story bank.
- Never invents company facts when themed to a `<Company>`. Products in the questions are drawn from the public domain (adjacent, well-known products), never from claims about the company's internal roadmap, metrics, or org.
## Smoke test against the Maya example
### No-arg run
Run `/case-practice` against `userdata/examples/maya/`:
- Reads `userdata/examples/maya/profile.md` — `target_titles` includes "Head of Product", so the mix weights up prioritisation + behavioural-altitude calls (alongside product-sense / metric calls), and "right" answers on behavioural questions weight org/portfolio judgement.
- Opens with a one-line mix statement and the format (batches of 4, single-select, scored after each batch).
- Generates a batch of 4 across the MC-able types, collects answers via AskUserQuestion, scores with Pattern-1 feedback (✓ right answer + ✗ each distractor's named failure mode + the batch's senior pattern), reports the running score.
- On stop: extracts 4-6 anchors, reports the score vs the ≥80% gate, and writes `userdata/examples/maya/case-practice/<date>-mc-drill.md` (creating the `case-practice/` dir on first run).
### Company run
Run `/case-practice Mercury` against `userdata/examples/maya/` (a single-role company — files at the company root):
- Reads `userdata/examples/maya/companies/Mercury/{research-brief,meta}.md`. Mercury is fintech/business-banking — weights the mix toward the rounds that type of company runs (metric-tree, prioritisation, product-judgement) per the "When each case type shows up" table.
- Themes products to an adjacent public domain (e.g. a well-known consumer-fintech or payments product), NOT Mercury's internal product details — no fabricated company internals.
- Same flow and same log path (`userdata/examples/maya/case-practice/<date>-mc-drill.md`).
- Multi-role check: `/case-practice Plaid` (Maya's Plaid tracks two roles in subfolders) must first ask which role — `Plaid tracks 2 roles — pick: 1) senior-pm-consumer-credit, 2) senior-pm-growth-loops` — then read that slug's files. It must NOT try to read `companies/Plaid/meta.md` at the top level (it doesn't exist there).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!