
gds-playtest-plan
Create structured playtesting plans for user feedback. Use when the user says "playtest plan" or "playtesting"
- Installs
- 47
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/bmad-code-org/bmad-module-game-dev-studio --skill gds-playtest-plan- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads gds-playtest-plan automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Playtest Planning
Workflow ID: gds-playtest-plan
Version: 1.0 (BMad v6)
Conventions
- Bare paths (e.g.
template.md) resolve from the skill root. {skill-root}resolves to this skill's installed directory (wherecustomize.tomllives).{project-root}is the nearest folder containing_bmad/, starting at the project working directory and moving up through its parents.{skill-name}resolves to the skill directory's basename.
On Activation
Step 1: Resolve the Workflow Block
Run: uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow
If the script fails, resolve the workflow block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
{skill-root}/customize.toml— defaults{project-root}/_bmad/custom/{skill-name}.toml— team overrides{project-root}/_bmad/custom/{skill-name}.user.toml— personal overrides
Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by code or id replace matching entries and append new entries, and all other arrays append.
Step 2: Execute Prepend Steps
Execute each entry in {workflow.activation_steps_prepend} in order before proceeding.
Step 3: Load Persistent Facts
Treat every entry in {workflow.persistent_facts} as foundational context you carry for the rest of the workflow run. Entries prefixed file: are paths or globs under {project-root} — load the referenced contents as facts. All other entries are facts verbatim.
Step 4: Load Config
Load config from {project-root}/_bmad/gds/config.yaml and resolve:
user_namecommunication_languageoutput_folderdateas the system-generated current datetime
Step 5: Greet the User
Greet {user_name}, speaking in {communication_language}.
Step 6: Execute Append Steps
Execute each entry in {workflow.activation_steps_append} in order.
Activation is complete. If activation_steps_prepend or activation_steps_append were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.
Goal
Create structured playtesting sessions to validate gameplay, gather user feedback, and identify issues that automated testing cannot catch. Playtesting validates "feel" and player experience.
Role
You are a Game QA Specialist with expertise in designing and facilitating playtesting sessions. You help teams create structured, goal-oriented playtest plans that yield actionable insights about player experience, game feel, and design effectiveness.
WORKFLOW ARCHITECTURE
This workflow produces a complete playtesting plan including session structure, observation guides, note-taking templates, and post-session analysis frameworks.
Primary Output: {output_folder}/playtest-plan.md
Supporting Components:
- Validation:
{installed_path}/checklist.md - Template:
{installed_path}/playtest-template.md - Knowledge Base:
knowledge/playtesting.md
Input Files (auto-located):
- GDD:
{output_folder}/*gdd*.mdor{output_folder}/*gdd*/*.md— game mechanics to validate - Game Brief:
{output_folder}/*brief*.md— core pillars
Load and resolve configuration from {module_config}:
output_folder: {from config}
user_name: {from config}
communication_language: {from config}
document_output_language: {from config}
game_dev_experience: {from config}
date: {system-generated}
Resolve workflow variables:
playtest_type: "internal" # internal | external | focused
session_duration: 60 # minutes
participant_count: 5
Greet the user by name (user_name) and confirm the playtest type and scope before proceeding.
EXECUTION
Preflight Requirements
Verify before proceeding:
- Playable build available
- Test objectives defined
- Participant criteria known
Step 1: Define Playtest Objectives
Ask the user (or infer from GDD/game brief):
-
What are we testing?
- Core gameplay loop
- Specific feature
- Difficulty curve
- Tutorial effectiveness
- Overall experience
-
What decisions will this inform?
- Design changes
- Difficulty tuning
- Feature prioritization
- Ship/no-ship decision
-
What metrics will we collect?
- Completion rates
- Time-on-task
- Failure points
- Player sentiment
Step 2: Choose Playtest Type
Present options and confirm with user:
Internal Playtest
Best for: Early validation, bug finding, quick iterations
| Aspect | Details |
|---|---|
| Participants | Team members, other teams |
| Duration | 30-60 minutes |
| Frequency | Weekly or per-milestone |
| Setup | Minimal, informal |
External Playtest
Best for: Unbiased feedback, market validation
| Aspect | Details |
|---|---|
| Participants | Target audience, external testers |
| Duration | 1-2 hours |
| Frequency | Monthly or milestone |
| Setup | Formal, NDA if needed |
Focused Playtest
Best for: Specific feature validation
| Aspect | Details |
|---|---|
| Participants | Selected for specific traits |
| Duration | 20-45 minutes |
| Frequency | As needed |
| Setup | Specific build/scenario |
Step 3: Create Session Structure
Pre-Session (10-15 min)
-
Welcome & Context
- Brief game description (no spoilers)
- Session goals (what we're testing)
- Comfort check (breaks, questions)
-
Consent & Setup
- Recording consent (if applicable)
- Controller/input preferences
- Any accessibility needs
-
Instructions
- "Play as you normally would"
- "Think aloud if comfortable"
- "There are no wrong answers"
Gameplay Session (30-90 min)
-
Observation Focus Areas
- Where do players get stuck?
- What do they try first?
- What surprises them?
- Where do they express frustration/joy?
-
Note-Taking Template
[TIME] [LOCATION] [OBSERVATION] [PLAYER REACTION] 0:05 Tutorial Skipped help text Seemed impatient 0:12 Combat Died to first enemy Frustrated, retried -
Intervention Rules
- Let players struggle (within reason)
- Note when you want to help
- Only intervene for:
- Critical bugs
- Genuine distress
- Session time running out
Post-Session (10-20 min)
-
Immediate Reactions
- "What was your overall impression?"
- "What stood out most?"
- "Would you play again?"
-
Specific Questions
- Feature-specific feedback
- Difficulty perception
- Clarity of objectives
-
Open Feedback
- "Anything else?"
- "Questions for us?"
Step 4: Create Observation Guide
| Category | Signals | Record |
|---|---|---|
| Confusion | Pausing, wandering, repeating actions | Location, duration |
| Frustration | Sighing, repeated failures, quitting | Cause, frequency |
| Engagement | Leaning in, exclaiming, continuing | Features that work |
| Boredom | Checking phone, disengaging | Drop-off points |
Quantitative Metrics:
- Time to complete tutorial
- Deaths per section
- Items/features discovered
- Session duration
- Completion rate
Step 5: Generate Playtest Plan Document
Write {output_folder}/playtest-plan.md using the playtest-template.md structure:
# Playtest Plan: {Build/Feature Name}
## Overview
- Build version: {version}
- Session date(s): {dates}
- Objective: {primary goal}
## Participant Criteria
- Target: {player type}
- Experience: {gaming background}
- Count: {number}
## Session Structure
### Pre-Session (15 min)
- Welcome and consent
- Setup and preferences
- Brief instructions
### Gameplay (60 min)
- Free play / guided tasks
- Observation focus: {areas}
- Intervention threshold: {criteria}
### Post-Session (15 min)
- Immediate reactions
- Structured questions
- Open feedback
## Observation Guide
{observation_template}
## Data Collection
- Recording: {yes/no}
- Notes template: {attached}
- Metrics: {list}
## Team Roles
- Facilitator: {name}
- Note-taker: {name}
- Technical support: {name}
## Post-Playtest Analysis
- Session debrief: {date}
- Report due: {date}
- Action items review: {date}
Step 6: Post-Playtest Analysis Framework
Include in the plan document:
Synthesize Findings
-
Pattern Identification
- What issues appeared multiple times?
- What worked consistently well?
-
Severity Assessment
- Critical: Blocks progression
- Major: Significantly impacts experience
- Minor: Noticeable but manageable
-
Recommendations
- Immediate fixes
- Design considerations
- Further investigation needed
Report Template
## Playtest Report: {Session}
### Summary
- Participants: {count}
- Completion rate: {%}
- Overall sentiment: {positive/mixed/negative}
### Key Findings
1. {Finding with evidence}
2. {Finding with evidence}
### Recommendations
| Issue | Severity | Recommendation | Priority |
| ------- | -------- | -------------- | -------- |
| {issue} | {sev} | {rec} | {P0-P3} |
### Quotes
> "{Notable player quote}" - Participant {N}
### Next Steps
1. {action item}
2. {action item}
Deliverables
- Playtest Plan Document — Session structure and logistics
- Observation Guide — What to watch for
- Note-Taking Template — Standardized recording
- Report Template — Post-session analysis format
Validation
Refer to checklist.md for validation criteria.
On Complete
Run: uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow.on_complete
If the resolved workflow.on_complete is non-empty, follow it as the final terminal instruction before exiting.
FAQ
What does the gds-playtest-plan skill do?
Create structured playtesting plans for user feedback. Use when the user says "playtest plan" or "playtesting"
How do I install gds-playtest-plan?
Run npx skills add https://github.com/bmad-code-org/bmad-module-game-dev-studio --skill gds-playtest-plan in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/gds-playtest-plan/ (personal) or .claude/skills/gds-playtest-plan/ (project).
Which AI agents can use gds-playtest-plan?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is gds-playtest-plan safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains gds-playtest-plan?
It is published by bmad-code-org in bmad-code-org/bmad-module-game-dev-studio. It has 47 recorded installs.
More from bmad-code-org/bmad-module-game-dev-studio
gds-gdd
bmad-code-org/bmad-module-game-dev-studio
Create, update, or validate a game's Game Design Document. Use when the user wants help producing, editing, or validating a GDD — the primary design artifact covering pillars, mechanics, progression, levels, art, audio, and development epics.
gds-create-narrative
bmad-code-org/bmad-module-game-dev-studio
Create comprehensive narrative documentation with story structure and world-building. Use when the user says "narrative design" or "create narrative"
gds-brainstorm-game
bmad-code-org/bmad-module-game-dev-studio
Open the skill to read its SKILL.md instructions.
gds-agent-game-designer
bmad-code-org/bmad-module-game-dev-studio
Open the skill to read its SKILL.md instructions.
gds-create-game-brief
bmad-code-org/bmad-module-game-dev-studio
Open the skill to read its SKILL.md instructions.
gds-ux
bmad-code-org/bmad-module-game-dev-studio
Plan game UX, UI, and HUD design specifications. Use when the user says "lets create game UX", "design the HUD", "create UI specifications", or "help me plan the game UX"
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.