一键导入
story-event
How to write narrative content for SIGNAL — Maya's voice, event timing, story continuity
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
How to write narrative content for SIGNAL — Maya's voice, event timing, story continuity
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use this skill whenever introducing a new Go programming concept that needs to be explained visually to beginners. Triggers when the user asks to explain, illustrate, animate, or teach any Go concept — including but not limited to: variables, functions, packages, imports, structs, interfaces, goroutines, channels, error handling, maps, slices, pointers, closures, or methods. Also triggers when the user says things like "add a new scene", "introduce X concept", "animate how X works", or "show the next concept". Always use this skill before writing any animation code — it defines the entire design system, analogy model, and scene structure that all Go animations must follow.
How to write and extend beginner mode content — pre-level concept briefings for new players
How to add new game content (chapters, bosses, story) to SIGNAL
Audit engine output patterns for common Go pitfalls — ensures every step has targeted feedback for Printf/Println, whitespace, format mismatches, and other gotchas
How to write and tune AI system prompts for Maya's 3-tier LLM backend
How to write zen rules for new SIGNAL levels — idiomatic Go detection, jolts, suggestions, testing
| name | story-event |
| description | How to write narrative content for SIGNAL — Maya's voice, event timing, story continuity |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash |
Maya Chen is a CS grad student, held captive, communicating through a hacked terminal. Her voice is the game's identity. Get it wrong and the whole experience falls apart.
GOOD: "wait.\n\n...footsteps. right outside my door."
GOOD: "that worked. i can breathe again.\nthe output matches. we're through."
GOOD: "the guards changed shift 20 minutes ago.\nwe have a window. maybe."
BAD: "Great job! You completed the challenge successfully!"
BAD: "Try using a for loop with range to iterate over the slice."
BAD: "The correct answer is: fmt.Println(sum)"
Maya was gassed before being captured. Her CS knowledge is fragmented. When the player writes idiomatic Go, it "jolts" her memory — she suddenly becomes lucid and articulate about that specific Go concept, referencing her thesis, her professor, her encryption library.
This is the Go Zen system. After each successful submission, deterministic code analysis checks for idiomatic patterns. If the player followed good patterns, Maya delivers a "memory jolt" — a moment of clarity where she explains the principle. If they didn't, she hints at something trying to come back but not quite making it.
Over the course of the game, Maya recovers more of her CS knowledge. By Act III she's operating at full capacity — the zen jolts become more confident, more detailed, and start connecting her research to the escape plot.
Events are split into two scopes:
challenge.events) — fire once when the challenge loads. Use for scene-setting interrupts, power cuts, and ambient events that apply to the whole level.step.events) — fire when each step begins. Use for step-specific interrupts and rush triggers. Fresh timers start per step.Events fire at triggerAtSeconds after their scope starts. The timing creates the feel of the game.
rushMode.bonusTimeSeconds adds to the level timer when beaten.LEVEL START (level-wide events)
0s — Challenge loads, player reads step 1 brief
STEP 1: SCAFFOLD (step-scoped events)
12s — Interrupt: Maya hears something ("...footsteps. two people.")
15s — Step rush triggers: "SIGNAL DEGRADING" — 30s timer, +20s bonus on completion
45s+ — Player completes step 1, advances to step 2
STEP 2: TRANSMIT (step-scoped events)
0s — Step 2 brief shown, code carries forward
20s — Step rush triggers: "GUARD APPROACHING" — 45s timer
65s+ — Player completes step 2, challenge complete
When timer.gameOverOnExpiry is false, timer expiry triggers jeopardy effects instead of game over. Jeopardy effects are pure functions in src/lib/game/jeopardy.ts — they modify game state (lock chat, narrow editor, scramble code, drain energy, burn hints) without ending the game.
Twists are the story reward for completing a challenge. They play as a cinematic text sequence after the code is accepted.
twist: {
headline: "TWO WORDS", // Dramatic, uppercase, 1-3 words
lines: [
// 4-7 lines, each a short sentence
// Build from observation → realization → cliffhanger
],
}
Read docs/design.md for the full arc. Key beats:
Before writing any story content, read the specs for the chapters before and after yours. Twists must chain — chapter N's twist sets up chapter N+1's brief.