Skip to content
Back to skills

Se Play Story

ASecurity

Read a story's scenes in order — narrative, dialogue, and action text. Use when the user asks "read me this story", "play through X", "walk me through the scenes", or wants to consume the prose end-to-end.

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

Works with

  • cli

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add Ugbot/ai-grind --skill se-play-story --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Se Play Story?

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

Security grade badge for Se Play Story
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ugbot-se-play-story/badge)](https://www.skillsdirectory.com/skills/ugbot-se-play-story)

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-play-story
description: Read a story's scenes in order — narrative, dialogue, and action text. Use when the user asks "read me this story", "play through X", "walk me through the scenes", or wants to consume the prose end-to-end.
user_invocable: true
---

# Play a story scene by scene

Present a story's prose as a paced read-through. This is the Claude-
Code analogue of opening the `/stories/{id}/vn` tab in the UI.

## Input

A story id or title. If only a title, resolve via
`./story-cli search --json "<title>" | jq '.results[] | select(.type=="story")'`.

## Steps

1. **List scenes in order**:
   ```bash
   ./story-cli scene list --story <id> --json \
     | jq -r 'sort_by(.globalOrder // 9999)[] | "\(.globalOrder // "?")  \(.sceneId)  \(.title)  (\(.wordCount)w)"'
   ```

2. **Ask the user** whether they want:
   - the whole story back to back
   - one scene at a time, waiting for "next" between each
   - just summaries (skip prose)

3. **For each scene**, fetch its detail and render:
   ```bash
   ./story-cli scene get <sceneId> --json \
     | jq -r '
         "\n=== #\(.globalOrder // "?")  \(.title) ===",
         (if .summary then "\n[\(.summary)]" else empty end),
         (if .narrativeText then "\n\(.narrativeText)" else empty end),
         (if .dialogueText then "\n\n— Dialogue —\n\(.dialogueText)" else empty end),
         (if .actionText then "\n\n— Action —\n\(.actionText)" else empty end)
       '
   ```

4. **If a scene has no prose**, say so (`"(no prose for this scene yet)"`)
   and offer to skip or generate. Don't pretend empty scenes have content.

5. **Between scenes** (if paced), show a compact transition:
   ```
   — end of scene 1 of 3 — say "next" to continue, or "skip to N"
   ```

## When the story has branches

`./story-cli story get <id> --json | jq .parentStoryId`. If non-null,
this is a branch; mention that and offer to show the parent story.
`./story-cli --json story structure <parentStoryId>` lists siblings.

## Related skills

- `se-explore-story` — skeleton view before diving in
- `se-character-trace` — follow one character across the scenes

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…