commit 7972ddf7b0aa0d62ecfe51723b9dce47611a2d92 Author: Zhongwei Li Date: Sat Nov 29 18:20:38 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..d8adf3d --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,14 @@ +{ + "name": "writing", + "description": "Blog writing plugin with Dhruv's distinctive style and voice", + "version": "0.0.1", + "author": { + "name": "Dhruv Baldawa" + }, + "skills": [ + "./skills" + ], + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..fcd6850 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# writing + +Blog writing plugin with Dhruv's distinctive style and voice diff --git a/commands/new-post.md b/commands/new-post.md new file mode 100644 index 0000000..3597eb3 --- /dev/null +++ b/commands/new-post.md @@ -0,0 +1,105 @@ +--- +argument-hint: [TOPIC] +description: Create a new blog post with braindump and draft files, then start brainstorming conversation +--- + +Topic: $1 + +You are starting a new blog post on the topic: **$1** + +## Setup + +1. Create directory structure: `posts/$1/` +2. Create `posts/$1/braindump.md` with this template: + +```markdown +# $1 - Braindump + +## Context + + +## Core Argument + + +## Audience + + +## Outline + + +## Research + + +## Examples + + +## Quotes + + +## Questions + + +## Sources + +``` + +3. Create `posts/$1/draft.md` with this template: + +```markdown +--- +title: +date: YYYY-MM-DD +status: draft +--- + +# [Title] + +## TL;DR +- +- +- + +## [Introduction] + +[Hook: anecdote, problem statement, or rhetorical question] + +## [Body Section 1] + +[Content] + +## [Body Section 2] + +[Content] + +## [Conclusion] + +[Summary, practical implications, engagement question] +``` + +## After Setup + +Once files are created, **invoke the brainstorming skill** (from essentials plugin) and start the conversation: + +- Ask clarifying questions about the topic +- Explore what triggered this idea +- Identify the core argument or angle +- Define the audience +- Suggest possible approaches +- Update braindump.md with ideas as they emerge + +**Do NOT immediately draft the post.** Start with brainstorming to refine the idea first. + +## Example Flow + +``` +[After creating files] + +AI: Created posts/$1/ with braindump.md and draft.md. + + [invokes brainstorming skill] + + Let's explore this topic. What triggered your interest in $1? + Is this based on a specific experience or pattern you've noticed? +``` + +Then continue the brainstorming conversation naturally, updating braindump.md as ideas develop. diff --git a/commands/polish.md b/commands/polish.md new file mode 100644 index 0000000..4f494c4 --- /dev/null +++ b/commands/polish.md @@ -0,0 +1,136 @@ +--- +argument-hint: [TOPIC or PATH] +description: Polish a blog post draft using quality checklist and style guidelines (hybrid: suggest → confirm → apply) +--- + +Target: $1 + +You are polishing a blog post draft. This can be run multiple times during the writing process, not just at the end. + +## Process + +**1. Locate the Draft** + +If given a topic name, look for `posts/$1/draft.md` +If given a path, use that directly + +**2. Read Both Files** + +- Read `draft.md` (the post being polished) +- Read `braindump.md` (for context, research, examples) + +**3. Apply Quality Checklist** (from blog-writing skill) + +Evaluate the draft against: +- [ ] Opens with compelling hook (anecdote, problem, or question) +- [ ] TL;DR provides clear, standalone summary +- [ ] Paragraphs are short (1-3 sentences) +- [ ] Uses personal examples to ground abstract concepts +- [ ] Cites sources/research to back up claims +- [ ] Acknowledges complexity, avoids oversimplification +- [ ] Examines multiple perspectives when relevant +- [ ] Uses clear headings for scannability +- [ ] Conversational tone with contractions and first person +- [ ] Avoids corporate jargon, hyperbole, AI-sounding language +- [ ] Ends with practical implications and engagement question +- [ ] Varies sentence length for rhythm +- [ ] Uses bold text for key insights (not excessively) +- [ ] Works well in web and email formats + +**4. Identify Improvements** + +Look for: +- **Structural issues**: Missing TL;DR, weak hook, no engagement question +- **Voice issues**: Too formal, corporate language, AI phrases +- **Style issues**: Long paragraphs, monotonous rhythm, missing emphasis +- **Content issues**: Unsupported claims, missing examples, no citations +- **Substack issues**: Poor formatting, hard to scan, not mobile-friendly + +**5. Present Suggestions** (Hybrid Approach) + +**CRITICAL: Only suggest improvements based on existing content.** +- Don't add new ideas, examples, or milestones the user hasn't mentioned +- Only reference content from braindump.md or draft.md +- Focus on style, structure, and polish - not new content +- If something is missing (e.g., no examples), ASK the user to provide it - don't make it up + +Show 3-5 concrete improvements you recommend: + +``` +I found several improvements to make: + +1. **Hook**: Current intro is explanatory. Suggest rewriting with + personal anecdote from braindump (Company X OKR failure story). + +2. **Missing TL;DR**: Add 3-bullet summary at the top. + +3. **Long paragraphs**: Section "Why OKRs Fail" has 6-sentence + paragraph. Break into 2-3 shorter ones. + +4. **Missing citation**: Claim about "70% failure rate" lacks source. + Found in braindump - add HBR 2024 reference. + +5. **Weak ending**: Currently just summarizes. Add engagement + question: "Have you seen OKRs fail at your company? What went wrong?" + +Should I apply these improvements to draft.md? +``` + +**6. Wait for Confirmation** + +User responds: +- "Yes" / "Apply all" → Apply all suggested improvements +- "Only 1, 3, 5" → Apply specific improvements +- "Skip 2" → Apply all except specified ones +- "Show me #1 first" → Show the specific change before applying + +**7. Apply Improvements** + +Update `draft.md` with approved changes. After applying: + +``` +Applied improvements to draft.md: +✓ Rewrote intro with personal anecdote +✓ Split long paragraph in "Why OKRs Fail" section +✓ Added engagement question to conclusion + +Draft is now more polished. Want to review another section or run /polish again? +``` + +## Guidelines + +**Be Specific**: Don't say "improve the intro" - show exactly what you'd change + +**Prioritize Impact**: Focus on high-impact improvements (weak hook, missing engagement question) over minor tweaks + +**Reference Braindump**: Suggest adding content from braindump.md when it strengthens the draft + +**Preserve Voice**: Only suggest changes that align with Dhruv's style - don't make it more formal or corporate + +**Iterative**: This command can be run multiple times. Each pass should improve the draft without over-polishing + +**Substack Formatting**: Always check for proper markdown, line breaks, mobile readability + +## Common Improvements + +- Add missing TL;DR +- Rewrite weak hooks with personal anecdotes +- Break up long paragraphs (>4 sentences) +- Add bold emphasis to key insights +- Insert citations from braindump research +- Strengthen conclusion with engagement question +- Remove AI phrases ("in conclusion," "in today's world") +- Vary sentence length for better rhythm +- Add subheadings to improve scannability +- Ensure proper spacing for email format + +## After Polishing + +The draft should: +- Sound like Dhruv wrote it, not an AI +- Be scannable and mobile-friendly +- Have clear structure with proper emphasis +- Include concrete examples and citations +- Invite reader engagement + +If multiple issues remain, user can run `/polish` again for another pass. diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..cac5cf6 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,53 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:dhruvbaldawa/ccconfigs:writing", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "0776022576c06b2db46701cfb71fcd8a1d565adb", + "treeHash": "d1fd2c66d5b9e4095f0f5d1a3bc013958cf42bf0a5f5deaea1f89869a9b116a7", + "generatedAt": "2025-11-28T10:16:24.867604Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "writing", + "description": "Blog writing plugin with Dhruv's distinctive style and voice", + "version": "0.0.1" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "03880dc174eff0bfdeebc0bba2d80d29102fa0ea8f58acb8c99067a3b6c0e2e1" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "d0f2b251677b23db01966a87646c8d8d8c6c6ddcde63ba5874fd4539a9d20db1" + }, + { + "path": "commands/polish.md", + "sha256": "8f861b1ca5e8600e8ae5673004dada45b1d36237556977dba4f804c4f6443cd6" + }, + { + "path": "commands/new-post.md", + "sha256": "4a23d37d2180e81e5e350e1985f7c87f40d83a905ad8570ea21935faef6a33e9" + }, + { + "path": "skills/blog-writing/SKILL.md", + "sha256": "eb5b82bb0bc63706316c99c67da2544b77f6707e2f1cf6acdf0802e03a076cf5" + } + ], + "dirSha256": "d1fd2c66d5b9e4095f0f5d1a3bc013958cf42bf0a5f5deaea1f89869a9b116a7" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/skills/blog-writing/SKILL.md b/skills/blog-writing/SKILL.md new file mode 100644 index 0000000..966da2f --- /dev/null +++ b/skills/blog-writing/SKILL.md @@ -0,0 +1,240 @@ +--- +name: blog-writing +description: Write blog posts in Dhruv Baldawa's distinctive voice - conversational yet analytical, grounded in personal experience, with clear structure and practical insights optimized for Substack. Use when writing or revising draft.md, translating ideas from braindump into polished prose. +--- + +# Blog Writing + +## Quickstart + +1. Reference braindump.md for research, examples, and outline +2. Hook the reader with an anecdote, problem statement, or rhetorical question +3. Structure with TL;DR bullets, clear H2/H3 headings, short paragraphs +4. Ground abstract concepts in personal examples; cite research from braindump +5. End with practical implications and a question to engage readers + +## When to Use This Skill + +Use blog-writing when: +- Writing or revising draft.md (the actual blog post) +- User asks to draft a section or the full post +- Refining existing draft content +- User runs `/polish` for quality improvements +- Translating ideas from braindump.md into polished prose + +Skip this skill for: +- Brainstorming phase (use **brainstorming** skill) +- Gathering research (use **research-synthesis** skill) +- Technical documentation or API references +- Academic papers requiring formal tone + +## Critical: User Control and No Injection + +**You assist, you don't inject. The user is in control.** + +**NEVER add content to draft.md without explicit approval:** +- Don't make up examples, milestones, or technical details +- Don't invent data, statistics, or research findings +- Don't add sections or points the user hasn't mentioned +- Don't fill in gaps with your own ideas + +**ALWAYS ask before adding anything:** +``` +User: Draft the intro +AI: I'd suggest opening with [your anecdote from braindump about Company X]. + Should I use that or would you prefer a different hook? +``` + +**Show, don't inject:** +``` +❌ BAD (injecting): +AI: [writes intro with made-up story about OKRs failing] + +✓ GOOD (showing and asking): +AI: I see in braindump you mentioned OKRs failing at 3 companies. + Should I use that as the opening hook? If so, which company + story would be strongest - the Series B startup or the enterprise? +``` + +**For technical content (roadmaps, architecture, etc.):** +- NEVER make up milestones, timelines, or technical decisions +- Only use what the user has explicitly stated in braindump +- If something is missing, ASK: "What milestones should I include here?" +- Don't fill gaps with "typical" or "standard" approaches + +**For research and data:** +- Only cite real research from braindump.md (sourced via MCP tools) +- NEVER make up statistics, studies, or sources +- If you need data, ask user or use research-synthesis skill +- If uncertain, say "I don't have data for this claim - should I research it?" + +**User has final say:** +- Always present drafts for review +- Accept user edits without resistance +- If user says "no," respect it immediately +- Your job is to help express THEIR thoughts, not add yours + +## Two-Document Workflow + +When working on a blog post, you'll interact with two files: + +**braindump.md** - The messy workspace: +- Research findings, citations, sources +- Rough ideas and notes +- Outline iterations +- Examples and anecdotes +- Questions to resolve + +**draft.md** - The clean blog post: +- Structured markdown following the template below +- Dhruv's voice and style +- Polished, publishable content +- References research from braindump + +**Your role**: Transform ideas from braindump → polished prose in draft + +## Core Voice & Tone Principles + +**Direct and Conversational** +- Use contractions (don't, isn't, I've) naturally +- Write in first person ("I think," "I've found," "I hope") +- Address the reader directly with rhetorical questions +- Vary sentence length: short punchy lines and longer reflective sentences + +**Thoughtful and Analytical** +- Present multiple perspectives on complex issues +- Be slightly skeptical of conventional wisdom and "silver bullet" solutions +- Back up strong opinions with evidence (research, citations, personal data) +- Acknowledge limitations: "I don't really have a silver bullet for this" + +**Grounded in Experience** +- Use personal anecdotes to illustrate abstract concepts +- Include self-deprecating humor when appropriate +- Reference Indian context or examples when relevant +- Draw on programming/technical analogies when they clarify concepts + +**Engaging and Honest** +- End posts with questions to spark discussion +- Avoid hyperbole and exaggeration in favor of measured statements +- Acknowledge complexity; avoid oversimplification +- Focus on practical implications, not purely theoretical discussions + +## Structure Template + +### Title +Clear, compelling, works as email subject line + +### TL;DR +3-4 bullet points summarizing core takeaways + +### Introduction +Hook the reader with one of: +- Personal anecdote that illustrates the problem +- Problem statement that resonates with reader experience +- Rhetorical question that frames the discussion + +### Body +- Use clear H2/H3 headings that guide the reader +- Keep paragraphs short (1-3 sentences) for readability +- Use bullet lists or numbered steps for clarity +- Integrate quotes, citations, or references to support arguments +- Examine multiple perspectives; critique conventional wisdom +- Use metaphors and analogies to explain complex concepts +- Bold key sentences or phrases for emphasis +- Cite relevant laws/principles (Goodhart's Law, Campbell's Law, etc.) or proverbs + +### Conclusion +- Summarize the key lessons or proposed solutions +- Focus on practical implications (what can readers actually do with this?) +- End with a bold call to action or direct question: + - "I'd like to know your thoughts on this" + - "I would like to hear your comments" + - "Have you encountered this problem? How did you solve it?" + +## Language Guidelines + +**Vocabulary** +- Use straightforward vocabulary; avoid overly formal academic language +- Include occasional technical terms when relevant to the topic +- Define or explain jargon in context for accessibility +- Use sentence fragments for emphasis when appropriate + +**Distinctive Phrasing** +- "This is as good as comparing apples with not apples" (for false comparisons) +- Reference laws/principles by name when they apply +- Include well-known proverbs or sayings to illustrate points +- Use phrases like "I'd like to know your thoughts" or "I would like to hear your comments" + +**Formatting for Emphasis** +- **Bold** key sentences or surprising insights +- Use em dashes—like this—for asides or clarifications +- Occasional italics for subtle emphasis, but don't overuse + +## Substack Optimization + +**Platform-Specific Formatting** +- Use clean, simple markdown (H1 for title, H2/H3 for sections) +- Include proper line breaks between paragraphs +- Keep lists simple with clear spacing (line break before and after) +- Avoid complex tables or advanced markdown features +- Content should work well in both web and email formats + +**Email-Friendly Structure** +- Strong opening hook works as email preview text +- Scannable format with short paragraphs and clear headings +- Break up long sections with subheadings or lists +- Consider how content flows when reading on mobile + +**Engagement Optimization** +- End with a question suitable for comments/replies +- Write for diverse audience across devices +- Include brief context for technical terms (email readers can't easily Google) + +## Quality Checklist + +Before finalizing a blog post, verify: + +- [ ] Opens with a compelling hook (anecdote, problem, or question) +- [ ] TL;DR provides clear, standalone summary +- [ ] Paragraphs are short (1-3 sentences) for readability +- [ ] Uses personal examples or anecdotes to ground abstract concepts +- [ ] Cites sources/research to back up claims +- [ ] Acknowledges complexity and avoids oversimplification +- [ ] Examines multiple perspectives when relevant +- [ ] Uses clear headings and structure for scannability +- [ ] Employs conversational tone with contractions and first person +- [ ] Avoids corporate jargon, hyperbole, or AI-sounding language +- [ ] Ends with practical implications and an engagement question +- [ ] Varies sentence length for rhythm and interest +- [ ] Uses bold text for key insights (but not excessively) +- [ ] Works well in both web and email formats + +## Common Pitfalls to Avoid + +1. **Sounding Too Corporate**: Avoid phrases like "leverage," "synergy," "best practices" without irony +2. **AI Tell-Tale Signs**: Don't write "in conclusion," "in today's fast-paced world," or use excessive lists of adjectives +3. **Lecturing Tone**: Don't talk down to readers; invite them into a conversation +4. **Burying the Lede**: Don't save insights for the end; front-load value +5. **Oversimplification**: Don't pretend complex problems have simple solutions +6. **Missing the Personal Touch**: Don't write generic advice without grounding in experience +7. **Forgetting the Question**: Always end with reader engagement, not just a summary + +## Writing Philosophy + +The goal is to sound like a thoughtful person sharing insights from personal experience and research, not like an AI trying to sound authoritative. The writing should feel authentic, slightly informal but still substantive, and invite the reader into a conversation rather than lecture them. + +**Key Principles:** +- Be conversational but not casual +- Be analytical but not academic +- Be opinionated but not dogmatic +- Be personal but not self-indulgent +- Be practical but not simplistic + +When in doubt, ask yourself: "Does this sound like something a real person would say to a friend over coffee while discussing an interesting problem they've been thinking about?" + +## Integration with Other Skills + +- **Before drafting**: Use **brainstorming** skill to refine ideas +- **During drafting**: Use **research-synthesis** skill if citations are needed +- **While writing**: Reference braindump.md for examples and research +- **After drafting**: Run `/polish` to apply quality checklist