we-need-to-talk

agent
Security Audit
Warn
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.

SUMMARY

🌶️ Your spec said "it should just work." An evidence-backed interview skill for Codex and Claude Code. 한국어 / English.

README.md

We Need To Talk 🌶️

Your spec said “it should just work.” We have follow-up questions.

English · 한국어

A nervous potato builder says “It should just work.” A potato interviewer replies “Define 'work'.”

Validate
License: MIT

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 incomplete spec, 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
A potato trims a giant feature tower down to an MVP
VC · Scope Guillotine
“All of that? For v1?”
A detective potato examines contradictory blueprints
Partner · Consistency Grill
“Your two diagrams disagree.”
A rescue potato saves a document from a crashed laptop
Security · Catastrophe Drill
“And when the process dies?”
A potato saves answers before asking another question
Incremental records
Save the answer. Then ask the next question.
Potatoes turn a tangled explanation into three simple steps
Feynman Probe + Readback
“Who does what? What happens next?”
One system explained to an engineer, manager and designer
Audience-adaptive framing
Same facts. Different lenses.
One specification printed as build, decide and design documents
Multi-audience contracts
One spec. Three useful handoffs.
A scientist potato compares baseline and skill on equal scales
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-talk directory 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)

No results found