From retell
This skill should be used when writing a blog post from conversation data, identifying story arcs in human-AI collaboration, structuring narrative beats, choosing story angles, handling user quotes, or applying editorial principles to conversation-derived content. Covers first-person voice constraints, five-act structure mapping, beat-to-treatment classification, and blog-worthiness heuristics specific to the retell pipeline.
npx claudepluginhub oborchers/fractional-cto --plugin retellThis skill uses the workspace's default tool permissions.
Guide the retell pipeline's LLM stages through editorial decisions: which moments matter, what angle to take, how to structure beats, and how to write in authentic first-person voice. This skill provides the narrative principles and practical heuristics for the Triage, Outline, Draft, and Polish stages.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Performs token-optimized structural code search using tree-sitter AST parsing to discover symbols, outline files, and unfold code without reading full files.
Guide the retell pipeline's LLM stages through editorial decisions: which moments matter, what angle to take, how to structure beats, and how to write in authentic first-person voice. This skill provides the narrative principles and practical heuristics for the Triage, Outline, Draft, and Polish stages.
All blog posts use first-person voice from the author's perspective. This is not configurable.
Never use em dashes, en dashes, or hyphens as punctuation in the final blog post. They are a dead giveaway of AI-generated text. Restructure sentences instead: use commas, semicolons, colons, parentheses, or split into separate sentences. Hyphens in compound words (e.g., "real-time", "well-known") are fine.
The blog post can be written in English or German, configured at the triage gate. The language setting affects all text output: section headings, prose, quotes, and revisions.
Language-independent rules:
Quote translation: When the output language differs from the conversation language, translate all quotes into the output language so the entire post reads consistently in one language. Preserve the speaker's tone and emotional register in translation.
German-specific guidance:
Supported languages: English (default), German. This list is intentionally minimal. Quality multilingual output requires language-specific editorial rules, and adding a language without those rules would degrade output quality.
Every conversation contains beats — moments where something shifts. Classify each event:
| Beat type | Detection signal |
|---|---|
| Opening / Inciting event | First substantive user message (skip interrupted ones) |
| Plan / Strategy | planContent field, or assistant messages with structured plans |
| Action / Exploration | Clusters of tool_use calls (research, code writing, browsing) |
| Pivot / Rejection | User pushback, direction changes ("feels wrong", "let's try...") |
| Discovery / Breakthrough | Excitement markers, resolution of prior tension |
| Convergence | Options narrowing, decisions locking in |
| Resolution | Final deliverable, user satisfaction, or deliberate stopping point |
Long conversations naturally fall into acts:
ACT 1 Setup: What's the goal? What's the plan?
ACT 2 Exploration: Research, first attempts, parallel work
ACT 3 Deepening: Iteration, refinement, pointed questions
ACT 4 Convergence: Options narrow, decisions lock in
ACT 5 Resolution: Final output (may be open-ended)
Session boundaries and /compact markers are natural act breaks. For technical details on detecting these boundaries, see the conversation-format skill.
The same conversation can yield multiple blog posts. Each angle pulls a different thread:
| Angle type | Focus | Best when |
|---|---|---|
| Process | The journey from start to finish | Clear arc with setup → conflict → resolution |
| Decision | A specific pivotal choice | Strong rejection/pivot moment with emotional texture |
| Methodology | A technique or approach used | Reusable method that others could adopt |
| Capability | What the AI could do | Surprising or non-obvious AI behavior |
| Tool-building | Making tools to solve problems | Meta-narrative: built the tool, then used it |
A recommendation should argue for an angle with reasoning: why the arc works narratively, who would read it, and what makes it non-obvious.
The conversation-format skill owns the technical extraction rules (which JSONL entry types to parse, which content blocks to extract, which user messages to filter). This section covers the editorial layer: how to prioritize extracted signal for narrative purposes.
| Source | Why it matters for the story |
|---|---|
User text | Drives the story — intent, pivots, emotions |
Assistant text | The action, decisions, deliverables |
| Thinking blocks | "Behind the scenes" depth — reveals reasoning, internal deliberation |
| Continuation summaries | Ready-made chapter bridges between sessions |
| Source | When to include |
|---|---|
| Tool names | When the action matters ("launched 4 parallel agents") |
| Turn duration | To convey pacing ("after 3 minutes of research...") |
| Subagent final outputs | When showing depth of investigation |
Tool result contents, progress entries, empty messages (permission grants), system-reminder tags, and CLI command output. These are already filtered by the parser — see the conversation-format skill for the complete filter chain.
Real CLI user messages are informal — typos, fragments, shorthand. Direct quotes should feel authentic but not sloppy.
Rules:
[cleaned] in the outline so the author can verifyExample:
"Why did we come up with mono. If feels completely wrong to me." + "Even lifeless""It feels completely wrong to me. Even lifeless."The JSONL contains what happened but not why it matters. Author context fills that gap and can be injected at any interactive gate:
| Type | Effect on the story |
|---|---|
| Backstory | Adds depth (a tool was crafted, not just used) |
| Intent / motivation | Gives emotional stakes the conversation never stated |
| Audience framing | Shapes tone, jargon level, assumptions |
| Corrections | Prevents narrative built on a misread |
| Scope directives | Editorial cuts before tokens are spent |
| Language setting | Determines output language; interacts with style reference cross-lingually |
| Reference documents | Provides depth the conversation can't: research data, design rationale, technical specs |
Author context is tiny (~100-500 tokens) and travels forward through all subsequent stages.
Reference documents are markdown files the author provides as supplementary context. They differ from author context (free-text) in that they are structured, potentially long, and read from the filesystem.
Pipeline handling:
Editorial principles:
Not every conversation makes a good story. Quick assessment before spending tokens:
Likely blog-worthy:
Probably not a story:
These are heuristics, not rules. A 10-message conversation with a dramatic pivot can be a great short-form post.
When building an outline, classify each beat's treatment:
| Treatment | Description | When to use |
|---|---|---|
quote | Use exact words (cleaned) | Emotional moments, pivotal statements |
summarize | Paraphrase in narrative voice | Technical details, long exchanges |
montage | Compress a sequence into flowing prose | Clusters of similar actions |
skip | Omit entirely | Tangents, repetition, dead ends |