# DivineVTT > DivineVTT is a virtual tabletop and a worldbuilder in one app. These docs cover its Extension API: how systems and modules (packages) declare character sheets, rules, content, themes and scripts, and the api object a package script uses. Every page below is served as Markdown at its .md link, and the rendered site is at https://divinevtt.com/docs. The whole set in one file: https://divinevtt.com/llms-full.txt ## Docs - [Overview](https://divinevtt.com/docs/index.md): You extend DivineVTT with packages. A package is a folder with a pack.json manifest, a set of facet files, and optionally a script. There are two roles, and… ## Getting started - [Your first module](https://divinevtt.com/docs/getting-started.md): The smallest useful module is two files: a manifest and a script. This one adds a half(x) function you can call from any sheet formula. We'll start there and… - [Studio](https://divinevtt.com/docs/guides/studio.md): Studio is the in-app editor for systems and modules. It reads and writes the same pack format described everywhere else in these docs, so anything you build… - [Building a system](https://divinevtt.com/docs/guides/systems.md): A system is the ruleset a world runs on. A world has exactly one. It is picked when the world is created (a built-in, or one of your own from Studio) and can… ## Worlds & maps - [Importing battlemaps](https://divinevtt.com/docs/guides/importing-battlemaps.md): A prepared battlemap from another tool can come in with its walls, doors, lights and grid already placed, instead of being traced again by hand. - [Exporting worlds and maps](https://divinevtt.com/docs/guides/divinevtt-files.md): A world, or one map of it, can be saved as a single file and brought back in, on the same server or another one. Nothing is lost on the way: walls, doors,… - [Exporting to other VTTs](https://divinevtt.com/docs/guides/exporting-maps.md): A map made or finished here can go out to another tool with its walls, doors, lights and grid, in the same formats the battlemap import reads. ## Guides - [Packages & the pack chain](https://divinevtt.com/docs/guides/packages.md): A package is a folder with a pack.json manifest, one JSON file per facet, and an optional script. A system is a world's base ruleset (one per world). A module… - [Authoring character sheets](https://divinevtt.com/docs/guides/character-sheets.md): A character sheet is a characterSheet facet: a tree of nodes grouped into tabs, scoped to one entity kind. It's plain JSON, so the visual sheet editor is just… - [Rules facets](https://divinevtt.com/docs/guides/rules.md): Every facet on this page is a declarative JSON file a system (or a module) ships. None of them needs a script. For each one: what it does at the table, the… - [Shipping content](https://divinevtt.com/docs/guides/content.md): Rules say how a world works. Content is the stuff in it: monsters, items, spells, books, what a wolf leaves behind, what a locker holds. A pack ships content… - [Importing characters and monsters](https://divinevtt.com/docs/guides/importing.md): A character someone already built on D&D Beyond, a party that lives in Foundry VTT, a stack of monsters from a 5etools file: you can bring them into a world… - [Scripting with the api](https://divinevtt.com/docs/guides/scripting.md): Declarative facets cover most packages. A script is for behavior the JSON can't express: formula functions, custom sheet nodes and panels, derived action… - [Effects & the value seam](https://divinevtt.com/docs/guides/effects.md): Every computed read of sheet data flows through one seam: - [Automation patterns](https://divinevtt.com/docs/guides/automation.md): A custom sheet node can make a sheet do things: auto-fill fields, roll dice, run a rest, all from the module, with no rules in the engine. It works through… - [Permissions & the sandbox](https://divinevtt.com/docs/guides/sandbox.md): Every pack that is not a first-party built-in runs its script sandboxed. This page is what that means for you as an author: what to declare, what the script… ## Reference - [The api object](https://divinevtt.com/docs/reference/api.md): The object passed to a script's register(api) function. It is pack-bound (it knows which package is calling and qualifies every name the package registers),… - [Hooks](https://divinevtt.com/docs/reference/hooks.md): A script subscribes to lifecycle events with api.hooks.on: - [Chat commands](https://divinevtt.com/docs/reference/chat-commands.md): A line typed into a table's chat box that starts with / runs a command instead of being posted. Some commands are the app's own and work in every game system;… - [Facet schemas](https://divinevtt.com/docs/reference/facets.md): The exact shape of every facet a package can ship in pack.json. These tables are generated from the shared TypeScript definitions, so they always match the… - [Sheet nodes](https://divinevtt.com/docs/reference/nodes.md): Every node type the characterSheet and sheetExtensions facets accept. A sheet template is a tree of these nodes grouped into tabs. Generated from the shared… - [Engine profile keys](https://divinevtt.com/docs/reference/engine-keys.md): Profile keys the ENGINE reads, whichever system is loaded. They live in namespaces no package owns (builtin:realism_core:, builtin:transforms:,… - [Stored data types](https://divinevtt.com/docs/reference/data-types.md): The shapes a package reads and writes inside an entity's profile: the values stored under an actions, inventory, drops, spellbook, or linked node's id. These… ## Examples - [Built-in packs](https://divinevtt.com/docs/examples/builtins.md): Every pack that ships with DivineVTT, with the facets it uses. The three walked through on their own pages are the best reading; the rest are worth opening in… - [demo-utils](https://divinevtt.com/docs/examples/demo-utils.md): builtin:demo-utils is the minimal reference module. It exercises the loader, registries, hooks, settings, and exports end to end, and it's the package the… - [item-automation](https://divinevtt.com/docs/examples/item-automation.md): builtin:item-automation makes items grant things to whoever has them equipped. It's the reference for action sources and pushed effects. It works for any… - [dnd5e-automation](https://divinevtt.com/docs/examples/dnd5e-automation.md): builtin:dnd5e-automation is the sheet overhaul module. It ships a full automated PC characterSheet (replacing the base one when enabled) plus the renderers… - [Circle template](https://divinevtt.com/docs/examples/circle-template.md): A whole module in one file: a map tool that drags out a circle template from its centre and labels the radius in the map's own units. It draws on the map and…