Character Management
Overview
Create and manage rich character profiles for a story project. Each character is a markdown file with YAML frontmatter in the characters/ directory. Characters are cross-referenced with other story elements through kebab-case identifiers.
Prerequisites
A story project must already exist (created via the story-init skill). Verify by checking for story.md in the project root.
Creating a Character
- Read
story.md for genre, themes, and tone context
- Read
characters/_index.md for existing characters
- Ask for the character's name and role (protagonist, antagonist, supporting, minor)
- Build the profile through conversation, exploring:
- Appearance and distinguishing features
- Personality, traits, and quirks
- Backstory and formative events
- Motivations (external wants vs internal needs)
- Voice and speech patterns (ask for example dialogue)
- Character arc (starting state, turning points, ending state)
- Key life events for the timeline
- Write the character file using the template in
references/character-template.md
- Save to
characters/{name-kebab}.md, or use story add character "{Name}" --role "{role}" when the CLI is available
- Update
characters/_index.md registry table
- If relationships reference existing characters, update those character files too
- When CLI access is available, run the maintenance pass in the story root:
story reindex .
story links .
story validate .
Updating a Character
- Read the existing character file
- Read
characters/_index.md for context on other characters
- Make the requested changes
- If relationships changed, update the other character's file (bidirectional)
- Update
characters/_index.md if role or status changed
- When CLI access is available, run
story reindex ., story links ., and story validate .
Managing Relationships
Reference references/relationship-types.md for the full list of relationship types and inverse pairs.
When adding a relationship:
- Add the relationship entry to the character's frontmatter
- Add the inverse relationship to the other character's frontmatter
- Update the Relationship Map section in
characters/_index.md
Family Trees
Family trees are maintained in the characters/_index.md under the "Family Trees" section. Format:
## Family Trees
### {Family Name}
- **{Character Name}** ({status}) - [{name-kebab}.md]
- **{Child Name}** - [{name-kebab}.md]
- **{Child Name}** - [{name-kebab}.md]
Indent children under parents. Note marriages/partnerships inline.
Cross-Referencing
- When a character is referenced in worldbuilding (e.g., a location's
notable-characters), ensure the link exists both ways
- Character-location backlinks live in the character file's
locations frontmatter list
- Faction memberships live in
worldbuilding/factions/{faction-kebab}.md under members
- Artifact ownership can reference a character id in
worldbuilding/artifacts/{artifact-kebab}.md
- When a character appears in a plot arc, ensure they're listed in the arc's
characters frontmatter
- Character tags should be consistent across the project (e.g., if
magic-user is used, always use that exact tag)
CLI Maintenance
Use the Story CLI when it is available. If story is not installed but the story-maintenance skill is present, use node ../story-maintenance/scripts/story.js with the same arguments, resolving the path relative to this skill folder. If no CLI is available, perform the registry and backlink checks manually.
Reference Files
references/character-template.md - Full blank template for character profiles
references/relationship-types.md - Complete relationship type reference with inverse pairs
1---2name: character-management3description: This skill should be used when the user asks to "create a character", "update a character", "add a character", "build a family tree", "character relationships", "character timeline", "character arc", "character profile", or needs to manage characters in a story project.4---5
6# Character Management
7
8## Overview
9
10Create and manage rich character profiles for a story project. Each character is a markdown file with YAML frontmatter in the `characters/` directory. Characters are cross-referenced with other story elements through kebab-case identifiers.
11
12## Prerequisites
13
14A story project must already exist (created via the story-init skill). Verify by checking for `story.md` in the project root.
15
16## Creating a Character
17
181. Read `story.md` for genre, themes, and tone context
192. Read `characters/_index.md` for existing characters
203. Ask for the character's name and role (protagonist, antagonist, supporting, minor)
214. Build the profile through conversation, exploring:
22 - Appearance and distinguishing features
23 - Personality, traits, and quirks
24 - Backstory and formative events
25 - Motivations (external wants vs internal needs)
26 - Voice and speech patterns (ask for example dialogue)
27 - Character arc (starting state, turning points, ending state)
28 - Key life events for the timeline
295. Write the character file using the template in `references/character-template.md`
306. Save to `characters/{name-kebab}.md`, or use `story add character "{Name}" --role "{role}"` when the CLI is available
317. Update `characters/_index.md` registry table
328. If relationships reference existing characters, update those character files too
339. When CLI access is available, run the maintenance pass in the story root:
34
35```shell
36story reindex .
37story links .
38story validate .
39```
40
41## Updating a Character
42
431. Read the existing character file
442. Read `characters/_index.md` for context on other characters
453. Make the requested changes
464. If relationships changed, update the other character's file (bidirectional)
475. Update `characters/_index.md` if role or status changed
486. When CLI access is available, run `story reindex .`, `story links .`, and `story validate .`
49
50## Managing Relationships
51
52Reference `references/relationship-types.md` for the full list of relationship types and inverse pairs.
53
54When adding a relationship:
55- Add the relationship entry to the character's frontmatter
56- Add the inverse relationship to the other character's frontmatter
57- Update the Relationship Map section in `characters/_index.md`
58
59## Family Trees
60
61Family trees are maintained in the `characters/_index.md` under the "Family Trees" section. Format:
62
63```markdown
64## Family Trees
65
66### {Family Name}
67- **{Character Name}** ({status}) - [{name-kebab}.md]
68 - **{Child Name}** - [{name-kebab}.md]
69 - **{Child Name}** - [{name-kebab}.md]
70```
71
72Indent children under parents. Note marriages/partnerships inline.
73
74## Cross-Referencing
75
76- When a character is referenced in worldbuilding (e.g., a location's `notable-characters`), ensure the link exists both ways
77- Character-location backlinks live in the character file's `locations` frontmatter list
78- Faction memberships live in `worldbuilding/factions/{faction-kebab}.md` under `members`
79- Artifact ownership can reference a character id in `worldbuilding/artifacts/{artifact-kebab}.md`
80- When a character appears in a plot arc, ensure they're listed in the arc's `characters` frontmatter
81- Character tags should be consistent across the project (e.g., if `magic-user` is used, always use that exact tag)
82
83## CLI Maintenance
84
85Use the Story CLI when it is available. If `story` is not installed but the `story-maintenance` skill is present, use `node ../story-maintenance/scripts/story.js` with the same arguments, resolving the path relative to this skill folder. If no CLI is available, perform the registry and backlink checks manually.
86
87## Reference Files
88
89- **`references/character-template.md`** - Full blank template for character profiles
90- **`references/relationship-types.md`** - Complete relationship type reference with inverse pairs