Compile chronological timeline summaries for an entity, location, faction, or the entire world. Shows cause-and-effect chains and flags gaps.
Compile and present chronological timelines with cause-and-effect analysis and gap detection.
WB="_meta/.wb-venv/Scripts/python .claude/skills/world-builder/_lib/wb.py"
On non-Windows systems, use _meta/.wb-venv/bin/python instead.
Detect the vault root (the directory containing _meta/).
Parse $ARGUMENTS or user request to determine the timeline scope:
| Scope | Example requests |
|---|---|
| Entity | "timeline of Kael", "what happened to Kael" |
| Location | "history of Valdris", "timeline of the Northern Wastes" |
| Faction |
| "Iron Covenant timeline", "history of the Guild" |
| Era | "what happened during the First Age", "timeline of SA:200-SA:400" |
| World | "full world timeline", "everything in chronological order" |
For entity/faction scope:
$WB --vault <vault_root> --pretty query --name "<entity>"
$WB --vault <vault_root> --pretty query --related-to "<entity>" --hops 1
$WB --vault <vault_root> --pretty query --type event
Read the entity's full Markdown file to get its timeline array and relationships. Also read files for directly related entities to find their timeline entries that reference this entity.
For location scope:
$WB --vault <vault_root> --pretty spatial "<place>"
$WB --vault <vault_root> --pretty query --within "<place>"
$WB --vault <vault_root> --pretty query --type event
Read the place file and all contained entities. Gather events whose location matches.
For era scope:
$WB --vault <vault_root> --pretty calendar
$WB --vault <vault_root> --pretty query --type event
$WB --vault <vault_root> --pretty query --type person
$WB --vault <vault_root> --pretty query --type faction
Read _meta/calendar.md for era boundaries. Filter all entities and events to those active within the era's period range.
For world scope:
$WB --vault <vault_root> --pretty query --type event
$WB --vault <vault_root> --pretty calendar
Read all event files. Also scan person, faction, and place files for their timeline arrays.
For each source, extract timeline entries in a uniform format:
{
period: "SA:200", # normalized to absolute or era-qualified
event: "description",
entity: "[[Entity Name]]", # which entity this entry belongs to
source: "entity-timeline" | "event-entity" | "relationship",
related: ["[[Entity A]]", "[[Entity B]]"] # other entities involved
}
Sources of timeline data:
timeline arrays in entity frontmatterdate field + description)period fields (when relationships began/ended)born / died / founded / dissolved fieldsSort all entries by period. Use the calendar's era definitions to resolve era-qualified periods into a sortable order.
For range periods (e.g., "200-500"), use the start of the range for sorting.
Group entries by era if the world has defined eras.
For consecutive or overlapping events, identify causal connections:
causes field?consequences predict event B?Draw connections as arrows: Event A -> caused -> Event B
Mark connections by confidence:
causes/consequences fieldsIdentify:
Format the timeline in a clear, readable structure:
## Era Name (Start - End)
### Period: SA:200
- **Event Name** — Description
- Involved: [[Person A]], [[Faction B]]
- Consequence: -> [[Event C]] (SA:210)
### Period: SA:210
- **Event C** — Description
- Caused by: <- [[Event Name]] (SA:200)
- Involved: [[Person A]], [[Person D]]
---
[GAP: SA:210 - SA:350 — no recorded events for [[Person A]]]
---
### Period: SA:350
...
For entity-scoped timelines, show the entity's state changes alongside world events they participated in.
After the timeline, provide:
/wb-create or write era narratives via /wb-write eraquery --type event, resolve --at): Primary for temporal queries — event type + period filtering.query --related-to): Trace cause-effect chains between events.query --semantic): Find thematically related events that might not be directly linked.[[wikilinks]] for entity references in the output."500" (point), "200-500" (range), "501-" (ongoing), "SA:200" (era-qualified).causes/consequences fields) separately from implied or speculative ones.