TL;DR

After 2-3 weeks post-development, you lose context and can’t write blog posts. The /blog command analyzes Git + work logs + Features to auto-generate drafts and inserts screenshot recommendations as HTML comments. 83% reduction in blog writing time (4 hours → 1 hour), 4x increase in publishing frequency.


Why Don’t Developers Write Blogs?

Common reasons developers don’t blog:

  • “It’s tedious”
  • “I don’t know what to write about”
  • “Taking screenshots is annoying”
  • “I wanted to write later, but can’t remember what I did”

Especially 2-3 weeks after completing a feature:

  • UI changed, can’t capture the same screens
  • Can’t recall why I implemented it this way
  • Git commit logs alone can’t reconstruct the story

To solve this, I created the /blog command that auto-generates blog drafts immediately after finishing work.


Similar Approaches

1. eesel.ai - /new-post Command

/new-post "My Awesome Blog Post"
→ Creates 2025-11-01-my-awesome-blog-post.md
→ Auto-inserts Jekyll frontmatter

Auto-generates filename from today’s date + slugified title.

2. ezablocki.com - Cursor Slash Commands

Stores reusable AI prompts in the project, version-controlled via Git, shared across the team.

3. n8n Workflow - AI Blog Automation

News collection → Relevance filtering → AI expansion → Image generation → WordPress publishing

Generates 10 blog posts per day fully automatically.

How CheckUS’s /blog is Different

While the above focus on “blog writing automation”, /blog focuses on “preserving development context + draft generation”.

  • ✅ Automatic Git history analysis
  • ✅ Technical decision extraction
  • ✅ Screenshot recommendations inserted directly in draft (key differentiator)
  • ✅ Integration with Features tracking system

/blog Command 6-Step Workflow

Step 1: Context Detection from Conversation

When running /blog in the same conversation, no need to re-parse Git log.

User: F033 done! Run /blog

AI (checks conversation context):
- Worked on F033 in this conversation ✅
- Feature ID: F033
- Title: /blog command - AI-based blog automation
→ "Should I write a blog post about F033?"

Benefits:

  • No Git log parsing (saves tokens)
  • Instant Feature identification
  • No mixing with other features

For new conversations, extracts F0XX pattern from Git log.

Step 1.5: Research Existing Content & Competition Analysis

Before writing, search existing Korean/English posts:

  • Avoid duplicate content
  • Choose high-traffic target (Korean vs Global)
  • Find differentiation points
  • Learn natural writing style
WebSearch query examples:
- "Features tracking system" site:velog.io
- "feature tracking system" site:dev.to

Analysis result:

- Korean posts: 5 found (avg 5K views)
- English posts: 50 found (avg 2K views)
→ "Korean target recommended (lower competition, higher views)"

Step 2: Read Features Documentation (Top Priority)

What is the Features folder? A system that tracks all work in docs/features/F001-xxx/ format. Each feature has a README.md documenting tasks, technical decisions, and problems solved. For details, see the Features tracking system post.

Information source priority:

  1. Features/README.md (highest)
  2. daily_work_summary (supplementary)
  3. Git diff (code examples)
# 1. Check INDEX.md for Feature
checkus-docs/features/INDEX.md

# 2. Read the Feature's README.md
checkus-docs/features/F033/README.md

Extract from Features/README.md:

  • frontmatter (title, labels, elapsed_hours)
  • “✅ Completed Tasks” → main content
  • “💡 Technical Decisions” → why this approach
  • “🐛 Problems Solved” → Before/After

Why Features first?

  • Already structured context (background → problem → solution → result)
  • Reuse AI-processed content
  • No mixing with other features

Step 3: Reference daily_work_summary (Supplementary)

What is daily_work_summary? A daily log file documenting work. While Features tracks “what was done”, daily_work_summary captures “why this approach was chosen” and “what trial-and-error occurred” - the decision-making context.

Supplement details not in Features:

  • Trial and error (why B instead of A?)
  • Decision rationale
  • Issues discovered
# Read only recent 1-2 days (save tokens)
checkus-docs/daily_work_summary/2025-11-01.md

Step 4: Check Git (For Code Examples)

# Check "🔗 Related Commits" section in README.md
git show [commit-hash]

Extract code examples:

  • Core code changes only
  • Before/After comparison
  • Snippets to insert in blog

