character-management
npx machina-cli add skill danjdewhurst/story-skills/character-management --openclawCharacter 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.mdfor genre, themes, and tone context - Read
characters/_index.mdfor 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 - Update
characters/_index.mdregistry table - If relationships reference existing characters, update those character files too
Updating a Character
- Read the existing character file
- Read
characters/_index.mdfor context on other characters - Make the requested changes
- If relationships changed, update the other character's file (bidirectional)
- Update
characters/_index.mdif role or status changed
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 - When a character appears in a plot arc, ensure they're listed in the arc's
charactersfrontmatter - Character tags should be consistent across the project (e.g., if
magic-useris used, always use that exact tag)
Reference Files
references/character-template.md- Full blank template for character profilesreferences/relationship-types.md- Complete relationship type reference with inverse pairs
Source
git clone https://github.com/danjdewhurst/story-skills/blob/main/skills/character-management/SKILL.mdView on GitHub Overview
Character Management lets you create and maintain rich character profiles for a story project. Each character is stored as a Markdown file with YAML frontmatter in the characters/ directory and is cross-referenced with other elements via kebab-case identifiers. It also supports building family trees, tracking relationships, timelines, and arcs to keep your world coherent.
How This Skill Works
First, ensure a story project exists by checking for story.md at the root. Create or update a character using the template at references/character-template.md and save it as characters/{name-kebab}.md, then register it in characters/_index.md. Relationships and cross-references are maintained by adding frontmatter entries and updating the Relationship Map in characters/_index.md, with inverse relationships updated on the other character's file.
When to Use It
- When asked to create or update a character
- When building a family tree
- When defining or updating character relationships
- When plotting a character timeline or arc
- When cross-referencing with worldbuilding elements such as locations or plots
Quick Start
- Step 1: Ensure the story exists by locating story.md at the project root
- Step 2: Create or update a character using the template and save to characters/{name-kebab}.md
- Step 3: Update characters/_index.md and any related files for relationships and timelines
Best Practices
- Verify a story project exists (look for story.md) before creating characters
- Use kebab-case for filenames and references
- Always use the template in references/character-template.md for new profiles
- Update characters/_index.md after any change and keep the Relationship Map in sync
- Keep frontmatter consistent and bidirectional when adding relationships
Example Use Cases
- Create a protagonist named Aria with backstory and arc stored as characters/aria.md
- Add a mentor character and link their relationship to Aria in both character files
- Build a family tree for the Rivers family under Family Trees in characters/_index.md
- Update Aria's timeline with turning points and key life events
- Cross-reference Aria in a location's notable-characters and mirror the link in Aria's file