Examples

Thematic content is JSON. Each folder holds a minimal example (the least that works) and a full one (every field, with a "_comment" saying where the file goes). Copy one into your pack, rename it to your id and change what you need. Keys starting with _ are ignored. The format of each kind is in ../addon-format.md; your pack's AGENTS.md has the short version.

kindfilesgoes to
suitssuits/suit.minimal.json, suit.full.jsondata/thematic/armors/<collection>/<id>.json
suit altssuits/alt.minimal.json, alt.full.jsondata/thematic/armors/<collection>/alt/<alt id>.json
suit recipessuits/recipe.suit_bench.jsondata/thematic/recipes/<suit id>.json
suit tagsarmor_tags/armor_tag.minimal.json, armor_tag.full.json (includes, options, a remove)data/<ns>/armor_tags/<any folders>/<id>.json
collectionscollections/collection.minimal.json, collection.full.jsondata/thematic/collections/<collection>.json
abilitiesabilities/ability.minimal.json (a new id from a type), ability.params.json (a type with fields), ability.full.json (options and assets), override.json (retune an existing ability), composed.minimal.json / composed.kick_drop.json (a component written as data: a press key's running order and a cooldown), brimstone_parry.js (a component script: a hold key that opens a phase and answers a hit), family.fire_wards.js (one script defining many components in loops, over a tag and the Lantern corps), morph.minimal.json (a morph ability naming its shape), owned_items.js (items a move hands out and takes back: give), suit_swap.js (a transformation: swapSuit behind the kitIdle guard), lightning_call.js (bolts round each target: lightning), tether.minimal.js, tether.full.js (a move that throws a line and rides it: a key plus component.tether, swing / slingshot / hang), break_with_tool.*.js, tunnel_and_face.*.js (breakPattern with the held or a named tool, a line, a heading-oriented plane that advances, the broken count), transform_options.*.js (transformBlock that reverts, still sources only, the event's block on a random neighbour; the dropped_itself guard), fire_shapes.*.js (placeFire footings, a line across the facing, lasts; at: {groundBelow}), drop_blocks.*.js (falling blocks with an on_land answer), world_reach.*.js (looking_at_block, findBlock{all}), summon_options.*.js (summoned attributes, scales, a display summon, an explosion at: "summoned"), bolt_options.*.js (a bolt's pierce{unless} and return), pattern_shapes.*.js (lanes by hand, a spiral), vfx_duration.minimal.js, loadout.minimal.js, loadout.full.js (a belt: the loadout part, loadoutCycle, loadoutUse), targeted_dash.*.js (a charge at a marked body, spin), lunge_and_swim.*.js (lunge, swim_boost), teleport_placements.*.js (impact, behind_target, nudge, clear_spot, block_top), tunnel.*.js (walking through blocks over a floor), windup_stages.*.js (a fast flight's wind-up stages), body_verbs.*.js (push{on_collide}, look_at{spot}, extinguish, set_active{clear_capture}), burn_cap.*.js (ignite{maxSeconds} cutting burns short), charged_breath.js (parts composing: a heat-gauge breath with charges on top), damage_taken_when.*.js (a phase's damageTaken with when), enchant_bonus_attack.*.js (enchantBonus on the held weapon while attacking), game_inputs.*.js (number inputs only the game knows: attack, level, look_pitch...), reaching_box.*.js (targets with box: { across, below, above }), self_damage.*.js (damage({ who: "self" })), worked_out_sizes.*.js (worked-out arc, radius, box and every seconds)data/thematic/abilities/<any folders>/<id>.json or <id>.js
guardsguards/<guard>.minimal.js, <guard>.full.js for attacker_held_trait, carries, enemies_within, facing_assist, from_spot, hand_stack, keeps, number, run_speed_at_least, running_kind, sees, switch_on, weak_to (each a small ability gated or aimed by that guard)data/<ns>/abilities/<any folders>/<id>.js
traitstraits/<trait>.minimal.js, <trait>.full.js for affinity (a weakness or resistance), attributes (attribute modifiers while the suit has the move), cooldown_while (a cooldown that counts down only while a guard holds), damage_taken (a standing damage multiplier), suit_removed (the event that takes a passive's gifts off with the suit)data/<ns>/abilities/<any folders>/<id>.js
itemsitems/<type>.minimal.json, <type>.full.json (weapon, melee, shield, bow, thrown_weapon, tether_launcher, lantern_ring, status_wearable, spyglass, fluid_container, wallet, spawn_egg, ingredient, food, currency, loot_box), bespoke.thor_hammer.json (an old type id, now an alias of a generic type), deflecting_bat.minimal.json (on_incoming_projectile with cancel_event), deployed_gadget.*.json (tuning_from, on_inventory_tick, notify), thrown_fan.*.json (throw_held count, spread and clips; item_clip{stop}), status_wearable_break.*.json (on_break)data/thematic/items/<id>.json
arrowsarrows/arrow.minimal.json, arrow.full.jsondata/<ns>/arrows/<id>.json
throwablesthrowables/throwable.minimal.json, throwable.full.json, gadget.minimal.json, thrown_body.minimal.json, thrown_body.full.json (chain, stick, orbit, item_source, pierce, spin and clips), thrown_weapon.minimal.json, thrown_weapon.full.json (a weapon that comes home: return, per-axis bounce, on_land, on_refused_hit, recall, catch), flight.full.json (every flight component and its look spelled out), hug_ground.minimal.json, hug_ground.full.json (a saw that rolls through the ground), thrown_item_strike.minimal.json, thrown_item_strike.full.json (a thrown weapon that strikes with the item it carries)data/thematic/throwables/<id>.json
gunsguns/gun.minimal.json, gun.full.json (the JSON form; for the .js form see the pack template's data/thematic/guns/)data/<ns>/guns/<id>.js or .json
criminalscriminals/criminal.minimal.json, criminal.full.js (a crew file: one id per role, over the heroes pack's thematic:criminal_<role> presets)data/<ns>/criminals/<id>.json or <crew>.js
suit animation controllersanim_controllers/suit_controllers.minimal.json, suit_controllers.full.jsdata/<ns>/anim_controllers/<id>.json or .js
gun effectsguns/gun_effect.minimal.json, gun_effect.full.jsondata/<ns>/gun_effects/<name>.js or .json
blocksblocks/block.minimal.json, block.full.json, stairs.minimal.json, door.full.json, furniture.minimal.json, furniture.full.json (a shape written once facing north, turned for each facing; seat to sit on it), behavior.minimal.json, behavior.full.json (a block with hooks and behaviour options), lift_column.minimal.json, lift_column.full.json, brushable.minimal.json, brushable.full.json, container.minimal.json, container.full.json, player_inventory.minimal.json, player_inventory.full.json, processor.minimal.json, processor.full.json (storage, a player-inventory bench and a fuelled or plain machine), geo.minimal.json, geo.full.json, visual.minimal.json, visual.full.json (a block drawn with its GeckoLib model, and block-entity visuals: item display, light beam, text readout), repairable_machine.full.json (a behaviour block that wears out and is repaired stage by stage), use_transform.minimal.json (on_use's transform: the block turns into another and drops an item)data/<ns>/blocks/<id>.json or .js
entitiesentities/seat.minimal.json (the thematic:seat body), zone.minimal.json, zone.full.json (a lingering area, pulse, wall cell or decal), thrown.minimal.json, thrown.full.js (an id bound to its throwable), tether.minimal.json, tether.full.json (the thematic:tether body: a grapple or lasso line held between its owner and what it caught), vehicle.minimal.json, vehicle.full.json (the thematic:vehicle body: a car, plane or tank with controls), owner_copy.minimal.json, owner_copy.full.json (the thematic:owner_copy body: an after-image; a live decoy double), mob.minimal.json, mob.full.json (the thematic:mob body: a humanoid with behaviour ids, a suit, phases, a boss bar, a merchant; looks, clips, damage_taken, stances, sounds), owned_summon.minimal.json, owned_summon.full.json (the thematic:owned_summon body: a drone; a strike fighter with missiles), arc.minimal.json, arc.full.json (a harmless crackle of lightning along the ground), bolt.minimal.json, bolt.full.json (an entity type of its own for thematic:bolts), mushroom_cloud.minimal.json, mushroom_cloud.full.json (a great blast's rising cloud), perch.minimal.json, perch.full.json (a shoulder crossbow that shoots its owner's quarry), strike.minimal.json, strike.full.json (a lightning strike that flashes and hits)data/<ns>/entities/<id>.json
machine recipesrecipes/machine_recipe.minimal.json, machine_recipe.full.json (alloy smelter, centrifuge, plate press)data/<ns>/recipes/<id>.json
pocket dimensionspocket_dimensions/pocket_dimension.minimal.json, pocket_dimension.full.jsondata/<ns>/pocket_dimensions/<id>.json
corpscorps/corps.minimal.json, corps.full.json (the Green Lantern Corps as the heroes pack ships it)data/<ns>/corps/<id>.json
status effectsstatus_effects/status_effect.minimal.json, status_effect.full.json, wound.minimal.json, wound.full.json (behaviour fields: tick damage, a particle ping, a melee lock, heal on hit, a tint, an on_expire hook), flash.minimal.json (a screen overlay)data/<ns>/status_effects/<id>.json
damage elementsdamage_elements/element.minimal.json, element.full.jsondata/<ns>/damage_elements/<id>.json
vfx presetsvfx/preset.minimal.json, preset.full.json, particle_system.full.jsondata/<ns>/vfx/<id>.json
squadsentities/squad.minimal.json, squad.full.json (a summoned flier in its owner's formation: patterns, engage, kit, expend)data/<ns>/entities/<id>.json
formationsformations/swarm_arc.js (a plan(ctx) that says where each squad unit stands)data/<ns>/formations/<id>.js
consolesabilities/console.minimal.js (an order button, a pick-a-target strike with quick cast, unit cards with rebuild bars)data/<ns>/abilities/<any folders>/<id>.js
unit programsprograms/program.minimal.js (a guard program with an // @input)data/<ns>/programs/<name>.js; guide ../programs.md
fear and groundingstatus_effects/fog_grounding.full.json (fog, lift_cut, resisted_by, level_decay), dread_weight.minimal.json, dread_ward.minimal.json (markers), thorns_sleeper.full.json (on_hurt, pose), with the passives abilities/dread_aura.full.js (presence aura) and dread_ward.full.js (resistance)data/<ns>/status_effects/<id>.json, data/<ns>/abilities/<id>.js
owner copiesentities/owner_copy.minimal.json, owner_copy.full.json (a live decoy), owner_copy.after_image.full.json, owner_copy.decoy.full.json (an ai decoy that fights)data/<ns>/entities/<id>.json
flight profilesflight_profiles/jetpack_heavy.full.json (a heavy jetpack flyer: turnRate, stepped lean, arm poses, speedLineRate)data/<ns>/flight_profiles/<id>.json

What is new in 1.7.0, with a pointer to the example for each feature, is in ../addon-format.md.

Art goes next to the data under the same id: a suit's assets/thematic/geo/armor/<id>.geo.json (optional), assets/thematic/textures/armor/<id>.png and assets/thematic/models/item/<id>.json ({"parent": "thematic:item/thematic_armor"}), plus names in assets/thematic/lang/en_us.json.

The ids in these examples (night_warden, ruby_gaze, my_heroes ...) are placeholders: rename them. Ability ids a suit example names (punch, heat_vision ...) are Thematic's own. ./gradlew validateContent checks every file here in the source repo.