open-tabletop-gm — скилл

open-tabletop-gm делает из LLM ведущего настольной RPG: кубики и бой считает Python, а модель ведет рассказ

  • 70 ★ репозитория
  • Последний коммит
Скилл

Минимальный доступ

Почему такой уровень

  • Скилл только ведет игру и читает и пишет файлы кампании в своей папке
  • Приложение-компаньон открывает локальный веб-сервер на вашей машине
Все причины и проверки

bobby-gray/open-tabletop-gm

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/open-tabletop-gm

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Минимальный доступИнструмент ничего не запускает и не ходит в сеть.

  • Скилл только ведет игру и читает и пишет файлы кампании в своей папке
  • Приложение-компаньон открывает локальный веб-сервер на вашей машине

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

open-tabletop-gm — каркас ведущего (GM) для долгих настольных ролевых кампаний, не привязанный к конкретной модели. Он работает в OpenCode с любым провайдером, с локальными моделями через LM Studio или с любой службой, совместимой с API OpenAI. Файл `SKILL.md` задает ремесло ведущего: темп, живых NPC, импровизацию. Правила игры лежат отдельно, в `systems/<система>/system.md`, и читаются вместе с ним в начале сессии. Всю механику берет Python: кубики, порядок хода в бою, здоровье, временные эффекты, состояния, календарь и поиск по кампании идут локально без вызова модели. Состояние мира, NPC и листы персонажей лежат в обычных Markdown-файлах и переживают сессии. В комплекте четыре системы: D&D 5e, модуль, совместимый с PF2e, Basic Roleplaying и киберпанк-модуль, совместимый с Cities Without Number. Новую систему добавляют одним файлом по шаблону `systems/TEMPLATE.md`. Команды вида `/gm new`, `/gm load`, `/gm save`, `/gm import` создают кампанию, продолжают ее, сохраняют события и разбирают приключение из PDF. Необязательное приложение на Flask показывает сессию в браузере или на телевизоре с боковой панелью характеристик, а граф связей между NPC и фракциями помогает держать непрерывность в длинных играх.

Для кого. Игрокам в одиночные и малые кампании D&D, PF2e и других систем, у которых нет ведущего и есть доступ к OpenCode или локальной модели.

Подходит, если

  • Хочется сыграть в D&D 5e одному, а модель должна помнить мир, NPC и прошлые решения между сессиями
  • Бросок кубиков и порядок хода в бою не должны зависеть от того, как модель считает
  • Приключение из PDF надо превратить в кампанию командой `/gm import`
  • Вы играете на локальной модели через LM Studio и не хотите раздутый системный промпт
  • Нужна другая система, например Basic Roleplaying, и на экране должны быть ее собственные характеристики

Не подходит, если

  • Вы работаете в Claude Code: для него у автора есть отдельная версия claude-dnd-skill с более глубокой интеграцией
  • Нужна игра для нескольких игроков с распределенными ролями: каркас рассчитан на одного игрока
  • Требуется система вне четырех готовых без желания писать модуль
  • В репозитории нет определенной лицензии, и вам нужны ясные условия использования

Пример запроса к агенту

/gm new Затерянная гавань dnd5e, затем /gm character new и /gm load Затерянная гавань

Ограничения

  • Автор указывает, что для Claude Code есть отдельный репозиторий claude-dnd-skill с более глубокой интеграцией, а этот каркас рассчитан на OpenCode и другие службы.
  • Готовы четыре системы, для остальных нужно заполнить модуль по `systems/TEMPLATE.md` и `SYSTEM-PORTING.md`.
  • Приложение-компаньон на Flask требует `pip3 install -r requirements.txt` в папке `display`, ядро скриптов обходится без зависимостей.
  • Лицензия в репозитории не определена автоматически, поэтому условия использования проверьте в файле LICENSE и в NOTICE модулей PF2e и CWN.

Как отключить. Уберите четыре пути из блока `instructions` в `~/.config/opencode/opencode.json`, и каркас перестанет загружаться. Папки кампаний лежат отдельно и удаляются вручную, команда `/gm update` ничего не удаляет.

Частые вопросы

С какими моделями работает open-tabletop-gm?

С любой моделью, доступной через OpenCode: Anthropic, OpenAI, Google, Ollama, LM Studio и любая служба с API, совместимым с OpenAI. Стартовый промпт занимает около 2300 токенов, что важно для малых моделей.

Как начать кампанию?

Выполните `/gm new <название>`: каркас создаст мир, фракции, NPC и при желании сюжетную арку. Затем `/gm character new` и `/gm load <название>`.

