claude-interrogate

Why I Built claude-interrogate in an Afternoon (Starting From “What is MCP?”)

Wednesday morning: I had game rules scattered across eight design documents, each making conflicting assumptions about how fights resolve in LAIRD 2. No single source of truth. No clear way to sync them. So I designed a tool I called “claude-interrogate“.

On Wednesday afternoon: I had built a full production MCP server that reads design docs, interviews me Socratically, and generates formatted specs in my voice. combat.md was written. Cross-references were synced. The tool is now public.

The problem gap between those two states: I didn’t even know what MCP stood for when I started.

The Problem claude-interrogate Solves

I’m building LAIRD 2 to prove out LlamaBrain, it’s a gamified colony sim where you possess your colonists to fight as them in tile-based ARPG combat. The design corpus is growing: colonists, progression, quests, exploration, enemies, gate events, combat. Each doc runs 100-200 lines with §N-numbered sections, cross-references to sibling docs, and an Open Questions section for unresolved decisions.

The pattern was working, but it wasn’t scaling. Combat decisions were scattered—toolkit slots lived in colonists.md, possession mechanics in control_possession.md, XP attribution in progression.md, death rules everywhere and nowhere.

I needed to consolidate and interview the idea Socratically to find gaps; I also needed one clear and canonical spec.

Claude Code could easily handle this conversationally. I’d done it before using prompts a few days earlier. But the quality varied between files, cross-references drifted, and I had at least a dozen more features to write. Repeating this manually wasn’t sustainable.

If I’m going to run this pattern 12+ times, the prompt needs to be infrastructure.

Watch It Work

Here’s the full quick-start: cold boot to first question in three minutes.

What you’ll see: installation via Claude Code marketplace, /summarize xp, which explains how xp works in the design, /interrogate combat reading eight existing docs, extracting what’s already locked down, and generating the first targeted architectural question. No edits. No setup. No config files. Just working software.

What is claude-interrogate?

It’s an Model Context Protocol server that reads your design docs, understands your house style, and runs Socratic interviews to fill gaps.

Core commands:

  • interrogate <concept> — reads existing docs, interviews you, generates formatted spec
  • --audit — finds missing cross-references, contradictions, style drift
  • --sync — rewrites cross-reference sections across all docs, reabsorbs answered questions into body text
  • --challenge — adversarial mode (asks for rejected alternatives, failure evidence, cost of leaving decisions vague)

Key design decisions:

  • Works with your existing markdown, not a proprietary format
  • Detects house style automatically (§N numbering, cross-ref heading patterns, Open Questions structure)
  • Generates a Sync List — explicit edits required in neighboring docs when a new decision changes the other documents’ assumptions
  • Three distribution paths: CLI, MCP server, Claude Code plugin

Example output:

## Sync List (Edits Required In Neighboring Docs)

1. colonists.md §3.4 — add the Brigandine 1–4 hotbar rule as canonical home
2. colonists.md §4 — re-semanticize Accuracy/Evasion as deterministic-combat stats
3. control_possession.md §3 — revise possessed-death clause: HP 0 = immediate 
   control loss, body follows normal downed rule

This isn’t template filling. It read eight docs, understood that combat’s hit-resolution decision invalidated assumptions in colonists.md‘s stat semantics, and generated the specific sync edits I need to make.

Why MCP Over Prompts?

Claude Code already handles design interviews conversationally. I could have just refined my prompts and kept doing it manually. But:

Consistency engine value:

  • Business logic lives in one place (§N format rules, cross-ref patterns, house style detection)
  • Every doc follows identical structure without re-prompting
  • Sync operations are atomic multi-file edits, not sequential str_replace calls that can fail mid-sequence
  • Works for teams, not just people who can self-conduct Socratic interviews

Installation matters:

  • npm install -g claude-interrogate → available in any Claude Code project
  • Shows up as first-class tool, not a prompt you copy-paste between sessions

Positioning: LLM tooling can be production infrastructure, not just assistive prompts. The governance primitive is the tool, not the conversation.

The Development Receipt

Standard team scope for this:

  • Learn Model Context Protocol
  • Design architecture
  • Implement in TypeScript
  • Write tests
  • Package for three distribution paths
  • Write documentation
  • Launch publicly

My timeline: One afternoon, starting from not knowing what MCP was.

Why it worked:

  • Clear problem scope: solve my own workflow friction first
  • Dogfooding: I am actively using it to complete LAIRD 2’s design corpus
  • Learning by building: shipped production code while learning the protocol
  • No scope creep: v1 does one thing well

The positioning play here isn’t “I’m fast at coding.” Modern AI has all but made that irrelevant. It’s “I identified my own workflow friction and shipped a solution the same day.” This is what builder energy now looks like in practice: not just using tools well, but extending them when the things you need don’t exist yet.

Try claude-interrogate

Install:

/plugin marketplace add michael-tiller/claude-interrogate
/plugin install claude-interrogate

Use:

/interrogate <concept> ./docs
/interrogate --challenge combat ./docs
/audit-docs ./docs
/sync-docs ./docs

Source: github.com/michael-tiller/claude-interrogate-src

The meta questions: Are you doing something repetitive in Claude Code, like design docs, API specs, architecture reviews, or test plans? And if so, have you considered if it should be an MCP server instead of a series of prompts you copy or re-type every session?

For me, the answer was yes. For you: maybe it is too.

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.