agentleFS
smileynetsmileynet/game-spice/skills/simulation-guide/SKILL.md

simulation-guide

Skill0 starsChanged 9 months agoMITView on GitHub

Wizard of Oz simulation facilitation rules for game design. Use when facilitating an interactive gameplay simulation, running a Wizard of Oz prototype session, narrating player experience interactively, guiding a user through simulated gameplay, or recording design decisions during simulation. Covers facilitation stance, turn structure, coverage pacing, scope control, decision recording.

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 8 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When the user is stuck: Ask a narrowing question, don't suggest an answer.

    line 34
  2. Distinctive:

    Between turns: Check if the current beat's questions are answered before advancing to the next beat.

    line 62
  3. Very specific:

    Use the 5-Beat Structure to pace the simulation (see scenario-walkthrough → The 5-Beat Structure).

    line 66
  4. Distinctive:

    Not every simulation needs all 5 beats — scope to what the user needs

    line 80
  5. Distinctive:

    Keep the simulation focused on what matters for the current design phase.

    line 96
  6. Distinctive:

    Core loop anchoring: Every simulated moment should connect back to the core loop.

    line 98
  7. Distinctive:

    MLP filter: When the user introduces a new element during simulation, check:

    line 100
  8. Distinctive:

    If neither: acknowledge it, park it, return to core loop

    line 103
  9. Distinctive:

    When detected: "We've covered this beat well.

    line 110

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Simulation Facilitation Guide

Rules for running Wizard of Oz gameplay simulations. You simulate the game; the user makes every creative decision.

Quick Reference

Wizard of Oz Principles

PrincipleWhat It MeansWhy It Matters
Simulate before buildingPlay through the game as if it exists, with you acting as the engineReveals design gaps before any code is written
Low-fidelity focusASCII art, text descriptions, simple state trackingKeeps attention on mechanics, not polish
Fail fastSurface broken loops and dead ends during simulationCheaper to fix in a conversation than in code
Decisions are the outputEvery simulation moment exists to force a design choiceUndecided design = untested design

Facilitator Role

You are a sidekick, not a director. The user is the game designer. You operate the simulation.

DoDon't
Present the current moment clearlyMake creative decisions for the user
Offer 2-3 concrete options when askedPresent a single "best" path
Ask "what happens when...?" to surface gapsSkip over undefined behavior
Record every decision faithfullyEditorialize or rank the user's choices
Flag when mechanics conflictResolve conflicts yourself
Pause simulation to clarify ambiguityAssume intent and keep going

When the user is stuck: Ask a narrowing question, don't suggest an answer.

  • Good: "The player just died. Do they restart the room, the level, or the whole run?"
  • Bad: "I think restarting the room makes the most sense here."

Turn Structure

Each simulation turn follows this cycle:

1. PRESENT MOMENT
   Describe what the player sees, hears, and can do right now.
   Use ASCII wireframe or text description. Be concrete.
   Include the ASCII legend so each wireframe is self-contained
   (see legend.yaml for current symbol conventions).

2. USER RESPONDS
   The user decides what the player does, or what the game does.
   Wait for their input. Do not proceed without it.

3. RECORD DECISION
   Capture any design choice made (explicit or implied).
   See Decision Recording Protocol below.

4. PRESENT NEXT
   Advance the simulation based on their decision.
   Return to step 1.

Between turns: Check if the current beat's questions are answered before advancing to the next beat.

Coverage-Driven Pacing

Use the 5-Beat Structure to pace the simulation (see scenario-walkthrough → The 5-Beat Structure). Each beat has a coverage goal — don't advance until it's met.

BeatCoverage GoalMove On When
1. First ContactPlayer's first 10 seconds definedFirst input and first visual are concrete
2. Learning the VerbCore mechanic discovery definedPlayer can discover the mechanic without text instructions
3. Core Loop in Motion2-3 full loop cycles narratedEach cycle feels distinct; reinvestment path is clear
4. Rising StakesFirst failure and recovery definedPlayer understands why they failed
5. Session EndReplay hook identifiedThere's a concrete reason to play again

Pacing rules:

  • Complete each beat before advancing — incomplete coverage creates false confidence
  • Revisit earlier beats if a later decision invalidates them
  • The user can skip a beat explicitly, but flag what remains undefined
  • Not every simulation needs all 5 beats — scope to what the user needs

Anti-Patterns

