Skip to content

Character Sheets

Character sheets are one of the most time-consuming things to build for any fiction project that cares about structured character data. TTRPG authors need printable sheets. Novel authors often want character cards for their own reference. Setting book authors need standardized sheets for every NPC. The default workflow is to design the sheet in an external tool (Photoshop, InDesign, Google Sheets, a purpose-built tool like Roll20), then copy character data into it by hand, then hope you never need to change the design. Ishvana’s Character Sheet Designer is an agent-driven alternative. You describe the sheet you want in natural language, the designer generates a CSS Grid layout with appropriately-typed components, you refine it with feedback, and the resulting sheet is linked to your Legendry entries so character data auto-populates. Build the layout once, use it for every character in your project, keep the design editable if your system evolves.

The Designer lives inside the Visual Studio module as a dedicated workspace. It’s a different feature from the Visual Gallery — both are in Visual Studio but they’re independent. The Gallery stores images. The Designer builds character sheet forms.

Character Sheet Designer workflows run through three distinct phases: Describe, Preview, and Use. You move through them in order for each new sheet you’re building.

You describe the sheet you want in natural language. Either type a prompt from scratch or pick from the built-in system presets (D&D 5e, Pathfinder 2e, Cyberpunk RED, Call of Cthulhu 7e, Vampire: The Masquerade 5e).

Example prompts that work:

  • “A D&D 5e character sheet with the six ability scores, skills, saving throws, and inventory.”
  • “A cyberpunk-style sheet with stats, cyberware load, humanity, and a portrait.”
  • “A narrative-focused character sheet for a romance novel — mostly biographical fields with a small stats section.”
  • “A character sheet for Welcome to Tikor using the Swordsfall d10 system.”

The presets are shortcuts. Picking D&D 5e is equivalent to typing a detailed D&D prompt, just faster. You can also use the preset’s prompt as a starting point and edit it before generating.

Click Generate and Hawken (the agent behind the designer) reads your prompt plus any context from your active ruleset (if you have one in the Magic System) and produces a complete sheet layout as a structured JSON schema. The generation takes a few seconds.

The generated layout appears in the Preview phase as a read-only rendering of what the sheet will look like when filled in. Component types include:

  • Stat block components — vertical or horizontal stat displays with automatic modifier calculation.
  • Labeled lists — dynamic add-remove lists for skills, inventory, spells.
  • Large textareas — multiline fields for backstory, notes, appearance.
  • Image slots — portrait or asset upload areas.
  • Table grids — structured tables with headers and rows.
  • Two-column and three-column layout containers — grouping related fields.
  • Header groups — top-of-sheet fields like name, class, level.

The layout uses CSS Grid, so components are positioned in named grid areas and the whole thing is responsive. Looks good on screen and prints cleanly too.

If the preview looks right, move to the Use phase. If it doesn’t, request refinements.

From Preview, you can request changes in natural language. “Add a spell list section to the right side.” “Make the stat blocks horizontal instead of vertical.” “Remove the portrait slot.” “Add a ten-field skills grid.”

Each refinement sends the current layout JSON plus your feedback to Hawken, who produces a refined version. The refinement replaces the previous layout. The Designer tracks every refinement as design history so you can see the sequence of changes and, if needed, revert to an earlier version of the layout.

Refine as many times as it takes to get the sheet right. There’s no cost to iteration beyond LLM tokens — each refinement is a generation request, so it takes a few seconds and uses some tokens, but the math is tiny compared to what you’d spend designing a sheet by hand.

Once the layout is right, click Use This Layout and the sheet enters the Use phase. All inputs become editable. You can fill in actual character data — name, stats, skills, notes, portrait, everything.

Filling in data is just typing (and clicking and dragging for some fields). The sheet saves as a character sheet instance when you click Save — this creates a persistent JSON file in data/character_sheets/ that stores the filled data alongside the layout schema.

