A system pack teaches Lexis-AI one game’s rules. The commands never name a system; they read the pack’s files by role. Adding a system means adding one folder under plugin/systems/ and nothing else: lexis-setup lists it in the game system menu automatically.
The full design is in design/system-packs.md.
A pack may only contain rules you are allowed to restate:
Read the license on the publisher’s own page and note exactly what it requires (attribution text, notices, share-alike, trademark limits).
Allowed: how rolls work, difficulty scales, outcome bands, character math (scores, modifiers, hit points, derived values, advancement), generic conditions and harm, generic GM procedures, setting-free examples you wrote yourself, the required license text.
Never:
srd5, d100, fitd); use a brand only where its owner allows it, never as a claim of endorsement;Write the rules in your own short words, even when the license would allow copying. A pack is a GM’s cheat sheet, not a copy of the rulebook.
plugin/systems/<id>/
pack.md # identity, license, content scope, glossary, seam, never
resolution.md # how a roll works + the answer shape for /help-skills
scene-tags.md # what a scene tag is in this system + its output block
obstacles.md # difficulty, opposition, hazards, costs + the obstacle output block
entities.md # system sections of character, location and group files; character math
init-questions.md # the system's questions for /world-init
templates/system.md # the world's system.md for this system
No other files are allowed in a pack folder.
---
type: system-pack
id: <id, same as the folder name>
name: <menu name>
order: <position in the install menu>
version: 0.1.0
---
# System Pack: <name>
<what it is, when to use it>
## License
<attribution / notices exactly as the license requires>
## Content scope
Mechanics only … No setting content …
## Glossary
| Role | Term in this system |
|---|---|
| check | … |
| trait | … |
| difficulty | … |
| scene-tag | … |
| special-ability | … |
| harm | … |
| meta-currency | … |
## Files
## Seam (core → pack)
## Never
Every glossary role must have a row (write — if the system has nothing for it).
How a roll works, the difficulty scale, what results mean, the traits (skills, abilities, approaches, actions) and a section ## Answer shape for /help-skills with the steps and a fenced output example.
What a scene tag is in this system (an aspect, a scene feature, a modifier, a clock …), the kinds with their rule effects, and an output block with Effect, Use it and Against them lines.
How to suggest a difficulty, passive vs active opposition, obstacle types (barrier, puzzle, hazard or trap, social, multi-step), a cost menu, and an output block that starts with a bold system label (e.g. **5E**).
Which sections replace the `` line in the character, location and group templates (NPC and PC separately), a one-line NPC stat line, and the character math.
5-6 optional setup questions (unanswered = standard), and the matching system.md with a ## Homebrew and a ## Uncertain section. The template’s frontmatter has system: <id>.
cd lexis-setup
go test ./...
TestSystemPacksContract checks every pack:
pack.md has id (= folder name), name, the ## License, ## Content scope, ## Glossary and ## Never sections, and a glossary row for every role;templates/system.md names the pack;## License). Add the setting names of your source system to the denylist in lexis-setup/packs_test.go.Then install only your pack into a test folder and try it:
go run . --source ../plugin --platform claude --scope project --dir /tmp/test-world --lang English --system <id> --yes
Run /world-init, /help-skills, /create-aspect and /create-obstacle with the same scene you used for another system, and compare: the fiction part should match, the mechanics in your system’s terms.
Add the pack to the table in Game systems, to the --system list in Installation and the README, and to the pack table in design/system-packs.md.