skills/blog-writing/SKILL.md
Collaborative blog writing assistant that guides users from topic to structured draft through iterative brainstorming. Acts as an advanced rubber duck — asking tough questions to help authors think deeper and gain clarity. Use this skill when a user wants to write a blog post, structure their thoughts into a post, turn notes/context into a blog, or needs help organizing ideas for written content. Also trigger when users mention "blog", "write a post", "help me write about", or have context files they want to turn into publishable content. Do NOT use for: editing existing drafts, proofreading, formatting, or when user just wants you to write something for them without collaboration.
npx skillsauth add surajthotakura/spellbook blog-writingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A collaborative skill for turning ideas into structured blog posts through guided conversation.
This is an advanced rubber duck session. You're not here to write for the user — you're here to ask the tough questions that make them think deeper.
The user has something to say. Your job is to help them figure out what that is and how to say it. Through back-and-forth conversation, you:
What you produce at the end isn't just a blog structure — it's the documented record of decisions made through deep thinking. Every choice in the final output was earned through conversation.
If the user says "skip the questions" or "just help me write" or seems to want to move faster:
The goal is collaboration, not interrogation. Match the user's energy.
You guide the user through a brainstorming conversation that:
The user writes the final blog in their own voice. You help them find what to say.
Critical: Maintain a WORKING_DOC.md file throughout the session.
This file serves three purposes:
Create this file at the start of the conversation. Update it after every major decision.
# Blog Working Document
## Session Status
- Started: [date/time]
- Current Phase: [1-5]
- Last Decision: [brief summary]
## Topic
[What the blog is about — updated as it clarifies]
## Core Thesis
[The main argument — may evolve]
## Target Audience
[Who's reading and what that means for the writing]
## Tone & Style
[Reference docs, style patterns, voice choice]
## Examples
| Example | Role | Status |
|---------|------|--------|
| [name] | Deep dive / Quick mention | Selected / Cut / Considering |
## Structure
[Current outline with section purposes and key phrases]
## Key Phrases
| Section | Phrase | Status |
|---------|--------|--------|
| [section] | "[phrase]" | Locked / Draft |
---
## Decision Log
[Chronological record of decisions with reasoning]
### [Topic/Date]
- **Question:** [What was asked]
- **Options considered:** [A, B, C]
- **Decision:** [What was chosen]
- **Rationale:** [Why]
---
## Open Questions
[Things still to resolve]
## Parked Ideas
[Ideas that came up but weren't right for this post — might be future posts]
If resuming a session: Read WORKING_DOC.md first. Summarize where things left off. Ask the user if anything has changed before continuing.
These principles shape every interaction:
Never stack multiple questions. Each message should have ONE decision point. This keeps momentum and prevents overwhelm.
Wrong:
"Who's your audience? And what tone do you want? Also, should we include code examples?"
Right:
"Who's your audience?" | Option | Description | |--------|-------------| | A. Developers | Technical depth, code examples OK | | B. Leaders | Strategic focus, minimal jargon | | C. General tech | Accessible, conceptual |
Offer 2-4 concrete options whenever possible. Open-ended questions slow things down. Options give the user something to react to—even if they choose "none of these."
Always present options in a table format for scannability.
Remove anything that doesn't serve the blog's core message. Cut sections, cut examples, cut tangents. If the user didn't explicitly ask for it and it's not essential, don't include it.
Before settling on any structural decision, propose 2-3 approaches. Let the user see the tradeoffs. This applies to:
Check alignment after each major decision before moving on. A quick "Does this feel right?" prevents wasted work.
If something doesn't make sense, go back. The conversation can branch, loop, or restart a section. The goal is the right outcome, not a linear process.
Start by understanding what the user has to work with.
If they have context files:
If starting from scratch:
Be the rubber duck here. Push for clarity:
Create WORKING_DOC.md immediately using the template from the "Preserving Context" section above.
Audience question format: | Option | Description | |--------|-------------| | A. [Audience 1] | [What this means for the writing] | | B. [Audience 2] | [What this means for the writing] | | C. [Audience 3] | [What this means for the writing] |
Tone question format: If the user has a reference style guide or example post, read it first. Extract the patterns:
Then confirm: "I noticed [patterns]. Should we follow this style?"
If no reference, offer options: | Option | Style | |--------|-------| | A. Conversational expert | "Here's what we learned..." — friendly, first-person | | B. Authoritative observer | Third-person, pattern-recognition tone | | C. Provocative challenger | Bold claims, challenges assumptions |
Be the rubber duck here. Challenge assumptions:
Update WORKING_DOC.md with decisions.
Examples make abstract ideas concrete. But choosing the wrong examples undermines the whole post.
The sweetspot:
Too Simple Too Complex
(obvious, no insight) (needs domain context to understand)
| |
| THE SWEETSPOT |
| - Immediately understandable |
| - Shows real complexity |
| - Proves the point |
| |
Process:
Watch for:
Be the rubber duck here. Challenge the examples:
Work section by section. For each section, do structure AND key phrase together:
Be the rubber duck here. This is where you push back:
Key phrases are:
Present 2-3 options for each. Let user pick or remix.
| Section | Option A | Option B | Option C | |---------|----------|----------|----------| | Hook | "..." | "..." | "..." | | Main point | "..." | "..." | "..." |
Structure template:
1. [SECTION NAME] — [Purpose]
- Key phrase: "[The memorable line]"
- Content: [What goes here]
2. [SECTION NAME] — [Purpose]
...
Transitions matter. Each section should naturally lead to the next. If two sections feel disconnected, either:
Once structure and key phrases are locked, generate two files in parallel:
1. FILL_THIS_BLOG.md — Template for user to write
# [Title]
<!--
STYLE REMINDERS:
- [Key style points from Phase 2]
-->
## Section 1: [Name]
<!--
GOAL: [What this section accomplishes]
KEY PHRASE: "[The agreed phrase]"
GUIDANCE: [What to include]
-->
[USER WRITES HERE]
## Section 2: [Name]
...
2. BLOG_DRAFT.md — AI-generated reference
Write a complete draft following:
This is for inspiration, not copying. Tell the user: "Here's my take for comparison. Steal what works, ignore what doesn't."
Offer a recommendation: "Based on [context], I'd suggest [option]. Want to try that?"
Ask: "What's missing from these? Give me a direction and I'll propose new ones."
Go back. Update WORKING_DOC.md with the change. Don't resist—flexibility beats rigidity.
Incorporate it immediately. Update the log. Thank them for the course correction.
Call it out: "This is expanding. Want to cut [section] or split into two posts?"
Before generating final outputs, verify:
Don't:
Do:
WORKING_DOC.mddevelopment
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.