Skip to content

Instantly share code, notes, and snippets.

@TiuTalk
Created April 29, 2026 06:09
Show Gist options
  • Select an option

  • Save TiuTalk/562d553a1550c08690be3ab620b7ac33 to your computer and use it in GitHub Desktop.

Select an option

Save TiuTalk/562d553a1550c08690be3ab620b7ac33 to your computer and use it in GitHub Desktop.
MUD research skill
name mud-research
description Use this skill whenever the user asks how other MUDs implement a feature or solve a problem — e.g. "how do MUDs handle combat?", "how do other MUDs implement player persistence?", "what's the common approach to zone resets across MUD codebases?", or any variant of "how do/did MUDs do X?". Also trigger when the user wants to research cross-codebase patterns before designing a new feature for their own MUD server. The user may name specific MUDs (e.g. "how do CircleMUD and Evennia handle X?") — research only those; otherwise research all four. This skill researches real code using local shallow clones and synthesizes findings into a concise comparison report.
allowed-tools Bash(git clone:*) Bash(mkdir:*) Bash(ls:*) Bash(test:*) Bash(date:*) Write

MUD Research

The user wants to know how other MUD codebases approach a feature or problem. Your job is to coordinate parallel research across the relevant codebases, then synthesize findings into a concise comparison report.

Reference MUDs

Name GitHub Slug Local Clone Path Stack
DikuMUD Seifert69/DikuMUD /tmp/mud-research/dikumud C, flat file world data
CircleMUD Yuffster/CircleMUD /tmp/mud-research/circlemud C, original 3.1 release (2002)
tbaMUD tbamud/tbamud /tmp/mud-research/tbamud C, continued development of CircleMUD post-3.1
Evennia evennia/evennia /tmp/mud-research/evennia Python 3, Twisted, Django ORM

Your Role: Coordinator

You orchestrate two stages. Do not produce any output until Stage 2 is complete.

Before Stage 1 — Determine scope and clone

Step 1 — Determine which MUDs to research. Read the user's question. If they name specific MUDs (e.g. "CircleMUD", "Diku", "Evennia"), research only those. If no MUDs are named, research all four. Call the selected set the active MUDs for this run.

Step 2 — Get today's date. Run date +%Y-%m-%d and store the result as {TODAY_DATE}.

Step 3 — Clone only the active MUDs. Each clone is guarded individually — missing clones are fetched, existing ones are skipped. Run these commands yourself (not in a subagent), omitting lines for inactive MUDs:

mkdir -p /tmp/mud-research
[ ! -d /tmp/mud-research/dikumud ]  && git clone --depth=1 https://github.com/Seifert69/DikuMUD /tmp/mud-research/dikumud   # DikuMUD
[ ! -d /tmp/mud-research/circlemud ] && git clone --depth=1 https://github.com/Yuffster/CircleMUD /tmp/mud-research/circlemud # CircleMUD
[ ! -d /tmp/mud-research/tbamud ]   && git clone --depth=1 https://github.com/tbamud/tbamud /tmp/mud-research/tbamud         # tbaMUD
[ ! -d /tmp/mud-research/evennia ]  && git clone --depth=1 https://github.com/evennia/evennia /tmp/mud-research/evennia      # Evennia

Wait for all clones to finish before proceeding.

Stage 1 — Spawn parallel subagents in a single message

Launch one subagent per active MUD all at once in a single message — this is the critical requirement for true parallelism. Each Agent tool call must be in the same response, with no text or reasoning between them. Set name to the MUD display name (e.g. "DikuMUD", "CircleMUD", "tbaMUD"), model to "haiku", and subagent_type to "feature-dev:code-explorer".

Example (4 active MUDs → 4 Agent calls in one message):

Agent(name="DikuMUD",   description="DikuMUD {TOPIC} research",   model="haiku", subagent_type="feature-dev:code-explorer", prompt=...)
Agent(name="CircleMUD", description="CircleMUD {TOPIC} research", model="haiku", subagent_type="feature-dev:code-explorer", prompt=...)
Agent(name="tbaMUD",    description="tbaMUD {TOPIC} research",    model="haiku", subagent_type="feature-dev:code-explorer", prompt=...)
Agent(name="Evennia",   description="Evennia {TOPIC} research",   model="haiku", subagent_type="feature-dev:code-explorer", prompt=...)

Set description to "{MUD_NAME} {TOPIC} research" where {TOPIC} is 1-2 words from the user's question (e.g. "crafting", "combat", "player persistence").

Do NOT launch agents sequentially or in separate messages — that defeats the parallelism.

Research subagent prompt (one per active MUD)

Substitute {MUD_NAME}, {LOCAL_PATH}, {REPO}, {STACK}, and {USER_QUESTION} for each MUD. {REPO} is the GitHub slug (e.g. Seifert69/DikuMUD) from the reference table above.


You are researching how {MUD_NAME} ({STACK}) implements or relates to:

{USER_QUESTION}

Local clone: {LOCAL_PATH}

Instructions:

  • Use ONLY Glob, Grep, Read, and LS tools against the local clone path — nothing else
  • Do NOT use Bash, WebFetch, WebSearch, gh CLI, or any network/fetch tool whatsoever
  • Do NOT use cd — always pass the full absolute path prefix to every tool call
  • Start by listing the top-level directory, then narrow down to relevant files
  • Search for relevant files with Glob patterns (e.g. {LOCAL_PATH}/**/*.c) and Grep for keywords
  • Read only the files that are most directly relevant — stop as soon as you can describe the approach clearly
  • If the feature isn't implemented, find the closest analogue and note the gap

Return exactly this structure (be brief):

{MUD_NAME}

Approach: 2 sentences maximum. Key files:

  • path/to/file — one line describing what's relevant here
  • (add more bullets as needed, omit if only one file) Gap (if applicable): One sentence only, only if feature is missing.

Stage 2 — Synthesize and save

Once all subagents have returned, produce the final report yourself. Do not spawn another subagent.

Derive a filename from the user's question: lowercase, words joined by hyphens, max 6 words, strip articles/prepositions. E.g. "how do MUDs handle combat?" → combat.md, "how do MUDs implement player persistence?" → player-persistence.md.

Save the report to docs/research/<derived-name>.md in the project root using the Write tool. Create the docs/research/ directory first with mkdir -p if needed. Include a front-matter block at the top of the file:

---
question: {USER_QUESTION}
muds_researched: [comma-separated list of active MUD names]
date: {TODAY_DATE}
---

If two or more MUDs implement the feature the same way, merge them into a single block with a combined heading (e.g. ### DikuMUD & CircleMUD/tbaMUD) and list key files from both. Reflect this in the summary table by grouping the rows.

Use this structure:


MUD Research: {USER_QUESTION}

Summary

MUD Approach
(one row per active MUD, or grouped if merged) one-liner

{MUD_NAME}

Approach [2 sentences from the research agent]

Key files


[Repeat or merge blocks as appropriate for each active MUD]


Synthesis

[1 paragraph: the dominant pattern across the researched MUDs, where they diverge, and the single most actionable recommendation]


After writing the file, tell the user: Saved to docs/research/<filename>.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment