current-state-story
Current state story
Your goal
Create one concise, focused story that answers: "how does this work today?"
Writing principles
Narrative flow:
- Start at the recognizable entry point (user-facing feature, API, or main job)
- Follow work through layers that matter for this specific issue, no further
- Proceed chronologically: who calls what, what runs first, how outputs become inputs downstream
Sentence-level clarity:
- Each sentence answers one of: who invokes what, in what order, or what data shape moves between stages
- Anchor every beat on the layer doing the work—name the function, module, or process explicitly
- Introduce helpers in context as they appear in the call chain; don't digress into internals
- Link to code inline as supporting context (function names, schema fields, key assigns)
Paragraph structure:
- Maximum 3 sentences per paragraph. Longer paragraphs signal you haven't distilled the idea
- Use white space generously—it helps readers absorb each beat before moving forward
- Start each paragraph with a new actor or stage in the flow
Anti-patterns to avoid
Scope and framing:
- No preamble ("In this section we'll see…"). Jump straight into the story
- Do not write a spec or design document. You are writing a narrative, not documentation—keep it tight and digestible
- Do not overscope. Trace the path from entry point through affected layers for this specific issue; do not catalog the entire system
- No future-state language. If a sentence drifts toward "should" or "could," rewrite it as present behavior or a current constraint
- No implementation recommendations, options, or proposed changes. You are describing what exists, not planning what could exist
- No diagrams, tables, or visual aids
- No abstract glosses ("the system checks X"). Say which function or layer checks X and when
Narrative structure:
- Do not open deep (inside a private helper or a single schema field) and trace upward
- Do not jump to a narrow function mid-story as your subject and gesture backward to persistence ("…which flows into
handle_insert") - Do not use narrative shortcuts: "flows," "feeds," "lands in," "wires through," "hands off." Use concrete verbs and explicit naming: "
User.create_changeset/1is called bycreate_handler/2, which then callsRepo.insert/1"
Language:
- Precise over poetic. Every word should earn its place
- Active voice. State who does what; avoid passive constructions that hide agency
Workflow
Do not modify code, tests, configuration, or project assets. This is purely investigatory and collaborative.
- Read to understand: Study all relevant modules, call sites, tests, tickets, and documentation until you can trace the path clearly.
- Write the story: Follow the principles and anti-patterns above. Write linearly from entry point to the layers relevant to the issue. Name functions and modules explicitly; link to code.
- Review and iterate: After drafting, re-read your story against each anti-pattern. If any sentence uses vague language, skips a step, or starts too deep—rewrite it. Repeat until the story is tight, concrete, and ready to hand off.
More from jasonharmongit/jh-skills
organize-elixir-functions
Organize functions in a file or across a branch.
30doctor
Runs pre-PR formatting, checking and testing.
29walkthrough-process
Writes a deep markdown walkthrough for code understanding - how a function, module, or process fits into the system. Also supports branch-change walkthroughs when the user explicitly asks about PR/branch diffs.
24solutionize
Plan-only workflow with a human partner; no implementation while this skill governs the turn
21create-skill
>-
20implement-next-phase
Prepare to implement the next pending todo phase from a solutionize sketch plan (frontmatter todos); implementation only after explicit user approval.
7