agentsclimarketplace

Dnd randomizer

Skill lectral/dnd-workshop/.agents/skills/dnd-randomizer

A collection of structured AI workflows (SKILL.md) for building D&D content monsters, NPCs, adventures, items, and spells - enhanced with tarot spreads, bibliomancy, and weighted random tables to push AI beyond generic fantasy tropes.

Install
npx -y skills add lectral/dnd-workshop --skill dnd-randomizer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Roll randomized D&D content properties (statblocks, items, spells, feats, scenarios, shops) using weighted chance tables. Use when a DM or designer wants serendipitous mechanical inspiration without generating full finished content.

SKILL.md

12.7 KB, as published. Nobody here has run it

DnD Randomizer

Use this skill only when all of the following are true:

  1. The user has not provided enough information to determine a specific property.
  2. That property cannot be reasoned from the request context, the designer skill's own guidelines, or standard 5e conventions.
  3. A random roll is preferable to an arbitrary agent choice for that property.

Do not use this skill as a default pre-step before every design task. Use it surgically — to fill one or a few specific gaps the agent cannot fill on its own.

The script does not produce finished content. It returns a short JSON object containing only the rolled fields you request, which the agent then treats as hard creative constraints.

Example of correct use: The user asks for a CR 8 monster but does not say whether it should have legendary actions. The agent cannot decide without guidance. Roll has_legendary_actions only.

Example of incorrect use: The user asks for a fire-themed dragon. Rolling the damage type is unnecessary — it is obvious from context.


Core operating rules

  • Only invoke this skill when specific properties are missing and cannot be inferred.
  • Always pass --fields with only the properties you actually need. Do not request all fields.
  • Treat every returned field as a hard creative constraint, not a suggestion.
  • If a field resolves to false or 0, omit that feature from the design entirely.
  • When tier is not supplied, the script defaults to tier 2 (baseline).
  • Drop the Sage persona in all final design deliverables. Use it only to discuss the rolls.

Script invocation

node .agents/skills/dnd-randomizer/scripts/randomize.js --generator <name> --fields <f1,f2,...> [options]

--fields is required. Pass a comma-separated list of the specific field names you need rolled. Meta fields (generator, cr, tier, cr_band, level, level_band, type, settlement, economy_tier) are always included automatically and do not need to be listed.

Requesting only the fields you need keeps the output focused and prevents the agent from over-constraining designs with properties the user already determined.

All generators support --tier <1|2|3>.

TierMeaning
1Above average — more complex, more powerful, more features than its CR/level/rarity implies
2Baseline — matches its CR/level/rarity normally
3Below average — simpler, weaker, fewer features than its CR/level/rarity implies

Generator reference

statblock

Rolls structural combat properties for a monster or villain.

# Roll only the properties you are missing:
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator statblock --cr 6 --fields attacks,spellcasting_type
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator statblock --cr 5 --tier 1 --fields has_legendary_actions,movement_types
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator statblock --cr 17 --tier 3 --fields trait_count,saving_throw_count,damage_immunity_count

Parameters

FlagRequiredValuesNotes
--crYes0–30Challenge Rating
--tierNo1, 2, 3Default: 2

Output fields

FieldDescription
generator"statblock"
crThe CR provided
tierThe tier used
cr_bandResolved band: low, mid, high, or epic
sizeCreature size
attacksNumber of attacks per Attack action
damage_typePrimary damage type
has_reactionsBoolean — whether the creature has a reaction
has_legendary_actionsBoolean
legendary_action_countNumber of legendary actions (only if has_legendary_actions is true)
has_lair_actionsBoolean
has_legendary_resistanceInteger — number of Legendary Resistance uses (0 = none)
movement_typesArray of movement modes (e.g. ["walk","fly"])
sensesArray of special senses
saving_throw_countNumber of saving throw proficiencies
skill_countNumber of skill proficiencies
trait_countNumber of passive traits
condition_immunity_countNumber of condition immunities
damage_resistance_countNumber of damage resistances
damage_immunity_countNumber of damage immunities
action_countTotal distinct action entries (including multiattack)
bonus_action_countNumber of bonus action options
spellcasting_typenone, innate, half, or full

Tier effect on statblock: Tier 1 shifts rolls toward more features, larger counts, and higher-end options (e.g. legendary actions more likely at CR 5 tier 1 than at CR 5 tier 3). Tier 3 shifts toward minimal features.


item

Rolls structural properties for a magic item.

node .agents/skills/dnd-randomizer/scripts/randomize.js --generator item --fields cursed,activation
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator item --type weapon --tier 1 --fields damage_bonus,has_unique_trait
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator item --type wondrous --tier 3 --fields charges,recharge,effect_type

Parameters

FlagRequiredValues
--typeNoweapon, armor, wondrous, consumable, ring, staff
--tierNo1, 2, 3

Output fields

FieldDescription
generator"item"
typeThe type used (or "unspecified")
tierThe tier used
attunement_requiredBoolean
chargesCharge expression or "none"
rechargeWhen charges reset, or "none"
effect_typePrimary effect category
activationHow the item is triggered
cursedBoolean
sentientBoolean
damage_bonus+0 through +3 (weapons only; always 0 for others)
has_unique_traitBoolean — whether the item has a signature special property