Step 5: Auto-Generate Blog Draft

# Generated file structure
checkus-docs/features/F004-feature-tracking-system/
├── README.md           # Technical docs
├── blog.md            # Blog draft (auto-generated)
└── images/            # Screenshot storage

blog.md structure:

# [Title]

## Background
Why this feature was needed

## Problem Definition
What problem was solved

## Solution
Specific implementation

## Results
What improved

## Lessons Learned
Technical insights

Step 6: Insert Screenshot Recommendations as HTML Comments ⭐

Key Innovation: Screenshot recommendations inserted as HTML comments inside blog.md, not separate file

## Implementation

<!-- 📸 Recommended Screenshot #1: Folder Structure
Filename: 01-folder-structure.png
Content: Full features/ tree in VS Code Explorer
How to capture:
1. Right-click features/ in VS Code
2. Select "Expand All"
3. Scroll to show F001-F031
4. Capture full Explorer sidebar
-->

The Features tracking system has the following folder structure...

Why HTML Comments?

Method Pros Cons
Separate file Separate management Disconnected from draft, management burden
Frontmatter Metadata Hard to express per-section location
HTML Comments ✅ Visible when editing
✅ Hidden when rendered
✅ Accurate placement
None

Before/After Comparison

Before: Manual Blog Writing

1. Feature development complete
2. Git commit
3. (3 weeks pass)
4. "Should write a blog post"
5. Look at Git log: "What did I do?"
6. Re-read code to understand
7. UI changed, can't capture screenshots
8. Give up or write poorly

Time: 3-4 hours (or infinity)

After: /blog Command (6-Step Workflow)

1. Feature development complete
2. Git commit
3. Run /blog (30 seconds)
   → Step 1: Auto-detect F033 from conversation context
   → Step 1.5: Web search for existing content
   → Step 2: Read Features/README.md
   → Step 3: Supplement with daily_log
   → Step 4: Git (code examples)
   → Step 5: Generate blog.md
   → Step 6: Insert screenshot comments
4. Capture screenshots based on comments (10 min)
5. (3 weeks pass)
6. Open blog.md
7. Insert images following comments
8. Polish and publish

Time: 30 min - 1 hour

Improvement:

  • ⏱️ 83% time reduction (4 hours → 1 hour)
  • 🎯 100% context preservation
  • 📸 Screenshot timing problem solved
  • 📝 Blog publishing rate 4x increase

Integration with Other Slash Commands

/finish → /blog Pipeline

# 1. Work completion process
/finish
→ Update Features system (status: DONE)
→ Write work log in daily_work_summary/
→ Sync requirement.md
→ Git commit

# 2. Generate blog draft
/blog
→ Reference all content created above
→ Auto-generate blog.md (with screenshot comments)

Synergy:

  • /finish for data collection
  • /blog for content generation
  • Seamless connection, no duplicate work

Team Collaboration Aspect

Sharing Commands via Git

# Global command (personal)
~/.claude/commands/blog.md

# Project command (team shared)
my-project/.claude/commands/blog.md

Team sharing benefits:

  1. Consistent blog style
    • All team members write with same structure
    • Maintain company tech blog tone & manner
  2. Command improvements apply to entire team
    # A improves /blog command
    git commit -m "feat: add performance metrics to /blog"
    git push
    
    # B pulls
    git pull
    → B immediately uses improved /blog
    
  3. Reduced onboarding time
    • New hire: “How do I write blogs?”
    • Senior: “Just type /blog”

Technical Implementation

Command File Structure

# ~/.claude/commands/blog.md

You are an AI that analyzes recent work to write blog drafts.

## Step 1: Detect Work from Conversation Context
...

## Step 2: Read Features Documentation
...

## Step 5: Insert Screenshot Recommendations
**Important**: Insert screenshot recommendations as HTML comments inside blog.md.

### Comment Format
<!-- 📸 [Priority] Screenshot #number: [Description]
Filename: XX-description.png
Content: [What to capture]
How to capture:
1. [Step]
-->

SlashCommand operation:

  1. User types /blog
  2. Claude Code reads blog.md file
  3. Expands content as prompt
  4. AI executes steps 1-6
  5. Saves result to features/FXXX/blog.md

