balance-check
Skill1 starsChanged 29 days agoMITView on GitHub
Find balance outliers, broken progressions, degenerate strategies, economy imbalances in formulas and data. 'Check game balance'.
13 other projects use a version of this, 10 of them edited.
Adopted by
Most recently taken up by
- striderZA/OpenCodeGameStudiosedited, first seen Nov 4, 2026
- Donchitos/Claude-Code-Game-Studiosedited, first seen Oct 19, 2026
- Swih/godot-foundryedited, first seen Oct 11, 2026
- scotidev/GameDevStudioedited, first seen Oct 9, 2026
- HunLuanZhiZhu/Game-Studios-Pluginedited, first seen Oct 5, 2026
- dawn840705/claude-code-studiosedited, first seen Aug 28, 2026
Other versions13 projects use a version of this.
Word for word · 0
None found.
Edited · 10
- Donchitos/Claude-Code-Game-Studios★ 27k95% same
- striderZA/OpenCodeGameStudios★ 11838% same
- CoralGame/Claude-Code-Game-Studios★ 1969% same
- dawn840705/codex-code-studios★ 1780% same
- lilangMax/ClaudeCodeGameStudios★ 880% same
- hongyuanc/codex-game-studios★ 581% same
- dawn840705/claude-code-studios★ 180% same
- HunLuanZhiZhu/Game-Studios-Plugin★ 187% same
- scotidev/GameDevStudio★ 169% same
- Swih/godot-foundry★ 169% same
Wrote their own version · 3
- pixel-cellar/Claude-Code-Game-Studios★ 324same name
- cenconq25/claude-code-app-studio★ 40same name
- CodePhobiia/claude-roblox-game-studio★ 9same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository153 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CCGS Skill Testing Framework/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- design/CLAUDE.mdCLAUDE.md
- docs/CLAUDE.mdCLAUDE.md
- src/CLAUDE.mdCLAUDE.md
- adoptSkill
- architecture-decisionSkill
- architecture-reviewSkill
- art-bibleSkill
- asset-auditSkill
- asset-specSkill
- balance-checkSkill
- brainstormSkill
- bug-reportSkill
- bug-triageSkill
- changelogSkill
- code-reviewSkill
- consistency-checkSkill
- content-auditSkill
- create-architectureSkill
- create-control-manifestSkill
- create-epicsSkill
- create-storiesSkill
- day-one-patchSkill
- design-reviewSkill
- design-systemSkill
- dev-storySkill
- estimateSkill
- gate-checkSkill
- helpSkill
- hotfixSkill
- launch-checklistSkill
- localizeSkill
- map-systemsSkill
- milestone-reviewSkill
- onboardSkill
- patch-notesSkill
- perf-profileSkill
- playtest-reportSkill
- project-stage-detectSkill
- propagate-design-changeSkill
- prototypeSkill
- qa-planSkill
- quick-designSkill
- regression-suiteSkill
- release-checklistSkill
- retrospectiveSkill
- reverse-documentSkill
- review-all-gddsSkill
- scope-checkSkill
- security-auditSkill
- settingsSkill
- setup-engineSkill
- skill-improveSkill
- skill-testSkill
- smoke-checkSkill
- soak-testSkill
- sprint-planSkill
- sprint-statusSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
26 rules. 13 are common, 6 are distinctive, and 7 are very specific to this project.
13
Common
Most of the 12 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 16
Every AskUserQuestion call follows .claude/docs/automation-modes.md (collaborative asks always · guided major-only · autonomous logs and …
- Distinctive: line 28
If any input required for a section is ABSENT, that section is
- Very specific: line 29
NOT ASSESSED — NO DATA: Do not estimate it, do not infer it from an adjacent artifact, and do not leave a mandated cell to be filled by … - Distinctive: line 32
If every required input is ABSENT, stop and report
- Distinctive: line 59
If no argument, ask the user which system to check.
- Very specific: line 65
Read relevant files from assets/data/ and design/balance/ for the identified domain.
- Very specific: line 72
Registry first: If design/registry/entities.yaml exists, read it before the GDD.
- Very specific: line 89
If the data files are FOUND but neither source gives targets for this domain, the sections that judge against targets (Outliers Detected, …
- Common: line 110
Check time-to-kill at each tier
- Common: line 112
Check if defensive options can create unkillable states
- Common: line 113
Verify damage type/resistance interactions are balanced
- Common: line 118
Check for infinite resource loops
- Common: line 119
Verify gold sinks scale with gold generation
- Common: line 120
Check if any items are never worth purchasing
- Common: line 124
Check for dead zones (no meaningful progression for too long)
- Common: line 125
Check for power spikes (sudden jumps in capability)
- Common: line 126
Verify content gates align with expected player power
- Common: line 127
Check if skip/grind strategies break intended pacing
- Common: line 131
Check pity timer math
- Common: line 132
Verify no loot is strictly useless at any stage
- Common: line 133
Check inventory pressure vs acquisition rate
- Very specific: line 182
After presenting the report, use AskUserQuestion:
- Distinctive: line 190
Ask which issue to address first (refer to the Recommendations table by priority row)
- Distinctive: line 192
After each fix, offer to re-run the relevant balance checks to verify no new outliers were introduced
- Distinctive: line 193
If the fix changes a tuning knob defined in a GDD or referenced by an ADR, remind the user:
- Very specific: line 197
Write the report to design/balance/balance-check-[system]-[date].md (create the directory if needed).
“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
!bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys automation
Balance Check
Every AskUserQuestion call follows .claude/docs/automation-modes.md
(collaborative asks always · guided major-only · autonomous logs and proceeds;
automation_always_ask categories always prompt).
Insufficient input — check this before producing any report
If the inputs this skill needs do not exist, the answer is "could not run" — not a filled-in report. Check first, and stop if the check fails.
- List the inputs this skill reads (data files, prior reports, profiler output, test results, registries, source code).
- For each, record
FOUNDorABSENT— not "assumed present". - If any input required for a section is ABSENT, that section is
NOT ASSESSED — NO DATA. Do not estimate it, do not infer it from an adjacent artifact, and do not leave a mandated cell to be filled by whoever reads the template next. - If every required input is ABSENT, stop and report
NOT ASSESSED — NO DATAas the whole verdict, naming what was missing and which skill produces it.
A verdict of NOT ASSESSED is a success. It is the correct, useful answer to
"what does the data say?" when there is no data. The failure mode this prevents is
specific: a report whose verdict enum has no "could not run" state produces
false clean passes — an asset audit returning COMPLIANT on a project with no
assets and no standards, or a performance profile reporting ">99% headroom against
a 16.67ms budget" with zero profiler data and no budget ever set.
Absence of evidence is never evidence of absence. A scan that finds no matches because there are no files to scan has not verified anything. Say which of the two happened — a reader cannot tell from a green result.
Phase 1: Identify Balance Domain
Determine the balance domain from $ARGUMENTS — the whole string, since a data-file path may contain spaces:
- Combat → weapon/ability DPS, time-to-kill, damage type interactions
- Economy → resource faucets/sinks, acquisition rates, item pricing
- Progression → XP/power curves, dead zones, power spikes
- Loot → rarity distribution, pity timers, inventory pressure
- File path given → load that file directly and infer domain from content
If no argument, ask the user which system to check.
Phase 2: Read Data Files
Read relevant files from assets/data/ and design/balance/ for the identified domain.
Note every file read — they will appear in the Data Sources section of the report.
Phase 3: Read Design Document
Registry first. If design/registry/entities.yaml exists, read it before the
GDD. Its constants and formulas sections hold the cross-GDD named values and
output ranges — the balance targets — already distilled, each with a source:
GDD and any revised: date:
Grep pattern="^ - name:" path="design/registry/entities.yaml" output_mode="content" -A 6Take the intended values from the registry for any constant or formula it lists
(the constants: and formulas: blocks); these are the authoritative cross-doc
figures a GDD must not contradict. If design/registry/entities.yaml does not
exist or has no entries (it ships as an empty stub until /design-system
populates it), skip this and use the GDD alone.
Then read the GDD for the system from design/gdd/ to understand intended design
targets, tuning knobs, and expected value ranges — for anything the registry did
not already supply. This is the baseline for "correct" behaviour.
If the data files are FOUND but neither source gives targets for this domain,
the sections that judge against targets (Outliers Detected, and Progression
Analysis where the domain has a curve) are NOT ASSESSED — NO DATA. Each one names what was missing — the
GDD it looked for in design/gdd/, and whether the registry was absent or empty
— and names /design-system, which writes both.
Phase 4: Perform Analysis
Every domain: compare each value with its target. For each named value in the
data files, take its target from Phase 3 — a registry constant's value, a
registry formula's output_range, or the range the GDD states — and compare. A
value outside its target is a row in Outliers Detected (player_damage_base 140
against 90–110). A value with no target anywhere is neither in range nor an
outlier: list it under Values That Need Attention as no stated range — not judged.
Then run domain-specific checks:
Combat balance:
- Calculate DPS for all weapons/abilities at each power tier
- Check time-to-kill at each tier
- Identify any options that dominate all others (strictly better)
- Check if defensive options can create unkillable states
- Verify damage type/resistance interactions are balanced
Economy balance:
- Map all resource faucets and sinks with flow rates
- Project resource accumulation over time
- Check for infinite resource loops
- Verify gold sinks scale with gold generation
- Check if any items are never worth purchasing
Progression balance:
- Plot the XP curve and power curve
- Check for dead zones (no meaningful progression for too long)
- Check for power spikes (sudden jumps in capability)
- Verify content gates align with expected player power
- Check if skip/grind strategies break intended pacing
Loot balance:
- Calculate expected time to acquire each rarity tier
- Check pity timer math
- Verify no loot is strictly useless at any stage
- Check inventory pressure vs acquisition rate
Phase 5: Output the Analysis
## Balance Check: [System Name]
### Data Sources Analyzed
- [List of files read]
### Health Summary: [NOT ASSESSED / HEALTHY / CONCERNS / CRITICAL ISSUES]
### Outliers Detected
| Item/Value | Expected Range | Actual | Issue |
|-----------|---------------|--------|-------|
### Degenerate Strategies Found
- [Strategy description and why it is problematic]
### Progression Analysis
[Graph description or table showing progression curve health]
### Recommendations
| Priority | Issue | Suggested Fix | Impact |
|----------|-------|--------------|--------|
### Values That Need Attention
[Specific values with suggested adjustments and rationale]Choose the Health Summary by the worst finding, first match wins:
- CRITICAL ISSUES — a degenerate strategy (one choice dominates every alternative), a progression that stalls or cannot be completed, or an economy loop with no sink
- CONCERNS — outliers or curve problems a tuning pass can fix, with no finding of the critical kind
- NOT ASSESSED — nothing to analyze (the no-data path above), a section that
needs targets is
NOT ASSESSED — NO DATA, or a value had no stated range to judge it against; name which. It ranks below the two finding verdicts, because a measured problem is more actionable than a gap, and above HEALTHY - HEALTHY — every value judged against a stated target, no outliers, no degenerate strategies, progression within the stated targets
Phase 6: Fix & Verify Cycle
After presenting the report, use AskUserQuestion:
- Prompt: "Balance check complete. What would you like to do next?"
- Options:
[A] Fix highest-priority issue now — walk me through it[B] Save report to design/balance/balance-check-[system]-[date].md[C] Stop here — I'll review the findings manually
If [A]:
- Ask which issue to address first (refer to the Recommendations table by priority row)
- Guide the user to update the relevant data file in
assets/data/or formula indesign/balance/ - After each fix, offer to re-run the relevant balance checks to verify no new outliers were introduced
- If the fix changes a tuning knob defined in a GDD or referenced by an ADR, remind the user:
"This value is defined in a design document. Run
/propagate-design-change [path]on the affected GDD to find downstream impacts before committing."
If [B]:
- Write the report to
design/balance/balance-check-[system]-[date].md(create the directory if needed). Use the current date for [date] in YYYY-MM-DD format. - Confirm the file was written, then end with: "Re-run
/balance-checkafter fixes to verify."
If [C]:
- Summarize open issues and end with: "Re-run
/balance-checkafter fixes to verify."
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
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.

