Skip to content
Back to skills

Se Character Trace

ASecurity

Trace a character through a story — their scenes, arcs, relationships, and where they appear. Use when the user asks "tell me about X", "what does character Y do", "show me Jonathan's arc", "where does Mina appear".

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentsgobash

Works with

  • cli

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add Ugbot/ai-grind --skill se-character-trace --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Se Character Trace?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Se Character Trace
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ugbot-se-character-trace/badge)](https://www.skillsdirectory.com/skills/ugbot-se-character-trace)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: se-character-trace
description: Trace a character through a story — their scenes, arcs, relationships, and where they appear. Use when the user asks "tell me about X", "what does character Y do", "show me Jonathan's arc", "where does Mina appear".
user_invocable: true
---

# Trace a character

Build a short biography + map of where the character shows up.

## Input

A character name or id. Optionally scoped to a story; otherwise ask
the user to pick when the name is ambiguous.

## Steps

1. **Resolve the character id** if the user gave a name:
   ```bash
   ./story-cli search --json --limit 20 "<name>" \
     | jq '.results[] | select(.type=="character")'
   ```
   If multiple hits, show them with the parent story title and ask
   which one.

2. **Profile**:
   ```bash
   ./story-cli character get <id> --json | jq .
   ```
   Surface: `name`, `narrativeRole`, `physicalDescription`, `personality`,
   `backstory`, `motivations`, `strengths`, `weaknesses`,
   `isMainCharacter`.

3. **Arcs** for this character (list story arcs, filter by characterId):
   ```bash
   ./story-cli arc list --story <storyId> --json \
     | jq --arg cid "<id>" '.[] | select(.character.id == $cid or .character.characterId == $cid)'
   ```
   If empty, say "no recorded arcs".

4. **Scenes** where the character appears. Today the cleanest path is
   to list scenes and filter by the present-characters list:
   ```bash
   ./story-cli scene list --story <storyId> --json \
     | jq --arg cid "<id>" '
         .[] | select(
           any(.presentCharacters[]?; .id == $cid or .characterId == $cid)
           or (.viewpointCharacter.id == $cid)
         ) | {order:.globalOrder, title, wordCount, viewpoint: (.viewpointCharacter.id == $cid)}
       '
   ```

5. **Relationships** (if your story has any recorded):
   ```bash
   ./story-cli --json story structure <storyId> \
     | jq '.relationships[]? | select(.sourceCharacterId == "<id>" or .targetCharacterId == "<id>")'
   ```

## Output

```
<Name>  (<narrativeRole>)   — <Story>
  <physicalDescription>
  Personality: <personality>
  Backstory:   <backstory>
  Motivations: <motivations>

## Arcs (<n>)
  <arcType>  <title>  — <status>, <completion>%
    start → turning point → resolution

## Appearances (<n> scenes)
  #<order>  <scene title>   (VP, <wordCount>w)
  ...

## Relationships (<n>)
  <relationshipType>  <other character>  — <note>
```

## Related skills

- `se-check-plot` — if the character is a plot protagonist
- `se-play-story` — to read the scenes they appear in in order
- `se-explore-story` — whole-story dashboard

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…