Once saved, the sheet is in your project. You can reopen, edit, export, or print it. The layout can also be reused for other characters — save it as a template and you can generate new sheets from the same template with different data.

The most valuable feature of character sheets in Ishvana is the link back to your Legendry. When you launch a new sheet from a character’s Legendry entry, or link an existing sheet to an entry after the fact, the sheet becomes bidirectionally tied to the entry:

  • Pre-fill from the entry. On load, the sheet reads the entry’s stat block (if one exists) and pre-populates any matching fields. Character name, aliases, tags, summary, and every stat value come from the entry automatically. You don’t retype anything.
  • Sync back to the stat block. When you edit stat values on the sheet and save, the changes write back to the entry’s stat block. So if you’re using the sheet as your primary character data interface — at a gaming table, during a writing session, while iterating on a character — every change you make syncs to the canonical lore entry.

This sync is what makes Ishvana’s character sheets competitive with dedicated TTRPG tools. You’re not maintaining two copies of character data (one in your lore database, one in your character sheet). You’re maintaining one copy that has two views.

For reference, the full component library the Designer can use:

ComponentWhat it isTypical use
header_groupRow of labeled text inputsName, class, level, race
stat_block_verticalVertical stat boxes with modifiersD&D-style ability scores
stat_block_horizontalCompact horizontal stat rowCompact stat displays
labeled_listDynamic add/remove list itemsSkills, inventory, spells
large_textareaMultiline text areaBackstory, notes, appearance
image_slotPortrait/asset uploadCharacter portrait
table_gridTable with headers and rowsSpell tables, weapon tables
two_columnTwo-column layout containerGrouping paired fields
three_columnThree-column layout containerGrouping triple fields

Stat block components support four modifier formulas that auto-calculate derived values:

  • dnd(value - 10) / 2 for D&D-style ability modifiers.
  • halfvalue / 2 for Call of Cthulhu half-values.
  • fifthvalue / 5 for Call of Cthulhu fifth-values.
  • none — no modifier calculation.

Modifiers compute live as the user types into the stat value fields.

A sheet layout can be saved as a template from the Preview or Use phases. Templates are reusable — you use them as a starting point for new characters in the same system. Templates are distinct from filled sheets:

  • A template is a layout only. No character data. Save one per system (e.g., “D&D 5e Template,” “Swordsfall d10 Template”).
  • A sheet is a template + character data. Save one per character.

When you create a new sheet, you can either generate a new layout from scratch (Describe phase) or pick a template and go straight to the Use phase. Starting from a template is faster if you’ve already built a layout for your system.

Every character in your project can have their own sheet instance. The sheets are stored as flat JSON files in data/character_sheets/ (keyed by sheet ID) — not in SQLite — for simplicity and portability.

Multiple sheets per character are allowed. A character might have a “Default” sheet showing their main state and a “Combat Variant” sheet showing their transformed or combat-mode state. You can switch between them or maintain both.

Sheets can be printed directly from the Designer. The print view strips the UI chrome and renders the sheet layout clean — no toolbar, no sidebar, just the character sheet as a printable document. The print CSS is tuned for letter and A4 paper sizes and handles multi-page sheets if the content overflows.

Sheets can also be exported to PDF via the print dialog’s “Save as PDF” option, or to PNG via a screenshot action in the toolbar.

  • Not a page layout tool. It’s specifically for character sheets. Other kinds of printable content (maps, timelines, genealogies) would need a different tool.
  • Not a spreadsheet. You can have stat blocks and derived values, but complex formulas with multiple dependencies are better handled by the Magic System’s ruleset engine, which the sheet just displays.
  • Not a replacement for professional layout. If you’re publishing a setting book with professional typography, Ishvana’s character sheets are good enough for draft work but the final book would still go through InDesign or similar.
  • Not cloud-collaborative. Sheets are local. Two users can’t edit the same sheet simultaneously.