Builder's Manual · Chapter 5

How This Project Is Built

This project is a playable adaptation of THERE IS NO SPOON — a mission-based Matrix game where operatives jack in, run hard, and find a phone before the Agents find them. Everything in the filesystem exists to support that loop.

If you're here to build on it, this chapter is your map of what's actually in the box.

What you get out of the box

File TypeFolderWhat it's forDesignation
Character/Characters/Operatives, Agents, programs, and coppertopscharacter
Location/Locations/Constructs — any place you can jack intolocation
Equipment/Equipment/Gear, weapons, and code objects loaded by the Operator
GM Instructions/GM Instructions/Private rulings the GM agent loads at the tablegm_instructions
Game Start/Game Starts/Lobby setup: where you start and who you can playgame_start

Characters, Locations, and Equipment are searchable and are the three you will extend most often. GM Instructions are markdown and never shown to players. Game Starts have no schema — their play config is set with the game-start command, not by editing the file body.

Character — what the schema actually holds

Open /file-types/character/schema.json and you'll see this is still a generic starting schema. That's intentional — it gives you a clean base to either use as-is or reshape into a true TINS character.

Editable fields:

  • name, image, description — who they are in the Matrix. Use description for residual self-image, not biography.
  • background, personality, notes — freeform text. This is currently where Deal, Fate, and cribbed kung-fu moves live until you add dedicated fields.
  • level — number, minimum 1. In TINS terms this is not used; treat it as ops seniority or leave it at 1.
  • ancestry, characterClass — strings. Repurpose as Origin (Zion-born, Matrix-born, Program) and Role (Operator, Infiltrator, Face) or replace them entirely.
  • stats — object with six numbers: strength, dexterity, constitution, intelligence, wisdom, charisma. These are D&D carryovers, not the TINS Matrix stat. See Hacking the System before you build dozens of characters on top of them.
  • inventory — array of references to Equipment. Each entry is a slug like leather-armor. Used for loadouts the Operator can code in.

Computed fields (read-only):

  • carryingCapacitystrength * 15. Derived, never written directly.
  • totalInventoryWeightsum(inventory, load(weight)). Sums the weight of every linked Equipment file.

In the Matrix, no one cares how many pounds of leather armor you carry. These two fields are useful only if you run outside-the-Matrix or grounded missions where encumbrance matters. For pure Matrix play you can ignore them or replace them with chip counts.

Location — constructs, not geography

Locations are deliberately light:

  • name (required), type (e.g., "Nightclub", "Corporate Lobby", "Subway Station", "Construct"), atmosphere, description, notes, image

There is no built-in map, exit list, or threat level. Put those in notes for now using a consistent pattern so you can later promote them to real fields:

Exits: Payphone — lobby (hard line), rooftop — helicopter pad
Threat: 2 Advantage Dice (security detail)
Mirrors/Glass: Chrome elevators, mirrored ceiling

atmosphere is your Operator voice. Write it as what the Operator says over the phone: "Inviting at first glance, with one detail that tells players something is waiting beneath the surface." — that's the Example Location, and it's exactly the right tone.

Equipment — code with weight

  • name (required), category (Weapon, Armor, Gear, Consumable, Treasure), value (gp), weight (lbs), description, notes, image

weight feeds totalInventoryWeight on the character. value is meaningless inside the Matrix — no one buys guns, the Operator codes them. Treat category as loadout tag and value as rarity or Operator cost if you need it, or ignore it.

Use notes for mechanical tags you will later formalize: Advantage Dice: +1 when firing into a crowd, Concealment: trenchcoat, Ammo: 2 reloads.

The gap you should know about

The Player's Handbook describes the real TINS system: Matrix stat 0–6, Skills rated 3–6, Body chips, Matrix chips, Deals, and Fates. None of those have dedicated fields yet. The current schemas give you a place to write them (notes, background, personality) but not to query them.

That's by design for a starter project. Don't paper over it by cramming numbers into description paragraphs. Read the Hacking the System chapter before bulk-creating content — adding four proper fields now saves you from rewriting fifty files later.

Conventions to keep

  • Names are free names. Short, sharp, mythic-adjacent. Apostate, not Quentin. Keep the name field clean — no titles or stats in the name.
  • Images are residual self-image. Leather, sunglasses, phones, rain — not character sheets.
  • Notes is your staging area. If you find yourself writing the same structured line in notes ten times, that's your next schema field.
  • Don't duplicate derived values. If you add a matrix field, don't also add matrixModifier as editable — make it computed.
Manual updated Aug 24, 2026.