we-need-to-talk
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
🌶️ Your spec said "it should just work." An evidence-backed interview skill for Codex and Claude Code. 한국어 / English.
We Need To Talk 🌶️
Your spec said “it should just work.” We have follow-up questions.

We Need To Talk is an interview skill for Codex and Claude Code. Three interview perspectives challenge your scope, architecture, and failure handling. It saves decisions after every answer, unpacks unclear jargon, and explains consequences in your audience's language. One interview produces a shared specification and three handoffs: build it, decide on it, design the experience.
Inspired by the Korean phrase “오빠 나랑 이야기 좀 해” — the ominous “we need to talk” — but aimed at the holes in your spec. Your dignity survives. “Make it scalable” might not.
A small taste
You: “Don't store drafts anywhere. Also restore them after a crash.”
Skill: “Those requirements conflict. Where would the restored draft come from?”
You: “Okay, save them locally. No server sync.”
Skill: Records the decision. “How much typing can be lost if the process dies before the next save?”
This is an illustrative conversation. The skill uses your actual files and answers as evidence.
What you get
- Questions with receipts. Relevant code, docs, and earlier decisions ground the interview. No repository? It says so.
- A record after every answer. Decisions, assumptions, open issues, and sources stay in Markdown files.
- Trade-offs with actual costs. Options explain what you gain and give up, without invented estimates.
- Changeable decisions. Changed requirements supersede old decisions; history stays readable.
- An honest handoff. Unresolved blockers produce an
incompletespec, not a pretend agreement. - Pause and resume. Continue from the saved files instead of relying on a long chat history.
- “Did that actually make sense?” Check an important consequence before treating a vague “just do it” as a settled decision.
Using the skill requires a working Codex or Claude Code setup with file access; no additional server or API key is needed. The optional live evaluation tool has separate model credentials and costs.
Meet the potato review board
| Trim it, align it | Break the assumptions, keep the receipts |
|---|---|
![]() VC · Scope Guillotine “All of that? For v1?” |
![]() Partner · Consistency Grill “Your two diagrams disagree.” |
![]() Security · Catastrophe Drill “And when the process dies?” |
![]() Incremental records Save the answer. Then ask the next question. |
![]() Feynman Probe + Readback “Who does what? What happens next?” |
![]() Audience-adaptive framing Same facts. Different lenses. |
![]() Multi-audience contracts One spec. Three useful handoffs. |
![]() Assertion-based A/B evals Measure the behavior. Keep the evidence. |
Choose your interviewer
The Tri-Grill Protocol defaults to --mode gauntlet: VC → Partner → Security. One agent changes perspective while keeping the same decision record.
| Mode | The question behind the questions | What it settles |
|---|---|---|
vc · Scope Guillotine |
“Does all of this need to ship now?” | User value, minimum scope, exclusions, success criteria |
partner · Consistency Grill |
“That isn't what your existing code says.” | Interfaces, state ownership, contracts, contradictions |
security · Catastrophe Drill |
“What happens when the process dies?” | Failure behavior, trust boundaries, recovery responsibility |
gauntlet · All three |
“First trim it. Then align it. Then break the assumptions.” | All three perspectives, in order |
Each stage can take several exchanges. Existing evidence can settle a stage without redundant questions. If a later decision changes an earlier assumption, only the affected stages reopen. A single mode records what it covered and what it left unreviewed.
security is a design interview about failures and trust boundaries. It does not perform a security audit or penetration test. vc applies to hobby projects and internal tools too; it does not require a business model.
$we-need-to-talk My writing app --mode gauntlet --spiciness spicy
$we-need-to-talk Trim this MVP --mode vc
$we-need-to-talk Check the existing state-management design --mode partner
$we-need-to-talk Review retry and crash behavior --mode security --spiciness hell
Pick your heat
| Mode | Interview style | Typical exploration budget |
|---|---|---|
🌱 mild |
A calm senior asking about the biggest gaps | ~3–4 rounds |
🌶️ spicy |
A lead who wants concrete costs and failure behavior | ~5–7 rounds |
🔥 hell |
Every assumption meets a counterexample | ~8–12 rounds |
spicy is the default. These budgets cover the whole interview, including all three gauntlet stages. They are guidelines, not quotas. Every mode asks only 1–2 questions at a time. You can change your mind, defer a decision, lower the heat, or stop.
“Wait. Did you understand what I just said?”
Saying “go with your recommendation” can mean informed delegation—or a trade-off that never quite landed. Readback Check looks at the actual decision and earlier answers before deciding whether to ask.
Skill: “Keeping drafts only in memory is simpler, but a restart loses them.”
You: “Sure, just do it.”
Skill: “One quick check: if the app closes before you save, what happens to the draft?”
You: “It disappears. That's okay for v1.”
Skill: Records the accepted consequence and moves on.
The playful Korean version is “오빠, 내가 한 말 이해한 거 맞아?” The useful part is the concrete scenario that follows it. If the answer is “but it still comes back, right?”, the misunderstanding becomes an open issue instead of a false agreement.
The check is for consequential, unclear choices. It skips small implementation details and trade-offs you've already acknowledged. You can ask for an explanation, delegate the decision, or decline the check. It does not grade your knowledge or require repeated approval.
“Explain the flow without the buzzwords”
Feynman Probe starts when a technical phrase leaves the actors, sequence, completion or failure behavior unclear. Jargon alone is not a mistake.
You: “It's loosely coupled and event-driven, so it recovers automatically.”
Skill: “Walk me through one order without those labels. Who notices a missing delivery, and who sends it again?”
You: “I don't know. Explain the options.”
Skill: Explains the choices instead of giving another quiz.
The probe finds gaps in a flow; Readback checks whether a choice's consequences match your expectations. They share the same 1–2-question budget, and both respect informed delegation.
Audience-adaptive framing changes vocabulary and emphasis, while preserving the facts. A manager might hear “an unsaved document”; an engineer gets the RAM-to-disk boundary; a designer gets the lost-draft state and recovery path. An analogy always connects back to the real system and says where it stops fitting. RAM-only drafts with no other copy can be lost on exit; that does not mean every cache contains irreplaceable data.
$we-need-to-talk Draft recovery --audience manager --mode security
$we-need-to-talk Order workflow --audience "designer and PM" --contracts all
Install
Codex — standalone skill
With Git and Python 3.10 or later:
git clone https://github.com/Malko-opensource/we-need-to-talk.git
cd we-need-to-talk
python3 scripts/install.py codex
The installer copies the skill to ${CODEX_HOME:-~/.codex}/skills/we-need-to-talk and refuses to overwrite a different installation. Start a new chat and invoke:
$we-need-to-talk A notes app that restores drafts after a restart --spiciness spicy
If your Codex setup uses ~/.agents/skills, choose that directory explicitly:
python3 scripts/install.py codex --skills-dir "$HOME/.agents/skills"
Use one installation location. OpenAI's skill documentation describes current discovery paths; older/local builds can differ.
Claude Code — plugin
In Claude Code, add the marketplace and install:
/plugin marketplace add Malko-opensource/we-need-to-talk
/plugin install we-need-to-talk@we-need-to-talk
Then invoke:
/we-need-to-talk:we-need-to-talk A notes app that restores drafts --spiciness spicy
For a local checkout, you can load the plugin directly:
claude --plugin-dir ./plugins/we-need-to-talk
Or install it as a standalone Claude skill with python3 scripts/install.py claude and invoke /we-need-to-talk. Choose either the plugin or the standalone skill to avoid duplicates.
Codex — plugin alternative
The repository includes a Codex marketplace too:
codex plugin marketplace add Malko-opensource/we-need-to-talk
Install We Need To Talk from that marketplace in the app. See OpenAI's plugin guide for the installation flow supported by your version.
Use it
1. Bring a topic
$we-need-to-talk A local-first writing app. Challenge the requirements before we code.
The skill inspects the relevant project context, creates a session index, and asks about the most consequential missing decision. It follows your language; ask in Korean for a Korean interview and documents.
2. Make the trade-offs
Keep drafts on this device. No accounts or cloud sync for v1.
The answer is saved before the next question. Ask for a recommendation when you need one. “You decide” is recorded as delegation, not misquoted as your direct choice.
3. Choose a folder or turn up the heat
$we-need-to-talk Cancellation and timeout behavior --mode security --spiciness hell --output ./docs/specs/cancellation
| Input | Meaning |
|---|---|
| Topic | What to interview you about; existing conversation context can supply it |
--mode gauntlet|vc|partner|security |
Interview perspective; defaults to gauntlet for new sessions |
--spiciness mild|spicy|hell |
Interview intensity; defaults to spicy |
--audience <audience> |
Match explanations to your context; adaptive when omitted |
--contracts all|none |
Three audience handoffs; defaults to all for new sessions |
--output <path> |
A new session directory |
--resume <path> |
Continue with the saved mode, stage, and intensity unless overridden |
Audience and output preferences also persist on resume. Sessions created before 0.3 without a contracts setting keep none until you request --contracts all.
These are arguments interpreted by the skill inside your coding agent, not a separate terminal command.
4. Pause, resume, or finish
Pause here. We'll decide the sync policy later.
$we-need-to-talk --resume ./docs/specs/cancellation
Write the final specification now and keep the unresolved items visible.
The output status tells you whether the spec is ready for implementation. A request for an interview does not itself authorize implementation or deployment.
Switch perspective mid-session with “let's only review failure handling now” or --mode security. Resuming a pre-0.2 session without mode metadata preserves its previous flow as partner; it does not silently restart the three-stage gauntlet.
What lands on disk
docs/specs/notes-app-2026-10-27/
├── _session-index.md # Mode, stage progress, evidence, open issues, resume point
├── draft-storage.md # Decisions, readback evidence, interview history
├── recovery-policy.md
├── _final-contract.md # Consolidated implementation specification
├── _deferred-risks.md # Created only when something is deferred
└── contracts/ # Default for new sessions; disable with --contracts none
├── 1-for-coding-agent.md
├── 2-for-manager-exec.md
└── 3-for-designer-pm.md
Without --output, sessions go under the project's docs/specs/, or ~/Documents/interviews/ when there is no project. Files appear as they become useful.
| ID / state | Meaning |
|---|---|
D-* / A-* / Q-* |
Decision / assumption / open issue |
E-* / R-* |
Evidence / interview round |
superseded |
A decision was replaced; its history remains |
ready |
The specification has the required decisions and acceptance criteria |
incomplete |
An implementation-blocking decision is still missing |
paused |
The user stopped the interview for now |
stale |
An existing final specification needs updating after a change |
Stage progress is tracked separately: pending, active, complete, deferred, needs-review, or not-reviewed. Completing the VC stage does not make the entire implementation specification ready.
ready describes the specification, not implemented or tested software. The skill gives the agent a workflow; it is not a separate engine that enforces every file write.
One interview, three handoffs
_final-contract.md remains the canonical specification. The three views share its source_revision, spec_status and decision IDs:
| Reader | What they receive |
|---|---|
| Engineer / coding agent | Behavior, state ownership, agreed interfaces, failures and acceptance criteria |
| Manager / executive | User value, scope, deliberate exclusions, dependencies and material risks |
| Designer / PM | User flows, screen states, failure messages and recovery behavior |
Unagreed dates, types and UI copy stay unknown or explicitly proposed. Blockers stay visible in every affected view. If a decision changes, old views become stale; they are refreshed from the new canonical revision. Bundle status current means the documents match, not that an incomplete spec has become ready.
Does the skill actually help?
The A/B evaluation harness compares baseline and with-skill agents across six scripted cases, including jargon, misunderstood consequences, informed delegation and multi-audience consistency. It captures responses, tool events and actual file snapshots; assertions combine deterministic checks with evidence-citing model judgments.
# Offline plan only — no model calls
python3 scripts/run-evals.py
Live runs require an explicit model, budget and --live. Incomplete evidence or grading suppresses the delta. We do not yet claim a measured improvement. Fixture tests validate the evaluator, not the quality of a live interview. See the evaluation guide for the method and its limits.
Under the hood
flowchart LR
A["Pre-audit<br/>Read the evidence"] --> V["VC<br/>Trim the scope"]
V --> P["Partner<br/>Resolve contradictions"]
P --> S["Security<br/>Define failure behavior"]
S --> F["Canonical specification<br/>Ready or incomplete"]
F --> E["Engineer / Agent"]
F --> M["Manager / Executive"]
F --> D["Designer / PM"]
S -. Changed earlier assumptions .-> V
Inside each stage: AUDIT → CONFRONT → LOCK → DRILL. Readback Check and Feynman Probe fit into that loop when needed. Audience framing helps explain a decision; it does not add a fourth mandatory stage.
The portable skill lives in plugins/we-need-to-talk/skills/we-need-to-talk. Both plugin manifests point to the same instructions and templates.
Update, uninstall, and troubleshoot
Growing memory or a heavy session: 0.3.1 narrows repeated reads to changed sections and resumes from current state before loading relevant history. This reduces avoidable context input; the reported Claude RAM increase has not been reproduced or confirmed fixed. See memory investigation and reporting. --contracts none skips audience handoffs when you only need the canonical spec.
- Updating: pull this repository and rerun the installer. An identical installation is left alone; a different one requires
--backup-existing. Backups go under.we-need-to-talk-backups/beside the skill. - Not in the selector: open a new chat, check the skill directory your agent scans, and avoid installing the same skill through multiple routes.
- File writes unavailable: the agent should report that and provide an unsaved draft, rather than claim persistence.
- Uninstalling a standalone skill: remove only its
we-need-to-talkdirectory from the location printed by the installer. Your interview output stays in its own directory.
Contribute
See CONTRIBUTING.md for local checks, packaging, and useful behavior reports. Translation improvements and realistic interview examples are welcome.
Format validation, packaging checks, and local skill discovery have been checked. Broad multi-round behavior across models remains an area for testing.
Credits and license
Created by Malko. Inspired by deep-interview for incremental records and DreambigOu/ELI5 for audience framing and assertion-based comparisons. See SOURCES.md for inspected revisions and attribution.
MIT. Original AI-generated potato artwork: hero prompt and eight feature prompts.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found