spell

Rolls structural properties for a new spell.

node .agents/skills/dnd-randomizer/scripts/randomize.js --generator spell --fields school,aoe_type
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator spell --level 3 --tier 1 --fields duration,saving_throw
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator spell --level 7 --tier 2 --fields range,concentration,ritual_tag

Parameters

FlagRequiredValues
--levelNo0–9 (0 = cantrip)
--tierNo1, 2, 3

Output fields

FieldDescription
generator"spell"
levelThe level used (or rolled if omitted)
tierThe tier used
level_bandResolved band: cantrip, low, mid, or high
schoolSchool of magic
casting_timeHow the spell is cast
rangeSpell range
durationHow long the spell lasts
componentsComponent combination
aoe_typeArea of effect shape, or "none"
saving_throwRequired save or "none"
damage_typePrimary damage type or "none"
upcast_scalingBoolean — scales when cast at higher levels
ritual_tagBoolean
concentrationBoolean
target_typeWhat the spell targets

feat

Rolls structural properties for a feat.

node .agents/skills/dnd-randomizer/scripts/randomize.js --generator feat --fields active_ability,uses_per_rest
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator feat --tier 1 --fields stat_increase,spell_granted

Parameters

FlagRequiredValues
--tierNo1, 2, 3

Output fields

FieldDescription
generator"feat"
tierThe tier used
stat_increaseAbility score improvement, or "none"
passive_benefitBoolean — has an always-on passive
active_abilityBoolean — has an activated ability
uses_per_restNumber of uses, or "none"
rechargeRest type that recharges uses
skill_grantedSkill grant level, or "none"
spell_grantedSpell access granted, or "none"
condition_relatedBoolean — interacts with conditions
saving_throw_bonusSaving throw improvement type, or "none"

scenario

Rolls structural properties for an adventure scenario or location.

node .agents/skills/dnd-randomizer/scripts/randomize.js --generator scenario --fields twist,complication
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator scenario --tier 1 --fields location_type,scene_count,reward_type

Parameters

FlagRequiredValues
--tierNo1, 2, 3

Tier effect on scenario: Tier 1 increases scene count, complication complexity, and twist probability. Tier 3 simplifies.

Output fields

FieldDescription
generator"scenario"
tierThe tier used
location_typeEnvironment type
primary_threatCore challenge category
complicationSecondary complication, or "none"
boss_presentBoolean
twistNarrative twist, or "none"
scene_countNumber of distinct scenes
has_skill_challengeBoolean
has_chaseBoolean
reward_typeType of primary reward
factions_involvedNumber of factions with stake in the scenario
npc_countNumber of named NPCs

shop

Rolls structural properties for a merchant or shop.

node .agents/skills/dnd-randomizer/scripts/randomize.js --generator shop --fields shop_quirk,special_service
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator shop --type magic --settlement city --economy-tier 1 --fields inventory_quality,has_rare_item,item_count
node .agents/skills/dnd-randomizer/scripts/randomize.js --generator shop --type weapons --settlement village --economy-tier 3 --fields haggling_mood,owner_attitude

Parameters

FlagRequiredValues
--typeNoweapons, armor, magic, general, curiosity
--settlementNovillage, town, city
--economy-tierNo1 (prosperous), 2 (average), 3 (poor)

Output fields

FieldDescription
generator"shop"
typeShop type used
settlementSettlement size used
economy_tierEconomy tier used
inventory_qualityOverall stock quality
item_countNumber of items in stock
has_rare_itemBoolean — at least one rare+ magic item present
haggling_moodShopkeeper's haggling disposition
special_serviceExtra service offered, or "none"
rumor_countNumber of rumors the shop owner knows
owner_attitudeGeneral attitude of the proprietor
shop_quirkUnusual characteristic of the shop, or "none"

Workflow

  1. Determine which properties are genuinely undecided — not stated by the user, not implied by context, not derivable from the designer skill's own rules.
  2. Identify the correct generator for the content type.
  3. Build the --fields list from only those undecided properties.
  4. Run the script with --fields and any relevant generator flags (--cr, --type, --settlement, etc.).
  5. Read the returned JSON. Treat each rolled field as a hard creative constraint.
  6. Continue with the appropriate designer skill (statblock-designer, item-designer, spell-designer, feat-designer, scenario-designer), applying the rolled values.
  7. Do not invent properties that contradict rolled values. If has_legendary_actions is false, the creature has none.

Error handling

  • If --generator is missing or unrecognized, the script exits with code 1 and prints usage to stderr.
  • If --fields is missing, the script exits with code 1 with a descriptive message.
  • If a field name in --fields does not exist for the chosen generator, the script exits with code 1 and lists valid field names.
  • If --cr is missing for statblock, the script exits with code 1.
  • All other parameters are optional with sensible defaults.

References

  • Chance tables: .agents/skills/dnd-randomizer/references/tables.json
  • Script: .agents/skills/dnd-randomizer/scripts/randomize.js

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.