Adventure Keeper Docs
Acessar

Especificação do Manifesto de Módulos

1. O que é um Módulo?

Um módulo do Adventure Keeper é um pacote declarativo e versionado que estende os modelos de dados da plataforma sem acoplar ou modificar o núcleo do sistema. Cada módulo pode adicionar atributos personalizados a Entidades (como Personagens, NPCs, Monstros ou Itens) ou a Campanhas.


2. Estrutura do Arquivo module.json

O ponto de entrada obrigatório de qualquer módulo é o manifesto module.json na raiz do pacote:

{
  "$schema": "https://developers.adventurekeeper.com.br/schemas/v1/module.json",
  "id": "community.pf2e-system",
  "name": "Pathfinder 2e System Extension",
  "version": "1.0.0",
  "description": "Adiciona blocos mecânicos de estatísticas e perícias para Pathfinder 2ª Edição.",
  "author": {
    "name": "Comunidade RPG Brasil",
    "email": "contato@exemplo.com",
    "url": "https://github.com/comunidade-rpg"
  },
  "license": "MIT",
  "compatibility": {
    "minimumCoreVersion": "1.0.0",
    "verifiedCoreVersion": "1.4.0"
  },
  "defaultLocale": "pt-BR",
  "supportedLocales": ["pt-BR", "en"],
  "entityExtensions": [
    {
      "entityType": "character",
      "schema": "./schemas/character-stats.json",
      "ui": {
        "tabTitleKey": "pf2e.tabs.stats",
        "icon": "shield"
      }
    }
  ]
}

3. Campos do Manifesto

Campo Tipo Obrigatório Descrição
id string Sim Identificador canônico único no formato namespace.nome-modulo (apenas minúsculas, números, pontos e hífens).
name string Sim Nome legível para humanos apresentado no diretório de módulos.
version string Sim Versão semântica estrita (SemVer, ex: 1.2.0).
description string Sim Resumo claro do propósito e conteúdo fornecido pelo módulo.
author object Sim Metadados do autor (name, email opcional, url opcional).
license string Sim Licença de distribuição aberta (ex: MIT, Apache-2.0, ORC).
compatibility object Sim Versão mínima do Adventure Keeper compatível (minimumCoreVersion).
defaultLocale string Sim Idioma canônico do módulo (ex: "pt-BR" ou "en").
supportedLocales string[] Não Lista de idiomas com traduções completas disponíveis.
entityExtensions array Não Definição de abas e esquemas dinâmicos por tipo de entidade.
campaignExtensions array Não Definição de configurações ou dados acoplados à campanha.

4. Regras de Namespace e Identificadores

  1. O campo id deve sempre conter um namespace de autor ou organização (ex: org.adventurekeeper.pf2e ou com.meugrupo.dnd5e).
  2. Uma vez homologado e publicado no diretório, o id é imutável. Novas versões utilizam o mesmo id com incremento de version.
  3. Os dados de persistência no banco do Adventure Keeper utilizam o id como chave primária composta (module_id), impedindo colisões de chaves entre extensões diferentes.