HTML Comment Parsing (For Future Automation)

// Extract screenshot comments from blog.md
function extractScreenshotComments(blogContent) {
  const regex = /<!-- 📸.*?-->/gs;
  const matches = blogContent.match(regex);

  return matches.map(comment => {
    const numberMatch = comment.match(/#(\d+)/);
    const filenameMatch = comment.match(/Filename: (.+)/);
    const contentMatch = comment.match(/Content: (.+)/);

    return {
      number: numberMatch[1],
      filename: filenameMatch[1],
      description: contentMatch[1],
      fullComment: comment
    };
  });
}

// Usage example
const screenshots = extractScreenshotComments(fs.readFileSync('blog.md', 'utf-8'));
console.log(`${screenshots.length} screenshots needed`);

Potential uses:

  • /blog-check command: Check for missing images
  • Auto image optimization
  • Pre-publish checklist

Real-World Results

Case Study: F004 Features System Blog

Estimated manual writing time:

  • Git log analysis: 30 min
  • Context recall: 1 hour
  • Screenshot planning: 30 min
  • Draft writing: 2 hours
  • Total: 4 hours

Actual time with /blog:

  • /blog execution: 30 sec
  • AI generation wait: 2 min
  • Screenshot capture: 15 min
  • Draft review & editing: 30 min
  • Total: 47 min 30 sec

Savings: 83% time saved

Blog Publishing Frequency Change

Period Method Blog Count Avg Quality
2024 Q1-Q2 Manual 3 ⭐⭐⭐
2024 Q3-Q4 /blog 12 ⭐⭐⭐⭐

Improvement factors:

  • Reduced psychological barrier: “At least I have a draft”
  • Context preservation: “Why I did this” is clear
  • Screenshot timing: Can capture right after development

Lessons Learned

1. Blogs Written “Later” Never Get Written

Developers are always busy. “I’ll organize and write later” - but that “later” never comes.

Solution: Auto-generate draft immediately after work completion.

2. Screenshots are “Now or Never”

UI keeps changing. After just 2 weeks, can’t reproduce the same screen.

Solution: Insert screenshot recommendations as comments in draft → encourage immediate capture.

3. Information Should Be Close to Where It’s Used

Storing screenshot recommendations in a separate file:

  • Hard to find
  • Hard to understand context
  • Management burden

Putting them as HTML comments in blog.md:

  • Visible when editing
  • Clear context
  • Managed together via git

4. AI is Stronger at “Context Preservation” than “Eliminating Repetitive Work”

Other blog automation focuses on reducing “repetitive writing tasks”. But the real problem was “I don’t know what to write about”.

/blog:

  • Git analysis extracts what was done
  • Work log extracts why it was done
  • Features extract how it was done

→ AI reconstructs the story to generate blog draft.

5. Slash Commands are “Workflow Standardization” Tools

Committing /blog to Git means:

  • Entire team writes blogs the same way
  • Command improvements apply to everyone
  • Simplified new hire onboarding

Team-level productivity improvement.


Future Improvements

1. Auto Image Capture

/blog --auto-capture
→ Auto-capture screenshots with Puppeteer
→ Save to images/ folder

Challenge: Hard to automate complex interactions (hover, click, scroll).

2. Image Optimization Pipeline

convert *.png -resize 1200x -quality 85 optimized/

3. Pre-Publish Checklist

/blog-check
→ Check if images in comments exist
→ Output list of missing images
→ Check file size (warn if >1MB)

4. Multi-Language Support

/blog --lang=en
→ Generate English blog draft
→ Same screenshot comments (keep Korean descriptions)

5. Blog Platform Integration

/blog-publish --platform=medium
→ Auto-publish via Medium API
→ Upload images and convert links

Conclusion

The /blog command isn’t just a “blog auto-generator”:

  1. Development Context Preservation System - Git + work logs + Features integration
  2. Screenshot Timing Problem Solved - HTML comments encourage immediate capture
  3. Team Collaboration Tool - Share via Git, maintain consistent style
  4. AI-Based Workflow Automation - “Creative context reconstruction”, not just repetitive tasks

Result: 83% reduction in blog writing time, 4x increase in publishing frequency.

Developers don’t write blogs not because “it’s tedious” but because “they lose context”.

/blog automatically preserves that context.