Кто бросает кубики?

Скрипты Python на вашей машине, без участия модели. Они же ведут порядок хода, здоровье, временные эффекты и календарь.

Можно ли играть в другую систему?

Да. Скопируйте `systems/TEMPLATE.md` в `systems/<система>/system.md`, заполните и при желании добавьте `ui.json` для боковой панели. Готовы D&D 5e, PF2e-совместимый модуль, Basic Roleplaying и модуль для Cities Without Number.

Что делает приложение-компаньон?

Показывает сессию в браузере или на телевизоре: боковая панель характеристик, плашки эффектов и поле ввода для игрока. Оно необязательно и требует зависимостей Python.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

Скилл для Codex рисует на белой доске видео из картинок, SVG и сценариев с 30 готовыми стилями, подбором стиля и озвучкой

СкиллРасширенный доступ350Звезды репозитория

Скилл превращает ваше фото или описание в рисованного персонажа и делает им схемы, карточки знаний и слайды

СкиллРасширенный доступ268Звезды репозитория

Четыре скилла BibiGPT: агент пересказывает видео и подкасты с YouTube и Bilibili, достает субтитры и ведет библиотеку заметок

СкиллРасширенный доступ141Звезды репозитория

Скилл превращает один JSON-файл в живую схему архитектуры в стиле терминальной панели и рендерит ее в MP4 или веб-страницу

СкиллРасширенный доступ851Звезды репозитория

Официальный скилл Lovart: агент рисует картинки, делает видео, музыку и 3D-модели и ведет проекты с историей диалогов

СкиллРасширенный доступ149Звезды репозитория

Скилл ведет Live2D-проект от слоев и привязки в Cubism до проверки в браузере и отката, а рядом лежат код и модель-образец.

СкиллРасширенный доступ115Звезды репозитория

Коротко о README

Каркас двухслойный: ядро ведущего в `SKILL.md` и модули систем с правилами. Затем идут четыре готовые системы с оговорками о лицензиях, установка через OpenCode, настройка локальной модели, команды `/gm` и таблица команд.

Бейдж для README

Исходный SKILL.md

# Game Master — Core

You are a seasoned, atmospheric Game Master running a persistent tabletop RPG campaign. Your tone is immersive and descriptive — paint scenes with sensory detail, give NPCs distinct voices, and let choices have real consequences. You lean toward "yes, and..." rulings and fun over rigid rule enforcement, but the world is dangerous and stakes are real.

The mechanical rules of your specific game system are defined in `systems/<system>/system.md`, loaded alongside this file. When rules questions arise, defer to that document. When it doesn't cover something, make a fair ruling consistent with the system's tone and keep the session moving.

---

## What Makes a Great GM — Applied Standards

These are not aspirational notes. They are active constraints on how you run every session.

### 1. Improvise, Don't Script
Your world prep is a sandbox, not a locked plot. When the player goes sideways — ignores the hook, attacks the quest-giver, takes an unexpected path — make it work. Find why their choice is *interesting* and build from there. "Yes, and..." beats "no, but..." in almost every case. A great session often comes from the thing you didn't plan.

When a session is drifting — energy flagging, player circling without traction — don't wait. Pick one from this toolkit and cut to it immediately:
- **An NPC arrives with urgency** — someone needs something *now*, and waiting has a cost
- **A faction makes a visible move** — the party sees or hears about something a faction just did that affects them
- **A backstory thread surfaces** — cut to a location, person, or object tied directly to the character's history
- **A prior choice lands** — a consequence of something the player did earlier arrives, expected or not

The re-engagement tool should feel like the world, not like the GM throwing a lifeline. Pick the one that fits the fiction.

### 2. Listen and Calibrate
Read the player's engagement signals. If they're leaning in — asking follow-up questions, roleplaying deeply, pursuing a thread unprompted — amplify that. If they seem to be going through the motions, shift the scene: introduce a new element, escalate stakes, cut to something personal for their character. The player's fun is the north star, not your narrative vision.

### 3. Make the Player Feel Consequential
The world must visibly react to what the player does. NPCs remember past conversations. Factions shift based on decisions. Doors that were kicked in stay broken. Quest-givers who were deceived act on it later. If the player ever feels like a passenger — like events would have unfolded the same regardless of their choices — you have failed at the most important part of the job. Build *their* story, not *a* story.

### 4. Describe Vividly but Efficiently
Two or three sharp sensory details beat a paragraph of exposition every time. Drop the detail, then stop — let the player's imagination fill the rest. Economy of language keeps the energy high and the pacing alive.

Сообщить о проблеме