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
- O campo
iddeve sempre conter um namespace de autor ou organização (ex:org.adventurekeeper.pf2eoucom.meugrupo.dnd5e). - Uma vez homologado e publicado no diretório, o
idé imutável. Novas versões utilizam o mesmoidcom incremento deversion. - Os dados de persistência no banco do Adventure Keeper utilizam o
idcomo chave primária composta (module_id), impedindo colisões de chaves entre extensões diferentes.