This skill should be used when creating compendium packs, registering packs in manifests, importing/exporting documents, querying pack contents, or using the CLI for pack management and version control workflows.
View on GitHubImproperSubset/hh-agentics
fvtt-dev
fvtt-dev/skills/fvtt-compendiums/SKILL.md
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/ImproperSubset/hh-agentics/blob/main/fvtt-dev/skills/fvtt-compendiums/SKILL.md -a claude-code --skill fvtt-compendiumsInstallation paths:
.claude/skills/fvtt-compendiums/# Foundry VTT Compendium Packs
**Domain:** Foundry VTT Module/System Development
**Status:** Production-Ready
**Last Updated:** 2026-01-05
## Overview
Compendium packs store pre-built content (actors, items, journal entries, etc.) for distribution with modules and systems. Understanding pack management is essential for content creation.
### When to Use This Skill
- Creating content packs for distribution
- Registering packs in module/system manifests
- Importing/exporting documents programmatically
- Setting up version control workflows with CLI
- Querying and searching pack contents
## Pack Registration
### Manifest Configuration
```json
{
"id": "my-module",
"packs": [
{
"name": "monsters",
"label": "Monsters",
"type": "Actor",
"path": "./packs/monsters",
"system": "dnd5e"
},
{
"name": "items",
"label": "Magic Items",
"type": "Item",
"path": "./packs/items"
}
]
}
```
### Valid Document Types
- `Actor` - Characters, NPCs, creatures
- `Item` - Equipment, spells, features
- `JournalEntry` - Lore, handouts
- `RollTable` - Random tables
- `Scene` - Maps and encounters
- `Macro` - Executable scripts
- `Playlist` - Audio collections
- `Cards` - Card decks
- `Adventure` - Mixed content bundles
### Directory Structure
```
my-module/
├── module.json
├── packs/
│ ├── monsters/ # LevelDB folder (V11+)
│ └── items/
└── src/
└── packs/ # JSON/YAML source (for version control)
```
## Accessing Packs
### Get Pack Reference
```javascript
const pack = game.packs.get("my-module.monsters");
// Check properties
console.log(pack.locked); // Edit lock status
console.log(pack.visible); // User visibility
console.log(pack.metadata); // Pack configuration
```
### Load Index (Lightweight)
```javascript
// Get minimal cached data
const index = await pack.getIndex();
for (const entry of index) {
console.log(entry._id, entry.name);
}
```
### Get Single Document
```javascri