agentleFS
chellehonikerchellehoniker/claude-code-storytelleros/skills/worldbuilding/SKILL.md

worldbuilding

Skill1 starsChanged 13 days agoMITView on GitHub

Use when the user wants to ADD or EDIT ONE character, location, lore entry, or story-timeline event, without spinning up a full story-bible flow. Triggers on "add a character to [title]", "save this location to the bible", "create a new lore entry for [thing]", "update [character]'s backstory", "describe a place and save it". For merging or deduplicating, use the `character-merge` skill instead.

6 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 0 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If the entry has natural associations ("she's in chapter 3"), call stos_worldbuilding_link for each.

    line 38
  2. Very specific:

    If you need ONE record, use _get then _update:

    line 42
  3. Very specific:

    Looping _get to compare multiple records: Use the _get_many tools for 2 or more characters, locations or lore entries.

    line 56

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Worldbuilding — single entries

When to use this vs. other skills

SituationSkill
Add one or two entriesworldbuilding
Edit one field on an existing recordworldbuilding
Build out a whole title's biblestory-bible
Extract everything from a manuscriptstory-bible
Merge / dedupe / consolidate characterscharacter-merge (never per-record _get in a loop)
Merge / dedupe locations or loreworldbuilding-merge

Canonical field values — send these exactly

The Story Bible tables have strict CHECK constraints, and several columns (aliases, family_group, key_features, tags, themes, story_framework, …) are arrays. The MCP tools now enforce both in their input schema: a non-canonical enum value, or a bare string where an array is expected, is rejected immediately with a clear error listing the allowed shape — a wasted round-trip, not a silent failure. Map synonyms to the canonical value below before calling the tool; pass array columns as real JSON arrays (["a","b"]), never a comma-joined string. If a value can't be mapped, omit the field entirely — never invent, never stash the original somewhere else.

FieldCanonical valuesSynonym → canonical
characters.role_in_storyprotagonist, antagonist, supporting, minor, love-interest, otherhero / heroine / lead / main / MC → protagonist • villain / big-bad / rival → antagonist • deuteragonist / mentor / sidekick / ally / foil / friend / family → supporting • love interest / romantic interest / romance → love-interest • background / extra / NPC / cameo / walk-on → minor
characters.life_statusalive, dead, undead, missing, unknowndeceased / killed → dead • living / alive-and-well → alive • absent / lost / disappeared → missing • ghost / vampire / zombie → undead
characters.pov_statuspov-character, non-povany POV / occasional-POV / multi-POV / "yes" / "true" / "POV" → pov-character • everything else (or "no" / "false") → non-pov
events.actact-one, act-two, act-three, act-four1 / I / "Act 1" / "Act I" → act-one (2/II → act-two, 3/III → act-three, 4/IV → act-four). Map non-structural beats (climax / midpoint / dark night / inciting incident) to the closest structural act and put the original beat label in description.

Never send custom_fields on a Cowork worldbuilding create call. The StorytellerOS UI does not render those keys for Cowork-completed records — the data lands invisible. Stick to the named columns listed in each tool's writable-fields description.

Flow for one entry

  1. Resolve scope: pen name + (optionally) title or series.
  2. Draft the entry in the conversation — full fields, not a stub.
  3. Show it to the user for approval.
  4. Save: stos_characters_create, stos_locations_create, stos_events_create, or stos_lore_create.
  5. If the entry has natural associations ("she's in chapter 3"), call stos_worldbuilding_link for each.

Editing an existing entry

If you need ONE record, use _get then _update:

stos_characters_get({ id })
// review the current fields
stos_characters_update({ id, fields: { backstory: 'updated paragraph...' } })

If you need TWO OR MORE records, do NOT loop _get. Use stos_characters_get_many, stos_locations_get_many or stos_lore_get_many with { ids: [...] }: one round-trip instead of N. This matters because every MCP round-trip replays the full ~50KB tool schema; loading 10 characters via 10 separate _get calls vs. one bulk-get is the difference between 500KB and 50KB of overhead. The bulk-get tools cap at 100 ids per call. (Events don't have a bulk-get yet; for those, keep the loop small.)

Anti-patterns

  • Creating a duplicate. If the user says "add Sasha to Curses and Currents", check stos_characters_list first — Sasha may already exist under another title and just need a stos_worldbuilding_link. If the user already knows there are duplicates, route them to the character-merge skill — it has a server-side duplicate finder that's dramatically cheaper than reviewing pairs in conversation.
  • Saving a stub. A character record with only character_name is technically valid but useless. Draft the full record before saving.
  • Looping _get to compare multiple records. Use the _get_many tools for 2 or more characters, locations or lore entries. For dedup work, use character-merge or worldbuilding-merge.
  • Sending non-canonical enum values, or a string for an array column. The tool input schema rejects both with an explicit error — map enum synonyms first (see the table above), and pass array columns as JSON arrays.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.