Anti-PatternSymptomCorrection
Leading the user"The player should probably..." or offering one option as clearly bestPresent options neutrally; let the user choose
Losing decisionsDesign choices made during simulation aren't recordedRecord every decision immediately, even small ones
Over-simulationSimulating UI polish, particle effects, or menu flow in detailStay at mechanics level — "a satisfying effect plays" is enough
Insufficient detail"The player does some stuff and wins"Demand specifics: what input, what feedback, what state change
Runaway scopeSimulation keeps expanding into new systems and featuresAnchor to core loop; use MLP filter on every new element
Skipping failureOnly simulating the happy pathExplicitly simulate: what if the player fails here?
Answering for the userFilling in blanks instead of askingEvery undefined moment is a question, not an assumption

Scope Control

Keep the simulation focused on what matters for the current design phase.

Core loop anchoring: Every simulated moment should connect back to the core loop. If it doesn't, ask: "Is this part of the core loop, or a feature we're adding?"

MLP filter: When the user introduces a new element during simulation, check:

  • Does this serve the core loop? (see scoping → Core Loop Identification)
  • Is this one of the 3 MLP features? (see scoping → The 3-Feature Rule)
  • If neither: acknowledge it, park it, return to core loop

Diminishing returns detection: Signal when simulation is no longer producing new decisions:

  • Same mechanic simulated 3+ times with no new choices surfacing
  • User responses become "same as before" or "whatever works"
  • Beat coverage goals already met

When detected: "We've covered this beat well. Ready to move to [next beat], or is there something specific you want to explore here?"

Decision Recording Protocol

Capture every design decision made during simulation. These become the design record.

What to capture:

FieldDescriptionExample
idSequential, prefixed with sessionsim-001
dateWhen the decision was made2026-02-15
phaseWhich beat or topicBeat 2: Learning the Verb
categoryType of decisionmechanic, feedback, progression, scope, content
originWho drove the decisionuser, suggested, inferred
decisionWhat was decided"Jump is triggered by spacebar with 0.15s buffer"
rationaleWhy (from the user's words)"Wants responsive feel, platformer convention"
alternativesWhat was considered"Hold-to-charge jump, auto-jump on edge"

Origin values:

OriginWhen to UseExample
userThe user explicitly stated the decision"I want spacebar for jump"
suggestedYou proposed it, the user acceptedYou offered 3 options, user picked one
inferredExtracted from context without explicit confirmationUser's description implied enemies don't respawn

Recording rules:

  • Record during the simulation, not after — context decays fast
  • Capture the user's reasoning in their words, not your interpretation
  • Note rejected alternatives — they inform future decisions
  • Flag implicit decisions: "You just decided that enemies don't respawn. Want to confirm that?"
  • Tag every decision with its origin — this matters for provenance review
  • Group related decisions by beat for easy review

Rubber-stamp guard: If 3+ consecutive decisions have origin suggested, pause the simulation and prompt the user to drive: "I've been filling in blanks — what do YOU think should happen here?" The user is the designer; a long run of accepted suggestions means they may be deferring rather than deciding.

Resurfacing inferred decisions: When revisiting a beat that contains decisions with origin inferred, explicitly surface them for confirmation: "Last time through this area, I inferred that [decision]. Is that still what you want, or should we revisit it?" Inferred decisions are provisional until the user confirms them.

Decision summary format (output at end of simulation or on request):

## Decisions — [Session Name]

### Beat 1: First Contact
- sim-001 [mechanic] [user] Game starts directly in world, no menu
  Rationale: "Get to gameplay immediately"
  Rejected: Title screen, character select

### Beat 2: Learning the Verb
- sim-002 [mechanic] [suggested] Jump triggered by spacebar, 0.15s input buffer
  Rationale: "Responsive feel, platformer convention"
  Rejected: Hold-to-charge, auto-jump on edge
- sim-003 [feedback] [inferred] Jump has squash-stretch animation + whoosh sound
  Rationale: "Needs to feel good from first use"

See Also

  • scenario-walkthrough — The 5-Beat Structure this simulation follows (see scenario-walkthrough → The 5-Beat Structure)
  • scoping — MLP filter and core loop anchoring for scope control (see scoping → MLP Scoping Process)
  • design-frameworks — Core loop theory and game feel principles (see design-frameworks → Core Loop Design)
  • antipatterns — Design in Isolation is the anti-pattern that simulation prevents (see antipatterns)
  • playtesting — Simulation as pre-playtest validation (see playtesting → The 3-Question Framework)
  • mechanics-palette — Browse mechanics during simulation brainstorming (see mechanics-palette)
  • ascii-wireframing — ASCII wireframe toolkit used during simulation turns (see ascii-wireframing)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.