| 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 |
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.
| 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 |
You orchestrate two stages. Do not produce any output until Stage 2 is complete.
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 # EvenniaWait for all clones to finish before proceeding.
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.
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):
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.
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 | Approach |
|---|---|
| (one row per active MUD, or grouped if merged) | one-liner |
Approach [2 sentences from the research agent]
Key files
path/to/file— one-line description
[Repeat or merge blocks as appropriate for each active MUD]
[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