A CLI for wrangling directories of source files. Like a static generator, but for whatever.
Find a file
2025-03-20 14:24:56 -04:00
src Update readme with schemas 2025-03-20 14:24:56 -04:00
.gitignore Improved HTML output 2025-03-08 20:23:29 -05:00
biome.json Organize into folders 2025-03-10 20:58:11 -04:00
bun.lock Concept jsx usage 2025-03-17 20:48:37 -04:00
package.json Concept jsx usage 2025-03-17 20:48:37 -04:00
README.md Update readme with schemas 2025-03-20 14:24:56 -04:00
tsconfig.json Muse owns muse-shaped files now 2025-03-17 17:20:30 -04:00

Playbill Builder CLI

This is a CLI tool for compiling Markdown and YAML files into a validated Playbill for Proscenium

Usage

Usage:
  muse [/path/to/binding.yaml] <options>

Options:
  --check         Only load and check the current binding and resources, but do not compile
  --outfile,  -o  Specify the output file path. If not specified, output to stdout
  --watch,    -w  Watch the directory for changes and recompile
  --renderer, -r  Specify the output renderer. Options: json, html
  --help,     -h  Show this help message

Binding File

name: My Playbill   # Required
author: My Name     # Required
version: 0.0.1      # Required
files:              # Optional
  - "**/*.yaml"
styles:             # Optional
  - stylesheet.css
terms:              # Optional
  Some Term: Some Definition
  Another Term: Another Definition

Definition Shapes

These YAML representations of definitions show the properties available for each Playbill component.

Note that every Playbill component definition can define the following properties:

id: some-hypenated-id # default: slug-ified file name
name: The Name of the Component # default: Name of the containing file
description: A markdown-enabled description # default: Placeholder / empty
categories: # default: No categories
  - list
  - of
  - categories

Ability Definition

$define: ability
type: action | cue | trait
ap: 0
hp: 0
ep: 0
xp: 0
damage: 0
damageType: phy | arc
roll: none | attack | fate | <any talent>

Blueprint Definition

$define: blueprint
species: some-hypenated-id
items:
  - item-id
  - item-id-two
  - item-id-three
abilities:
  - ability-id
  - ability-id-two
  - ability-id-three
ap: 0
hp: 0
ep: 0
xp: 0
muscle: novice | adept | master
focus: novice | adept | master
knowledge: novice | adept | master
charm: novice | adept | master
cunning: novice | adept | master
spark: novice | adept | master

Item Definition

$define: item
type: wielded | worn | trinket
rarity: common | uncommon | rare | legendary
affinity: none | attack | fate | <any talent>
damage: 0
damageType: phy | arc
hands: 1 | 2 # Only for wielded items
slot: headgear | outfit | gloves | boots | adornment | unique # Only for worn items

Method Definition

$define: method
curator: Someone
abilities:
  - [rank-1-ability-id-one, rank-1-ability-id-two]
  - [rank-2-ability-id-one]

Resource Definition

$define: resource
type: text | image | table
url: https://example.com/image.jpeg # Only for image resources
data: <a 2-d array of strings> # Only for table resources

Rule Definition

$define: rule
overrule: another-rule-id # Optional
order: 0 # Optional

Species Definition

$define: species
hands: 2
abilities:
  - some-ability-id
  - another-ability-id
ap: 0
hp: 0
ep: 0
xp: 0
muscle: novice | adept | master
focus: novice | adept | master
knowledge: novice | adept | master
charm: novice | adept | master
cunning: novice | adept | master
spark: novice | adept | master