Library · Games & interaction
RPG Character Rules
Create and validate character sheets without running a Discord bot.
Repository: CinvanaAI/rpg-character-rules-engine
Recorded synthetic example. Source with a complete offline example.
See the idea in action.
The example saves and reopens the character, changes two identity fields, rejects an invalid ability assignment and reports remaining completeness checks. It uses disposable local files.
A synthetic character and a 27-point ability assignment.
{
"mode": "Synthetic character; actual rules and revisioned persistence",
"name": "Mira Vale",
"abilities": {
"STR": "15",
"DEX": "15",
"CON": "15",
"INT": "8",
"WIS": "8",
"CHA": "8"
},
"class": "Fighter 1",
"revision": 4,
"required_profile_issues": [],
"invalid_ability_rejected": "STR must be between 8 and 15.",
"stale_edit_rejected": "Stale sheet revision: expected 1, current 4.",
"other_blank_fields": 119
}Try the example.
From the repository root, follow the dependency requirements in the README. This example uses supplied synthetic material.
python -m pip install -e . python -m examples.offline_demo
The example saves and reopens the character, changes two identity fields, rejects an invalid ability assignment and reports remaining completeness checks. It uses disposable local files.
Complete setup and instructions ↗The interesting part.
Character data, numerical rules and chat presentation can have separate contracts without losing a usable whole.
Where it came from.
February 2026 Persistent Discord RPG character subsystem.
February 2026 — Historical RPG character subsystem from which this was extracted. Source ↗
Retains field taxonomy and numeric rules while adding neutral sheets, strict schemas, atomic storage and revisions.
No bot adapters, Discord identifiers, private characters or campaign membership are included.
Follow the family: Persistent Discord RPG and its reusable mechanisms
- Extracted fromPersistent Discord RPG
See the integrated setting from which this independently useful mechanism was separated. The extract contains new neutral interfaces and hardening; the original integrated application remains represented.
Source ↗